Ale*_*_MN 2 python finance quantitative-finance pandas
我有 DataFramefinal与我的投资组合的回报。我正在尝试使用回报来计算 MaxDrawdown。我已经尝试了下面的代码,确实看到了很多 stackexchange 问题。但无法解决这个问题。有没有办法使用投资组合的回报来计算最大回撤。
Returns
1/2/2009 0.030483579
1/5/2009 0.002872092
1/6/2009 0.01461333
1/7/2009 -0.032431836
1/8/2009 0.0055774
1/9/2009 -0.019844336
1/12/2009 -0.019705618
1/13/2009 0.001093185
1/14/2009 -0.032726765
1/15/2009 0.013635182
1/16/2009 0.009807648
1/20/2009 -0.044440252
1/21/2009 0.035156229
1/22/2009 -0.01460641
1/23/2009 0.007399468
1/26/2009 0.007910521
1/27/2009 0.007848472
1/28/2009 0.028944903
1/29/2009 -0.023816962
1/30/2009 -0.02550717
2/2/2009 -0.000292223
2/3/2009 0.020191091
2/4/2009 -7.93651E-06
2/5/2009 0.020070065
2/6/2009 0.026235957
2/9/2009 -0.001606124
2/10/2009 -0.03629415
2/11/2009 0.00248416
2/12/2009 0.001925152
2/13/2009 -0.00441840
Run Code Online (Sandbox Code Playgroud)
代码:
cum_returns = (1 + final).cumprod()
drawdown = 1 - final.div(final.cummax())
Run Code Online (Sandbox Code Playgroud)
谁能帮我解决这个问题。谢谢!
IIUC后cumprod添加diff和最小值是最大拉降
(df.Returns+1).cumprod().diff().min()
Out[316]: -0.043177386133390616
Run Code Online (Sandbox Code Playgroud)
基于 MDD定义
s=(df.Returns+1).cumprod()
np.ptp(s)/s.max()
Out[319]: 0.11457761692384323
Run Code Online (Sandbox Code Playgroud)