• 技术文章 >常见问题 >Python常见问题

    最大回撤用python怎么计算

    爱喝马黛茶的安东尼爱喝马黛茶的安东尼2019-11-19 09:32:40原创10292

    如何使用python计算回撤,下面给大家举个小例子:

    1. 单期简单收益率

    ccfc8ecad821faa4404d465c48d4a2a.png

    1

    2

    3

    import datetime

    import pandas as pd

    pd.core.common.is_list_like = pd.api.types.is_list_like

    1

    2

    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

    1

    2

    3

    4

    5

    6

    7

    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库计算单期简单收益

    1

    import ffn

    1

    2

    r = ffn.to_returns(price)

    r

    1

    2

    3

    4

    5

    6

    7

    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) 用来衡量投资(特别是基金)的表现。

    2.1 回撤:某资产在时刻T的回撤是指资产在(0,T)的最高峰值与现在价值1c2ca3a9239e13292bf785b0867f285.png之间的回落值,用数学公式表达为:

    0550cc13710fe87cb8c04220571df39.png

    2.2 对应的回撤率为:

    bef627f6bc59abba72c5dcfe3251e16.png

    2.3 利用收益率计算回撤

    165930e56af53b44231bb4c1ccaed84.png

    1

    2

    value = (1 + r).cumprod()

    value

    1

    2

    3

    4

    5

    6

    7

    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

    1

    2

    D = value.cummax() - value

    D

    1

    2

    3

    4

    5

    6

    7

    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

    1

    2

    d = D / (D + value)

    d

    1

    2

    3

    4

    5

    6

    7

    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

    1

    2

    MDD = D.max()

    MDD

    1

    0.07309941520467844

    1

    2

    3

    mdd =d.max()

    mdd

    # 对应的回撤率值为

    1

    0.06793478260869572

    1

    2

    # 采用ffn库计算收益率累积回撤

    ffn.calc_max_drawdown(value)

    1

    -0.06793478260869568

    1

    from empyrical import max_drawdown

    1

    2

    # 使用 empyrical 计算收益率序列回撤

    max_drawdown(r)

    1

    -0.06793478260869572

    python学习网,大量的免费python视频教程,欢迎在线学习!

    专题推荐:最大回撤 python
    上一篇:学python3看什么书 下一篇:如何重装python

    相关文章推荐

    • python列表长度怎么计算• python如何计算时间差• Python数据分析 | pandas汇总和计算描述统计• python如何计算乘法

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网