A股有三条美股没有的规则,忽略它们会让回测看起来比实盘好很多:T+1当天买的不能当天卖、涨跌停让你买不进去或卖不出来、ST股流动性差且随时可能退市。 本课用真实数据量化这三条规则对策略的影响。
规则一:T+1——当天买的,明天才能卖
T+1规则:今天买入的股票,必须等到下一个交易日才能卖出。
| 市场 | 当天买当天卖 | 结算时间 |
|---|---|---|
| A股 | ❌ 不允许 | 股票T日结算,资金T+1日结算 |
| 港股 | ✅ 允许 | T+2日结算 |
| 美股 | ✅ 允许 | T+1日结算 |
T+1 对量化策略的影响
问题1:出场信号当天无法执行
假设你今天买入,今天股价突然暴跌触发止损条件——T+1规则下,你只能明天才能卖,今天只能看着亏损扩大。
问题2:回测必须用次日开盘价而非当日收盘价
正确的回测口径:
- – 今天收盘确认信号(收盘价站上MA20)
- – 明天开盘才能买入(next_open)
- – 买入价格是明天的开盘价,不是今天的收盘价
如果用今天收盘价作为买入价,会虚增收益(提前知道了收盘价)。青柠量化的回测引擎默认使用次日开盘价,符合T+1规则。
问题3:一字涨停次日不一定能买到
即使你今天识别到好的信号,明天开盘如果直接跳空涨停(一字涨停),你还是买不进去(见规则二)。
规则二:涨跌停——买不进,卖不出
涨跌停限制:
| 板块 | 涨停限制 | 跌停限制 |
|---|---|---|
| 沪深主板 | +10% | -10% |
| 创业板、科创板 | +20% | -20% |
| ST/风险警示股 | +5% | -5% |
| 新股上市前5日(主板) | 无限制 | 无限制 |
一字板:最危险的情况
一字涨停(一字板上):开盘即涨停,高=低=开=收,全天没有任何成交机会,买不进去。
一字跌停(一字板下):开盘即跌停,全天无法卖出,持仓被套住,止损形同虚设。
A股2015—2026一字板统计
| 年份 | 涨停次数 | 跌停次数 | 一字涨停 | 一字跌停 | 每日均一字涨停(只) | 单日最多 |
|---|---|---|---|---|---|---|
| 2015 | 110,564 | 87,616 | 6,981 | 2,086 | 28.7 | 564 |
| 2016 | 50,669 | 49,746 | 3,721 | 414 | 15.3 | 31 |
| 2017 | 32,077 | 32,006 | 4,375 | 567 | 17.9 | 55 |
| 2018 | 44,863 | 57,610 | 1,837 | 1,700 | 7.6 | 28 |
| 2019 | 57,604 | 47,464 | 2,372 | 1,133 | 9.7 | 64 |
| 2020 | 78,422 | 64,876 | 2,653 | 3,289 | 10.9 | 36 |
| 2021 | 86,643 | 67,768 | 1,964 | 918 | 8.1 | 24 |
| 2022 | 85,208 | 86,149 | 1,652 | 881 | 6.8 | 22 |
| 2023 | 59,155 | 39,910 | 906 | 954 | 3.7 | 12 |
| 2024 | 113,387 | 108,053 | 2,027 | 1,958 | 8.4 | 41 |
| 2025 | 83,588 | 59,184 | 1,701 | 974 | 7.0 | 28 |
| 2026 | 83,310 | 82,368 | 1,041 | 926 | 5.5 | 23 |
关键数据:
- – 平均每个交易日有 5-29只个股出现一字涨停,直接无法买入
- – 2015年行情极端,单日最多出现 564只一字涨停(熔断期间)
- – 2023年以来一字板减少,市场流动性相对改善
回测如何处理涨停买不进的情况
青柠量化的处理逻辑:
- – 次日开盘一字涨停(high=low 且 open=涨停价)→ 买不进,收益记为 NULL,不纳入统计
- – 计算胜率时,排除这些 NULL 记录
- – 这意味着你看到的胜率是"能成交时的胜率",实际盈亏分布里有一部分"强制错过的涨停股"
规则三:ST股——量化必须排除
ST(Special Treatment):上市公司两年连续亏损,被交易所特别处理,名称前加"ST"。
*ST:三年连续亏损,退市风险警示,名称前加"\*ST"。
当前ST股数量(截至2026年10月)
| 类型 | 数量 | 占全A比例 |
|---|---|---|
| \*ST(退市警示) | 89只 | 1.7% |
| ST(特别处理) | 109只 | 2.1% |
| 合计 | 198只 | 3.8% |
| 全A(主板+创业板+科创板) | 5,225只 | 100% |
为什么量化策略要排除ST股
- 1. 流动性差:±5%限制,每天最多涨5%,趋势策略很难获利
- 2. 退市风险:一旦退市,持仓可能归零
- 3. 数据噪音:ST股常出现"披星摘帽"(扭亏为盈)导致的异常行情,污染回测结果
- 4. 策略不稳定:ST股价格受消息面影响大,技术指标失效
青柠量化默认将 display_name LIKE '%ST%' 的股票全部排除出股票池,不参与回测和选股。
常见误区
误区1:回测用收盘价买入,实盘用开盘价,结果差很多
正确做法:回测从一开始就用次日开盘价作为买入价(T+1口径),保持与实盘一致。
误区2:涨停股是好机会,应该追进去
追涨停策略(打板)是独立的策略体系,需要专门的排队逻辑和仓位管理。普通趋势跟踪策略遭遇一字涨停时,买不进是正确的处理方式。
误区3:ST股收益高,不应该排除
ST股偶尔出现大涨(摘帽行情),但这类事件概率低、信息不对称严重,且退市风险会造成不可逆亏损。长期量化策略通常将其排除。
在青柠中的处理方式
青柠量化的引擎已内置以下规则,用户不需要额外设置:
- – T+1:所有买入信号均以次日开盘价成交
- – 一字涨停过滤:次日开高=开低时买入记为 NULL,不计入收益
- – ST排除:默认股票池排除所有名称含"ST"的股票
- – 北交所排除:排除股票代码4/8/9开头的北交所股票
这些约束确保回测结果与实盘环境尽量一致(第60课会详细讲回测陷阱)。
下一课
第55课讲用AI助手写策略:用自然语言描述你的交易想法,AI自动生成策略配置,不需要手动写代码。这是青柠量化最直观的入门功能。
相关课程
口径说明:一字板统计口径为high=low且开盘价相对前收盘偏移超过4%,主板代码(非4/8/9开头),有效成交量>0,2015-2026全历史。ST股统计为当前names含ST的在市股票(截至2026年10月)。数据仅用于教学演示,不构成投资建议。
读到这里,不如自己验证一次
文章里的逻辑,你可以在青柠量化里用真实数据重新跑一遍。免费,零代码。