claude_dev
|
e522cab9a4
|
fix(strategy): 数据取数失败≠策略信号——momentum假熊市清仓根治+small_cap同型误判纠正 [vps]
CI/CD / test (push) Successful in 16s
CI/CD / nas-deploy (push) Successful in 32s
CI/CD / nas-verify (push) Successful in 15s
前后端session 2026-08-19巡检实锤(VPS shadow_47/48,8-18/8-19连续两日09:30):
momentum _cal_buy_sign 取数失败被静默当成熊市信号,handle_data if not buy_sign 全部
清仓;有持仓时任何一次数据抖动=全仓卖出。
①momentum/_ex: _cal_buy_sign→Optional[bool](取数异常/空panel→None,handle_data
据此跳过当日调仓保持仓);_cal_rps/_select_stocks/_stock_pool 吞异常改上抛,牛市
计算段统一捕获→跳过当日(不清仓);False只留给真实数据算出的熊市,空index_list
维持False(确定性配置态)
②small_cap/_ex(新发现,前后端记忆判'语义安全'系误判——8-18无交易只因空仓):
_pick_stocks任一取数失败→[]→_rebalance空名单分支全清仓,与momentum同型事故;
改三态:None=数据失败跳过本次调仓(持仓不动),[]=合法空名单仍清仓(原策略语义),
list=正常目标;_stock_pool/_cal_momentum_score同步Optional化
③+7回归测试(取数失败零下单保持仓×4/直查None×2/合法空仍清仓守卫);portfolio 324绿,
全量889绿(4失败=Mac缺bullet_trade/vnpy环境性import,与本次无关)
|
2026-08-19 10:45:06 +08:00 |
|
claude_dev
|
8862816557
|
feat(portfolio): B fundamentals批量 + C涨跌停filter修复(get_limit_status_batch接入)
B: value_selection 逐只 get_value_metrics → get_value_metrics_batch(数据session)
- 01 验证 -21.85% vs 改前 -21.63%(微差0.22%, batch实现微差,可接受)
C: filters filter_limitup/limitdown/paused 接入 get_limit_status_batch(数据session)
- 修复回测死代码: filter 取 tick.get(last_price/paused) 恒None → 照买涨停/照卖跌停/照交易停牌
- 三策略调仓预取 status_map 共享一次查询, 向后兼容 all_weather(不传参=原行为)
- 03 短区间(2024Q1)验证: C前+138.7%虚高 → C后+101.6%, filter修复减少照买涨停虚增
验收: 101单测(filters 30含14新status_map口径 + 三策略71)
注意: get_limit_status_batch 44s/800只(数据session待批量化优化), 02/03全周期待优化后
|
2026-07-30 07:37:03 +08:00 |
|
claude_dev
|
32dbcb8958
|
feat(portfolio): P2/P3 策略层向量化 + fundamentals批量提速解锁长回测
P2 行情向量化(get_price→get_closes_panel,口径实证 max_abs_diff=0.0 零偏差):
- momentum_timing: _cal_rps/_select_stocks/_cal_buy_sign 三处向量化
- small_cap: _cal_momentum_score 用 close.min/max 代理 low/high(方案A)
P3 fundamentals 批量(small_cap _pick_stocks 加 fields=[market_cap,eps],
对接数据session f416a17 get_fundamentals_df 按需短路):
- 02 000985 全市场 5128只 ~19min卡死 → 195s 跑通解锁
验收: 72单测全过; VPS 03短回测+138%(口径与get_price一致diff=0)/
02全市场-11%(2024Q1小盘股灾期合理)/01沪深300可跑
|
2026-07-29 07:49:35 +08:00 |
|
claude_dev
|
de04a8904b
|
feat(portfolio): 移植3聚宽策略到BulletTrade + 8bug修正 + 数据缺口文档
三策略(聚宽py2→BulletTrade 0.9.2,BrokerFacade注入跨版本兼容):
- momentum_timing 动量择时(牛熊分界+行业RPS+均线,切回10中证行业指数)
- value_selection 价值精选(6条基本面过滤,切回沪深300)
- small_cap 小市值(去IC对冲,切回000985中证全指)
框架:
- runner_backtest 加 --strategy 分发(原硬编码all_weather)
- provider 加 get_value_metrics(价值精选6条基本面,NOTICE_DATE治前视偏差)
- 72单测全过(21+27+24)
修8个回测实测发现的真bug:
- 01第⑥条EPS绝对值0.08~0.5与①大盘矛盾→6条交集恒空致全程空仓,按注释本意改净利润同比8~50%
- 03原帖calRPS取数区间错(get_price start=end只取1天)→涨跌幅恒0 RPS失效;date.today()取真实今天非回测日
- 02 universe 000985不在constituent_unified→候选池空
VPS实测(短区间验证逻辑,非长期表现): 01价值+23%/03行业轮动+48%/02选出20只小盘
数据缺口(详见docs/research/joinquant_strategies/SUMMARY.md + data_gaps_fix_plan.md):
- 三表"1/3损坏"误报已撤回(全扫5530文件/表0损坏,沪深95%+健康,仅北交所920xxx空,不做北交所)
- 真实缺口: 行业成份股(G1已补)/000985(G2已补)/IC期货(02对冲去掉)/provider批量接口(G5待做,解锁长回测)
|
2026-07-28 22:20:49 +08:00 |
|