시작하기무료로 시작하기

과거 드로우다운

주식시장은 장기적으로 상승하는 경향이 있지만, 그 과정에서 드로우다운(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_retsrunning_maxdrawdown을 계산하세요.
  • 플롯을 확인하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# 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()
코드 편집 및 실행