You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于backtesting.py中Annualized Volatility指标的疑问

backtesting.py 中年化波动率(Annualized Volatility)的定义与计算逻辑

核心结论:backtesting.py 中的年化波动率,是基于策略每日(或回测最小时间单位)权益净值回报率的标准差,经年化系数调整后得到的指标,既不是标的年度收盘价的标准差,也不是单笔交易盈亏比例的标准差。

具体细节拆解

  • 计算基础数据:
    它的计算依托于策略每日权益净值的回报率时间序列,即每个时间步长(通常是交易日)的权益变化率:当日回报率 = (当日权益 - 前日权益) / 前日权益。这个数据反映的是策略在连续时间里的权益波动,而非标的自身的价格波动,也不是单笔交易的盈亏占比。

  • 年化调整逻辑:
    单周期(比如单日)的标准差只能反映该周期内的波动水平,要得到年化值,需要乘以对应周期的年化系数。backtesting.py 会自动根据回测的时间频率选择系数:

    • 日频数据:乘以 sqrt(252)(默认一年252个交易日)
    • 小时频数据:乘以 sqrt(252*每日交易小时数)
    • 周频数据:乘以 sqrt(52)
      本质是将单周期的波动幅度,按一年的周期长度进行缩放,统一衡量策略的年度波动风险。
  • 与其他波动率的区别:

    • 不同于标的年度收盘价标准差:标的收盘价的波动是市场本身的波动,而策略年化波动率是策略权益曲线的波动,两者可能差异很大(比如对冲策略能大幅降低权益波动,即使标的本身波动很高)。
    • 不同于单笔交易ReturnPct的标准差:单笔交易的盈亏比例只关注每笔交易的结果,完全忽略了交易间隔期的权益变化,无法体现策略在整个回测周期内的风险节奏,而年化波动率是连续时间维度的风险度量。

简单计算示例

假设回测得到每日权益回报率的标准差为0.01(即单日波动1%),那么年化波动率计算为:

年化波动率 = 0.01 * sqrt(252) ≈ 0.1587 → 15.87%

内容的提问来源于stack exchange,提问作者Nico Paquito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 10:45:37