一、Python量化交易入门:用Pandas做数据清洗与复权处理

发布时间:2026/10/11 16:21:59
一、Python量化交易入门:用Pandas做数据清洗与复权处理 一、这篇解决什么问题做量化研究,最枯燥、最不能省的一步是数据清洗。股票分红、送股、配股会让价格出现向下的跳空,看起来像暴跌,实际只是除权。停牌日数据缺失,直接参与计算会污染因子。异常值不处理,模型会学到错误规律。本文把 A 股数据最常见的四类问题——复权、停牌、缺失值、异常值——的处理方法整理清楚,每条给出代码实现。读完你可以得到:一份清洗干净的日频数据一份数据质量报告一个可复用的清洗脚本二、复权:最重要的一件事2.1 什么是复权股票分红、送股、配股后,股价会向下调整。如果不处理,价格曲线会出现一个向下的跳空,看起来像暴跌,实际只是除权。举个例子:某股票前一日收盘 10 元,每 10 股派 5 元现金。除息日理论开盘价变成 9.5 元。如果你用不复权数据算收益率,会得到 -5% 的假信号。2.2 三种复权方式类型含义适用场景不复权原始成交价看真实成交价格、算手续费前复权以当前价格为基准,调整历史价格回测首选后复权以上市首日为基准,调整后续价格长期收益分析为什么回测用前复权:前复权保持了最新价格和真实价格一致,同时消除了除权跳空,收益率计算连续。2.3 代码示例importakshareasak# 前复权df_qfq=ak.stock_zh_a_hist(symbol="600519",period="daily",start_date="20200101",end_date="20241231",adjust="qfq")# 后复权df_hfq=ak.stock_zh_a_hist(symbol="600519",period="daily",start_date="20200101",end_date="20241231",adjust="hfq")# 不复权df_raw=ak.stock_zh_a_hist(symbol="600519",period="daily",start_date="20200101",end_date="20241231",adjust="")2.4 复权的坑不同数据源的复权算法可能不同,同一只股票在两个平台的前复权价格可能有细微差异。回测时固定用一个数据源。前复权价格会随最新价格变化,今天下载的前复权数据和一个月后下载的,历史价格可能不一样。所以要么每次重新下载全量,要么存原始数据自己算复权。成交量不需要复权,只有价格需要。三、停牌处理3.1 停牌的表现停牌期间,数据源可能:直接没有该日期的记录有记录但成交量为 0有记录且价格等于停牌前价格3.2 处理原则回测时:停牌日不能交易,买入信号遇到停牌应顺延到复牌日停牌日不应参与因子计算(否则 rolling 窗口会被污染)持仓股票停牌期间,仓位保持不变# 标记停牌:成交量为0df['is_suspended']=(df['volume']==0)# 停牌日不生成信号df.loc[df['is_suspended'],'signal']=np.nan df['signal']=df['signal'].ffill()3.3 长期停牌的处理如果一只股票停牌超过一定天数(比如 20 个交易日),建议直接从股票池剔除,因为复牌后往往有大幅补涨或补跌,会干扰策略。四、缺失值处理4.1 缺失值的来源新股上市初期,均线等指标算不出来停牌日数据源本身的问题多数据源合并时的对齐问题4.2 处理方式对比

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询