📑 本文目录
反弹率左侧交易股性扫描贵州茅台选股因子均值回归CSI800量化策略

大跌后10次反弹9次:贵州茅台为何是A股最强左侧标的——CSI800股性扫描揭秘反弹率选股因子


一个反直觉的数字:茅台大跌后,10次反弹9次

做量化的人喜欢谈动量、谈因子、谈IC值,但很少谈一个朴素到近乎直觉的问题:一只股票大跌之后,第二天到底会不会反弹?

这个问题看似简单,答案却出人意料。我最近跑了一遍CSI800成分股的月度股性扫描(715只有完整数据的标的),其中有一个字段叫 dn_rebound_rate——即”大跌后次日上涨的概率”。排名出来后,贵州茅台以 0.90 的反弹率高居第一。

这意味着:在茅台的历史上下跌达到”大跌”标准的日子里,10次里有9次第二天是涨的,而且平均次日收益 +1.045%

这不是”价值投资”的玄学叙事,也不是财经媒体爱讲的”核心资产永远涨”——而是一个可以用865个交易日数据复现的统计事实。本文就来拆解这个被严重低估的选股维度:反弹率因子

什么是”反弹率”:一个被因子库遗忘的朴素指标

先定义清楚。股性扫描里有两个相关字段:

字段含义与传统指标的区别
dn_rebound_rate大跌后T+1日上涨的概率(0到1)胜率思维,不看幅度只看方向
dn_next_mean大跌后T+1日的平均收益(百分比)期望值思维,兼顾方向和幅度

它和”胜率”不同:胜率是所有交易日的上涨占比,而反弹率只统计大跌之后那一天。它本质上衡量的是一只股票在遭遇抛售后的”自我修复能力”——或者说,市场对这只股票的”抄底共识强度”。

大跌的标准不是固定百分比阈值,而是结合该股票自身波动率的异常跌幅判定(股性扫描脚本的内部逻辑),这样能避免用同一个-5%阈值去衡量低波动的长江电力和高波线的北交所标的——对前者-3%就是大跌,对后者-5%才算。这也是为什么茅台的CSV显示大跌次数约10次(big_dn_freq=0.0116 × 865天),反弹9次,反弹率0.90。

不同跌幅阈值下的验证

为了验证这个0.90不是小样本幻觉,我用 stock_daily 表对茅台做了独立交叉验证,按固定百分比阈值统计:

跌幅阈值大跌次数反弹次数反弹率平均次日收益
跌幅小于-3%27514753.5%+0.064%
跌幅小于-4%1216957.0%+0.537%
跌幅小于-5%553970.9%+1.347%

数据揭示了一个清晰的规律:跌得越狠,反弹概率越高。在-5%阈值下(55次样本),反弹率已达70.9%,平均次日收益+1.35%。而股性扫描的0.90对应的是更严格的”异常大跌”标准(约10次样本,9次反弹),两者方向完全一致——茅台在极端下跌后几乎必反弹。

几个最近的实例:

大跌日期当日跌幅次日涨幅结果
2026-06-26-3.59%+2.25%反弹
2026-04-27-3.79%+0.13%微涨
2025-04-07-4.39%+3.00%强反弹
2024-10-09-7.42%+2.81%强反弹

唯一需要注意的:样本越严格(跌幅阈值越高),次数越少,统计置信度下降。-5%阈值下55次还算充足,但更极端的-7%以上就只剩个位数样本了,0.90这个数字要带着”小样本敬畏”去看。

CSI800反弹率TOP10全景:什么股票”跌了能涨回来”

看完茅台个案,来看全市场。以下是715只CSI800成分股中反弹率最高的10只(过滤了大跌次数不足的标的):

排名代码名称反弹率次日均收30日波动率体质波动型
1600519贵州茅台0.90+1.045%21.2%混合型低波动
2600926杭州银行0.86+1.982%20.0%均值回归型低波动
3601816京沪高铁0.86+1.029%18.3%均值回归型低波动
4601607上海医药0.85+1.138%19.8%混合型低波动
5600905三峡能源0.80+1.339%15.3%均值回归型低波动
6600642申能股份0.80+0.945%24.3%均值回归型中波动
7600901江苏金租0.78+1.105%27.3%混合型中波动
8002252上海莱士0.75+0.726%20.7%混合型低波动
9601018宁波港0.75+1.880%18.7%均值回归型低波动
10600177雅戈尔0.75+0.950%18.1%均值回归型低波动

共性一眼可见:

  1. 清一色低波动(10只里7只低波动,3只中波动,没有一只高波动)
  2. 防御性行业集中——银行(杭州银行、苏州银行)、公用事业(三峡能源、申能)、交通运输(京沪高铁、宁波港)、医药(上海医药、上海莱士)、消费(茅台、雅戈尔)
  3. 均值回归型占比高(10只里6只均值回归型,而全样本均值回归型仅占13.1%)

