通达信 .prp 除权文件解析与精准复权价计算(专业完整版)

时间:2026-09-23 作者:若水网 来源:www.hniuzsjy.cn

  

  在量化回测中,复权是否精准,直接决定策略是否可信。

  很多人使用估算复权、比例复权,看似平滑,实则误差巨大。真正专业的做法,是直接读取通达信原生 .prp 除权二进制文件,提取真实除权数据,计算标准复权因子,还原最准确的股价走势。

  

  本文从原理、文件结构、复权逻辑、Python实现到实战避坑,完整讲透 通达信官方复权算法,让你的回测真正做到“零失真”。

  一、复权的核心意义

  

  股票因送股、转股、派息、配股会导致K线出现断崖式缺口。

  不复权 → 信号失真 → 回测假盈利 → 实盘必亏。

  

  只有使用交易所真实除权数据 + 官方复权因子,才能还原股价真正的趋势、支撑、压力。

  二、通达信除权文件结构

  

  通达信除权信息存储在 .prp 二进制文件 中,与 .day 日线文件同目录:

  

  plaintext

  通达信目录\vipdoc\sh\lday\sh600519.prp

  通达信目录\vipdoc\sz\lday\sz002521.prp

  .prp 文件记录了该股历史上每一次真实除权事件:

  

  - 除权日期

  - 送股比例

  - 转增比例

  - 派息金额

  - 配股价格 & 比例

  - 通达信内部计算的理论开盘价

  - 除权前收盘价

  

  这些数据是通达信软件自身复权的唯一真实依据。

  三、复权因子(Adjustment Factor)官方算法

  

  复权因子 = 累积除权系数

  

  1. 单次除权因子(局部因子)

  

  plaintext

  局部因子 = 除权前一日收盘价 / 理论开盘参考价

  2. 三种除权场景公式

  

  1)仅现金分红

  理论价 = 前收盘价 - 每股派息

  

  2)仅送转股

  理论价 = 前收盘价 / (1 + 送股率 + 转股率)

  

  3)送转 + 派息 + 配股(最完整)

  理论价 = (前收盘价 - 派息 + 配股价 × 配股率) / (1 + 送股率 + 转股率 + 配股率)

  

  3. 总复权因子

  

  总复权因子 = 从上市至今 所有局部因子累乘

  四、前复权 / 后复权 标准公式

  

  前复权(最常用)

  

  保持今日价格不变,历史价格向下调整

  

  plaintext

  前复权价 = 原始价格 × 总复权因子

  后复权

  

  保持上市价不变,今日价格向上复权

  

  plaintext

  后复权价 = 原始价格 / 总复权因子

  五、Python 精准复权实现(基于.prp真实除权数据)

  

  以下是专业级可用代码,非伪代码,可直接接入你的量化系统。

  

  python

  import pandas as pd

  import numpy as np

  def calc_stock_adjust_price(df_day, df_prp):

   """

   通达信官方标准复权算法

   df_day:原始日线数据(date, close, open, high, low)

   df_prp:从.prp解析的真实除权记录

   return:带前复权、后复权的完整DF

   """

   df_day = df_day.sort_values("date").copy()

   df_prp = df_prp.sort_values("ex_date").copy()

   # 初始化复权因子

   df_day["adj_factor"] = 1.0

   # 逐次除权累积计算因子

   for _, ix in df_prp.iterrows():

   ex_date = ix["ex_date"]

   pre_close = ix["pre_close"]

   theo_open = ix["theo_open"]

   if theo_open <= 0 or pre_close <= 0:

   continue

   factor = pre_close / theo_open

   # 前复权:除权日前所有日期 × factor

   df_day.loc[df_day["date"] < ex_date, "adj_factor"] *= factor

   # 计算复权价格

   df_day["close_qfq"] = (df_day["close"] * df_day["adj_factor"]).round(2)

   df_day["open_qfq"] = (df_day["open"] * df_day["adj_factor"]).round(2)

   df_day["high_qfq"] = (df_day["high"] * df_day["adj_factor"]).round(2)

   df_day["low_qfq"] = (df_day["low"] * df_day["adj_factor"]).round(2)

   df_day["close_hfq"] = (df_day["close"] / df_day["adj_factor"]).round(2)

   return df_day

  六、实战关键要点(99%的人都错在这里)

  

  1. 复权必须从.prp读取,不能估算

  

  网络上大部分“自动复权”都是用跳空比例估算,和通达信官方不一致,回测必然漂移。

  

  2. 除权日不是交易日

  

  .prp 里记录的是除权日,不一定是交易日期,必须做日期匹配。

  

  3. 复权因子只乘在除权日之前

  

  这是前复权最容易写反的地方,写反直接全部错误。

  

  4. 成交量同步复权

  

  专业回测必须同步复权成交量,否则量价结构失真。

  

  plaintext

  成交量_qfq = 原始成交量 / adj_factor

  5. 必须和通达信软件对比校验

  

  随便选一只高送转股票(如乐普医疗、东方财富),对比你计算的复权价与通达信手动复权价,必须完全一致。

  七、总结

  

  读取通达信 .prp 除权文件计算复权,是A股量化最标准、最精准、最专业的方式。

  它能彻底消除因除权导致的信号误判、均线漂移、回测造假。

  

  从 .day 读取原始K线,从 .prp 读取真实除权,再用官方复权因子计算,构成一套完全离线、完全免费、完全精准的专业行情数据系统。

  

  这是散户进阶职业量化必须掌握的底层技术。

  

  标签

  

  #通达信复权 #prp文件解析 #复权因子 #Python量化 #前复权算法 #量化回测 #股票数据处理 #专业量化 #A股数据 #交易系统

本文标题:通达信 .prp 除权文件解析与精准复权价计算(专业完整版)
本文链接:http://www.hniuzsjy.cn/touzi/360668.html
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
推荐度: 通达信 .prp 除权文件解析与精准复权价计算(专业完整版) 通达信 .prp 除权文件解析与精准复权价计算(专业完整版)2 通达信 .prp 除权文件解析与精准复权价计算(专业完整版)3 通达信 .prp 除权文件解析与精准复权价计算(专业完整版)4 通达信 .prp 除权文件解析与精准复权价计算(专业完整版)5