如何使用python计算回撤,下面给大家举个小例子:
1. 单期简单收益率
importdatetime importpandasaspd pd.core.common.is_list_like=pd.api.types.is_list_like
price=pd.Series([3.42,3.51,3.68,3.43,3.56,3.67],index=[datetime.date(2015,7,x)forxinrange(3,9)]) price
2015-07-033.42 2015-07-043.51 2015-07-053.68 2015-07-063.43 2015-07-073.56 2015-07-083.67 dtype:float64
利用ffn库计算单期简单收益
importffn
r=ffn.to_returns(price) r
2015-07-03NaN 2015-07-040.026316 2015-07-050.048433 2015-07-06-0.067935 2015-07-070.037901 2015-07-080.030899 dtype:float64
2. 回撤
回撤(Maximum Drawdown, MDD) 用来衡量投资(特别是基金)的表现。
2.1 回撤:某资产在时刻T的回撤是指资产在(0,T)的最高峰值与现在价值之间的回落值,用数学公式表达为:
2.2 对应的回撤率为:
2.3 利用收益率计算回撤
value=(1+r).cumprod() value
2015-07-03NaN 2015-07-041.026316 2015-07-051.076023 2015-07-061.002924 2015-07-071.040936 2015-07-081.073099 dtype:float64
D=value.cummax()-value D
2015-07-03NaN 2015-07-040.000000 2015-07-050.000000 2015-07-060.073099 2015-07-070.035088 2015-07-080.002924 dtype:float64
d=D/(D+value) d
2015-07-03NaN 2015-07-040.000000 2015-07-050.000000 2015-07-060.067935 2015-07-070.032609 2015-07-080.002717 dtype:float64
MDD=D.max() MDD
0.07309941520467844
mdd=d.max() mdd #对应的回撤率值为
0.06793478260869572
#采用ffn库计算收益率累积回撤 ffn.calc_max_drawdown(value)
-0.06793478260869568
fromempyricalimportmax_drawdown
#使用empyrical计算收益率序列回撤 max_drawdown(r)
-0.06793478260869572原文来自:https://www.py.cn
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容