程式
在python中直接使用returns實現最大回撤
我有一個股票策略(例如買入並持有),我必須在該策略上計算最大回撤。問題是我正在研究以百分比表示的回報,所以我沒有價格的時間序列,而是每一步獲得的回報之一。所以我寫了這段程式碼:
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)