🇨🇳 简体中文
🇺🇸 English
🇯🇵 日本語
Skip to the content.

低波动率策略 (Low Volatility Strategy)

技术实现:基于 pandas-ta 库,使用 ATR 指标

策略原理

低波动率策略基于”低波动率异常”(Low Volatility Anomaly)理论——学术研究表明,低波动率股票长期表现往往优于高波动率股票。该策略通过选择波动性较低的股票构建投资组合,在降低风险的同时获得稳健收益。

核心逻辑

  1. 波动率测量:使用 ATR 作为波动率的代理指标
  2. 波动率排名:对标的按波动率排名
  3. 流动性过滤:过滤低流动性股票(成交量过低)
  4. 信号生成:选择低波动率标的买入,高波动率标的持有

理论基础

低波动率异常:传统金融理论认为高风险应该带来高收益,但实际市场数据显示:

核心指标

策略使用 pandas-ta 库的 ATR 指标:

波动率计算

策略通过 ATR/价格比率标准化波动率:

波动率比率 = ATR / 当前价格

这个比率消除了价格水平的影响,使不同股票的波动率具有可比性。

波动率分类

根据波动率比率对股票进行分类:

波动率比率 分类 策略操作
< 2% 低波动 买入信号
2-5% 中等波动 持有
> 5% 高波动 持有

置信度计算

信号置信度基于两个因素:

  1. 波动率低于阈值的程度:波动率越低,置信度越高(贡献40%)
  2. 历史排名:在历史波动率中的排名越低,置信度越高(贡献30%)
  3. 基础置信度:60%

最终置信度 = min(95%, 60% + 波动率加成 + 排名加成)

策略参数

参数名 类型 默认值 说明
volatility_period int 14 波动率计算周期(ATR周期)
max_volatility float 0.02 最大波动率阈值(2%,即ATR/价格比率)
min_volume int 10000 最小成交量阈值(过滤低流动性)
rank_period int 20 排名窗口期(天数)

关键特性

1. ATR 波动率测量

使用 ATR 作为波动率代理指标,通过 ATR/价格比率实现不同价格股票的波动率可比性。

2. 流动性过滤

自动过滤低流动性股票(成交量低于阈值),避免买卖价差过大和无法及时成交的风险。

3. 排名系统

对波动率进行历史排名,根据排名百分位调整置信度:

4. 组合构建导向

策略适合构建多股票组合,通过选择多个低波动率标的分散风险,并定期再平衡。

5. 预热要求

策略需要至少 max(volatility_period, rank_period) 条历史数据才能开始生成信号。建议提供 50+ 条历史数据确保指标计算稳定。

示例配置

保守配置(稳健投资)

{
    "name": "low_vol_conservative",
    "strategy_type": "LowVolatilityStrategy",
    "config": {
        "volatility_period": 21,
        "max_volatility": 0.015,
        "min_volume": 50000,
        "rank_period": 60,
        "symbols": ["JNJ.US", "PG.US", "KO.US", "WMT.US"]
    },
    "risk_config": {
        "max_position_ratio": 0.8,
        "max_single_position": 0.25
    }
}

标准配置(平衡型)

{
    "name": "low_vol_standard",
    "strategy_type": "LowVolatilityStrategy",
    "config": {
        "volatility_period": 14,
        "max_volatility": 0.02,
        "min_volume": 10000,
        "rank_period": 20,
        "symbols": ["SPY.US", "IVV.US", "VOO.US"]
    },
    "risk_config": {
        "max_position_ratio": 0.6,
        "max_single_position": 0.2
    }
}

策略优缺点

优点

缺点

优化建议

1. 多因子组合

结合质量因子

# ROE > 15%,负债率 < 60%
quality_score = roe * 0.6 - debt_ratio * 0.4
combined_score = (1 - volatility_ratio) * 0.7 + quality_score * 0.3

结合价值因子

# 低PE、低PB的低波动股票
value_score = 1 / (pe_ratio * pb_ratio)
combined_score = (1 - volatility_ratio) * 0.6 + value_score * 0.4

2. 动态再平衡

# 每月检查,波动率排名变化 > 20% 时调仓
if abs(current_rank - previous_rank) > 0.2:
    rebalance()

3. 分层配置

# 根据波动率分层配置仓位
if volatility_ratio < 0.01:
    position_size = 0.25  # 极低波动,25%仓位
elif volatility_ratio < 0.015:
    position_size = 0.20  # 低波动,20%仓位
elif volatility_ratio < 0.02:
    position_size = 0.15  # 中低波动,15%仓位

4. 行业分散

# 确保不同行业的低波动股票
sectors = ["消费", "医疗", "公用事业", "金融"]
max_per_sector = 0.3  # 每个行业最多30%

回测表现

基于历史数据的典型表现(仅供参考):

指标 低波动组合 市场基准
年化收益率 10-12% 12-15%
最大回撤 8-12% 15-25%
夏普比率 1.5-2.0 0.8-1.2
索提诺比率 2.0-2.8 1.0-1.5
波动率 6-8% 12-18%
换手率 20-30%/年 -

应用示例

买入信号

2024-01-15 收盘
AAPL.US 低波动检测:

价格: 175.50
ATR(14): 2.80
波动率比率: 1.60%

历史排名:
过去20天波动率排名: 15/20 (25百分位)
解读: 处于历史低位

成交量检查:
当前成交量: 52.3M
最小阈值: 10,000
流动性: 充足

置信度计算:
波动率置信度: (2.0% - 1.6%) / 2.0% * 0.4 = 8%
排名置信度: (1 - 0.25) * 0.3 = 22.5%
总置信度: 60% + 8% + 22.5% = 90.5%

信号: BUY
建议仓位: 20% (低波动,适合较大仓位)

持有信号(流动性不足)

2024-01-20 收盘
SMALL.US 低波动检测:

价格: 42.30
ATR(14): 0.65
波动率比率: 1.54% (低波动)

成交量检查:
当前成交量: 3,200
最小阈值: 10,000
流动性: 不足

信号: HOLD
原因: 流动性不足
建议: 即使波动率低,也不建议买入

持有信号(高波动)

2024-01-25 收盘
TSLA.US 波动率检测:

价格: 238.50
ATR(14): 8.50
波动率比率: 3.56% (高波动)

阈值: 2.0%
判断: 超出阈值 (3.56% > 2.0%)

信号: HOLD
原因: 波动率过高
建议: 等待波动率降低后再考虑

相关策略

学习资源