致命红旗诊断报告

源文件:D:\Hermes\评估中心\reports\backtest\致命红旗诊断报告.md · 日期 2026-09-18 · 2KB

致命红旗诊断报告(任务1-3)

执行时间: 2026-09-18
状态: ✅ 完成


任务1:验证真实A1的38.8%

发现

分析

指标 真实A1 代理A1 市场
T+1命中率 38.8% 49.7% 52.9%
p值(vs 50%) 0.0001 ❌ 0.8125 -

结论:
- 真实A1显著低于随机(p=0.0001)
- 真实A1也低于市场(38.8% vs 52.9%)
- 可能是A1因子方向问题,或样本太少(16天)

逐日跑赢市场分析

日期 策略T+1% 市场% 结果
0819 80% 73.7% ✅跑赢
0820 90% 46.7% ✅跑赢
0821 0% 31.8% ❌跑输
0826 90% 61.7% ✅跑赢
0831 20% 67.6% ❌跑输
... ... ... ...

16天中只有9天跑赢市场,7天跑输 → 说明因子确实有问题


任务2:验证基准(市场实际上涨率)

关键发现

市场表现

日期 上涨率 评价
0819 73.7% ✅强势
0820 46.7% ✅正常
0821 31.8% ❌低迷
0824 77.4% ✅强势
0901 21.5% ❌低迷
0902 30.4% ❌低迷

结论:
- 用50%作为随机基准是错误的
- 应使用市场实际上涨率作为基准
- 策略应追求"跑赢市场"而非"绝对上涨"


任务3:命中率定义不一致

发现的问题

脚本 命中率定义 结果
run_scheme_b_batch_real.py ret > 0 38.8%
run_scheme_b_batch_fast.py ret > 0 49.7%
backtest_msv2_real.py ret > COST_RATE (0.432%) -

分析

正确基准

命中率 = 跑赢市场天数 / 总天数
而不是: ret > 0 或 ret > COST_RATE

修正建议(任务4)

新命中率定义

# 正确做法:跑赢市场
bench_ret = get_market_return(date)  # 当日市场平均收益
hit = strategy_ret > bench_ret

修正步骤

  1. 修改run_scheme_b_batch_real.py和run_scheme_b_batch_fast.py
  2. 添加市场收益计算函数
  3. 重新运行16天真实A1回测
  4. 对比修正前后的结果

输出文件

文件 路径
诊断脚本 tools/diagnose_red_flags.py
诊断结果 reports/backtest/diagnostic_red_flags.json
本报告 reports/backtest/致命红旗诊断报告.md

等待确认: 是否继续执行任务4(修正后重算)?