数据口径定义(Single Source of Truth)
禁止:把"点/数值差额"直接贴个 % 号。
数据口径定义(Single Source of Truth)
本文件解决库内同名指标多种算法的问题。
任何文档(框架 / 概念 / 资产 / 因子 / 复盘)与本文件冲突时,以本文件为准,并回改源文档。
生成流程与模板:框架/模板/标准化复盘生成流程
一、单位口径(最容易出错的一项)
| 指标类型 | "变化"列填什么 | 单位写法 | 计算公式 |
|---|---|---|---|
| 价格类(黄金 / WTI) | 百分比 | % | (今收 − 昨收) / 昨收 × 100 |
| 指数类(DXY / VIX) | 百分比 | % | (今收 − 昨收) / 昨收 × 100 |
| 利率类(10Y名义 / 10Y TIPS) | 百分点 | pp | 今值 − 昨值 |
禁止:把"点/数值差额"直接贴个 % 号。 历史上 DXY、WTI、10Y、TIPS 四行都犯过这个错(写成 -0.03%,实际是 -0.03 点,真实百分比是 -0.031% / +0.18% / +0.21%)。 利率类一律写 pp(percentage point),不写 %。
二、"实际利率"只有一个定义
- 实际利率 ≡ 10Y TIPS 收益率。两者是同一个数,不允许并列出现两个不同值。
- 需要"通胀预期"时,用独立字段:
盈亏平衡通胀率 = 10Y 名义 − 10Y TIPS(不得称"实际利率")。
- 复盘正文里"关键指标:10Y TIPS 2.60%,实际利率 2.40%"这类写法是错的(差 0.20 是随手减的固定偏移),已统一改为
实际利率(=10Y TIPS) 2.60%。
三、交易日定义(影响所有"连续 N 日"计数)
- 交易日 = 周一至周五,且非市场假日(假日表待补,当前至少排除周末)。
- 周末禁止生成"收盘复盘"。周末确有内容需要记录时,文件命名为
YYYY-MM-DD 非交易日备忘.md,且: - 不得填写"收盘价 / 涨跌";
- 不计入任何"连续 N 个交易日"。
- 系统日志
logs/automation_20260816.log已确立该规则(今日非交易日,跳过自动化流程),复盘层必须与之一致。
"连续 N 个交易日"算法
连续交易日数 = 状态区间内的周一至周五天数(不含周末)必须同时标注自然日数,格式:
C模式连续 17 个交易日(自然日 23 天,其中 6 个周末日不计)
四、动量"序列"必须等于收盘价序列
序列字段只能填各交易日记录收盘价本身,禁止插值、平滑、补中间点、排序美化。- 校验式:
序列 == 近N个交易日收盘价列表,不相等即为伪造。 日度变化字段由序列逐日相除得出,必须可被复核。- 若出现"5日连涨却判 neutral",属于序列与结论不一致,必须重算。
五、L1 动量判定的优先级(消除自相矛盾)
框架/四因子模型完善版 同时给了"方向"和"强度"两套判据,冲突时按此优先级:
- 先算强度(5日总变动 %):
>3% 强|1–3% 弱|<1% 震荡 - 再算方向(5日内同向天数 ≥3 才成立)
- 强度为"震荡"时,方向一律降级为 neutral(即使 5 日全涨)。
理由:5 日全涨但累计 <1% 属于噪声区间,不构成可交易趋势。
- 结论写法:
neutral(方向向上但强度不足,5日累计+0.33%),不得只写"震荡偏上"。
六、两套"验证率"必须分开命名(库内曾出现 3 个版本)
| 正式名称 | 定义 | 公式 | 用途 |
|---|---|---|---|
| 因子主导验证率 | 主导因子(宏观/情绪/周期/价格)预测的命中率 | 已证实 ÷ (已证实 + 已证伪) | 衡量 A-B-C/四因子框架 |
| Agent 日度验证率 | 日度方向预测的命中率 | 同上,样本换为日度预测 | 衡量 Agent 短线 |
共同规则
- 分母只含"已证实 + 已证伪";
观察中 / 待观察 / 方向模糊 / 半证实一律进"待定",不进分母。 - 报告时必须写成
79.3%(23/29)这种带分母形式,禁止只写80.0%。 - 每张表必须注明统计截止日期。
⚠ Agent 日度预测当前判据不可证伪
现行判据是"预测观望中 + 当日小幅波动 → 记为证实"。"观望中"在任何行情下都能自圆其说,因此 100% 不具备信息量,不得用于评估模型有效性。 改造要求(待落地):观望必须给出可证伪区间,例如 观望 = 预期次日涨跌幅落在 ±0.30% 内,超出区间即记证伪。
七、A-B-C 模式判定的权威版本
- 权威:框架/黄金主导因子切换(A-B-C) 的阈值表
(C 进入条件 = 传统相关性失效 ≥10 个交易日,或出现明确新叙事)。
概念/A-B-C阈值中的"美元弱 + 实际利率↓ + 黄金强 → C"是过度简化,与权威版冲突:
C 的本质是解释力丧失,不是"实际利率必须下行"。实际利率上行而黄金照涨,恰恰是 C 的证据,不是 A 的证据。
- 判定必须逐条写出:
进入条件是否满足 / 维持条件 / 反证条件,缺"反证条件"的复盘按流程规定视为模型失效。
八、数据可信度标签(必须在正文可见处标注)
| 标签 | 含义 | 可用于决策 |
|---|---|---|
verified | 已按主源+交叉源双源核对 | ✔ |
single_source | 仅单源,未交叉验证 | ⚠ 谨慎 |
extrapolated | 线性外推/模型生成,非真实行情 | ✘ 禁止 |
规则:HTML 注释 <!-- data_verified: false --> 在阅读视图不可见,不足以作为标注;必须在文首用可见引用块声明。
九、L0 断路器阈值(分级,强制)
2026-09-12 起由"建议"升级为"强制":所有含 L0 的文件(终极决策框架 / 四因子模型完善版 / 使用指南 / 复盘模板)必须按本节分级执行,不得只写"正常"。
9.1 两级阈值
| 级别 | 条件 | 动作 |
|---|---|---|
| L0-警告 | 金/美同日同跌且金跌幅 > 0.8% | 或 VIX 单日 +15% | 或 VIX 三日累计 +30% | 不阻断模型,但当日禁止新开多仓,须写明减仓计划 |
| L0-断路 | 金/美同日同跌且金跌幅 > 2.0% | 或 VIX 单日 +50% | 或(有股指时)股债金三杀同跌 > 1.5% | 暂停因子分析,只做减法(减仓/平仓/对冲),持有现金或短债 |
9.2 分布型补充阈值 [待验证]
固定阈值在低波动期可能长期不触发。建议叠加一条自适应规则:
黄金单日
|涨跌| > 2.5 × σ_60日→ 触发人工复核(不自动断路);> 3.0 × σ_60日→ 等同 L0-断路。
[事实] 实测标定(LBMA PM Fix,2026-03-01→09-10,n=74,σ₆₀ ≈ 1.63%):
| 阈值 | 数值 | 窗口内触发日 |
|---|---|---|
| 2.0σ | 3.25% | 3 天:06-10、06-15、09-01 |
| 2.5σ | 4.07% | 1 天:09-01(−4.59%,= −2.82σ) |
| 3.0σ | 4.88% | 0 天 ← 2026-09-01 那次 −4.59% 漏过 |
⚠ 重要更正:若把阈值定在 3σ,则本窗口最极端的一天(09-01,−4.59%)不会被捕获。
[推断]因此对黄金这类厚尾资产,2.5σ 比 3σ 更合适;但该结论基于 74 日样本,须按 §9.4 回测后固定。
9.3 关于"L0 形同虚设"的表述禁令
[事实] L0-1/L0-2 在 2026-08-17→09-10 的 19 个真实交易日中触发 0 次;但库内回测(2021–2025,5 年)记录 L0 触发 10 次(≈2 次/年,该数字 [未能复核],因回测输入 CSV 不可达)。
[推断] 二者并不矛盾:L0 是危机专用过滤器,在平静期不触发是设计意图而非缺陷。
因此禁止在库内任何文件中写"L0 形同虚设/永不触发"这类从短窗口泛化出的结论。
允许且应当写的是:① L0-3 因缺 SPX/NDX 而无法执行(真缺陷);② L0 只有"全清仓/不触发"两态,缺渐进降档(真缺陷);③ 平静期不触发属正常。
9.4 阈值标定要求 [待验证]
| 参数 | 当前值 | 标定方法 | 验收阈值 | 失败判据 |
|---|---|---|---|---|
| L0-1 跌幅 | 2.0% / 警告 0.8% | 用 ≥3 年黄金日收益分布取 99 / 90 分位 | 5 年触发 4–12 次 | 触发 0 次(过松)或 >40 次(过敏) |
| L0-2 VIX | +50% / 警告 +15% | 同上;历史极端约 +44%(2020-03) | 5 年触发 2–8 次 | 0 次 → 降到 +25% 重测 |
| 分布型 σ 倍数 | 2.5 / 3.0 | 60 日滚动 σ,样本外验证 | 覆盖 90% 以上的 >2.5σ 事件 | 漏掉窗口内最大单日波动 |
未完成标定前,上述阈值一律标注 [待验证],不得作为实盘唯一风控依据。
9.5 填写要求(不得再出现"只写正常")
无论是否触发,L0 三项必须逐条填实际数值,格式:
| 检查项 | 实测值 | 阈值 | 状态 |
|---|---|---|---|
| L0-1 金/美同跌 | 金 −X.XX% / 美元 −X.XX% | 断路 >2.0%|警告 >0.8% | 正常/警告/断路 |
| L0-2 VIX 跳升 | +X.X%(15.72→16.34) | 断路 +50%|警告 +15% | … |
| L0-3 股债金三杀 | 金 −X% / SPX −X% / NDX −X% / 债券腿:AGG 未复权真实收盘(缺失时回退 10Y 收益率方向代理) | 金/SPX/NDX 同跌 >1.5%;债券腿 AGG 日回报 ≤−1.5%(真实价格) | 可评估(含真实债券价格);缺目标日股指/债券时如实写"无法评估" |
L0-3 在缺目标日股指或债券真实回报时,必须如实写"无法评估";v5.2 起二级源(东财美股指数 / CBOE 延迟报价)可补当日缺失值并标来源与
[待验证],但不得覆盖权威源已有值,也不得用旧值(前值填充)。
十、二级源与债券真实收盘口径(v5.2 新增)
10.1 二级源使用规则(消盲区)
| 项 | 规定 |
|---|---|
| 触发条件 | 仅当权威源缺目标日值(如 FRED SP500 / NASDAQ100 / VIXCLS 滞后)时启用;权威源已有目标日值时不得覆盖 |
| 数据源 | 美股指数:东财 100.SPX / 100.NDX100(scripts/update_aux_sources.py → 数据/index_aux.json);VIX:CBOE 延迟报价(T+0),并可回填 CBOE 官方 CSV / FRED |
| 优先级 | VIX:fred > cboe_csv > cboe_delayed > 反推;美股指数:FRED 权威 > 东财二级 |
| 来源标注 | 使用二级源时,L0 / 快照 / latest.json 必须写来源(如「CBOE 延迟报价(T+0)」);反推值(如 VIX 前值)标 [待验证] |
| 禁止 | 不得把二级源值伪装成权威源;不得用二级源覆盖已有 FRED / 财政部 / LBMA 值;不得将反推值写入 latest.json 权威字段 |
10.2 债券 ETF 一律未复权真实收盘
| 项 | 规定 |
|---|---|
| 价格口径 | AGG / TLT 一律使用未复权真实收盘价,禁止用 fqt=1 复权价作为债券腿回报 |
| 源优先级 | 纳斯达克官网 historical > 东财 fqt=0 |
| 交叉验证 | 写入 数据/bond_xcheck.json;单日两源差异需持续核对 [待验证] |
| 用途 | L0-3 债券腿只用 AGG 当日真实价格回报;TLT 为辅助参考 |
10.3 「会话完成」判定:不得把盘中价当收盘(v5.2.1 新增)
| 项 | 规定 |
|---|---|
| 原则 | 不得写入/使用当日尚未发生的收盘价;数据源在盘中返回的当日日线视为未完成中间价 |
| 判定 | 日线日期 D 只有在 now_utc >= D 21:00Z(美股 16:00 ET,保守取 21:00Z)时才算最终收盘;半日市更保守处理(宁可不并入) |
| 后果 | 未完成的当日日线拒绝并入债券腿,记入 数据/bond_*.json.provisional_dropped;收盘后下一轮正常并入 |
| 自愈 | 上一轮标记为 provisional_dropped 的日期,下一轮从旧序列中剪除并重取真值(防止"已有日期不覆盖"红线把伪收盘永久固化) |
| 二级源同理 | 二级源(东财指数 / CBOE 延迟报价)可以提供晚于目标日的 T+0 点位,但只能作为"目标日缺口回退"使用,不得把更晚日期当成目标日收盘 |
相关实现:
scripts/update_bond_etf.py的_is_session_final()/filter_session_final()/merge_asset(drop_dates=...)。
10.4 [待验证] 标记要求
- 反推的前值(如 VIX 09-23=15.18 由
price_change反推)一律标[待验证],待权威源发布后覆盖(若权威源已覆盖同日值,该标记应关闭)。 - 单日双源差异、二级源集中度(东财单家)等未完成长期核对项,一律标
[待验证]。 _is_session_final的 UTC 21:00 保守界与provisional_dropped规则本身亦为[待验证]。- 机械计算结果 ≠ A/B/C 结论;二级源救回 ≠ 可以宣布 A/B/C 成立。
- 二级源回退的判定必须以「目标日是否在序列内」为准,禁止用"序列末项是否等于目标日"(T+0 源天生会更新)。
修订记录
- 2026-09-26 v1.3:新增 §10.3「会话完成」判定(禁止盘中价当收盘 + 债券腿
provisional_dropped+ 自愈剪除 + 二级源更晚日期只能作缺口回退);§10.4(原 §10.3)补充「权威源已覆盖同日值时关闭反推[待验证]」与「二级源回退判定口径」。 - 2026-09-25 v1.2:§十 新增二级源(东财美股指数 / CBOE 延迟报价)与债券 ETF 未复权真实收盘口径;§9.5 L0-3 口径更新为「可评估(含真实债券价格)」;明确二级源仅补目标日缺失值、不覆盖权威源、反推值标
[待验证]。 - 2026-09-12 v1.1:§九 由"建议分级"升级为强制分级(L0-警告 / L0-断路),新增 §9.2 分布型阈值并给出 σ 实测标定(σ₆₀≈1.63%,2.5σ=4.07%,3σ=4.88%);新增 §9.3 禁止"L0 形同虚设"的短窗口泛化表述;新增 §9.4 阈值标定要求(全部
[待验证]);§9.5 明确 L0-3 在缺股指时只能写"无法评估"。 - 2026-09-09 v1.0:首次建立。依据
数据勘误报告_2026-09-09的审计结果,统一单位/交易日/序列/验证率/模式判定/可信度六类口径。