歷史回檔
股市長期而言傾向上漲,但這並不代表你不會經歷一段段的回檔(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()