您好,登錄后才能下訂單哦!
python怎么計(jì)算最大回撤?針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。
如何使用python計(jì)算最大回撤,下面給大家舉個(gè)小例子:
1. 單期簡單收益率
import datetime import pandas as pd 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) for x in range(3,9)]) price
2015-07-03 3.42 2015-07-04 3.51 2015-07-05 3.68 2015-07-06 3.43 2015-07-07 3.56 2015-07-08 3.67 dtype: float64
利用ffn庫計(jì)算單期簡單收益
import ffn
r = ffn.to_returns(price) r
2015-07-03 NaN 2015-07-04 0.026316 2015-07-05 0.048433 2015-07-06 -0.067935 2015-07-07 0.037901 2015-07-08 0.030899 dtype: float64
2. 最大回撤
最大回撤(Maximum Drawdown, MDD) 用來衡量投資(特別是基金)的表現(xiàn)。
2.1 回撤:某資產(chǎn)在時(shí)刻T的回撤是指資產(chǎn)在(0,T)的最高峰值與現(xiàn)在價(jià)值之間的回落值,用數(shù)學(xué)公式表達(dá)為:
2.2 對應(yīng)的回撤率為:
2.3 利用收益率計(jì)算最大回撤
value = (1 + r).cumprod() value
2015-07-03 NaN 2015-07-04 1.026316 2015-07-05 1.076023 2015-07-06 1.002924 2015-07-07 1.040936 2015-07-08 1.073099 dtype: float64
D = value.cummax() - value D
2015-07-03 NaN 2015-07-04 0.000000 2015-07-05 0.000000 2015-07-06 0.073099 2015-07-07 0.035088 2015-07-08 0.002924 dtype: float64
d = D / (D + value) d
2015-07-03 NaN 2015-07-04 0.000000 2015-07-05 0.000000 2015-07-06 0.067935 2015-07-07 0.032609 2015-07-08 0.002717 dtype: float64
MDD = D.max() MDD
0.07309941520467844
mdd =d.max() mdd # 對應(yīng)的最大回撤率值為
0.06793478260869572
# 采用ffn庫計(jì)算收益率累積最大回撤 ffn.calc_max_drawdown(value)
-0.06793478260869568
from empyrical import max_drawdown
# 使用 empyrical 計(jì)算收益率序列最大回撤 max_drawdown(r)
-0.06793478260869572
關(guān)于python怎么計(jì)算最大回撤問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。