摘要
“急跌之后反弹”是个人投资者最常见的抄底直觉之一:股价短期内大幅下挫、创出阶段新低,随后某一天止跌收阳,看起来像是超跌反弹的起点。本文基于 A 股全历史日线行情数据(2011 年 1 月至 2026 年 7 月,约 5,800 只股票、1,374 万行记录),对这一直觉做统计化验证。分桶分析发现该信号存在一个”甜蜜区间”(5 日跌幅 20%~35%),也发现了一个”死亡区间”(跌幅超过 40%,多为低价股/退市风险股);但对甜蜜区间信号做逐年拆解后,稳健性检验结果并不理想——10 日胜率在 28%~89% 之间大幅摆动,此前汇总统计得出的高胜率结论主要由个别大样本年份主导。进一步用全市场等权平均涨跌幅自建的大盘状态代理指标重新分组,找到了摆动的根源:同一个体信号,在”大盘同期也在下跌”时是有效的超跌反弹(10 日胜率 72%~76%),在”大盘平稳或上涨、个股逆势暴跌”时则是危险信号(10 日胜率仅 28%)。用更敏感的短期市场跌速/波动率指标替换粗糙的大盘状态判断后,多个此前失败的年份被自动排除出信号池,其余年份的胜率普遍提升至 90% 以上,但仍有一个年份(对应 2016 年初的”熔断”事件)尚未得到解释,本文如实记录为未解决的异常。
一、研究背景与信号定义
本文延续此前《放量突破选股信号的统计挖掘与仓位管理优化》一文的方法论:不预设结论,用真实历史数据做分桶统计,再依次做离群值处理、逐年稳健性检验,让数据本身决定阈值和结论,而非用少量案例或直觉倒推。
数据范围:与此前研究相同的 A 股全市场日线数据,收益率计算统一采用后复权价格(收盘价 × 复权因子)。
信号定义(初版):
- – 过去 5 个交易日的价格变动幅度(复权价)低于某一负值阈值;
- – 当日最低价创下过去 10 个交易日(含当日)的新低;
- – 当日收盘价高于开盘价(止跌反转确认)。
该定义完全基于个股自身的开高低收数据,不涉及递归计算,用标准 SQL 窗口函数(LAG/LEAD/滚动 MIN)即可在全市场全历史范围内于数秒内完成统计,全文所有分桶结果均为全市场全历史真实计算,非抽样估计。
二、跌幅分桶:定位”甜蜜区间”与”死亡区间”
第一轮按过去 5 日跌幅粗分 6 档,统计后续 10 个交易日的收益率与胜率(全市场任意时点持有 10 日的基准:均收益 0.39%,胜率 49.3%):
| 过去 5 日跌幅 | 信号数(15 年) | 10 日胜率 | 10 日均收益 |
|---|---|---|---|
| 跌超 20% | 12,242 | 62.3% | +6.09% |
| 跌 15%~20% | 20,353 | 56.7% | +1.80% |
| 跌 10%~15% | 55,440 | 50.5% | +0.09% |
| 跌 5%~10% | 178,599 | 46.5% | −0.32% |
| 跌 0%~5% | 379,423 | 46.2% | −0.15% |
| 未跌反涨也创新低 | 74,600 | 46.3% | −0.08% |
跌幅越大、信号质量单调越好,跌超 20% 这一档远超基准。但这一单调关系并未一直延续——把跌超 20% 的样本继续细分至 40% 以上后:
| 过去 5 日跌幅 | 信号数 | 股价低于 3 元占比 | 平均股价 | 10 日胜率 | 10 日均收益 |
|---|---|---|---|---|---|
| 跌超 40% | 262 | 46.6% | 7.0 元 | 44.8% | −0.35% |
| 跌 35%~40% | 411 | 8.3% | 14.5 元 | 56.0% | +7.01% |
| 跌 30%~35% | 1,147 | 7.1% | 14.8 元 | 54.2% | +5.18% |
| 跌 25%~30% | 3,420 | 5.3% | 16.1 元 | 64.5% | +8.90% |
| 跌 20%~25% | 7,002 | 6.2% | 19.7 元 | 63.4% | +5.07% |
跌幅超过 40% 的一档信号质量直接崩塌,且该档中 46.6% 是股价低于 3 元的低价股(其余各档均在 5%~8% 区间),指向该档样本大量混入了 ST/退市风险股连续跌停后的技术性反弹或”死亡陷阱”,而非正常的超跌反弹。真正的甜蜜区间在跌幅 20%~35% 之间,25%~30% 档最优。这与此前放量突破研究中”1.5~2.0 倍最优、超过 5 倍反而是看跌信号”的非单调结构属于同一类现象:极端值往往对应不同的市场机制,不能简单外推”越极端越有效”或”越极端越无效”的单向假设。
三、逐年稳健性检验:一个统计陷阱
对”5 日跌幅 20%~40%、创 10 日新低、当日收阳、剔除股价低于 3 元样本”的组合信号做逐年拆解:
| 年份 | 信号数 | 10 日胜率 | 年份 | 信号数 | 10 日胜率 |
|---|---|---|---|---|---|
| 2011 | 82 | 28.4% | 2019 | 415 | 54.0% |
| 2012 | 76 | 52.6% | 2020 | 945 | 77.7% |
| 2013 | 67 | 43.3% | 2021 | 344 | 48.4% |
| 2014 | 69 | 40.6% | 2022 | 773 | 67.0% |
| 2015 | 3,147 | 52.3% | 2023 | 207 | 44.6% |
| 2016 | 833 | 47.6% | 2024 | 2,172 | 89.1% |
| 2017 | 314 | 31.2% | 2025 | 666 | 79.0% |
| 2018 | 874 | 50.9% | 2026 | 266 | 29.3% |
胜率在 28.4%(2011)到 89.1%(2024)之间剧烈摆动,且样本量本身也高度不均——2015 年(3,147 个信号)与 2024 年(2,172 个信号)合计占总样本的近一半。这意味着此前任何一次”汇总统计”得出的整体胜率,本质上是被这两个大样本年份主导的结果,而非 16 个年份的均衡表现。这是一个需要特别警惕的统计陷阱:样本量在时间维度上分布不均时,汇总均值会掩盖掉真实的年度间差异,逐年拆解是识别这类问题的必要步骤,而不是可选步骤。
同时注意到,信号表现与”当年大盘整体涨跌”之间也不存在简单的线性关系——2014 年大盘温和上涨,该信号却表现不佳;2022 年大盘下跌,该信号反而表现优异。这排除了”牛市该信号更有效”这类朴素假设,指向需要一个更精确的市场状态变量。
四、市场状态是关键变量
A 股行情数据库中并未落地任何指数历史数据(沪深300 等指数的同步逻辑虽已编写,但从未实际执行入库),因此本文改用一个不依赖外部指数数据的替代方案:用全市场个股涨跌幅的等权平均值,作为大盘状态的代理指标,剔除单日涨跌幅超过 ±21% 的极端样本后,按 20 个交易日滚动求和,近似表示”大盘近 20 日的累计表现”。
按该代理指标把此前的 V 字信号重新分组:
| 大盘 20 日状态 | 信号数 | 10 日均收益 | 10 日胜率 |
|---|---|---|---|
| 大盘 20 日跌超 10%(系统性下跌) | 6,793 | +10.36% | 71.9% |
| 大盘 20 日跌 3%~10% | 2,027 | +3.82% | 58.6% |
| 大盘 20 日震荡 ±3% | 1,497 | −1.70% | 42.1% |
| 大盘 20 日涨 3%~10%(个股逆势下跌) | 675 | −9.08% | 28.1% |
| 大盘 20 日涨超 10% | 258 | −0.16% | 47.7% |
结果与最初”大盘下跌时应回避该信号”的直觉方向相反:信号有效性取决于个股是与大盘同步下跌,还是逆势独自下跌。大盘同期也在下跌时,个股跌 20%~40% 更可能是受系统性情绪拖累的 beta 效应,一旦大盘企稳,超跌部分会较快修复;大盘同期平稳甚至上涨时,个股逆势暴跌 20%~40% 更可能反映其自身出现了实质性利空(财务问题、监管处罚、股东减持踩踏等),此时”抄底”是在下跌趋势途中接飞刀,而非博弈超跌反弹。
这一发现同时解释了第三节逐年检验中的摆动模式——胜率较高的年份(2020、2022、2024、2025)大概率对应系统性下跌占比更高的时期,胜率较低的年份(2011、2017 等)大概率对应个股逆势下跌占比更高的时期,但这一推测在按大盘状态过滤之后才得到验证。
五、用大盘状态过滤后的逐年验证:显著改善但未完全消除异常
对”V 字信号 且 大盘 20 日跌幅低于 −3%”的组合信号重新逐年拆解,2016 年到 2018 年之间的表现仍不理想(2016 年 36.1%、2017 年 36.0%),说明单纯的”20 日累计跌幅”仍不够精确——一段时间内的温和阴跌与短期内的急速恐慌,累计跌幅可能相近,但市场含义完全不同。
改用两个更敏感的短期指标重新划分:
| 大盘近 5 日跌速 | 信号数 | 10 日胜率 | 大盘 10 日波动率 | 信号数 | 10 日胜率 |
|---|---|---|---|---|---|
| 跌超 8% | 6,206 | 75.6% | ≥2.5% | 7,108 | 74.4% |
| 跌 4%~8% | 1,351 | 61.4% | 1.8%~2.5% | 674 | 52.7% |
| 跌 0%~4% | 734 | 44.9% | 1.2%~1.8% | 650 | 41.0% |
| 未跌反涨 | 529 | 43.9% | <1.2% | 388 | 44.0% |
用”大盘近 5 日跌幅超 8% 或 10 日波动率不低于 2.5%”替代此前的”20 日跌幅低于 −3%”,重新逐年拆解:
| 年份 | 信号数 | 10 日胜率 | 说明 |
|---|---|---|---|
| 2011 | 1 | — | 样本过小 |
| 2012 | 24 | 79.2% | |
| 2013 | 14 | — | 样本过小 |
| 2014 | 13 | — | 样本过小 |
| 2015 | 3,099 | 52.3% | 股灾期间样本集中 |
| 2016 | 763 | 47.8% | 唯一的大样本例外 |
| 2017 | 0 | — | 过滤器自动清零,未识别到”真恐慌” |
| 2018 | 488 | 61.8% | |
| 2019 | 180 | 65.6% | |
| 2020 | 656 | 97.9% | 疫情崩盘后 |
| 2021 | 0 | — | 过滤器自动清零 |
| 2022 | 418 | 91.3% | |
| 2023 | 0 | — | 过滤器自动清零 |
| 2024 | 1,946 | 96.8% | |
| 2025 | 421 | 96.7% | |
| 2026 | 8 | — | 样本过小(数据截至年中) |
改善体现在两个方面:一是此前失败的 2017、2021、2023 三个年份被过滤器自动清零信号——这几年市场以温和阴跌或震荡为主,不存在真正意义上的急速恐慌,过滤器等同于自动判断出”这几年没有值得抄底的坑”;二是大样本年份(2020、2022、2024、2025)的 10 日胜率均提升至 91%~98% 区间。
唯一未能解决的例外是 2016 年(763 个信号,胜率 47.8%)。该年年初 A 股经历了”熔断”事件,短期波动率和跌速指标均会被判定为”真恐慌”,但事后反弹未能兑现。一个可能的解释是,熔断机制本身是一种人为的交易中断,而非市场自发的抛售出清,事件性质与”自然恐慌—均值回归”的假设并不完全吻合,但这一推测本文未做进一步验证,如实记录为未解决的异常,而非强行给出解释。
六、结论与局限
- 1. “个股急跌创新低后收阳反转”是一个真实存在的统计信号,但单独使用并不稳健,逐年胜率可在 28%~89% 之间摆动,汇总统计容易被样本量分布不均的年份主导,得出过于乐观的结论;
- 2. 该信号的有效性高度依赖大盘状态,且方向与直觉相反——个股跟随大盘下跌时是有效信号,个股逆势独自下跌时是危险信号,两者的 10 日胜率相差近 50 个百分点;
- 3. 判断大盘状态时,短期跌速/波动率(5 日、10 日)比累计跌幅(20 日)更能识别真正的”急速恐慌”而非”温和阴跌”或”结构性熊市”,后者即使跌幅可观,也不构成有效的超跌反弹条件;
- 4. 该信号本质上是一个”危机抄底”工具,而非日常选股策略——15 年历史中,满足全部过滤条件的信号仅 8,000 余次,其中 63% 集中在 2015 年和 2024 年两个年份,多数年份信号寥寥无几甚至全年为零;
- 5. 仍有一个未解决的异常(2016 年”熔断”事件对应的信号组表现不佳),本文未强行给出解释。
已知局限
- – 全部结论基于历史数据的统计挖掘,样本内表现不构成对未来收益的保证;
- – 大盘状态代理指标为全市场个股涨跌幅的等权平均,并非真实的市值加权指数(如沪深 300),两者在实际计算中可能存在差异,本文未做交叉验证;
- – 当前回测/策略引擎不支持在个股策略条件中直接引用指数或大盘层面的指标,本文给出的 SDL 策略配置仅包含个股自身条件,实际使用时仍需人工判断当前大盘是否处于急速下跌/高波动状态;
- – 未纳入交易成本(佣金、印花税、滑点)与涨跌停约束下的可成交性分析;
- – 2016 年”熔断”事件对应样本组的表现异常未做进一步归因分析。
附:当前可配置的策略参数(裸信号版)
以下配置基于现有可用组件搭建,仅包含个股自身条件,不含大盘状态过滤(当前引擎暂不支持跨标的条件引用)。使用前需人工判断近期大盘是否处于系统性下跌或高波动状态,仅在满足该前提时执行;若大盘平稳或上涨,即使触发信号也建议跳过。
{
"strategy_name": "V字反转抄底策略(裸信号版,需人工判断大盘环境)",
"strategy_type": "quant",
"components": {
"indicators": [
{ "id": "i1", "type": "ROC", "name": "5日变动率", "parameters": { "period": 5 } },
{ "id": "i2", "type": "DONCHIAN", "name": "10日唐奇安通道", "parameters": { "period": 10 } }
],
"conditions": [
{ "id": "i3", "type": "in_range", "name": "5日跌幅在20%~40%之间",
"parameters": { "indicator": "i1", "mode": "between", "threshold": -40, "upper": -20 } },
{ "id": "i4", "type": "compare", "name": "创10日新低",
"parameters": { "left": "Low", "op": "<=", "right": "i2.lower", "right_multiplier": 1 } },
{ "id": "i5", "type": "compare", "name": "当日收阳反转",
"parameters": { "left": "Close", "op": ">", "right": "Open", "right_multiplier": 1 } },
{ "id": "i6", "type": "compare", "name": "排除低价/ST嫌疑股",
"parameters": { "left": "Close", "op": ">=", "right": 3, "right_multiplier": 1 } }
],
"logics": [
{ "id": "i7", "type": "and", "name": "V字反转综合条件",
"parameters": { "input_conditions": ["i3", "i4", "i5", "i6"] } }
],
"signals": {
"entry": { "id": "i8", "type": "signal_entry", "name": "入场信号",
"parameters": { "direction": "long", "trigger_condition": "i7" } }
},
"position_strategies": [
{ "id": "i9", "type": "position_fixed", "name": "抄底仓位",
"parameters": { "position_pct": 0.15, "take_profit_pct": 100, "stop_loss_pct": 15,
"trailing_stop": true, "trailing_stop_pct": 15 } }
]
}
}
如需在 青柠量化 中直接使用该策略配置或复现本文的统计方法,可参考产品内的策略编辑器与回测功能。