资产分析中的最大回撤指的是在投资期间内可能出现最大损失的情况,即产品净值走到最低点时股票收益率撤回幅度的最大值,用来衡量账户的抗风险能力,是一个非常重要的风险指标!
![]() 在选定的一定周期内,最大回撤的计算公式为:(期间内最低值-期间内最高值 )/期间内最高值 从公式看出得出来的最大回撤都是负数,只是我们平常说最大回撤,如最大回撤60%,不把这个负号说进去而已。
超级好用的移动窗口函数
在rolling函数后加 .max()是表示移动窗口滚动值里的最大值。
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
可视图表显示: 平安银行这只股票从上市到现在的股价最大回撤图表: ![]() 平安银行这只股票从上市到现在的股价最大回撤图表 |
|