最大回撤率(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.

发表评论

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