这和直觉吻合:能在大跌后迅速反弹的,都是那些”跌了有人接”的股票——要么是机构必配的核心资产(茅台),要么是稳定分红的公用事业(三峡能源),要么是有明确底部的银行股(杭州银行)。

反面教材:反弹率最低的10只

对比看一下反弹率垫底的标的:

代码名称反弹率次日均收体质
600930华电新能0.23-0.582%动量型
603345安井食品0.26-0.845%动量型
601988中国银行0.29-0.404%动量型
000958电投产融0.29-0.750%动量型
601066中信建投0.33+0.154%动量型

注意两个特征:全部是动量型体质,而且次日平均收益为负——这意味着这些股票大跌之后不仅不反弹,还会继续跌。中国银行反弹率0.29可能让人意外(银行不是防御股吗?),原因是大盘银行股波动极小,一旦出现”大跌”往往意味着系统性风险来临,第二天自然继续杀跌。这与杭州银行(小盘银行、均值回归型0.86)形成鲜明对比:同为银行,体质不同反弹率天差地别。

反弹率 vs 体质 vs 波动率:三层结构拆解

单看个股排名还不够,要看群体规律。按体质和波动率分组统计:

体质维度

体质数量占比平均反弹率平均次日收益
均值回归型9413.1%0.600+0.529%
混合型30242.2%0.539+0.309%
动量型31944.6%0.470-0.010%

均值回归型不仅反弹率高(0.60 vs 动量型0.47),更重要的是次日期望收益为正且显著(+0.53% vs 动量型几乎为零)。动量型的-0.010%意味着:动量股大跌之后抄底,期望收益约等于零——典型的”接飞刀”。

波动率维度

波动型数量占比平均反弹率平均次日收益
低波动7510.5%0.583+0.570%
中波动22731.7%0.513+0.198%
高波动41357.8%0.506+0.126%

低波动股的反弹率(0.583)和次日收益(+0.57%)全面碾压高波动股。这与行为金融学的解释一致:低波动股的持有者多为长期机构和价值投资者,大跌时他们不会恐慌抛售反而会加仓;高波动股的持有者多为短线游资,大跌时踩踏出逃,第二天继续杀。

一个朴素的结论浮现:要找”跌了能涨回来”的股票,就找”低波动 + 均值回归型”的标的。 这两类在全市场各占约10-13%,交集更小,但正是这个交集贡献了反弹率TOP10的大部分成员。

“低估 + 高反弹”:构建双因子左侧选股池

反弹率单独用价值有限——一只反弹率0.90但估值已经到99%分位的股票,大跌后反弹也只是在高位震荡,赚不到大钱。真正有价值的是把反弹率和估值结合:低估值提供安全边际,高反弹率提供入场时机的胜率。

白酒板块的当下验证

以白酒行业为例。截至2026-08-03,估值周报显示:

行业估值分位信号
白酒7.8%🟡低估
保险15.1%🟡低估
白色家电16.5%🟡低估
中药17.0%🟡低估

白酒处于7.8%的历史极低分位。而白酒板块内的反弹率数据:

标的反弹率次日均收体质波动型
贵州茅台0.90+1.045%混合型低波动
珠江啤酒0.609+0.654%混合型中波动
青岛啤酒0.615+0.383%混合型中波动
重庆啤酒0.526+0.262%动量型中波动
山西汾酒0.435-0.235%动量型中波动
古井贡酒0.39-0.357%动量型高波动

白酒板块内部严重分化:茅台0.90一骑绝尘,古井贡酒0.39接近接飞刀。 同样的低估值环境下,选茅台和选古井贡酒,左侧抄底的胜率完全不同。这就是反弹率因子的增量价值——在低估值板块内部做二次筛选,找到”跌了真的能涨回来”的那只。

双因子选股池构建逻辑

选股条件:
  估值分位 小于 20%(低估区间)
  反弹率 大于 0.75(大跌后高概率反弹)
  大跌次数 大于 5次(样本充足,排除小样本噪音)
  波动类型 = 低波动 或 中波动(排除高波动接飞刀型)

输出:
  白酒 → 贵州茅台(估值7.8% ∩ 反弹率0.90)
  银行 → 杭州银行、苏州银行(均值回归+低波动)
  公用事业 → 三峡能源、申能股份
  交运 → 京沪高铁、宁波港

这个池子的逻辑是:在市场恐慌、这些股票出现大跌时买入,赌的是次日反弹的统计规律 + 估值修复的中期空间。 它不是追涨策略,而是纯粹的左侧抄底策略——前提是你要等得到那个”大跌日”。

