cumprod 소개
pandas.Series.cumprod()
는 누적 곱 (Cumulative Product) 을 계산하는 Pandas 함수입니다.
“누적 곱” 이란, 각 값들을 차례로 곱해서 누적된 곱을 생성하는 것을 의미합니다.
수식: pct_change() 계산 방법
$\text{S}_n = \text{X}_1 \times \text{X}_2 \times \ldots \times \text{X}_n$
- $\text{S}_n$ : n 번째 누적 곱
- $\text{X}_i$ : i 번째 값
사용법1 - 기본
import pandas as pd
data = {'return': [1.02, 0.98, 1.03, 0.97, 1.05]}
df = pd.DataFrame(data)
df['cumulative_return'] = df['return'].cumprod()
print(df)
출력 결과
return cumulative_return
0 1.02 1.0200 # 1.02
1 0.98 1.0000 # 1.02 * 0.98
2 1.03 1.0300 # 1.00 * 1.03
3 0.97 0.9991 # 1.03 * 0.97
4 1.05 1.0490 # 0.9991 * 1.05
사용법 2 - 수익률 구하기
import pandas as pd
# 일일 수익률 데이터 예제
data = {'return': [0.01, -0.02, 0.03, 0.04, -0.01]}
df = pd.DataFrame(data)
# 누적 수익률 (1 + 수익률)을 곱하여 자산 가치 추적
df['cumulative_return'] = (1 + df['return']).cumprod()
print(df)
1 을 더하는 이유는 수익률을 계산할 때, 1을 더해주어야 누적 곱을 구할 수 있습니다. 예를 들어, 0.01 (1%)의 수익률은 1 + 0.01 = 1.01로 표현됩니다.
출력 결과
return cumulative_return
0 0.01 1.0100
1 -0.02 0.9898
2 0.03 1.0195
3 0.04 1.0603
4 -0.01 1.0497
마지막 행은 총 누적 수익률을 나타냅니다. 예를 들어, 1.0497은 4.97%의 누적 수익률을 의미합니다.