841ea1536e
08-25 9:30 事故(前后端session移交):small_cap同轮「全卖19只→马上全买20只」, 台账现金只被runner_live 60s归因轮询更新(唯一cash入口),买入定寸落在两轮之间 →卖出回款不可见→20笔买入全部目标0全天空仓;momentum同型撞运只入账首笔 79k/6≈13.2k/只(44%仓)。B修法(191270c,下单返回即时归因)已做;本A修法= 防御纵深第二层:定寸口径回总资产,归因异常/漏单时定寸也不再依赖未入账现金。 改动: - all_weather.py 共享helper _total_value:B2 InstancePortfolio.total_value (=台账equity,实时价缺价回退成本)/jq原生total_value直接读;缺属性回退 现金+Σ持仓市值(同语义) - momentum_timing_ex/small_cap_ex/value_selection_ex 三处轮动定寸 per_value=cash/N→total/N,守卫cash<=0→total<=0 - momentum 尾部卖出+买入抽独立方法 _rotate_positions(纯移动零逻辑变化, 便于回归直接钉死) - 原JQ语义per_value=stock_value/len本就是总资产口径,cash口径是移植失真; all_weather/channel_test的cash读取(递增建仓/现金铺余位语义)按移交指示不动 - 清三文件因此孤儿化的_available_cash import 测试:tests/portfolio/test_sizing_total_value.py 5条——helper 2(直读/回退) +每策略1条「卖出未入账时定寸不缩水」(fake现金旧值+持仓仍显示旧仓→per_value =总资产/3=3500而非现金/3≈333;目标3>旧仓2=事故真实形状,防买守卫提前break)。 portfolio+data_platform+api全量811绿。验收=08-26 9:30 momentum补仓满额 (~490k/6);与191270c同车推VPS(NAS恢复后)。