1. 학습
  2. /
  3. 강의
  4. /
  5. Python으로 시작하는 포트폴리오 리스크 관리

Connected

연습 문제

과거 드로우다운

주식시장은 장기적으로 상승하는 경향이 있지만, 그 과정에서 드로우다운(drawdown) 구간이 발생하지 않는 것은 아닙니다.

드로우다운은 과거 누적 수익률이 기록한 최고점 대비 하락한 비율(백분율)로 측정합니다.

Python에서는 .accumulate()와 .maximum() 함수를 사용해 러닝 최대값을 계산하고, 아래의 간단한 공식을 이용해 드로우다운을 계산할 수 있어요:

$$ \text{Drawdown} = \frac{r_t}{RM} - 1$$

  • \(r_t\): 시점 t의 누적 수익률
  • \(RM\): 러닝 최대값

유가를 추종하는 ETF인 USO의 누적 수익률은 변수 cum_rets에 주어져 있어요.

지침

100 XP
  • np.maximum.accumulate()를 사용해 USO 석유 ETF(cum_rets)의 누적 수익률에 대한 러닝 최대값을 계산하세요.
  • 러닝 최대값(running_max)이 1보다 작아지는 구간에서는 러닝 최대값을 1로 설정하세요.
  • 위의 간단한 공식을 이용해 cum_rets와 running_max로 drawdown을 계산하세요.
  • 플롯을 확인하세요.