始める無料で始める

ヒストリカル・ドローダウン

株式市場は長期的には上昇しやすいですが、その過程でドローダウン(一時的な下落)を経験しないわけではありません。

ドローダウンは、累積リターンの過去最高値からの下落率として測定できます。

Python では、.accumulate().maximum() 関数を使ってランニング・マックス(過去最高の推移)を計算し、以下のシンプルな式でドローダウンを計算できます。

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

  • \(r_t\): 時点 t における累積リターン
  • \(RM\): ランニング・マックス

原油価格に連動する ETF の USO の累積リターンは、変数 cum_rets に用意されています。

この演習はコースの一部です

Pythonで学ぶポートフォリオ・リスク管理入門

コースを見る

演習の手順

  • USO 原油 ETF(cum_rets)の累積リターンについて、np.maximum.accumulate() を使ってランニング・マックスを計算します。
  • ランニング・マックス(running_max)が 1 を下回る箇所では、値を 1 に設定します。
  • 上記のシンプルな式を用いて、cum_retsrunning_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()
コードを編集して実行