状态:定稿 日期:2026-08-20 来源:由文档 docs/10-discussion.md「2026-08-20 回测判定」迁移而来
议题
旧结论"年线之上买入收益显著更优、7/7 市场支持"能否直接采信?——复核与 2026-08-20 引擎复测判为"判据错位",从 ✅ 推翻为 ❌。
立场(系统所有者)
- 旧结论长这样:内部数据 曾给 ✅,写"7/7 市场支持";胜率口径下信号组(年线上)确实高 0.3~3.4 个百分点。
- 看起来很强、数字很漂亮,本可以直接拿来用(年线上买 / 年线下回避)——这正是它危险的地方:越漂亮越要先验证据链。
支持证据(旧版复核前)
- 旧 README 结论:✅"指数在年线上方买入持有的(风险调整后)收益显著优于下方,持有期越长优势越明显"——H₀:年线上下买入的持有期收益无差异。
- 胜率口径:上方 20/60/120 日 54.1% / 58.6% / 62.1% vs 下方 53.8% / 56.7% / 58.7%,确是高 +0.3~+3.4 pp。
- 旧复核(audit.md)已先行把它从 ✅ 降为 ⚠️ / ❓"待复测",没有再标 ✅。
反方(2026-08-05 复核 + 2026-08-20 引擎复测 tools/fengverify.py,讲透"旧结论为什么会错")
- 判据错位(作废的根本原因):论断承诺的量是"收益",旧脚本却用"胜率"拍板(
claim_supported = above_wr > below_wr)。胜率量的是"赚钱的天数占比",收益量的是"平均赚多少钱"——两者在数据里方向确实相反:US/JP 按收益方向反而相反。且 README 声称"7/7 支持",实际 results.json 里 JP d20、KR d20、UK d20、US d60 的claim_supported均为 false,未诚实呈现。旧结论等于"量到了次数多,没量到金额少"。 - 为什么胜率正而收益反(机制):年线下方偶尔冒出的大反弹(下方段肥尾)把"平均收益"拉高——下方"天天小赚"的次数略少,但每次大反弹吃满,均值反而更高。这是时间序列"均值 ≠ 众数"的典型错位:用胜率替收益,必然误诊方向。
- 口径欠账:未复权(旧复核怀疑 JP 下方 +50% 是除权假跳空)、无显著性检验、无成本、无样本外、未声明是否覆盖退市股、重叠样本未处理——八条可信回测硬条件几乎全缺。
- 钉死旧结论的复测(口径修好后重判):19 市场 2014 只股票、前复权 + T+1 成交 + 信号组扣 25bps 成本 + 2000 次 bootstrap(固定种子 20260820)+ 每标的后 20% 样本外——20 日收益差 −0.98pp(95% CI [−1.93, −0.22],p=1.0,显著反向);60/120 日 −2.13 / −4.23pp 不显著;US 三个持有期全部显著反向(最大市场);仅 HK、KR(6 个月期)显著支持;每股等权口径同样为负。综合 → ❌ 不成立。
- 复测同时证伪旧复核的一个误诊:JP 下方 120 日 +50.7% 在前复权口径下重跑后仍是真实值——不是除权假象,是该段真实存在的收益肥尾(大跌跌破年线后的大反弹);其 120 日中位数(3.51 vs 3.67)、胜率(57.3 vs 57.4)几乎无差异,说明是罕见大反弹抬高均值、无统计意义(CI 极宽)。
- 幸存者偏差只会让结论更不成立,不会挽救:本地库只含当前成分股、缺退市股,被系统性高估的是"下方收益";补上退市股后差值只会更负。裁决方向(❌)稳健且保守。
结论(定稿)
- 任何回测论断,先过
000-PROTOCOL.md十二项协议清单(判据对齐 / 复权 / 前视时序 / 成本 / 退市股 / 基准口径 / 效果量 / 显著性 / 样本外 / 幸存者 / 对标文献 / A股制度)。 - 主判据必须与论断承诺的量一致:说"收益"就只用收益判定支持/拒绝;胜率只能做辅助参考,不得偷换。
- 任一检查项 ❌ 或 ⚠️ → 只配标"待复测",不得进决策;修复全部后重跑、仍不成立才标 ❌。
- 原"✅ 7/7 支持"旧结论作废,该论断结论以复测版白话卡 + audit-notes 为唯一 truth。
系统改动
- ✅ 已实施:内部数据 确定性复测引擎(种子 20260820、2000 次 bootstrap、可复现)
- ✅ 已实施:
000-claims-def.md论断定义登记("定义 → 操作化 → 判据"配方) - ✅ 已实施:
000-PROTOCOL.md十二项协议清单(红绿灯验收,任一 ❌/⚠️ 只配"待复测") - ✅ 已实施:#1 复测版白话卡(
RETEST-2026-08-20/README.md卡)+ 审计说明(audit-notes.md)+ 机器结果(results.json) - ⏳ 待实施:000-CONCLUSIONS.md 旧结论行改宣告(#1 更新为"❌ 已重测拒绝")