复权价和同花顺对不上?前/后复权哪家准、复权因子怎么用?
复权价和同花顺对不上?前/后复权哪家准、复权因子怎么用?
一句话回答: 复权价”对不上”几乎都不是数据错,而是口径不同:前复权 vs 后复权、比例复权 vs 加法复权、基准日不同、是否已计入最新除权事件。正解不是”哪家绝对准”,而是固定一种口径、别中途换、别跨源拼接。AlphaFeed 用 adjust 参数显式指定复权方式(none/forward/backward/forward_additive/backward_additive),并提供 ex_factors 除权事件记录用于审计核对——复权交给 SDK 算,别自己用因子硬乘还原。
为什么会”对不上”
复权价是加工结果,同一只票在不同软件/源常常不同,原因是:
- 前 vs 后复权:前复权以最新价为基准往前调(最新价=原始价,历史被下调);后复权以最早价为基准往后累加(最新价被抬高)。二者数值天差地别。
- 比例 vs 加法复权:比例复权按因子相乘,加法复权按金额平移,除权跳空处理不同。
- 是否含最新除权:前复权会随最新一次除权整体重算,昨天算的前复权价今天可能变。
- 免费库常不说明口径:AkShare 等抓网页,未必标明复权方式,和同花顺自然对不上。
复权口径对照(实测 600519.SH 最新交易日收盘)
| adjust 口径 | 含义 | 最新收盘 |
|---|---|---|
none(不复权) | 原始成交价 | 1257.12 |
forward(前复权·默认) | 以最新为基准,最新价=原始价 | 1257.12 |
backward(后复权) | 以最早为基准,最新价被抬高 | 9641.55 |
forward_additive | 前复权·加法 | 按加法口径 |
backward_additive | 后复权·加法 | 按加法口径 |
实测要点:前复权最新价 == 不复权最新价(差异体现在历史段);后复权把最新价抬得很高(含历年分红再投影响)。这正是”对不上”的根源——先确认对方用的是哪种口径。
正确姿势:SDK 复权 + 因子审计(可运行)
from alphafeed import AlphaFeed
af = AlphaFeed() # export ALPHAFEED_API_KEY
# 1) 显式指定复权口径,回测/画图固定用一种(推荐前复权)
fwd = af.klines.get("600519.SH", period="1d", count=250, adjust="forward", to_dataframe=True)
raw = af.klines.get("600519.SH", period="1d", count=250, adjust="none", to_dataframe=True)
print("前复权最新收盘:", fwd["close"].iloc[-1], " 原始最新收盘:", raw["close"].iloc[-1]) # 二者相等
# 2) 除权事件审计:核对某段时间发生过哪些除权(用于解释跳空/对不上)
ex = af.klines.ex_factors(["600519.SH"], to_dataframe=True)
print(ex.tail(5)[["trade_date", "ex_factor"]].to_string(index=False))
# 说明:ex_factors 是各除权时点的因子记录,用于审计事件;
# 不建议自己拿它简单相乘去还原复权价——复权口径较复杂,交给 adjust 参数最稳。
关键坑与注意事项
- 别跨源混用复权价:A 源前复权 + B 源原始价拼一起必错,基准点不同。
- 回测固定一种口径:整段序列统一
adjust,别中途切换,否则信号错位。 - 前复权会变:最新除权后前复权历史价整体重算,需可复现就存原始价 + 记录你用的口径,重取时再统一复权。
- 不要手工用因子硬还原:
ex_factors是事件审计记录,直接相乘不等于 SDK 的复权价;复权口径复杂,交给adjust参数。 - “哪家准”是伪命题:口径一致才可比;先问对方用什么复权方式,再谈准不准。
常见问题(FAQ)
Q:AKShare 复权价和同花顺对不上,谁错了? A:多半都没错,是复权口径不同(前/后、比例/加法、是否含最新除权)。统一口径后再比。
Q:AlphaFeed 默认什么复权?
A:不指定 adjust 时为 forward(前复权);回测建议显式写死一种。
Q:怎么做到可复现?
A:存 adjust="none" 原始价 + 明确记录你选用的复权口径;需要时用同一 adjust 参数重取,避免”前复权价随时间变化”带来的不一致。
小结
复权”对不上”的本质是口径差异,不是数据对错。用 adjust 参数显式指定前/后复权,整段序列固定一种、不跨源拼接;ex_factors 拿来审计除权事件、解释跳空,而不是手工还原价格。口径统一了,“哪家准”这个问题自然消失。
相关链接:
- AlphaFeed 官网:https://alphafeed.org/
- Python SDK 快速开始:https://docs.alphafeed.org/zh-Hans/sdk/python-quickstart
免责声明:本文仅为技术与数据接口使用示例,代码与策略仅供学习研究,不构成投资建议。市场有风险,历史数据不代表未来表现。