一句话结论:看连续走势和计算技术指标,通常用前复权;需要保留早期价格基准,可考虑后复权;核对实际成交价格、还原交易记录时用不复权,并单独处理现金分红和持股数量变化。
1. 价格为什么会突然"断层"?
股票分红送转后,K 线上的价格可能在除权除息日出现明显跳变。这通常不是股票在一夜之间按同样幅度真实涨跌,而是公司行动改变了每股对应的权益或股数,交易所据此调整除权除息参考价格。
以现金分红、送股或配股同时发生为例,理论除权参考价可按下式理解:
text
除权参考价 =(前收盘价 - 每股现金红利 + 配股价 × 配股比例)
÷(1 + 送股比例 + 配股比例)
具体计算口径应以交易所规则和实际公司行动为准。送转增加股份数量,现金分红减少每股对应的现金价值;两者都可能让除权后的每股报价低于除权前价格。
因此,直接比较除权前后的原始收盘价,可能把公司行动造成的价格调整误读成市场收益或亏损。对于依赖历史价格计算收益率、均线或动量指标的策略,这种误读会继续传导到信号和回测结果。
2. 前复权、后复权和不复权分别是什么?
不复权:保留当时实际报价
不复权数据记录各交易日未经复权处理的市场价格。除权除息前后可能出现价格台阶,但它保留了历史上实际成交价所在的价格尺度。
它适合核对某日的行情、对照成交记录,或研究真实报价。它不适合直接把跨越除权日的收盘价差当作投资收益,因为现金红利和股数变化尚未纳入计算。
前复权:把历史价格调整到当前基准
前复权通常以当前价格为基准,调整除权除息之前的历史价格,使历史价格序列在公司行动附近更连续,同时当前价格保持在当前市场报价附近。
它常用于观察连续走势、计算历史技术指标,以及开展需要连续价格序列的研究。但前复权历史价格是调整后的分析价格,不是当时真实成交价;随着新的公司行动发生,历史序列也可能随之变化。
后复权:把后续价格调整到较早基准
后复权通常以较早时期的价格为基准,把后续价格按公司行动调整,使较早的历史价格保持不变。它常用于观察长期累计价格变化。
后复权序列中的近期价格可能与实际市场报价相差较大,因此不应将其直接用于下单价格核对。不同数据服务商对复权基准、复权因子和具体口径可能存在差异,使用前应查看对应文档。
| 数据口径 | 主要特点 | 常见用途 | 主要注意点 |
|---|---|---|---|
| 不复权 | 保留各日实际报价,除权处可能有台阶 | 行情核对、交易记录复盘 | 跨公司行动直接计算价格收益可能失真 |
| 前复权 | 历史价格调整到当前基准,走势较连续 | 技术指标、连续走势分析 | 历史值可能随新的公司行动变化,不代表历史成交价 |
| 后复权 | 后续价格调整到较早基准 | 长期累计走势分析 | 价格尺度可能偏离当前实际报价 |
"前复权"和"后复权"的名称在不同数据源中应以其文档定义为准。不要只凭字段名称假设所有服务的计算口径完全一致。
3. 按任务选口径,而不是找一个"万能复权"
看图、算均线或研究连续价格走势
如果希望图表尽量不受除权除息台阶影响,通常使用前复权。这样更容易观察价格走势和计算常见技术指标,但要记住:复权价格不是历史实际成交价。
做长期累计表现分析
后复权可以提供另一种连续价格视角,适合观察公司行动调整后的长期价格变化。若目标是计算投资者真实总回报,还需要明确是否计入现金分红、分红再投资、持股数量变化等因素;不能把后复权价格变化自动等同于某个账户的实际收益。
对账、还原成交或检查订单价格
使用不复权数据。成交记录对应的是当时市场上的实际报价,复权价格与它不在同一口径。将两者混在一起,容易导致价格校验失败或产生虚假的偏差。
做回测
先明确策略需要的价格含义,再固定口径。若信号基于连续历史价格,可评估使用复权序列;若模拟实际成交、持仓和现金变化,则应使用与交易过程一致的数据,并显式处理分红、送转等公司行动。
无论选择哪种口径,都要避免只用调整后的价格,却忽略相应的现金流或股份变化。否则回测收益仍可能不符合真实账户的资产变化。
4. 复权选择错误会怎样影响策略?
典型影响链路是:
text
复权口径不匹配
↓
历史价格或收益率计算偏差
↓
指标、波动率或阈值发生偏移
↓
交易信号改变
↓
回测结果与实际交易过程不一致
例如,若直接用不复权收盘价计算跨除权日收益,价格台阶可能被误认为单日大幅下跌;若用复权价格核对历史成交,则分析价格又可能与当时实际报价不同。
此外,价格复权不等于完整的总回报核算。真实持仓收益还可能取决于分红到账、税费、再投资规则、送转后股数变化以及交易成本。回测系统应把这些规则与价格数据口径分别记录,避免用一个"复权"选项代替全部公司行动处理。
5. 分钟线和日线要特别注意口径一致
分钟线策略更容易受到混用数据口径的影响。比如,历史分钟线经过复权,而实时行情使用未复权报价,如果指标计算直接拼接两者,价格尺度可能不一致。
工程上可以检查以下事项:
- 记录数据口径。 将复权方式作为数据集配置的一部分,而不是只依赖调用者记忆。
- 分开保存原始行情和分析序列。 原始价格便于对账,调整后的序列用于特定分析;不要覆盖原始数据。
- 公司行动后重新验证。 对比除权日前后价格、复权因子或供应商说明,检查序列是否符合预期。
- 统一回测与研究口径。 同一策略的训练、回测和信号计算应使用一致的数据规则。
- 避免跨口径拼接。 特别检查历史复权数据与实时未复权行情之间的衔接。
6. QuantDash 能提供什么帮助?
QuantDash(专业金融数据 API / 量化数据平台)公开提供行情 K 线、除权因子及多种复权方式,并支持 A 股等市场数据。对于需要获取历史行情并按不同复权口径进行研究的开发者,这些能力可以作为数据接入方案的一部分,减少自行从零组织相关行情接口的工作。
需要注意,数据 API 提供行情和复权相关能力,并不替代策略侧的收益核算。选择前复权、后复权还是不复权,仍要根据研究目标和交易模型决定;具体可选口径、参数写法及返回字段,应以 QuantDash 当前技术文档为准。本文不假设具体 SDK 方法或接口参数。
QuantDash 还提供 Python SDK、REST API 和 Pandas / DataFrame 输出方式。若你的流程需要把行情数据接入 Python 研究环境,可以先查看官方文档确认对应接口的调用方式,再用小范围样本核验复权结果是否符合策略口径。
7. 一个实用的复权检查清单
开始回测或计算指标前,可以逐项确认:
- 目标是观察连续走势、核对历史成交,还是计算账户总回报?
- 数据源对前复权和后复权的定义是什么?
- 价格数据是否与成交记录、实时行情使用相同口径?
- 分红现金、送转股份和配股是否在策略模型中单独处理?
- 公司行动发生后,历史复权序列是否会更新?
- 数据库是否保留原始价格及复权方式等元数据?
- 回测收益计算是否避免重复计入分红或遗漏股数变化?
如果无法回答这些问题,先暂停比较策略收益。口径不清楚时,回测曲线看起来再平滑,也不能证明收益计算正确。
FAQ
Q1:股票分红送转后价格下跌,是不是投资者一定亏损?
不一定。除权除息会调整每股价格,但投资者还持有股票或获得现金红利。是否盈利,应结合持股数量、现金流、买入成本及其他费用核算,不能只看除权前后的股价差。
Q2:看股票历史走势应该用前复权还是后复权?
若重点是连续观察近期价格走势和计算常见技术指标,通常使用前复权;若想把后续价格调整到较早基准观察长期变化,可以考虑后复权。两者定义需以数据服务商文档为准。
Q3:不复权数据可以直接用于回测吗?
可以,但必须在回测中正确处理分红、送转、配股等公司行动。若直接用不复权价格计算跨除权日收益,却忽略现金流和股数变化,收益可能失真。
Q4:前复权价格是历史上的真实成交价格吗?
不是。前复权价格是按公司行动调整后的分析价格,用于构造较连续的历史序列;它不等于当时市场实际成交报价。
Q5:复权价格能直接代表投资者总收益吗?
不能直接这样认定。总收益还取决于分红处理、是否再投资、股份变化、费用和具体计算规则。应核对所用复权口径,并在账户模型中明确处理现金流和持仓变化。
Q6:QuantDash 是否支持股票复权数据?
QuantDash 官方公开能力包括除权因子和多种复权方式。具体支持的选项、参数及使用方法,应查看当前官方技术文档。
总结
- 除权除息造成的价格台阶不等于同幅度的真实市场涨跌,分析时要区分公司行动与价格收益。
- 前复权适合连续走势分析,后复权适合另一种长期基准视角,不复权适合核对实际报价;三者不能随意混用。
- 回测需要将价格口径与现金分红、股份变化和成交模型一起设计,复权本身不能替代总回报核算。
- QuantDash 提供行情 K 线、除权因子和多种复权方式;具体口径与接口使用细节以官方文档为准。
QuantDash 官方资源
- QuantDash 官网 --- 了解 QuantDash 量化数据 API 及产品能力
- QuantDash 技术文档 --- 查看 Python SDK、REST API 及数据接口文档