框架

数据口径定义(Single Source of Truth)

禁止:把"点/数值差额"直接贴个 % 号。

框架 · 资产·规范 · 框架/数据口径定义.md · 14299 B

数据口径定义(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 动量判定的优先级(消除自相矛盾)

框架/四因子模型完善版 同时给了"方向"和"强度"两套判据,冲突时按此优先级:

  1. 先算强度(5日总变动 %):>3% 强|1–3% 弱|<1% 震荡
  2. 再算方向(5日内同向天数 ≥3 才成立)
  3. 强度为"震荡"时,方向一律降级为 neutral(即使 5 日全涨)。

理由:5 日全涨但累计 <1% 属于噪声区间,不构成可交易趋势。

  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.060 日滚动 σ,样本外验证覆盖 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 的审计结果,统一单位/交易日/序列/验证率/模式判定/可信度六类口径。