一、替换背景与授权链
- 回测冠军机 anchor-vote1-κ0.25(E15 + RR5′ + κ0.25 三件套):MV2 14.31 / V3rr 14.50,优于生产基线
- 2026-09-03 19:30 用户裁定(AskUserQuestion):部署采用方案 B 完整替换,判定频率采用月末判定(严格复刻回测,无前视);A1/A2 与 ADDVOTE 闸退役
- 2026-09-03 19:33 用户范围修正:宏观 v2.2 已有优化(新能源能源票 / ACFR 双口径票 ADDVOTE / L2-k20 黄金调制)不退役,进行适配检查与接入
二、anchor 状态机规格(生产口径)
| 组件 | 语义 | 参数 |
| E15 兜底 | 信号价距 12 月滚动峰 ≤ -15% → full_exit / esc 升级 | -15% |
| any1 Lag-1 | 上月宏观票 ≥1(Lag-1,无前视)→ wait | 票 ≥1 |
| ADDVOTE 并入 | ACFR_div 或 ACFR_eps > 1.20 → 并入 wait 触发(same 口径) | θ=1.20 |
| RR5′ 回归 | v/anchor - 1 ≥ 5% → hold 唯一回归路径(锚价水平语义) | +5% |
| κ0.25 衰减锚 | eff = anchor × 0.9975^mo,仅 full_exit 段衰减解锁 | 0.25%/月 |
| 月末 tick | 每月首个交易日封上月月末价并判定;日频仅更新数据/NAV/ACFR 读数,状态机不动 | 月频 |
信号指数 = QQQ 月末收盘(NDX100 复制,比值语义与回测 NDX 净值一致,追踪误差 ~0.2%/年);数据源 outputs/_qqq_ohlc.json(stockanalysis 月频刷新)。生产化 tick 语义 = 回测 run_portfolio「月 i 首日按上月末信号调仓」的镜像。
三、迁移链(无前视)
- 探针 build_anchor 跑至 2026-06:
wait / mo=0 / anchor_ndx=33.705,交叉校验通过
- NDX 净值 → QQQ 价格换算:scale = 736.40 / 33.705
- QQQ 实际月末价推进 2026-07(687.99)/ 2026-08(721.11):无 re / esc 事件
- 初始生产状态:state=wait, anchor=736.40, trough=687.99, mo=2, peak=736.40, lastTick=2026-08,vHist 13 点(2025-08 ~ 2026-08)
四、宏观 v2.2 已有优化适配检查结果
| 已有优化 | 适配结论 | 处理 |
| A1/A2 闸 | SHELVED(2026-08-27 审计撤下) | 无需处理,生产本就未挂 |
| 能源 EROI → 新能源指标 | 不受影响 | 持仓层(XLE)优化,与状态机无关,照旧 |
| ACFRM-19 ACFR 双口径票 ADDVOTE | 接入 | 触发并入月末 tick(日频触发停用);读数写回保留(当前 ACFR_div=1.007 / ACFR_eps=0.934,均 <1.20 未触发) |
| L2-k20 黄金调制(wait 态金 55→20 + 现金 35) | 照旧 | phase 标签联动 anchor 状态;当前 L2 OFF(dd24=-10.7%),实际持仓金 20% + BIL 35% |
五、验证闭环
17/17
dry-run 测试 ALL PASS(8 项用例:日频 no-op / 三种月末 tick 转移 / phase 映射 / DECISION_HISTORY 同步 / κ 衰减 / any1 并入)
IDENTICAL
线上 vs 本地 diff 校验(部署零丢失)
2026-10-01
下次月末 tick 时点(封 2026-09 月末价判定)
- 端到端
update_country 通过:幂等保护触发(navHistory 末条 2026-09-03),标称/实际阶段均 wait
- 线上源码级校验:ANCHOR_STATE 常量与迁移初始化逐字段一致;功能层
combinePhases 以 ANCHOR_STATE.state 唯一决定
- 口径统一修正(上线后二次部署):页面「当前规格」文案 E10/dd12≤-10% → E15/距12月滚动峰≤-15% 共 17 处;DECISION_HISTORY 历史事件保留旧口径(历史决策按当时机制记录)
- JS 语法校验:全部 script 块 PASS(node new Function)
六、当前生产状态快照(2026-09-03 上线时点)
| 字段 | 值 | 说明 |
| state | wait | any1 触发(上月票 1/5:m1 CAPE ≥90 分位) |
| anchor | 736.40 | 2026-06 月末 QQQ(any1 触发月锚价) |
| trough / mo | 687.99 / 2 | wait 段内低点(2026-07)/ 段内月数 |
| 实际持仓 | SPY15 + 防御15 + 能源15 + 金20 + BIL35 | wait 规格(金55)经 L2-k20 调制(L2 OFF) |
| NAV | 104.94 | 2026-09-03 收盘同步后 |
下次 tick 预演(2026-10-01 封 2026-09 月末价 v):v ≥ 773.22(736.40×1.05)→ RR5′ 回 hold;v ≤ 625.94(736.40×0.85)→ E15 升 full_exit;区间内维持 wait(mo→3)。κ 衰减解锁仅 full_exit 段生效,wait 段锚价恒定。
七、改动清单与归档说明
| 文件 | 改动 |
app/_daily_update.py | 新增 anchor 规格段(常量 + 5 函数);_anchor_tick 为状态机唯一驱动;_update_waiting_flag/_apply_addvote_gate/_update_ixic_recovery 对 anchor 盘跳过或降级;_sync_phase_label/_sync_decision_history/nominal_phase/parse_phase_constants 加 anchor 优先分支;update_country us-macro 分支头部插入 tick |
app/sim-us-macro.html | 注入 const ANCHOR_STATE;combinePhases anchor 优先;badge/fuseScale/静态文案统一 anchor 口径(E15/RR5′/κ0.25/月末 tick) |
app/_anchor_migrate_init.py(新建) | 迁移初始化:QQQ 月末序列提取 + 探针链交叉校验 + 换算 + 推进 07/08 → outputs/anchor_state_init.json |
app/_anchor_inject_page.py(新建) | 页面注入工具(幂等):ANCHOR_STATE 常量 + combinePhases 优先 + 文案替换 |
app/_anchor_dryrun_test.py(新建) | dry-run 测试矩阵 8 项 17 检查 |
app/_bak_2026-09-03_anchor_predo/ | 改造前备份(_daily_update.py + sim-us-macro.html) |
口径披露:信号指数 QQQ 月末收盘替代回测 NDX 净值(复制组合比值语义等价);历史锚定指标 MV2+金L2-k20 含成本 22.75% / MDD −21.7% / Sh(rf_geo) 1.709 为替换前生产口径。本记录一式两份:桌面 + 主站 academic/ 归档。部署链路:app/ → app/deploy/ → workbuddy_sites_deploy → ?nocache= 校验 → 归档。