框架

DUCKERRY_Warehouse 系统架构优化报告 v4.0(2026-09-22)

已读取:根目录、scripts/(14 活跃 + 7 legacy)、tests/、数据/(runs/paper/predictions/logs)、复盘/、框架/、优化/、optimization/、MOC 驾

optimization · 资产·机制 · optimization/报告/系统架构优化报告_2026-09-22.md · 10969 B

DUCKERRY_Warehouse 系统架构优化报告 v4.0(2026-09-22)

性质:全库架构优化(效率 + 稳定性 + 整洁度),质量只升不降——所有行为级变更经 old-vs-new 逐字节 diff / 单测验证。

修改前备份:/var/minis/shared/backup/DUCKERRY_Warehouse_pre_arch_20260922_001450(603 文件,含全部原始脚本/数据)。

生产库:/var/minis/mounts/DUCKERRY_Warehouse。

1. 审计范围与方法

已读取:根目录、scripts/(14 活跃 + 7 legacy)、tests/、数据/(runs/paper/predictions/logs)、复盘/、框架/、优化/、optimization/、MOC 驾驶舱、audit_evidence/。共 548 文件(排除 .obsidian)。

验证方法:

python3 -m compileall -q scripts tests            -> PASS
python3 -m unittest(重构后分批)                  -> 10/10 PASS
regime_hybrid old-vs-new 逐字节 diff(同面板)      -> CSV_IDENTICAL / WF_CSV_IDENTICAL
paper_engine 现金推导 vs 现有状态                  -> 0.300 / 0.999580 完全一致
fetch.py 真实抓取 12 源                            -> 12/12 OK(20260922T030600)

2. 发现与修复

ID类别发现修复验证
A1测试过时4 个测试假设"面板末行=完整交易日";面板延伸至 09-21(PM 未发布)后全挂setUpClass 目标日改为最后真实交易日(trading_frame().index[-1]),与面板巧合解耦4/4 ok,套件 10/10 恢复
A2隐式耦合paper_engine._cash_delta 实例属性在 execute_signal 与 daily_mark_to_market 之间传值——先执行后盯市/跨日中断时现金错删除该属性;盯市改为从订单文件按 status=filled and side=buy 无状态推导(幂等,任何调用顺序正确)推导值 0.300 与现有状态完全一致
A3转写错误fetch.py pipeline_error.log 写入字面量 \\n(非换行)改为真实 \npy_compile PASS
A4转写错误dkfetch.clean() HTML 实体被解码成 no-op("<"→"<"、">"→">"、"&"→"&")恢复 </>/& 解码;clean() 移出逐行循环py_compile PASS
B1重复逻辑regime_hybrid.py main() 与 compute_regime_from_df() 重复 ~150 行(L1 信号 ×3、距离循环 ×2、walk-forward ×2)抽取共享核心:_l1_signal/_dist_rows/_raw_label/_conf_entropy/walkforward_compare/_archetypes_from_z;main 收敛为编排+渲染old-vs-new CSV 逐字节一致(-regime_daily.csv / regime_daily_wf.csv)
B2效率test_pipeline.py 顶层 import fetch 拉起整条 scipy 链(iSH ~45s),纯解析测试陪跑改为 test 内延迟导入非重算测试启动显著加速
C1整洁度7 个 09-13 时代一键修复脚本散在 scripts/(finalize_reviews/finish_reviews_fast/panel_legacy/rebuild_reviews×2/calibrate/validate_0918)归档至 scripts/legacy/(引用扫描:fetch/tests 均不 import;未删除)scripts/ 收敛为 14 个活跃脚本
C2整洁度scripts/__pycache__、tests/__pycache__ 残留清理(可再生,不作证据)—
D1稳定性低内存设备上 mcal import(~70s)+ valid_days(~66s)→ 长进程可能被静默终止(本会话实测多次)dkpanel 增加 DK_DISABLE_MCAL=1 kill-switch(强制回退硬编码假日表,2026 表与官方日历 77/77 零差异已验证)关闭后套件全跑通
D2文档一致性MOC v3.6:状态停更在 09-11、无新组件(模拟盘/债券腿/regime WF)、regime 行滞后于 LBMA 数据修订升级 v4.0:新增 §〇 系统架构总览、概览表 5 维更新、Agent 表更新、v4.0 版本记录、regime 行同步当前面板计算值(Trending-Down 0.788)MOC 内部一致

