A股复权方式对回测结果的系统影响(2026完整指南)

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

A股复权回测偏差数据口径前复权后复权量化回测

为什么复权方式直接决定回测结论的可信度

许多量化研究者在搭建第一个回测系统时,习惯直接下载"历史收盘价"就开始计算信号,却忽视了一个根本性问题:A股历史价格并不是一个稳定序列

每当上市公司完成分红派息、配股或股票拆分,历史价格序列就会发生"断层"。为了让跨越除权日的价格比较有意义,数据服务商需要对历史价格进行复权处理。而前复权、后复权和不复权这三种口径,会给同一策略的回测结果带来 1—3个百分点的年化收益率偏差0.05—0.15的夏普比率差异

这不是技术细节,而是影响策略生死的核心问题。在 Quant Tools 回测实验室 进行策略验证之前,你必须彻底理解复权口径的选择逻辑。


关键定义与口径对比

三种复权方式的本质

不复权(原始价格):市场实际交易价格,不做任何调整。除权日前后价格会出现跳空,这是"真实"的市场报价,适用于涨跌停判断和实盘成本核算。值得注意的是,业内有观点认为不复权+后台除权处理才是回测的标准方法:以不复权价格执行交易,在除权日当天自动调整账户持股数量、现金和持仓成本,这样最大程度避免了未来信息的引入。

前复权(向前调整):以当前最新价为基准,将历史价格向前等比例调整。每次新的除权事件发生后,全部历史数据都会重新计算。优点是历史价格与当前价格在同一量级,适合计算技术指标;缺点是实质上引入了"未来函数"——历史数据的具体数值会随每次新的除权事件变化,今天拉取与三个月后拉取的"历史价格"并不相同,信号可复现性存在隐患。

后复权(向后调整):以历史最早价格为基准,将后续价格向后调整。历史数据稳定不变,不受新除权事件影响,但当前价格可能远高于市场实际报价,适合长期趋势研究。BigQuant等主流量化平台推荐:模拟交易阶段使用不复权(真实价格),回测历史信号用后复权,两者结合最为严谨。

关键口径对比表

| 维度 | 前复权 | 后复权 | 不复权 | |------|--------|--------|--------| | 基准锚点 | 当前最新价 | 历史起始价 | 无调整 | | 历史价格稳定性 | 每次除权后全序列重算 | 稳定不变 | 稳定不变 | | 适用场景 | 技术指标、短中期策略 | 长期趋势研究 | 实盘成本、涨跌停判断 | | 分红处理 | 含在价差中 | 含在价差中 | 需单独加入股息率 | | Wind字段 | PriceAdj=F | PriceAdj=B | PriceAdj=N | | Tushare字段 | adj='qfq' | adj='hfq' | adj=None |

Wind与Tushare的口径差异

Wind:默认提供前复权,复权因子实时更新,每次除权后历史数据全量重计算。

Tushare Pro:同样支持三种复权(adj='qfq'/'hfq'/None),但复权因子更新存在 T+1 滞后。这意味着在除权日当天调取数据,可能得到两个版本的前复权价格——这是实盘信号复现时最容易踩的坑。


系统偏差的量化拆解

高分红蓝筹股的价格失真

对于持续高分红的银行股(如工商银行、建设银行),前复权下的历史价格会被持续压低。以工商银行为例,2006年上市至今累计每股分红超过10元,使用前复权计算2007—2008年跌幅,与不复权数据相比会存在 3—8个百分点的偏差

对于极端情况,某些2000年前上市、经历多次配股的标的,后复权当前价格可能是不复权价格的 3—5倍,导致基于价格绝对值的因子(如价格动量)产生系统性偏差。

高换手策略中的信号时机偏差

在年换手率超过500%的高频轮动策略中,前复权与后复权口径下计算的年化收益率差异可达 1—3个百分点,夏普比率差异可达 0.05—0.15

这个差异的来源并非数学错误,而是除权日前后信号触发时机不一致:前复权下,除权日前夕的"价格高点"消失了,可能导致策略延迟卖出;后复权下,除权日当天出现价格跳升,可能触发虚假的买入信号。

最危险的混用场景

在策略回测中,混用不同复权口径是最常见的系统性错误

  • 用前复权价格生成买卖信号(均线/突破)
  • 用不复权价格计算持仓盈亏

这种混用会系统性高估含高分红标的的策略收益,因为前复权下历史价格更低(分红已折算进价差),计算的"涨幅"更大,但实际成本是不复权的真实价格。

建议在 Quant Tools 批量回测工具 中统一设置复权口径,避免单次回测与批量回测之间的口径不一致问题。


常见误区

误区1:前复权是"最正确"的复权方式

