最大回撤率(Python实现) – 刘不饱的博客

最大回撤率(Python实现) – 刘不饱的博客

版权正式的:本文是视频博客作者的最初的文字,没有视频博客作者答应,不得完全一样的任何东西答应。。


    在所选时刻的任何东西历史点逆推,产量净值走到最小值时的屈服回撤幅度的最高值。最大归程用于表现可以允许的心房颤动的最坏境遇。。最大回撤是东西要紧的风险目标。,对冲基金与量子化谋略市,该参考标志也比波动性更要紧。。
d是东西天的净值,我随着时间的推移,J比我晚了一天到晚。,i天的di净值,dj为di后一天到晚的净值。
放弃是最大回撤率。
drawdown=max(Di-Dj)/Di,确实执意对每东西净值举行回撤率求值,这么找出最大的。。

                                                              

养一只栗色。,

对蓝筹姓集市占有率持达观姿态,因而他花了一万在东西大的篮筹股票基金上。晚期集市健康的,比如,本钱账的净值从1万元变为。这么集市热从篮筹股票姓转向了创业板。,因而一万缩水成一万。重附着着,国家队进入集市挽回集市,终于万成了一万。。但弱太久。,集市突然下跌,集市破。,先前降到一万了。肉凉了要谨慎,这事庶生的从一万个剧增到一万个!从净值的成就到最小值,账上最大的资产提!

按表示计算,也执意说,i的最大再种植率:万 万/瓦 66.67%

实现前,让咱们先默认专有的应变量:

应变量规定:

  • cumsum(a, axis=None, dtype=None, out=None) 
  • (axis=None, dtype=None, out=None)

  前往:沿标明轴积聚和结合的元素街区,其状态应与输入街区A划一

总结应变量的限制因素:

  • A:队列
  • 轴:轴参考,整数,以防a是n维街区,轴的值为[0]。,n-1]
  • DTYPE:前往奏效的数据类型,以防未标明,Windows 默认值与。
  • out:数据类型是街区。。用于使待在床上或室内奏效的可选输入街区,它不得已与输入奏效具有相通的状态和缓冲剂胶料

:有点两个街区并前往包括最高值o的新街区

: 累计将运算符应用于承认元素的奏效。

编码如次:

import numpy as np
import matplotlib.pyplot as plt

def MaxDrawdown(return_list):
    '最大提款率''
    i = (((return_list) - return_list) / (return_list))  # 完毕态度
    if i == 0:
        return 0
    j = (return_list[:i])  # 开端态度
    return (return_list[j] - return_list[i]) / (return_list[j])


return_list=[12,12,21,15,27,16,21,22,25,20,16,17]
print(MaxDrawdown(return_list))

比如,return_list=[12,12,21,15,27,16,21,22,25,20,16,17]

这么虚线代表前往点列表,蓝点代表从左到右的最高值。。

可知,第五天,最大归程完毕,静修的四的天开端了。

因而输入值是:drawdown=

复杂点,

以防不运用从左到右的积聚应变量,咱们可以本人写东西方式。,奏效执意如此。:

def maxdrawdown(return_list):
    最大重行崇拜者率
    maxac=(len(return_list))
    b=return_list[0]
    for i in 排序(0,len(return_list)): #遍历街区,当下一大于上一时,分分配物B
        if return_list[i]>b:
            b=return_list[i]
        maxac[i]=b
    print(maxac)
    i=((maxac-return_list)/maxac) #完毕态度
    if i == 0:
        return 0
    j = (return_list[:i])  # 开端态度
    return (return_list[j] - return_list[i]) / (return_list[j])

上面咱们来试试应变量cumsum(沿标明轴积聚和结合的元素街区)

先 构筑100个听从师专的随机数字,这么处于某种状态。,作为街区前往列表,

return_list=(100).cumsum()

举行实验,拆移

print(MaxDrawdown(return_list))#法一
print(maxdrawdown(return_list))#法二
print(MaxDrawdown(return_list)==maxdrawdown(return_list))奏效为True.

发表评论

电子邮件地址不会被公开。 必填项已用*标注