分享

股票python量化交易016-计算最大回撤

 追梦文库 2022-05-16 发布于天津
  • 什么是最大回撤?

资产分析中的最大回撤指的是在投资期间内可能出现最大损失的情况,即产品净值走到最低点时股票收益率撤回幅度的最大值,用来衡量账户的抗风险能力,是一个非常重要的风险指标!

  • 如何计算最大回撤?
文章图片1

在选定的一定周期内,最大回撤的计算公式为:(期间内最低值-期间内最高值 )/期间内最高值

从公式看出得出来的最大回撤都是负数,只是我们平常说最大回撤,如最大回撤60%,不把这个负号说进去而已。

  • rolling函数的使用

超级好用的移动窗口函数

用法: DataFrame.rolling(window, min_periods=None, freq=None, center=False, win_type=None, on=None, axis=0, closed=None)

参数:

window:移动窗口的大小。这是用于计算统计量的观察值的数量。每个窗口将是固定大小。如果其偏移,则这将是每个窗口的时间段。每个窗口的大小将根据time-period中包含的观察结果而变化。仅对类似日期时间的索引有效。
min_periods:窗口中具有值的最小观察数(否则结果为NA)。对于由偏移量指定的窗口,该窗口默认为1。

在rolling函数后加 .max()是表示移动窗口滚动值里的最大值。

  • python代码实现
def calculate_max_drawdown(window, data): ''' 计算最大回撤 :param window: 窗口周期,一般以天来定义,一年为252,根本上需要看dataframe中是否是每一行代表一天的数据 :param data: 源数据 :return: 带最大回撤值的新数据 ''' # 第一步:计算选取周期内的最大净值,如果是股价,则选取周期内的最高股价,如果是持仓净值,另外再说 data['roll_max'] = pd.DataFrame(data)['close'].rolling(window=window, min_periods=1).max() # 第二步:计算当天的回撤比 计算公式 (当天股价 - 股价峰值)/股价峰值 ==》 当天股价/股价峰值 - 1 data['daily_dd'] = data['close'] / data['roll_max'] - 1 # 第三步:计算选取周期内的最大回撤比,当做最大回撤, 这里取最小值是因为回撤比当成负数 data['max_dd'] = data['daily_dd'].rolling(window=window, min_periods=1).min() return data

打印结果:

date close daily_dd max_dd

2005-01-04 1.47 0.000000 0.000000

2005-01-05 1.46 -0.006803 -0.006803

2005-01-06 1.47 0.000000 -0.006803

2005-01-07 1.47 0.000000 -0.006803

2005-01-10 1.49 0.000000 -0.006803

2005-01-11 1.49 0.000000 -0.006803

2005-01-12 1.47 -0.013423 -0.013423

2005-01-13 1.48 -0.006711 -0.013423

2005-01-14 1.47 -0.013423 -0.013423

可视图表显示:

平安银行这只股票从上市到现在的股价最大回撤图表:

文章图片2

平安银行这只股票从上市到现在的股价最大回撤图表

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多