涨停追击策略(zt-chaser)设计方案 v0.1

来源: Obsidian Vault

涨停追击策略(zt-chaser)设计方案 v0.1

一、策略定位

不是全自动交易机器人。A股涨停封单瞬间抢单有物理障碍(通道延迟、排单规则),纯程序化追板不现实。定位为:

> 半自动决策辅助系统 = 量化筛选候选 + 多因子评分 + 实时监控预警 + 人工确认下单

两个产出物:
1. 盘后/盘前回测引擎:验证葵花宝典规则在历史数据上的有效性,输出每条规则的预测力
2. 盘中实时筛选器:每分钟扫描全市场涨停股,按评分排序推送Top-N候选到飞书/终端

二、规则→数据→因子 映射表(已验证可行)

| 规则   | 原文要点                   | 数据源字段              | 量化定义                     | 可回测     |
|--------|----------------------------|-------------------------|------------------------------|------------|
| A      | 涨停时间<10:10,越早越好   | up_limit_time           | 时间戳转分钟数,≤10:10=1分   | ✅         |
| B      | 换手率小(普通<2%, ST<1%) | turnover_ration_real    | 直接数值比较                 | ✅         |
| C      | 盘整突破>超跌反弹>连续上攻 | daily K线(20日)         | N日箱体突破/跌幅/连阳判定    | ✅         |
| D      | 大盘破位不追,波段上涨胆大 | updown_distribution     | 涨跌家数比、涨停数、市场评语 | ✅         |
| E      | 第一个涨停>第二个          | up_limit_keep_times     | ==1最高分,递减              | ✅         |
| F      | 高开高走,开盘=最低最好    | daily open/low/close    | (open-low)/(high-low)比值    | ✅         |
| G      | 重大利好首次披露           | reason文本              | 关键词匹配+首次出现标记      | ⚠️半结构化 |
| H      | 龙头股>跟风股              | uplimit_hot+板块内排序  | 板块涨停数×个股板块内排序    | ✅         |
| I1     | 均价线保持向上             | stk_mins 1min           | VWAP斜率>0                   | ✅         |
| I2     | 涨停前量:涨停后量>3:1      | stk_mins 1min           | 按涨停时间戳分割求和比       | ✅         |
| I3     | 涨停后量极度萎缩           | stk_mins 1min           | 涨停后每分钟均量/涨停前均量  | ✅         |
| 封单   | 封单>5位数(>万手)          | fd_close/fengdan_volumn | 直接数值                     | ✅         |
| 未开板 | 涨停板未被打开过           | stk_mins 1min           | 涨停后low≥涨停价×(1-0.1%)    | ✅         |
| 委托盘 | 买盘不比卖盘大很多         | Level-2盘口             | ❌无数据源                   | ❌         |

结论:14条规则中13条可回测,仅"委托盘对比"缺失(实盘人工看盘补充)。

三、因子体系设计(9维+1辅助)


因子分三层:
  L1 硬性过滤(不满足直接排除):
     - ST股换手>1% 或 普通股换手>5%  (排除异常放量)
     - 大盘暴跌日(涨跌家数比<0.3)    (规则D硬过滤)
     - 连板≥4                          (抛压过大)

  L2 核心评分因子(0-100加权):
     F1 涨停时间   权重20  (09:30=100, 10:10=60, 10:10后=0-40递减)
     F2 换手率     权重15  (<1%=100, 2%=60, >3%=0)
     F3 连板数     权重15  (1板=100, 2板=50, 3板=20)
     F4 封单强度   权重15  (fd_close≥5万手=100, 按流通市值归一化)
     F5 量比       权重15  (涨停前量:涨停后量, ≥4:1=100, 3:1=80)
     F6 个股形态   权重10  (盘整突破=100, 超跌反弹=60, 连续上攻=30)
     F7 板块龙头   权重5   (板块涨停≥3且个股板块内涨幅Top3=100)
     F8 开盘强度   权重5   (开盘=最低=100, 高开高走=80, 低走=20)

  L3 加分项(可选,各+5分上限+15):
     G1 一字板                        (+5)
     G2 涨停板全程未打开              (+5)
     G3 首次利好披露(reason含"首次")  (+5)


