涨停追击策略(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%止损场景对比

现在开工。先搭建项目结构和数据管线。