과거 드로우다운
주식시장은 장기적으로 상승하는 경향이 있지만, 그 과정에서 드로우다운(drawdown) 구간이 발생하지 않는 것은 아닙니다.
드로우다운은 과거 누적 수익률이 기록한 최고점 대비 하락한 비율(백분율)로 측정합니다.
Python에서는 .accumulate()와 .maximum() 함수를 사용해 러닝 최대값을 계산하고, 아래의 간단한 공식을 이용해 드로우다운을 계산할 수 있어요:
$$ \text{Drawdown} = \frac{r_t}{RM} - 1$$
- \(r_t\): 시점 t의 누적 수익률
- \(RM\): 러닝 최대값
유가를 추종하는 ETF인 USO의 누적 수익률은 변수 cum_rets에 주어져 있어요.
이 연습은 강의의 일부입니다
Python으로 시작하는 포트폴리오 리스크 관리
연습 안내
np.maximum.accumulate()를 사용해 USO 석유 ETF(cum_rets)의 누적 수익률에 대한 러닝 최대값을 계산하세요.- 러닝 최대값(
running_max)이 1보다 작아지는 구간에서는 러닝 최대값을 1로 설정하세요. - 위의 간단한 공식을 이용해
cum_rets와running_max로drawdown을 계산하세요. - 플롯을 확인하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Calculate the running maximum
running_max = ____(cum_rets)
# Ensure the value never drops below 1
running_max[____] = 1
# Calculate the percentage drawdown
drawdown = (____)/____ - 1
# Plot the results
drawdown.plot()
plt.show()