流动性过滤与幸存者偏差:A股回测收益高估的双重陷阱(2026)

Fri Feb 20 2026 00:00:00 GMT+0000 (Coordinated Universal Time) · Quant Tools · 回测

幸存者偏差流动性过滤A股退市回测偏差量化研究数据质量

两个隐形陷阱让你的回测收益虚高

量化研究者通常知道要担心过拟合,却往往忽视了两个更隐蔽的系统性偏差:流动性过滤引发的选样偏差,与幸存者偏差带来的收益高估

两者的共同点是:它们不会让你的回测报错,只会让结果看起来比实际更好。

幸存者偏差来自数据集只包含"活下来"的股票,历史上退市的、被摘牌的失败者已经从数据库中消失,但它们在你的策略历史持仓期间是真实存在的,而且往往代表了策略中最糟糕的那部分持仓。

流动性过滤的选样偏差来自用"当前"的流动性标准筛选"历史"的选股池——今天能满足5000万日均成交额门槛的股票,在10年前的市场环境下往往是当时的强势龙头股,使用这个标准会使历史选股池向高质量股票倾斜,人为美化历史收益。

Quant Tools 回测实验室 中进行策略验证时,这两个问题是必须优先检查的数据质量关。


关键定义:什么是幸存者偏差

幸存者偏差在量化回测中的三种表现形式

表现1:退市股票数据缺失

最直接的形式。A股自1990年以来至2024年,累计退市约300家公司。近年随着退市新规(2020年)执行加速:

| 年份 | 退市数量 | |------|---------| | 2019 | 9家 | | 2020 | 16家 | | 2021 | 17家 | | 2022 | 42家 | | 2023 | 45家 | | 2024 | 约50家以上 |

如果你的数据源不包含已退市股票的历史数据(这是免费数据源的常见问题),这些公司在历史回测期内的亏损就被凭空"删除"了,策略整体表现被高估。

退市新规的加速执行也在直接影响实盘策略:2024年A股小盘股出现四次明显回调,其中4月、6月、12月的调整很大程度上受退市新规发布的冲击影响——市场对退市风险的重新定价,使得部分持有退市候选股的量化策略遭遇较大回撤,而这种风险在以"无退市数据"的历史回测中完全看不到。