错。从严格的量化方法论来看,前复权并不是最准确的回测口径,反而存在引入"未来函数"的风险——历史前复权价格会随每次新的除权事件被重新改写,不同时间点拉取的"相同历史段"数据实际上不同。专业的处理方式是:以不复权(真实)价格进行交易撮合,在除权日当天由回测引擎自动处理持股数量与账户现金的调整(即"分红再投资"),这样既保留了价格的真实性,又正确计入了分红收益。

误区2:不复权数据不包含分红收益,会低估策略表现

对,但这不意味着不复权"不能用"。用不复权数据时,需要额外计算并加入股息率收益,两者之和才等于持有期总回报。很多研究者直接用不复权价格计算收益率,忘记加股息,才导致收益被低估。

误区3:复权方式不影响策略排名,只影响绝对收益

错。对于不同分红率的标的,复权方式对相对排名也有影响。低分红成长股与高分红蓝筹股在不同复权下的相对动量排名可能出现互换,导致因子选股池发生变化。

误区4:Tushare和Wind数据完全一致

不一致。除了上文提到的T+1复权因子更新滞后外,两个数据源的停牌价格处理方式、涨跌停判断标准也存在细微差异,会导致回测中的某些边界情况处理不同。


实操清单

量化学院 的复权数据实践课中,我们总结了以下5条必检项:

  1. 统一口径原则:同一策略回测中,从数据获取到信号计算到盈亏核算,必须全程使用同一复权口径,绝不混用。

  2. 前复权+股息分离验证:如果你的策略预期持有期较长(>1年),建议同时回测"前复权价格收益率"和"不复权价格收益率+股息率"两个版本,对比是否一致。

  3. 除权日边界检查:在回测代码中,明确除权日当天的数据处理逻辑——是用除权前价格还是除权后价格生成信号?

  4. 数据源版本锁定:下载历史数据时记录数据拉取日期,或直接存储原始复权因子而非复权后价格,以便未来可以重现相同的历史序列。

  5. 高分红股票专项测试:如果策略的选股池包含银行、公用事业等高分红板块,必须做专项对照测试——用相同信号分别在前复权、后复权、不复权三种口径下回测,比对结果差异。


FAQ

Q1:做均线策略应该用哪种复权?

A:短中期均线策略(如MA5/MA20)推荐使用前复权,这样均线值与当前价格在同一价格区间,交易信号更直观。但要注意,每次新的除权事件后,历史均线也会发生变化,你之前记录的"金叉信号出现在某价格"在重新拉取数据后可能找不到了。

Q2:多因子选股模型应该用哪种复权?

A:取决于因子类型。价格动量因子推荐前复权或后复权(两者结果接近);基于价格绝对值的因子(如低价股效应)建议用不复权并单独处理股息;市值因子不涉及复权,用流通市值即可。

Q3:前复权数据每次拉取都不一样,怎么解决可复现性问题?

A:两种方法:①将数据存本地,锁定"快照时间点",同时记录拉取日期;②改用后复权数据,后复权历史序列稳定,不受新除权事件影响。

Q4:Tushare的T+1复权延迟在实盘中影响大吗?

A:主要影响日频策略的信号日(除权日当天)。如果你的策略在除权日当天产生信号,务必用不复权价格二次确认是否为除权引起的假信号,再决定是否实际交易。

Q5:指数ETF回测是否也存在复权问题?

A:是的。ETF份额分红也会引发除权,同样需要使用复权数据。且ETF的分红频率有时较高(部分债券ETF每月分红),复权问题更需关注。


结论与下一步

复权方式的选择看似是数据清洗的小问题,实则是量化研究方法论的基础。错误的复权口径会让你在错误的数据上优化策略参数,得到在实盘中无法复现的虚假Alpha。

建议行动


参考来源

  • 上海证券交易所 - 除权除息计算公式:https://www.sse.com.cn/investors/sseindex/adjustment/
  • Tushare Pro 文档 - 日线行情接口复权参数说明:https://tushare.pro/document/2?doc_id=27
  • 中国证监会 - 上市公司分红除权规则:http://www.csrc.gov.cn/csrc/c101864/c1024269/content.htm
  • Wind资讯 - 复权计算说明(WindQuantDataService):https://www.wind.com.cn/portal/zh/WindQuantDataService/index.html
  • 深圳证券交易所 - 股票除权除息处理规则:https://www.szse.cn/marketServices/charge/index.html
  • 韭菜加油站(西格玛股网)- 股票交易策略回测中数据该如何复权:https://www.sigmagu.com/paper/12
  • BigQuant量化平台 - 策略回测价格类型与复权说明:https://bigquant.com/wiki/doc/N3sndR7LWy

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

← 返回研究文章