Commit Graph

6 Commits

Author SHA1 Message Date
claude_dev 40908b51f8 fix(live): 市值改本地估值委托——开盘不再依赖盘中Capital下载(策略session 08-24移交P0)——实锤:开盘miniQMT Capital表下载常超时(代码注释自曝trading hours常超时)→close×total_capital=NaN→策略sort_values无操作保持代码序,平安银行(≈3800亿)混进small_cap买入清单。修=get_fundamentals_df组装后增Step3.5:_apply_local_market_caps把market_cap/circulating_market_cap优先委托self._unified.get_fundamentals_df(fields=两列,估值parquet EOD,亿元同单位,全池同一时点口径);单股本地缺(NaN/新股)保留xt Capital已算值,unified整体异常静默回退开盘永不挂;date=None传今天(EOD取最新≤今天);_fetch_close本就读xtdata本地缓存不动。+6测试(本地优先/补NaN/空回退/异常回退/NaN不清值/date=None传today);628绿。验收=部署后首个9:30 small_cap买入清单不再0000xx连号不含超大盘 [vps]
CI/CD / test (push) Successful in 6s
CI/CD / nas-deploy (push) Successful in 38s
CI/CD / nas-verify (push) Successful in 10s
2026-08-24 13:49:24 +08:00
claude_dev 136d087b34 test(ci): CI扩跑tests/portfolio+钉死测试归一——issue#35方案B,440组合引擎题进门禁 [nas]
CI/CD / test (push) Successful in 9s
CI/CD / nas-deploy (push) Successful in 27s
CI/CD / nas-verify (push) Successful in 2s
前置已消失:2197fea时点的13个Mac环境性失败,已被08-14 bullet_trade 0.9.2升齐+08-15补22个lock包
两次依赖治理顺带清零(本次实测440绿/1.74s,此前无人回头验收过);CI runner=本机Mac同venv310,本地绿即CI绿。

