fix(factor): VPS日度wrapper registry对齐运行副本——10-10错位修正漏了本件(仍指config种子),36个decomposer因子(10-09注册)缺席10-10首班即此因;照月度wrapper同款data/+缺档自举,当晚批起全员进批;spec补实施勘误 [vps]
CI/CD / test (push) Successful in 43s
CI/CD / nas-deploy (push) Successful in 31s
CI/CD / nas-verify (push) Successful in 8s

This commit is contained in:
2026-10-11 18:33:12 +08:00
parent cdeea605a3
commit faac90c6ce
2 changed files with 10 additions and 2 deletions
@@ -70,7 +70,7 @@ F 环是「管道」与「飞轮」的分界:归因发现→可能=衰减触
- **双机对拍=验证校准期机制(非永久双跑)**:对拍目的是验证与校准(防「当时就是错的」),不是刚需;首班 10-04 双机同评已双绿(一致 9/分歧 0),日度化后再跑**连续 4 周日度对拍关键指标(IC/t/rank)一致**即宣告验证通过→**VPS 独立日度跑**;NAS 降为**月度抽检对拍**(每月末快照对拍一次),「分歧超阈→不出降权告警、只开排查 issue(宁可误报排查,不可错发告警)」机制永久保留;
- **出生盲区消解(本修订最大红利)**:新因子出生当夜/次日自动搭上日班车拿到 t,盲区从最长一个月缩到一天——「出生预考」议题不再需要;
- **性能注记**:月度冷跑实测 40min 级;日度滚动下 12M 窗每天只滚一天,历史因子值全命中三级缓存(h5→md5 pkl),只有新截面要算,预期十几分钟级;首月实测校准,上限=40min 也放得下夜班窗口。
- **调度实配(2026-10-10 落地)**:`monthly_batch --daily` 开关(as_of 直用不归一月末,label=`daily_` 前缀;月度链缺省行为不变)。双机日度任务 21:30(VPS schtask `sanguo-factor-daily`=XML Daily,wrapper=`scripts/factor_research/run_factor_daily_wrapper.ps1` 两段链:daily 批+`monthly_review` 日度对拍件;NAS DSM 任务每日 21:30,runner=`scripts/nas_sync/run_factor_daily_standalone.sh` 一次性容器同款)。**registry 对齐修正(存量错位)**:批侧(日度+月度)`--registry` 从 `config/` 种子改读 `data/` 运行副本——与控制台同源,decompose 新生/判死即时进批视野(旧错位=首班后出生的因子月度批不认识、墓园因子照常占算力;防御=运行副本缺失时从种子拷)。**日度对拍件落 `daily/` 子目录**(判定层端点只读根层,月末快照语义零改);月度四段链照旧每月第一个周日跑(正式报告/归因/缺口开单权威不动,①段重跑幂等)。对拍自动化(NAS 拉 VPS 件+`review_compare` 台账)=验证期工具,后续小班补。
- **调度实配(2026-10-10 落地)**:`monthly_batch --daily` 开关(as_of 直用不归一月末,label=`daily_` 前缀;月度链缺省行为不变)。双机日度任务 21:30(VPS schtask `sanguo-factor-daily`=XML Daily,wrapper=`scripts/factor_research/run_factor_daily_wrapper.ps1` 两段链:daily 批+`monthly_review` 日度对拍件;NAS DSM 任务每日 21:30,runner=`scripts/nas_sync/run_factor_daily_standalone.sh` 一次性容器同款)。**registry 对齐修正(存量错位)**:批侧(日度+月度)`--registry` 从 `config/` 种子改读 `data/` 运行副本——与控制台同源,decompose 新生/判死即时进批视野(旧错位=首班后出生的因子月度批不认识、墓园因子照常占算力;防御=运行副本缺失时从种子拷)。⚠️ 实施勘误(10-11 补齐):10-10 只落了 NAS standalone 与 VPS 月度 wrapper,**VPS 日度 wrapper 漏改**(仍指 config 种子)→ 10-09 注册的 36 个 decomposer 因子缺席 10-10 首班(控制台可见但无评估值);10-11 修正后当晚批起全员进批。**日度对拍件落 `daily/` 子目录**(判定层端点只读根层,月末快照语义零改);月度四段链照旧每月第一个周日跑(正式报告/归因/缺口开单权威不动,①段重跑幂等)。对拍自动化(NAS 拉 VPS 件+`review_compare` 台账)=验证期工具,后续小班补。
- **日度/月度双层分工补丁(2026-10-11 拍板,首班实证后修订)**:首班(10-10)实证 daily 件已带 factor_stats 真值(icAll/positiveRatio/byYear),但根层月报件=10-04 旧 schema 无此字段且判定层端点只读根层→前端弹药速览区空到 11-01。两项拍板:
- **速览读最新(数据可见性)**:FactorDetail 速览区 icStats 数据源=根层月报∪`daily/` 最新件**取 as_of 新者**——档案速览=最新可得(daily),衰减判定/研判卡/墓园触发**仍只读根层**(月末快照语义一行不动);「末次月度批」标签改「末次评估批」(日度化后批次本身已日更,旧名失真)。factor_stats 本质=每次批评估重算的累积统计(icAll=全期均值非某月值),非月度专属计算,两载体取新不改口径。
- **月度链①段复用日度批(计算不重叠,2026-10-11 用户定则「物理分开≠逻辑重叠,否则日度算一遍月度算一遍」)**:月末周日月度链 stage1(批评估)检测同 as_of 的日度批 eval 批次已存在→**跳过重算直接复用**(幂等≠不重算——重算=40min 级算力白烧),月度链只跑月度专属段(②批评报告读已复用的批结果+③缺口开单+④归因+verdict_replay);日度批缺席(任务挂了/数据晚到)才回退自算。eval 库追加语义不变(同 as_of 重跑幂等仍兜底)。
@@ -25,12 +25,20 @@ Set-Location C:\sanguo_vnpy_v2
$PY = 'C:\Python310\python.exe'
$EVAL_DB = 'C:\sanguo_vnpy_v2\data\factor_eval.db'
$REGISTRY = 'C:\sanguo_vnpy_v2\config\factor_registry.yaml'
$REGISTRY = 'C:\sanguo_vnpy_v2\data\factor_registry.yaml' # runtime copy, same
# source as the console (2026-10-11 alignment with NAS standalone +
# VPS monthly wrapper: decompose-registered factors enter the very
# next nightly batch; seed config/ kept only for bootstrapping below)
$VNDB = 'C:\sanguo_vnpy_v2\data\quant_trading.db'
$FUND_DIR = 'C:\sanguo_vnpy_v2\data\static'
$OUT_DIR = 'C:\sanguo_vnpy_v2\reports\factor_monthly\daily'
$LOG = Join-Path $OUT_DIR 'factor_daily_cron.log'
# runtime copy defense: seed from config if missing (machine never ran the API)
if (-not (Test-Path $REGISTRY)) {
Copy-Item 'C:\sanguo_vnpy_v2\config\factor_registry.yaml' $REGISTRY
}
# as_of = T-1 (yesterday): nightly batch evaluates up to last closed session
$asof = (Get-Date).AddDays(-1).ToString('yyyy-MM-dd')