3. 质量守恒验证

  • regime_hybrid 重构:新旧代码在同一 panel 上输出 regime_daily.csv 与 regime_daily_wf.csv 逐字节一致;唯一日志差异为合计行 -0.01pp 显示舍入(新版与逐行展示一致,更自洽)。无前视 walk-forward 数字与历史记录完全一致(Δ+4.29pp、5 被过滤日含 06-17 -2.43%、07-22 -2.65%)。
  • paper_engine:无状态现金推导 = 现有 equity.csv 记录值(0.300000 / equity 0.999580),当前持仓量纲正确。
  • 测试:10/10 通过(修复前 6/10——4 个失败为测试过时而非生产 bug,根因已写入测试注释)。
  • fetch.py 主管线:12 源真实抓取 12/12 OK;面板/分析/regime 组件分别验证通过。⚠ 本会话 iOS 内存压力下长进程(>~2.5 分钟)可能被静默终止,完整发布运行待用户下次正常时段执行(python3 scripts/fetch.py)。

4. 未变更(刻意保留)

  • G1/G8 失败关闭发布机制、原子写、run 归档、无填充/无外推原则——v2.1 审计的核心能力,全部保留。
  • audit_evidence/ 冻结证据包——只读,不改写。
  • 复盘/历史原始记录/ 隔离归档。
  • recompute2/3/4.py、validate_prediction.py、predict_regime_conditional.py、update_bond_etf.py、reset_paper_state.py——活跃管线/工具,未动。
  • 回测/因子/资产/概念 文档——本次任务为架构优化,未触碰研究内容。

5. 文件变更清单

文件变更
scripts/regime_hybrid.py重构:478→419 行,抽取 6 个共享核心,消除 ~150 行重复;接口/输出不变
scripts/paper_engine.py删除 _cash_delta 隐式耦合;现金无状态推导(+6 行注释)
scripts/dkfetch.pyclean() 实体解码修复 + 移出循环
scripts/fetch.pypipeline_error.log 换行符修复
scripts/dkpanel.py新增 DK_DISABLE_MCAL kill-switch
tests/test_pipeline.py4 个过时测试修复 + fetch 延迟导入
scripts/legacy/(新增)7 个一键修复脚本归档
00 驾驶舱(投资MOC).mdv4.0:§〇架构总览、概览/Agent/版本记录更新、regime 行同步
optimization/系统架构优化报告_2026-09-22.md(新增)本报告

6. 回滚