权重初始值来自葵花宝典原文的强调程度,Phase 2用vectorbt网格寻优确定最优权重组合。

四、回测方法论(严格合规)

4.1 回测Y变量(3个维度)

入场: 涨停日T收盘确认信号(非盘中追入,用收盘数据评分)
买入: T+1开盘价(模拟次日竞价买入, 贴近实战)
卖出: 三种出场策略对比:
  Y1 保守: T+1开盘即卖(next_open_pct)
  Y2 标准: T+1盘中最高90%卖出(需daily high补充)
  Y3 激进: T+1收盘卖(next_close_pct)


4.2 回测区间
- 主测:近6个月(约120交易日),每日约50-120只涨停股,样本量6000-14000笔
- 样本外:再往前3个月做out-of-sample验证

4.3 合规清单(对照七层框架)
| #   | 检查项     | 本策略处理                                                    |
|-----|------------|---------------------------------------------------------------|
| 1   | T+1约束    | T日涨停确认→T+1开盘买入,天然T+1                              |
| 2   | 交易成本   | 买入佣金万1+卖出佣金万1+印花税0.05%                           |
| 3   | 前视偏差   | 因子只用T日收盘前数据,next_*字段仅做Y变量                    |
| 4   | 整手约束   | 按手数取整                                                    |
| 5   | 涨停买不到 | 关键! 盘中追板能否成交是概率事件,回测需加成交率折扣(待标定) |

4.4 ⚠️ 回测的核心局限(必须诚实面对)
1. 成交率假设:回测假设"追入必成交",实盘中强势涨停板根本买不到。需引入成交率模型(封单越大成交概率越低)或直接改用"T日尾盘确认→T+1开盘买入"的保守模式
2. 封单数据是收盘值:盘中封单会变化,收盘封单≠你追入时刻的封单
3. 滑点:次日开盘买入有竞价滑点

→ 建议回测同时输出两套结果:理想(假设成交) vs 保守(成交率折扣0.5)

五、分阶段实施计划

Phase 1:因子有效性验证(2-3天)
目标:用数据证明葵花宝典每条规则是否有预测力


输入: 近6个月每日uplimit_stocks + review_uplimit_reason
产出: factor_analysis_report.html
内容:
  - 每条规则(A-I)分5档,画出各档次日收益&胜率
  - 例: 涨停时间 09:30-09:45 vs 09:45-10:10 vs 10:10后 的次日表现对比
  - 热力图: 因子组合的胜率分布
  - baseline对比: 全部涨停67.5%胜率 vs 规则筛选后胜率
决策点: 哪些因子有效(保留), 哪些无效(剔除或降权)


Phase 2:评分模型+参数寻优(2-3天)
目标:确定最优因子权重组合


输入: Phase 1验证有效的因子
方法: vectorbt参数网格扫描(各因子权重排列组合)
产出:
  - 最优权重组合(config.yaml)
  - 回测报告(净值曲线/夏普/回撤/胜率)
  - 参数敏感性热力图(7组扰动回撤差<5pp才上线)
技术栈: PyBroker回测框架(与现有策略一致)


Phase 3:实盘盘中筛选器(2-3天)
目标:每分钟输出候选股评分


运行: 盘中9:25-10:30高频运行(cron每分钟)
流程:
  1. 拉取当前涨停股列表(uplimit_stocks实时)
  2. 补充分时数据(stk_mins)算量比/均价线
  3. 评分模型计算每只候选股总分
  4. 推送Top-5到飞书(含评分明细+建议买入价+止损位)
人工: 用户看到推送后自行决定是否追入


六、关键决策点(需你确认)

D1. 策略定位确认:半自动(量化筛选+人工下单)?还是你有全自动抢单的券商接口?

D2. 回测入场假设:我倾向"T日收盘确认信号→T+1开盘买入"(可回测、保守、无成交率问题)。原文说的"盘中追涨停"更适合做实盘筛选器的预警逻辑,而非回测入场点。你同意这个拆分吗?

D3. 策略命名:zt-chaser(涨停追击)?或你有偏好的名字?

D4. 代码位置:放策略库 mystocks/策略/zt-chaser/?技术栈用PyBroker(与eod-overnight一致)?

D5. 实施范围:先只做Phase 1(因子验证)?还是三个Phase一起规划、逐个审批实施?