菠萝学量化

菠萝学量化

09 Dec 2025

回测目标波动率策略

在做交易策略时,经常会碰到一个问题:同一种策略在不同阶段表现完全不一样。有时候波动大,你的仓位可能重了点;波动小,你又觉得仓位太轻,收益跟不上。

为了让整体风险变得可控,很多机构会使用一种非常“实用主义”的方法——目标波动率(Target Volatility)

它的核心思想只有一句话:

让你的组合一直保持在预设的年化波动率,不多也不少。

这个想法其实很接近我们做 CTA、趋势策略时常说的“风险平价”,但目标波动率策略通常更简单、更直接,比较适合作为一个基础仓位管理模块。


为什么需要目标波动率?

做交易时,可能都有这种体验:

同一资产在不同年份的波动差距能大到离谱;震荡期仓位太重,会被洗到怀疑人生;单边大行情仓位太轻,看着涨但赚不到钱;策略性能的“稳定性”其实更多取决于仓位管理,而不是策略本身。

目标波动率的出发点就是:既然波动率影响收益和风险,那干脆用波动率来动态调整仓位。

1
2
波动高 → 仓位自动变轻
波动低 → 仓位自然变重

这样不用每天纠结现在是不是应该加仓或减仓,只需要按照公式让仓位自动收缩或扩张。


策略原理

策略其实只有一个核心公式:

1
目标仓位权重 = 目标年化波动率 / 当前年化波动率

例如,想把策略控制在 15% 的年化波动率,当前计算出来的波动率是 30%,那么你就应该只拿:15% / 30% = 0.5 倍仓位。

如果你允许最大杠杆为 1.5,那么这个权重会自动裁剪:

1
权重 = min(目标仓位权重, 最大杠杆)

整个策略就靠这个仓位调整来运行。


使用 Backtrader 回测

我用了 SPY 这个品种回测了这个目标波动率的策略,策略的完整回测代码,请访问:voltarget.py

我这里讲解代码中的一些核心指标计算与交易逻辑。

首先,波动率指标的计算,以当前的实际年化波动率作为基准。

1
2
3
returns = bt.ind.PercentChange(self.data.close, period=1)
std_dev = bt.ind.StandardDeviation(returns, period=self.p.period)
self.volatility = std_dev * np.sqrt(self.p.annual_factor)

通过计算的是 20 日的收益率标准差,并年化(乘上 √252)。这就是当前市场的“真实波动”。

在交易部分按波动率动态调整仓位

1
2
3
4
5
6
target_percent = min(
    self.p.target_vol / self.volatility[0], 
    self.p.max_leverage
)
target_size = self.broker.getvalue() / self.data.close[0] * target_percent
self.order_target_size(target=target_size)

逻辑非常清晰:

这让策略在波动小的时候自动加杠杆,在波动大时自动降杠杆,实现类似“风险再平衡”的效果。

加载数据

用 YFinance 加载 SPY 标普 500 的历史数据。

1
2
3
4
5
6
7
8
df = yf.download(
    symbol,
    start="2015-01-01",
    end="2025-11-30",
    multi_level_index=False,
    auto_adjust=True,

)

SPY 其实很适合这个策略,因为它大部分时间波动率稳定,偶尔波动巨大,用固定仓位很容易经历极端波动,而目标波动率策略可以让曲线变得相对 “平滑”。

如下是在最大杠杆 2 的净值表现:

调用方式:

1
python script.py --symbol SPY --max-leverage 1.5 --target-volatility 2

输出评价指标:

1
2
3
4
组合价值: 517871735.571006
夏普比率: 0.8689922727427503
最大回撤: 25.93392959742132
年化波动: 0.18463178961358762

净值绘图如下所示:

红色的净值曲线是目标波动率的净值曲线,蓝色是基准。

我回测了不同的市场,目标波动率策略在美股这种长期稳定向上,大部分时间波动率稳定,偶尔暴跌的指数有超额收益。而在 A 股和数字货币上并没有在降低波动率的同时还能保持收益。

总体来说,这个是风险控制的策略,后续我会考虑放在一些趋势、对冲或者是多因子组合策略上,在降低策略风险的同时,努力提高策略的收益。


7. 总结

目标波动率策略是一种“简单但好用”的工具。它不依赖方向、不依赖信号,而是利用波动率这个最基础的市场信息,动态调节仓位,实现一种自然的风险平衡。

本文来源于 POLOXUE's BLOG,地址: 回测目标波动率策略
欢迎关注我的公众号: 欢迎加入我的知识星球: