阶段4数据获取●●●●●

复权价格获取:三种口径的实战陷阱地图

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

先掌握这个答案

接口对照:akshare的adjust参数(''不复权/'qfq'前/'hfq'后)、tushare的adj参数同构、baostock的adjustflag(1后/2前/3不)——写进数据字典防混。深坑一:前复权是「以今天为锚」的动态口径——每次分红后,你缓存的历史前复权价全体改变!意味着:今天下的前复权数据与三个月前的缓存不可直接拼接(增量更新会错位)——这是增量流水线最隐蔽的雷。深坑二:复权因子的时点性——用「最新因子」回算历史=让历史知道未来的分红(温和前视)。推荐方案:研究面板存「不复权价+复权因子」两列——因子用当日及以前的因子值计算(时点正确)、展示需要时现场生成任意复权口径——一步到位躲开两个坑。

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

从理解到使用

收益口径和撮合价格分开

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

本阶段实战方法 · 一条能复现的数据流水线

把接口返回的数据变成可用于因子研究的面板时,先处理时点、主键与单位。

  1. 建立数据字典:字段、单位、时区、交易日历、数据源、抓取时间、原始价与复权因子。
  2. 用(date, code)查重,区分停牌、未上市、窗口不足和真实缺失;不要用向后填充把未来值带回过去。
  3. 保存原始快照与清洗日志,固定随机种子和环境版本;接口字段变化时先核对官方文档。

使用边界

  • 报告期不等于公告可用日,盘后公告通常不能用于当天收盘前决策。
  • API输出名为“动态市盈率”时不能直接改名TTM;浏览器练习不支持任意原生库或行情抓取接口。
背景 · 从一个困惑说起
q-014学会了复权的概念与前后复权的选择;到下载实战,问题变成操作层:不同接口的复权参数叫什么、默认给什么、以及一个更深的坑——复权因子的「时点性」。
由此产生的问题
主流接口的复权参数对照?「前复权随时间变形」的坑(历史值每天变)?为什么研究面板推荐后复权或不复权+因子分离?
核心概念
接口对照:akshare的adjust参数(''不复权/'qfq'前/'hfq'后)、tushare的adj参数同构、baostock的adjustflag(1后/2前/3不)——写进数据字典防混。深坑一:前复权是「以今天为锚」的动态口径——每次分红后,你缓存的历史前复权价全体改变!意味着:今天下的前复权数据与三个月前的缓存不可直接拼接(增量更新会错位)——这是增量流水线最隐蔽的雷。深坑二:复权因子的时点性——用「最新因子」回算历史=让历史知道未来的分红(温和前视)。推荐方案:研究面板存「不复权价+复权因子」两列——因子用当日及以前的因子值计算(时点正确)、展示需要时现场生成任意复权口径——一步到位躲开两个坑。
为什么需要它
①增量流水线的生死细节:前复权缓存拼接是「数据对但逻辑错」的典型——账面无异常、收益计算悄悄失真;②时点性是前视的复权版:q-063六藏身点的第⑤点的完整机制;③「原始+因子」的存储哲学:保留最原始的事实、口径在使用时生成——数据工程的通用最优解(与q-358双口径纪律同源)。
实际应用场景
落地三步:①下载时同时取不复权价与复权因子(tushare的adj_factor接口);②面板存两列;③收益计算=price×factor的pct_change(因子用当日值)——展示口径临时生成。
与之前知识的联系
q-014(概念)与q-358(双口径纪律)的下载实操版;深坑二连接q-063(前视六点之⑤);增量更新的雷区与q-328的战役流程衔接。
⚠ 常见误解
  • 缓存的前复权数据永远有效:每次除权它整体变形——增量拼接会错位;要么全量重下、要么改用「原始+因子」方案
  • 用最新复权因子回算历史没问题:未来分红改变了历史复权价=温和前视——严谨回测用时点因子
  • 接口默认给的就是我要的:默认口径各异(有的默认前复权)——显式传参+写数据字典,别赌默认

🤖 AI导师

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