涨停追击策略(zt-chaser)改进方案 v0.2
来源: Obsidian Vault
涨停追击策略(zt-chaser)改进方案 v0.2
核心改进:三源融合数据架构
原方案只用 zzshare 单源,DATA_SOURCES_COMPARISON.md 暴露了三个致命盲点。实测后确认改进路径:
改进1:规则覆盖率 13/14 → 14/14(全规则可回测)
原方案标记"委托盘对比"为❌不可回测。实测发现 eltdx 逐笔数据有 side='buy' 字段:
eltdx get_history_trade(code="000001", date=20260616)
→ 1800笔逐笔, 字段含: side(主动买/卖方向), price, volume, order_count, time_label
→ 可直接统计涨停时段主动买入 vs 主动卖出比例
加上 outer_disc(外盘)/inside_dish(内盘)和五档买卖盘 buy_levels/sell_levels,委托盘对比完全可量化。
改进2:新增 akshare 独有因子(炸板次数+封板资金)
实测 akshare stock_zt_pool_em 有 zzshare 不具备的关键字段:
20260616 数据实测:
117只涨停, 炸板次数分布:
炸板0次(完美封板): 59只(50%) ← 原文"涨停板未被打开过"
炸板1-2次: 28只(24%)
炸板3+次: 30只(26%) ← 原文"封得很勉强,多次被打开"
封板资金(单位元): 117/117全覆盖 ← 比zzshare的万手更精确
首次/最后封板时间: 精确到秒
akshare 强势池还有 是否新高、涨速、量比、入选理由——直接映射原文"刚创新高"和"分时气势强"。
改进3:集合竞价完整序列(eltdx 独有)
实测 eltdx get_call_auction 返回完整 9:15-9:25 序列:
85条竞价数据, 字段含:
price(竞价价格), matched_volume(已成匹配量),
unmatched_volume(未匹配量), unmatched_direction_raw(未匹配方向)
time_label('09:15:00' ~ '09:25:00')
→ 可分析竞价强度、开盘缺口质量、未匹配买卖压力
→ 直接映射原文"高开高走拉涨停更安全"
改进4:VWAP从分时副图提取(eltdx 分时数据)
实测 eltdx get_minute 分时点含 avg_price(VWAP)字段,可算均价线斜率,比 zzshare 分钟K线手算VWAP更直接。
三源分工矩阵(改进后)
| 数据域 | zzshare | akshare | eltdx | 回测深度 |
|--------------------|-----------------|-------------|---------------|----------|
| 涨停清单+次日表现 | ✅ 主源 | ✅ 交叉验证 | — | 4+个月 |
| 涨停原因/板块分组 | ✅ 唯一源 | — | — | 4+个月 |
| 涨停时间/连板/换手 | ✅ | ✅ | — | 4+个月 |
| 炸板次数 | ❌ | ✅ 唯一源 | — | ~30天 |
| 封板资金(元) | 万手(粗) | ✅ 精确 | — | ~30天 |
| 是否新高 | ❌ | ✅ 唯一源 | — | ~30天 |
| 连板梯队/情绪 | ✅ 主源 | — | — | 4+个月 |
| 同花顺热度 | ✅ 唯一源 | — | — | 4+个月 |
| 1min K线/VWAP | ✅ stk_mins | — | ✅ get_minute | 4+个月 |
| 逐笔主动买卖(side) | ❌ | ❌ | ✅ 唯一源 | 历史 |
| 集合竞价序列 | auction字段(粗) | ❌ | ✅ 完整序列 | 历史 |
| 五档盘口 | ❌ | ❌ | ✅ 实时 | 仅实时 |
| 涨跌分布/大盘情绪 | ✅ 主源 | — | — | 4+个月 |
| 日K线(复权) | ✅ | ✅ | ✅ | 全历史 |
| 个股资金流 | ❌ 不存在 | ⚠️WSL2断连 | — | 不可用 |
关键限制:akshare 涨停池历史仅~30天(东财限制),zzshare 4+个月,eltdx 逐笔/竞价历史完整。个股资金流在 WSL2 不稳定(akshare 东财源断连),降级为可选因子。
改进后的因子体系(12维,全规则覆盖)
L1 硬性过滤(不满足直接排除)
| 过滤条件 | 数据源 | 原文依据 |
|------------------------------|------------------------------|-------------------------|
| ST股换手>1% 或 普通股换手>5% | zzshare turnover_ration_real | 规则B |
| 大盘暴跌日(涨跌家数比<0.3) | zzshare updown_distribution | 规则D |
| 连板≥4 | zzshare up_limit_keep_times | 规则E |
| 炸板次数≥5 | akshare 炸板次数 | "封得很勉强,多次被打开" |
L2 核心评分因子(0-100加权)
| ID | 因子 | 权重 | 数据源 | 量化定义 |
|-----|-----------------|------|-------------------------------------|----------------------------------------|
| F1 | 涨停时间 | 15 | zzshare up_limit_time | 09:30=100, 10:10=60, 10:10后递减 |
| F2 | 换手率 | 10 | zzshare turnover_ration_real | <1%=100, 2%=60, >3%=0 |
| F3 | 连板数 | 10 | zzshare up_limit_keep_times | 1板=100, 2板=50, 3板=20 |
| F4 | 封单强度 | 15 | akshare 封板资金 / zzshare fd_close | 封板资金/流通市值归一化 |
| F5 | 量比(涨停前:后) | 10 | eltdx get_minute VWAP分割 | ≥4:1=100, 3:1=80, <2:1=40 |
| F6 | 个股形态 | 10 | 日K线20日 | 盘整突破=100, 超跌反弹=60, 连续上攻=30 |
| F7 | 板块龙头 | 5 | zzshare uplimit_hot | 板块涨停≥3且个股板块内涨幅Top3 |
| F8 | 开盘强度 | 5 | eltdx get_call_auction | 竞价缺口+未匹配买方方向 |
| F9 | 炸板次数 | 10 | akshare 炸板次数 | 新增 0次=100, 1-2次=60, 3+次=0 |
| F10 | 主动买卖比 | 5 | eltdx get_history_trade.side | 新增 涨停时段主动买/(主动买+卖) |
| F11 | VWAP斜率 | 3 | eltdx get_minute.avg_price | 新增 涨停后VWAP保持向上 |
| F12 | 创新高 | 2 | akshare 是否新高 | 新增 是=100, 否=0 |
L3 加分项(各+5,上限+15)
| 加分 | 条件 | 数据源 |
|------|-----------------------------|----------------------------------|
| +5 | 一字板 | zzshare up_limit_type='一' |
| +5 | 涨停后量极度萎缩(前:后>4:1) | eltdx分钟数据 |
| +5 | 首次利好披露 | zzshare reason含"首次/并购/重组" |
改进后的回测方法论
数据分层回测策略
Tier 1 全因子回测 (近30天, akshare可用窗口):
zzshare(涨停清单+原因+情绪)
+ akshare(炸板次数+封板资金+是否新高)
+ eltdx(逐笔side+竞价序列+VWAP)
→ 12因子全量回测, 样本量~2000-3000笔
Tier 2 核心因子回测 (4+个月, zzshare可用窗口):
zzshare(涨停清单+原因+情绪)
+ eltdx(逐笔side+竞价序列+VWAP)
→ 9因子回测(无炸板/封板资金/创新高), 样本量~6000-10000笔
Tier 3 交叉验证:
zzshare vs akshare 涨停数量对比 → 数据可靠性校验
回测Y变量(不变)
入场: T日收盘确认信号(用收盘时所有已知数据评分)
买入: T+1开盘价(竞价买入, 贴近实战)
卖出对比:
Y1 保守: T+1开盘即卖
Y2 标准: T+1收盘卖
Y3 激进: T+1盘中最高价90%
合规清单(不变,同v0.1)
T+1约束✅ / 交易成本✅ / 前视偏差✅ / 整手约束✅ / 涨停成交率折扣(双套结果)
改进后的分阶段实施
Phase 1:因子有效性验证(3-4天,因子从9个增到12个)
输入:
Tier1(30天) 全12因子 + Tier2(4月) 9因子
产出: factor_analysis_report.html
- 每个因子分5档, 箱线图展示各档次日收益分布
- 热力图: 因子两两组合的胜率
- baseline对比: 全涨停67.5%胜率 vs 各因子筛选后胜率
- 重点新增验证:
a) 炸板次数0 vs 1-2 vs 3+ 的次日表现差异(预期差异最大)
b) 主动买卖比>0.7 的涨停股是否次日更强
c) 竞价未匹配买方方向的预测力
决策点: 确认哪些因子统计显著, 剔除无效因子
Phase 2-3 不变(评分模型+实盘筛选器)
Phase 3 实盘筛选器额外增强:
- eltdx 实时五档盘口 → 委托盘实时对比
- eltdx subscribe_hq → 候选股实时订阅推送
仍需你确认的决策点
D1-D5 同 v0.1(策略定位/入场假设/命名/代码位置/实施范围)
新增 D6:数据源优先级确认
- 回测主源用 zzshare(4+月深度),akshare 仅补炸板/封板资金(30天窗口)
- eltdx 负责微观结构因子(逐笔/竞价/VWAP)
- 个股资金流因子因 WSL2 断连风险,暂不纳入(或用 TdxQuant GP06/GP07 替代?你的 TdxQuant 环境是否常驻?)
新增 D7:炸板次数因子权重
- 这是 akshare 独有、原文高度强调的因子("涨停板未被打开过"排强势品种标准第1条)
- 我给了权重10(与量比/换手同级),你觉得合适吗?
7条改进确认采纳:
1. 时间对齐清洗:±30秒容忍度+5秒取整,报告含三源一致性散点图
2. 炸板权重10→8,换手15→9?不——原换手是10→9,量比10→9,炸板10→8(你的权重表已确认)
3. F10限定时间窗口:首次涨停前5min至后1min,过滤<100手散单
4. F8竞价压缩为3标量:竞价强度分/未匹配方向/竞价量能比
5. 个股资金流→龙虎榜净买入加分(+5),用zzshare lhb
6. 前视偏差新增:是否新高用历史high、eltdx逐笔截断15:00
7. 加分项改为:首次涨停(5日内)+利好关键词(利好/中标/预增/重组/并购)
8. 回测加-2%止损场景对比
现在开工。先搭建项目结构和数据管线。