程式

在python中直接使用returns實現最大回撤

  • August 31, 2020

我有一個股票策略(例如買入並持有),我必須在該策略上計算最大回撤。問題是我正在研究以百分比表示的回報,所以我沒有價格的時間序列,而是每一步獲得的回報之一。所以我寫了這段程式碼:

def MDD(returns):
rend_cum=returns.cumsum()
rend_max=pd.Series(rend_cum).cummax()
drawdown=rend_cum-rend_max
MDD=max(abs(drawdown))

return(MDD)

這是正確的嗎?

你錯過了一些東西。下面的函式假設它returns是Pandas系列或Pandas數據框的一列。試試這個:

def MDD(returns):

   cum_rets = (1 + returns).cumprod() - 1
   nav = ((1 + cum_rets) * 100).fillna(100)
   hwm = nav.cummax()
   dd = nav / hwm - 1

   return min(dd)

引用自:https://quant.stackexchange.com/questions/57703