ヒストリカル・ドローダウン
株式市場は長期的には上昇しやすいですが、その過程でドローダウン(一時的な下落)を経験しないわけではありません。
ドローダウンは、累積リターンの過去最高値からの下落率として測定できます。
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_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()