反弹率因子的三个陷阱

诚实地说,反弹率不是万能因子,它至少有三个陷阱。

陷阱一:反弹率高不等于能赚大钱

茅台反弹率0.90、次日均收+1.045%听起来很美,但一年里茅台出现”大跌”的日子可能只有3-5天。如果只在大跌日次日卖出,全年从这个信号里能获取的收益也就3-5%。反弹率衡量的是单次交易的胜率和微小期望,不是趋势性收益。要赚大钱还得靠估值修复的大波段,反弹率只是帮你选一个”入场胜率更高的买点”。

陷阱二:小样本偏差

反弹率0.90如果只基于10次大跌,95%置信区间约是[0.55, 0.99]——区间极宽,真实反弹率可能是0.55也可能是0.99。CSV里 big_dn_freq 字段就是用来判断样本充足度的。我的过滤条件是 big_dn_freq 大于 0.005(865天里至少4-5次大跌),但更严格的标准应该是至少10次以上。对那些上市不足2年、还没经历过足够大跌的新股,反弹率数据基本不可用。

陷阱三:体质漂移

一只股票的体质(均值回归/动量/混合)不是永恒的。茅台过去3年是混合型,但如果它的基本面发生质变(比如增速从20%降到5%),持有者结构改变,它的反弹行为也会变。用历史反弹率预测未来,隐含假设是”这只股票的持有者行为模式没变”。2024年茅台从”核心资产信仰”转向”增速放缓担忧”,其反弹率是否依然维持0.90,需要持续跟踪验证——这也是为什么股性扫描要每月更新一次。

实操:如何获取和使用反弹率数据

数据获取

股性扫描CSV由月度cron(job 27786b150f16)生成,路径:

/home/user/quant/results/guxing_analysis/csi800_guxing_YYYYMMDD.csv

每次更新约715只CSI800成分股的40+个股性指标,dn_rebound_ratedn_next_mean 是其中的两个字段。

DuckDB查询模板

把股性扫描数据和估值数据做JOIN,可以快速构建双因子选股池。核心查询逻辑如下:

import duckdb
import pandas as pd

con = duckdb.connect('/mnt/c/Users/Administrator/clawd/data/quant/quant_v2.duckdb', read_only=True)

# 读取股性扫描CSV
guxing = pd.read_csv('/home/user/quant/results/guxing_analysis/csi800_guxing_20260801.csv')
con.register('guxing', guxing)

# 读取行业估值
val = con.execute("""
    SELECT code, price_percentile, signal
    FROM valuation_scores
    WHERE type='industry' AND date='2026-08-03'
""").fetchdf()

# 双因子JOIN:低估值行业 + 高反弹率个股
# 注意估值表code是行业名(如"白酒"),需手动映射到个股

由于估值周报的行业分类和股性扫描的个股代码不在同一张表里,实际操作中需要一张”个股到行业的映射表”来做JOIN。这是目前数据管道的一个缺口——如果后续把行业归属写进股性扫描CSV,这个查询就能完全自动化。

信号使用场景

反弹率因子最适合的场景不是每天都看,而是等到市场大跌日才激活

  • 某日大盘跌幅超过2%,触发”扫描模式”
  • 在双因子选股池中,查找当日跌幅进入该股票”大跌区间”的标的(参考股性扫描的 support 字段)
  • 次日开盘买入,赌反弹统计规律
  • 反弹率告诉你”买哪个”,估值告诉你”值不值得等”

小结:被遗忘的朴素智慧

回到开篇的问题——大跌之后会不会反弹?答案是:取决于你买的是什么股票。

CSI800的715只成分股告诉我们:

  • 均值回归型 + 低波动的股票,大跌后反弹率约60%,次日期望收益+0.5%以上
  • 动量型 + 高波动的股票,大跌后反弹率不到50%,次日期望收益接近零——抄底等于赌博
  • 茅台0.90的反弹率并非孤例,杭州银行0.86、京沪高铁0.86同样亮眼,它们共同的特征是”低波动 + 防御行业 + 机构重仓”

当白酒行业趴在7.8%估值分位、宏观评分一周内从+6.0砸到-6.5的当下,“低估 + 高反弹”双因子选股池给出的信号很清晰:如果要在这个位置做左侧,茅台是胜率最高的标的——但前提是,你要等到它大跌的那一天。

反弹率因子不会告诉你趋势在哪里,它只告诉你一件事:当恐慌来临时,哪些股票会有人接。 在一个均值回归越来越弱、动量越来越强的A股市场里,这个朴素的信息,可能比任何复杂因子都更有用。


相关阅读:

💬 评论