如需回滚:cp -r /var/minis/shared/backup/DUCKERRY_Warehouse_pre_arch_20260922_001450/* /var/minis/mounts/DUCKERRY_Warehouse/(覆盖前确认无新写入)。

7. 下一步建议(可选优化)

  1. ~~下次正常时段跑一次完整 python3 scripts/fetch.py 发布~~ ✔ 已于 2026-09-22 后台方式完成(见 §9)。
  2. 低内存设备建议在 fetch 前设置 DK_DISABLE_MCAL=1(若 mcal 挂起)。

8. 追加清理(2026-09-22 同一批次)

在主体优化后,继续完成顶层整洁度收敛(引用扫描 + 备份均就绪,未破坏任何导航):

变更前后
优化/(中文目录,3 个 09-12/13 修复报告)无任何 md 引用,孤立并入 optimization/(现 14 份统一收纳),空目录移除
根 logs/(2 个 08-16 历史日志)无引用并入 数据/logs/
根 workspace/(含空 duckerry_audit_0911/)空目录遗留移除
根 refactor_md_ios.py(emoji→ios-tag 排版工具)散在根目录按 09-11 审计建议归档 scripts/legacy/(现 8 个)

顶层最终结构:11 个目录(audit_evidence / optimization / scripts / tests / 回测 / 因子 / 复盘 / 数据 / 框架 / 概念 / 资产)+ 根仅存 驾驶舱 & 5 个参考文档。 驾驶舱 §〇:已用玻璃主题 status-* 徽章美化(管线分层表 + 状态列 + 稳定性加固清单),DOM/CSS 双重验证渲染正常。

9. 完整发布运行 + 模拟盘透支修复(2026-09-22 12:23)

完整发布成功(后台 nohup + 轮询绕过会话内存压力杀进程问题):

  • run_id 20260922T122347+0800|target 2026-09-21|G1=PASS / publish=PASS / source=PASS
  • 12 源全 OK;面板 81 行 / 77 交易日(09-21 已升为完整交易日含金 PM)
  • L0 降级(TLT/AGG 债券源滞后到 09-18 → L0-3 当日无法评估,正确行为)
  • L1 up +1.34%|Regime Trending-Up 0.785|Brier 0.074
  • 产出:复盘/2026-09-21 收盘数据快照.md + MOC AUTO 区块已刷新;recompute2/4 rc=0

发现并修复模拟盘真实缺陷:连续两日 long 信号时,execute_signal 按 size×equity 下单却未扣减可用现金,09-21 二次买入把现金打至 -0.485(凭空加杠杆/透支),使"纪律测试"失真。

  • 修复:execute_signal 增加无保证金约束——可用现金 = 1.0 − Σ已成交买入,单笔买入 min(size×equity, cash_avail),无现金则不加仓(等价 hold)。验证:09-22 size=0.9 请求被正确截断为 0.30(仅剩余现金)。
  • 状态纠正:移除无效的 09-21 透支订单/信号,重算持仓;paper_equity.csv 两行均恢复正现金 0.300,09-21 变为持有(daily_return +0.047%)。
  • 备份:数据/paper_bak_pre_cashfix_20260922_123330。
  • ⚠ ~~遗留:size×equity 增量语义;min_hold_days 未强制~~ → ✔ 已于同日 v4.1 修复,见 §10。
  • latest.json.paper 显示旧值 0.995265(诊断快照,MOC 不展示,下次 fetch 自动刷新为 v4.1 语义结果)。

10. 模拟盘 v4.1:再平衡到目标 + 止损止盈卖出腿(2026-09-22)

修复 §9 两处遗留 + 同期发现的风险执行缺口:

#问题v4.1 修复
1size×equity 为增量买入,连续多日 long 重复建仓再平衡到目标:目标市值=size×净值,加仓=max(0, 目标−已持)
2净值每日漂移 → 无谓 churn(每次 ~6bps 成本)容差带 REBALANCE_BAND=2%:偏离 > 2%×净值 才下单
3✔ stop_loss/take_profit 只记录不执行 → 3%/6% 风险上限形同虚设新增 check_exits() 卖出腿:硬止损优先于 min_hold(风险优先纪律);止盈受 min_hold 约束;同日幂等;当日已出场则不再回补(防先卖后买)
4现金推导只算买入_cash_from_orders() 统一 1.0 − Σ买入 + Σ卖出(仍无状态幂等)
5同日重跑时 daily_return/max_dd/consec_loss 拿被替换的旧行当基准统计基准统一排除同日旧行(prev_rows)

新增回归测试 tests/test_pipeline.py::PaperEngineTests(纯标准库、5.5s,不依赖面板): ① 连续重复 long 不透支 ② 置信度上调→再平衡 ③ 同日幂等 ④ 止损全卖且不当日回补 ⑤ min_hold 阻断止盈 —— 5/5 OK。

沙盒 7 日情景验证:建仓 0.70 → 同信号容差带内不动 → conf 0.9 加至 0.1975 → 同日幂等 → -4.2% 止损清仓(cash 0.966 无透支)→ 清仓后再入场 → +6.2% 止盈被 min_hold 拦截。生产 09-21 腿按新语义重跑:conf 0.785 → 补足 buy 0.0855,cash 0.2145>0,daily_return -0.3898%(基准正确取 09-18 而非旧同日行)。