表现2:指数成分股的幸存者选择(见 指数调样与成分股漂移专题文章

表现3:因子数据库的幸存者选择

部分数据服务商的因子数据库只包含当前存续的股票,历史上曾经存在但已退市的股票的因子数据被完全丢弃,导致因子回测时分组收益计算的分母变小,分子(活下来的好公司)保持不变,高分组收益被系统性高估。

幸存者偏差的量化影响

幸存者偏差不仅存在于学术研究中,在中国私募基金实践中同样清晰可见:截至2024年7月,连续5年实现正收益的私募机构仅213家,占可统计机构总数的9.13%。换言之,有超过90%的私募在5年内至少出现过一个负收益年份。如果你看到的只是"还在运营的基金"的历史业绩,就已经不知不觉剔除了大量已清盘的失败样本。

| 研究对象 | 偏差来源 | 收益高估幅度 | |---------|---------|------------| | 全球共同基金(Elton, Gruber & Blake, 1996) | 清盘基金数据缺失 | 约+1.0%—+1.5%/年 | | A股多因子策略(中信证券量化研究) | 退市股票+指数成分股 | 约+0.5%—+2.0%/年 | | A股小盘股量化策略 | 高退市率叠加幸存者 | 约+3%—+5%/年 |


流动性过滤的正确打开方式

常见流动性过滤标准

| 过滤维度 | 小型机构 | 中型机构 | 大型机构 | |---------|---------|---------|---------| | 日均成交额 | > 1000万元 | > 5000万元 | > 1亿元 | | 自由流通市值 | > 5亿元 | > 20亿元 | > 50亿元 | | 换手率 | 20日均换手率 > 0.1% | > 0.2% | > 0.5% | | 其他 | 非ST、非退市预警 | 同左 | 同左 |

固定阈值过滤的选样偏差问题

假设你用"日均成交额>5000万"对全历史进行过滤:

  • 2010年市场:A股日均成交额中位数约1000万元,5000万是当时的"大盘活跃股",过滤后选股池大幅偏向当时的龙头成长股
  • 2015年市场:A股日均成交额中位数约8000万元,5000万是当时的普通水平,过滤后几乎全市场都满足条件
  • 2023年市场:A股日均成交额中位数约5000万元,与过滤阈值接近

结论:用固定的5000万阈值对2010年的数据过滤,等于选择了当时市场中最活跃的20%股票,而这批股票在那个年代往往是高成长高动量的强势股。这不是在选流动性充裕的股票,而是在无意中做了一个"历史强势股过滤",人为给策略加上了动量因子暴露。

动态流动性阈值(推荐方法)

import pandas as pd

def dynamic_liquidity_filter(df_all, date, percentile_threshold=0.3):
    """
    使用滚动截面分位数作为动态流动性过滤阈值
    df_all: 包含所有股票、所有日期的DataFrame,列包含 'stock_code', 'date', 'avg_vol_20d'
    date: 当前过滤日期
    percentile_threshold: 保留成交额高于该分位数的股票,默认保留前70%

    优势:阈值随市场整体流动性水平动态调整,
    避免固定阈值在不同年份造成的选样偏差
    """
    # 获取当前截面数据
    cross_section = df_all[df_all['date'] == date].copy()

    # 计算该截面的成交额分位数阈值
    vol_threshold = cross_section['avg_vol_20d'].quantile(percentile_threshold)

    # 过滤:保留成交额高于阈值的股票
    filtered = cross_section[cross_section['avg_vol_20d'] >= vol_threshold]

    return filtered['stock_code'].tolist()

# 使用示例
# valid_stocks = dynamic_liquidity_filter(df_all_stocks, '2018-01-15', percentile_threshold=0.3)

这个方法的核心逻辑:不用绝对金额,而用"截面相对排名",保证在任何历史时期,你的选股池都代表"当时流动性靠前的70%股票",而非绝对成交额靠前的股票(两者在不同年份差别极大)。


ST股与退市风险股的特殊处理

常见问题

部分数据源的ST状态历史记录不完整,可能导致回测在某股票被标记ST之前,仍然将其纳入选股池。而ST股由于退市预期,可能出现极端价格波动(暂停退市前的异常反弹,或连续跌停),使回测产生不可重现的异常收益。

处理方案

def apply_st_filter(df, date_col='date', status_col='st_status'):
    """
    过滤ST、*ST、退市风险股
    st_status:
      0 = 正常
      1 = ST(特别处理)
      2 = *ST(退市风险警示)
      3 = 暂停上市
    """
    # 只保留状态为0(正常)的股票
    valid = df[df[status_col] == 0].copy()
    return valid

# 注意:必须使用"历史时点的ST状态",
# 而非当前ST状态。这要求数据源保留ST状态变更的完整历史记录。

核查要点:在使用数据前,检查你的数据源是否包含:① 已退市股票的完整历史数据;② 历史各时点的ST状态变更记录;③ 退市前最后一段时期的真实交易数据(而非清零或补零处理)。

可以在 Quant Tools 批量回测工具 中测试不同数据处理方案对最终收益曲线的影响幅度。


常见误区

误区1:Tushare或其他免费数据源已经包含退市股票数据

大多数Tushare免费套餐只提供当前存续股票数据。退市股票的历史数据是收费功能,且完整性参差不齐。在使用任何数据源前,建议查询一个已知退市股票(如*ST海洲002285,2022年退市)的历史数据是否存在,以验证数据完整性。

误区2:退市公司数量少,影响不大

影响的是质量而非数量。退市公司在被退市前,往往已经经历了较大幅度的下跌(这是最终触发退市条件的过程)。这段下跌期间,如果策略按照信号持有这些股票,会产生显著亏损。数据缺失导致这部分亏损被删除,对策略整体收益的影响远超退市公司数量比例所暗示的程度。

误区3:流动性过滤越严格越好

过严格的流动性过滤会使策略的Alpha来源向大盘股集中,失去小盘因子暴露。对于专注小盘价值或小盘动量的策略,过严格的流动性过滤反而会消灭核心Alpha,应当根据策略定位选择适当的流动性门槛。

误区4:涨跌停过滤应该排除所有有涨跌停记录的股票

不应全部排除。正确做法是:在信号触发当日,如果目标股票处于涨停(买入信号)或跌停(卖出信号)状态,则当日信号标记为"无法执行";但历史上曾经涨跌停的股票不应永久排除出选股池。


实操清单

  1. 验证退市股票数据完整性:在回测开始前,随机抽取5家已知退市公司,确认数据源中存在其历史完整数据(含退市前最后一段时期)。

  2. 使用动态分位数流动性过滤:将固定金额阈值改为滚动截面分位数(如保留前70%成交额),确保过滤标准随市场整体流动性水平动态调整。

  3. 历史ST状态同步:确认数据源包含各股票在历史任意时点的ST状态,不以当前ST状态代替历史状态进行过滤。

  4. 幸存者偏差敏感性测试:在同样的策略参数下,分别用"含退市股票"和"不含退市股票"两个数据集回测,对比年化收益率差异。如果差异超过2%,说明幸存者偏差严重。

  5. 分阶段验证:将回测期分成2010—2015、2016—2020、2021—2024三段分别评估,避免整体表现被某一段牛市期大幅美化,也避免退市加速(2022年后)对结果的结构性影响被稀释。


FAQ

Q1:如何获取A股退市股票的完整历史数据?

A:Wind专业版是最完整的来源,可通过AShareEODPrices接口查询已退市股票数据,在股票代码列表中加入退市代码即可。Tushare Pro的付费高级套餐也包含部分退市数据,但完整性不如Wind。部分学术数据库(如国泰安CSMAR)提供学术研究用途的完整历史数据。

Q2:幸存者偏差对价值因子和动量因子的影响哪个更大?

A:通常对价值因子影响更大。价值低估的股票中包含较多最终退市或大幅亏损的"价值陷阱",如果退市数据缺失,这些失败案例被删除,价值因子的历史表现会被显著高估。动量因子的持有期较短,退市股票通常在退市前就会触发卖出信号,受幸存者偏差影响相对较小。

Q3:港股和中概股的幸存者偏差问题是否类似?

A:港股市场的退市(除牌)数量相对较多,幸存者偏差问题比A股更严重。中概股(美股上市)受到SEC监管,数据更完整,但私有化退市后的历史数据也存在缺失问题。不同市场的数据质量差异较大,需要具体核查。

Q4:什么情况下流动性过滤反而会导致收益低估?

A:当策略目标是小盘效应(Small-cap premium)时,过严格的流动性过滤会排除大量小盘股,使策略向大盘股倾斜,从而丢失策略核心Alpha。此时回测收益会低估策略在可接受流动性范围内的真实表现。这是流动性过滤的另一面:不是"越严格越准确",而是"与策略定位匹配才准确"。

Q5:Quant Tools平台如何处理退市股票数据?

A:在回测数据配置中,建议优先使用包含退市股票历史数据的完整数据集,并在回测参数中启用"幸存者偏差校正"选项(若可用),以确保选股池在历史每个时点都包含当时真实存在的全部股票,而非仅限当前存续股票。


结论与下一步

流动性过滤和幸存者偏差是量化回测中最难被发现、却影响最深远的两个系统性偏差。它们不会让程序报错,不会让回测结果出现明显异常,只会悄无声息地把你的"年化20%策略"变成一个实盘只能跑出15%、甚至更低的结果。

构建可信赖的量化研究流程,必须从数据质量管控开始——这是Quant Tools在设计回测引擎时的核心出发点。

建议行动


参考来源

  • 上海证券交易所 - 退市公司信息与规则:https://www.sse.com.cn/disclosure/listedinfo/delisted/
  • 深圳证券交易所 - 退市公司公告:https://www.szse.cn/market/stock/delist/index.html
  • 中国证监会 - 退市制度改革文件(2020新规):http://www.csrc.gov.cn/csrc/c101864/c1025280/content.htm
  • 中信证券研究部 - A股量化策略幸存者偏差研究(研报平台):https://research.citics.com/
  • Elton, Gruber & Blake (1996) - "Survivorship Bias and Mutual Fund Performance", Review of Financial Studies:https://academic.oup.com/rfs/article/9/4/1097/1587023
  • Wind资讯 - 退市股票历史数据获取说明:https://www.wind.com.cn/portal/zh/WindQuantDataService/index.html
  • 新浪财经 - 2024年A股深度复盘(含小盘股退市新规冲击分析):https://finance.sina.com.cn/stock/stockzmt/2025-01-04/doc-inecuumu7786290.shtml
  • CSDN - 市场数据与幸存者偏差(含私募连续5年正收益比例数据):https://blog.csdn.net/weixin_56699745/article/details/149462177

免责声明:数据与回测结果仅供学术研究与编程学习,不构成投资建议。

← 返回研究文章