阶段1数据基础●●●●●

复权因子:数据表里最不起眼却最致命的列

我的掌握程度:
q-064精讲

先掌握这个答案

复权因子(adj factor):每次除权除息时跳变的乘数,历史累乘形成序列。用法:后复权价=原始价×因子;前复权价=原始价×因子/最新因子。存储方案的优势:①原始价保留真实交易价格(撮合、涨跌停判断必须用原始价!);②因子列轻量,口径随时可切换;③数据源更新分红时只需追加因子,不用重算全表。

先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。

从理解到使用

收益口径和撮合价格分开

保留原始价、企业行动和复权因子,用一致口径计算收益;模拟成交、涨跌停与订单价格应使用当时真实报价。前后复权在相同调整方法下只差归一化常数时,区间收益一致;并非所有数据商都保证该条件。

本阶段实战方法 · 把行情数字变成可比较的收益

看股票、基金或策略业绩时,先对齐本金、起止日期、现金流与费用。

  1. 选一个固定区间,记录期初价值、期末价值、分红、出入金和交易费用。
  2. 没有中途出入金时,用(期末价值+已取出分红-期初价值-费用)÷期初价值计算收益;有出入金时先区分时间加权与资金加权。
  3. 用相同区间的基准作比较,同时记录最大亏损;不要单凭一次盈利评价能力。

使用边界

  • 不同期限的收益不可直接排名;年化只是换算,不是未来收益承诺。
  • 模拟价格不是实时行情。普通股票交易手数、T+1和费用应按具体市场规则核对。
背景 · 从一个困惑说起
q-014学会了前复权/后复权的概念,但工程实践里,成熟的数据管道不直接存「复权价」,而是存「原始价+复权因子」——需要哪种口径时现场计算。
由此产生的问题
复权因子怎么用?为什么「原始价+因子」的存储方案优于直接存复权价?因子在回测里怎么实时应用?
核心概念
复权因子(adj factor):每次除权除息时跳变的乘数,历史累乘形成序列。用法:后复权价=原始价×因子;前复权价=原始价×因子/最新因子。存储方案的优势:①原始价保留真实交易价格(撮合、涨跌停判断必须用原始价!);②因子列轻量,口径随时可切换;③数据源更新分红时只需追加因子,不用重算全表。
为什么需要它
①涨跌停判断的正确性:±10%的限制基于原始价,用前复权价判断涨跌停会算错(历史复权价缩小后,10%区间对应不同数值)——这是复用别人回测代码的高频bug;②成本计算:佣金印花税按真实成交金额(原始价)计算;③可复现性:因子快照固定后,任何人重算结果一致。
实际应用场景
标准数据表结构:date, code, open/high/low/close(原始), volume, amount, adj_factor;研究用列在内存中现算:df['close_hfq']=df['close']*df['adj_factor']。
与之前知识的联系
q-014概念的工程化。它与q-043涨跌停判断、q-053成本计算在数据层汇合——「一套原始数据+多种口径现场生成」是量化数据管理的职业习惯。
⚠ 常见误解
  • 直接存前复权价最省事:涨跌停判断、成本计算全要用原始价,双套口径迟早打架
  • 复权因子是整数或小数都正常:不同数据源的因子基准不同(有的从1开始,有的历史为1),使用前看清定义
  • 因子只用在不复权数据上:成交额不需要复权(真实金额),成交量送股后口径变化才需注意

🤖 AI导师

导师会先检查你的前置知识(复权),再用案例、公式和代码帮助理解。此功能需要先启用服务。