Skip to content

Latest commit

 

History

History
262 lines (195 loc) · 6.85 KB

File metadata and controls

262 lines (195 loc) · 6.85 KB

Momentum_20 因子有效性测试指南

本指南详细说明如何在您的因子挖掘框架中测试 momentum_20 因子的有效性。

🎯 测试目标

验证 momentum_20 因子的以下特性:

  • 预测能力:因子值与未来收益率的相关性
  • 稳定性:在不同时间段的表现一致性
  • 分层效果:高低分位数的收益差异
  • 风险调整收益:考虑波动率的收益表现

📋 测试流程

1. 快速测试

使用简化版测试脚本进行基础验证:

python3 test_momentum_20_simple.py

2. 完整测试

使用完整版测试脚本进行全面评估:

python3 test_momentum_20.py

🔧 测试工具说明

核心测试类

SimpleMomentum20Tester

  • 用途:基础因子有效性测试
  • 功能:IC分析、分层回测、综合评级
  • 优点:运行稳定,结果清晰
  • 适用场景:快速验证、初步筛选

Momentum20Tester

  • 用途:全面因子有效性评估
  • 功能:包含真实数据获取、完整回测
  • 优点:功能完整,评估全面
  • 适用场景:正式评估、生产使用

测试指标详解

1. IC分析(信息系数)

  • IC值:因子值与未来收益率的相关系数

    • |IC| > 0.05:优秀 🔥
    • |IC| > 0.02:良好 ✅
    • |IC| < 0.02:一般 ⚠️
  • IC_IR:IC的信息比率(IC均值/IC标准差)

    • |IC_IR| > 1.0:稳定 ✅
    • |IC_IR| < 1.0:不稳定 ⚠️
  • IC胜率:滚动IC大于0的比例

    • 胜率 > 60%:优秀
    • 胜率 > 50%:良好
    • 胜率 < 50%:一般

2. 分层回测

  • 分位数收益:将因子值分成5层,观察各层收益率
  • 多空收益:最高分位数与最低分位数的收益差
  • 单调性:各分位数收益是否呈现单调趋势

3. 风险指标

  • 夏普比率:年化收益率/年化波动率
  • 最大回撤:从峰值到谷值的最大跌幅
  • 胜率:正收益期数占总期数的比例

📊 使用示例

示例 1:基础测试

from test_momentum_20_simple import SimpleMomentum20Tester

# 创建测试器
tester = SimpleMomentum20Tester()

# 运行测试(使用趋势数据)
results = tester.run_comprehensive_test(use_trend_data=True)

# 查看IC结果
ic_results = results['ic_results']
print(f"1期IC: {ic_results['period_1']['ic']:.4f}")
print(f"5期IC: {ic_results['period_5']['ic']:.4f}")

示例 2:自定义数据测试

import pandas as pd
import numpy as np
from src.factors.base.factor import factor_registry

# 获取因子
factor = factor_registry.get_factor("momentum_20")

# 准备您的数据(需要包含 open, high, low, close, volume 列)
data = pd.DataFrame({
    'open': your_open_data,
    'high': your_high_data, 
    'low': your_low_data,
    'close': your_close_data,
    'volume': your_volume_data
}, index=your_dates)

# 计算因子值
factor_values = factor.calculate(data)

# 进行IC分析
from src.evaluation.metrics.ic_analysis import ICAnalyzer
ic_analyzer = ICAnalyzer()

returns = data['close'].pct_change()
future_returns = returns.shift(-1)
ic = ic_analyzer.calculate_ic(factor_values, future_returns)

print(f"因子IC: {ic:.4f}")

示例 3:批量测试不同参数

def test_momentum_variants():
    """测试不同窗口的动量因子"""
    from src.factors.technical.momentum import MomentumFactor
    
    windows = [5, 10, 20, 30, 60]
    results = {}
    
    for window in windows:
        # 创建因子
        factor = MomentumFactor(window=window)
        
        # 使用测试数据
        tester = SimpleMomentum20Tester()
        data = tester.create_test_data(days=200)
        
        # 计算因子值
        factor_values = factor.calculate(data)
        
        # IC分析
        ic_results = tester.test_ic_analysis(factor_values, data)
        
        results[f'momentum_{window}'] = ic_results['period_1']['ic']
    
    # 找到最佳窗口
    best_window = max(results.items(), key=lambda x: abs(x[1]))
    print(f"最佳窗口: {best_window[0]}, IC: {best_window[1]:.4f}")
    
    return results

🏆 评级标准

综合评级算法

总分 = IC强度得分 + IC稳定性得分 + IC持续性得分 + 分层效果得分

  • 🔥 优秀 (≥80%得分):强烈推荐使用
  • ✅ 良好 (≥60%得分):推荐使用,注意监控
  • ⚠️ 一般 (≥40%得分):谨慎使用,需要优化
  • ❌ 较差 (<40%得分):不推荐使用

各项得分标准

指标 优秀 良好 一般
IC强度 |IC| > 0.05 |IC| > 0.02 |IC| ≤ 0.02
IC稳定性 |IC_IR| > 1.0 |IC_IR| > 0.5 |IC_IR| ≤ 0.5
IC持续性 5期|IC| > 0.02 5期|IC| > 0.01 5期|IC| ≤ 0.01
分层效果 收益差 > 0.005 收益差 > 0.001 收益差 ≤ 0.001

⚠️ 注意事项

1. 数据质量

  • 确保价格数据的连续性和准确性
  • 处理停牌、分红等特殊情况
  • 注意数据的时间对齐

2. 回测偏误

  • 前视偏误:避免使用未来信息
  • 生存偏误:考虑退市股票的影响
  • 数据挖掘偏误:避免过度拟合

3. 市场环境

  • 在不同市场状态下测试(牛市、熊市、震荡市)
  • 考虑宏观经济环境的影响
  • 注意市场结构性变化

4. 交易成本

  • 考虑佣金、滑点、冲击成本
  • 评估因子的换手率
  • 计算交易成本对收益的影响

🔧 优化建议

1. 参数优化

# 测试不同窗口参数
for window in [10, 15, 20, 25, 30]:
    factor = MomentumFactor(window=window)
    # 运行测试...

2. 因子组合

# 与其他因子组合
momentum_factor = factor_registry.get_factor("momentum_20")
volatility_factor = factor_registry.get_factor("volatility_20")

# 计算组合因子
combined_factor = 0.6 * momentum_values + 0.4 * volatility_values

3. 市场中性化

# 行业中性化
industry_adjusted_factor = factor_values.groupby(industry_codes).apply(
    lambda x: (x - x.mean()) / x.std()
)

📈 后续应用

1. 投资组合构建

  • 基于因子值进行股票选择
  • 设定权重分配规则
  • 定期调仓策略

2. 风险管理

  • 设置止损规则
  • 控制最大回撤
  • 分散化投资

3. 因子监控

  • 定期更新因子表现
  • 监控因子衰减情况
  • 及时调整策略参数

🚀 高级功能

1. 因子归因分析

  • 分解因子收益来源
  • 识别有效的子因子
  • 优化因子构造方法

2. 机器学习增强

  • 使用ML方法优化因子
  • 非线性因子变换
  • 特征工程技术

3. 多频率分析

  • 日频、周频、月频测试
  • 不同频率的IC衰减
  • 最优调仓频率选择

💡 提示:建议先使用简化版测试工具进行快速验证,再使用完整版工具进行深入分析。定期监控因子表现,及时调整策略参数。