改动三件(不只加一行,用户点破冗余):
- 钉死测试迁至独立文件tests/portfolio/test_provider_method_surface.py:单一真相+保留
  fail-not-skip牙齿。原位置挂模块级requires_bullet_trade mark,conftest会在bullet_trade
  缺失时自动skip=钉死虚标(#35重演形态),必须移出mark覆盖面
- 删tests/data_platform/test_provider_method_parity.py(4aad65a方案A的复制版,
  「两处同步改」人工契约随之消亡)
- ci-cd.yml pytest行扩为 tests/data_platform tests/portfolio

验证:组合跑(CI同款命令)=617 passed/2 skipped/6.07s(177+440,副本删除-1,迁移+1);
conftest合并无冲突;钉死测试在新位置实跑通过。
2026-08-22 22:51:57 +08:00
claude_dev ff05207f48 fix(provider): 实盘provider方法面全兜齐+CI钉死——用户拍板「不论有无消费方,统一堵光同款洞」:补最后两个裸名缺口①get_constituent(=get_index_stocks纯别名,对齐unified spec§6语义)②get_price_ex(转发base get_price xtdata成熟路径零新逻辑,签名/默认值对齐unified,fq默认'raw'而非base裸名'pre'保跨环境同语义);核心=新增方法面钉死测试:unified全部公共方法在SanguoMiniQmt(+MiniQMTProvider基类)逐一存在,缺任一CI直接红——「回测有实盘无」洞从巡检发现升级为结构性防住,未来unified加新公共方法必须同步实盘侧否则测试fail;+4测试(别名等值/转发参数含fq=raw钉/kwargs透传/方法面零缺口) [vps]
CI/CD / test (push) Successful in 12s
CI/CD / nas-deploy (push) Successful in 33s
CI/CD / nas-verify (push) Successful in 14s
2026-08-22 08:50:30 +08:00
claude_dev 27ed4b1416 fix(provider): 实盘SanguoMiniQmtProvider补get_limit_status_batch+get_value_metrics——2026-08-21策略session巡检实锤:方法缺失→实盘策略_get_limit_status getattr(...,None)静默返{}→filter_limitup/limitdown/paused全走'无数据保留'分支=实盘涨跌停/停牌过滤完全失效(涨停股照买/停牌股照挂单),回测LocalUnifiedProvider有此方法实盘缺,第5个同款洞。修=①历史日期(<今日,实盘主路径策略传previous_date,昨晚bs-daily已写昨日bar)委托self._unified同回测口径(prev_close×板块幅度+ST5%+volume==0判停牌,None条目语义原样透传);②当日盘中单次批量xtdata.get_full_tick拿lastPrice/lastClose,幅度复用_limit_pct板块感知(主板10/创业科创20/北交30/ST5),线程超时15s(2197fea开盘QMT忙挂死同款教训);③失败一律返'全清白map'(每code {False,False,False})而非{}——filter_paused对map内缺失code是剔除语义,返{}会全剔除(空转事故形态),全清白=只丢过滤不丢选股;tick缺code/价无效不猜停牌(宁错过不误杀)。另+方法面对照加固(策略session建议):diff两provider扫出get_value_metrics(+batch)同款洞(value_selection未入舰队=提前堵,委托unified三表parquet);get_price_ex/get_constituent裸名零消费不堵;+21测试(委托涨停/停牌/无bar/委托失败全清白/今日走tick/创业板20%钉/缺tick全清白非None/挂死超时/value_metrics四态) [vps]
CI/CD / test (push) Successful in 12s
CI/CD / nas-deploy (push) Successful in 46s
CI/CD / nas-verify (push) Successful in 23s
2026-08-22 08:37:56 +08:00
claude_dev 78d35baae5 fix(provider): SanguoMiniQmtProvider四缺口根治——实盘/影子momentum/small_cap共4账户8-18/8-19空转两日——①get_closes_panel(+_ex)委托本地dbbardata(与回测LocalUnifiedProvider同源同口径;base与xtdata SDK均无此方法,bullet_trade回退链终断AttributeError,momentum牛熊/small_cap动量瘫)②get_fundamentals_df补fields契约(keep=code+请求列,对齐unified;原small_cap fields=[market_cap,eps]直接TypeError)+_ex别名③get_constituent_ex(+get_index_stocks覆盖)委托constituent_unified并集(历史日期口径,治前视;表缺指数WARNING回退base最新成份,宁可降级不空转=本次事故教训)④config的db_path/data_dir透传统一provider,VPS缺省走生产库;+10测试(复刻VPS AttributeError实锤+回退路径);962绿;VPS实库冒烟panel新鲜到08-18/000985=5128只(前后端session巡检实锤清单全闭环) [vps]
CI/CD / test (push) Successful in 13s
CI/CD / nas-deploy (push) Successful in 32s
CI/CD / nas-verify (push) Successful in 14s
2026-08-19 10:59:48 +08:00
claude_dev a68cf4905e feat(portfolio): sanguo_portfolio 组合策略框架(BulletTrade+miniQMT,不用jqdatasdk)
把聚宽"全天候轮动"(post48819)搬到 BulletTrade。融合=pip+扩展点注入
(SanguoMiniQmtProvider 继承 MiniQMTProvider 只 override get_fundamentals,
set_data_provider 公开 API 注入, BulletTrade 源码 0 改动)。

- providers: SanguoMiniQmtProvider 补 get_fundamentals(PershareIndex+自算PE/PS/PB/PCF/市值/ROIC)
- strategies/all_weather: 4选股函数+大小盘轮动+ETF兜底+涨停止损(聚宽风格翻译)
- factors(估值/ROIC自算) + filters(ST/涨跌停/次新/停牌)
- 88/88 测试 Mac+VPS 双过; VPS 回测 pipeline 跑通(修9bug:Capital单位/日期格式/百分数口径/11字段alias)
- 实盘 runner_live+runbook 就绪等交易日; DEFAULT_DATA_PROVIDER=miniqmt env 不装 jqdatasdk
- 文档: sanguo_portfolio_plan / portfolio_backtest_result / portfolio_live_runbook
2026-07-18 19:08:18 +08:00