跳到正文

研究指南

股票数据准备

复权行情怎么核对:用拆股与分红记录检查价格序列

复权行情核验应把原始观测、明确复权政策和独立公司行动记录连接起来,重算预期因子,再逐字段比较供应商数值,异常先隔离,最后才允许下游使用。图形平滑不够:错误因子也可能消除跳空,却把价格或成交量放在错误单位基础。交付必须能回到具体事件与日期,而不是只解释拆股概念。

本文实际构造四日合成复权收盘和成交量,验证一份供应商样例,并找出两处注入错误。它不维护个人持仓数量或成本台账。CoTrading数据核验承接仍为规划或待核实,计算也不证明具备任意市场完整公司行动服务。真实事件需要从适当来源取得,不能由行情跳变本身反推后自证正确。

明确本次复权究竟指什么

本例以2026年10月22日为最新锚点,保持该日原始值。较早收盘向后按一次一拆二和后续现金股利比例调整;较早成交量只按拆股调整。输出是分析用复权收盘与拆股调整成交量,不是历史真实成交价,也不是完整OHLC行情。其他价格字段若要使用,必须另行按一致规则核对。

MathWorks复权函数说明给出拆股除以比例、现金股利相对前一原始收盘形成比例乘数的方法。本文采用这个明确政策做独立合成计算,不运行MATLAB,也不声称每个供应商都用同样定义。供应商说“复权”时,要先取得其事件范围与锚点政策。

JPX J-Quants官方计算参考展示累计价格因子和独立成交量处理,并明确该接口覆盖哪些公司行动。它的范围不等于本例含现金股利的政策。可借鉴的是按事件类型建立不同因子链,不能把其接口排除的现金股利假装成已由该来源自动处理。

准备三张能够对齐的输入表

原始日行情、供应商复权行情和公司行动记录分别保存,包含确认证券、日期约定、币种、单位和来源修订。事件要有生效或除权日、拆股方向、每适用股份的现金金额。不要只看图上价格减半就推断拆股,再用推断事件解释同一条图;那不是独立核验。

原始19到22日收盘100、50、49、50,成交量100、200、220、240。20日一拆二,21日每股派现金1,金额基于拆股后股份。两个事件分日发生,避开同日组合行动单位先后顺序尚未定义的问题。所有数字合成,不代表真实市场价格或实际除息变动必然等于股利。

正确供应商样例应匹配声明政策。另建错误版本,把19日复权收盘改成50,把20日复权成交量改成204。两版分开,可以同时检查正常接受和异常分支;不要在同一表不断覆盖数值,导致最后只剩一份无法追查的测试结果。

价格与量分别建立累计因子

拆股前观测,价格因子乘二分之一,成交量因子乘二;拆股日及以后原始单位已改变,不再重复调整。生效日期边界与比例方向同等重要。如果因子从当天错误开始应用,拆股日价格会再除一次,序列反而出现新断点。

现金股利前一原始收盘是50,比例乘数为(50 − 1) / 50 = 0.98,只作用于除息日前价格。现金股利没有改变本例现有股份单位,因此不能改变成交量。价格与成交量各保存因子,审阅者才看得出某个事件究竟影响哪些列。

if day < event["date"]:
    price_factor /= event["split"]
    volume_factor *= event["split"]
    if event["dividend"]:
        multiplier = (previous_close-event["dividend"]) / previous_close
        price_factor *= multiplier

完整样例检查拆股比例为正、股利乘数处于有效正区间,并为每个观察日累计后来适用事件。同日组合行动、配股、分拆、事件历史缺口与外币分派需要额外政策,本短函数不静默泛化。不能把一套简单拆股和现金股利逻辑称为覆盖所有公司行动。

逐字段比较生成序列与来源

日期原收盘原成交量价格因子量因子预期复权收盘/量
10月19日1001000.49249/200
10月20日502000.98149/200
10月21日492201149/220
10月22日502401150/240

下载完整示例。使用Python 3.12+和标准库,全部合成数据,运行python R531.py。作者文件为docs/growth/research/round-5/examples/R531.py。

实际执行重建四条预期值,与正确供应商表相等,断言19日因子0.49和2、20日因子0.98和1。对错误表,异常映射指出19日收盘、20日成交量,两个日期隔离,21和22日保持可用。这是逐字段对账产物,不是仅判断两张图大致相似。

样例误差容差为0.0001,真实容差应按各字段发布精度设定。不要每累积一次事件就舍入来迎合图表显示,保留中间精度,到约定发布边界再比较。若供应商只给低精度结果,要记录舍入差异与真正口径冲突,不能用一个很大容差把二者一起放过。

解释漏股利与错误调量两种异常

错误19日收盘50体现拆股调整,却漏掉0.98股利乘数。它不一定是算术打错,也可能是合法拆股专用序列,被错误标成含股利复权。应重新标记价格基础或取得正确序列,不把49与50平均成一条没有来源的价格。比较前确认口径,通常比事后讨论哪家供应商更权威更有效。

错误20日成交量204则是不同机制。该日已经拆股后,现金股利不应在本政策下改变量。常见错误是把整条价格因子倒过来用于成交量,造成经济单位错误。独立因子链能直接暴露它,不能因为价格序列都平滑,就推断量也正确。

生成预期表可以在原始输入、事件包和政策确认后支持候选修复序列,同时保留供应商原值与修复差额。未经确认前,异常供应商区间仍不完整,不能把剩余两日说成四日全量验证成功。若决定采用自建序列,另存新来源身份与计算版本,不冒充供应商原始发布。

防止下游重复加现金股利

20到21日复权收盘都为49,因此在本声明调整方法下价格比值收益为零。样例故意再加一次现金股利,算(49 + 1) / 49 − 1,约2.04%,这是重复计算,不是额外投资收益。脚本断言错误值为正,展示即使没有新的经营信息,也能被口径混用造出表面回报。

下游应选择一致方法:按明确复权政策计算其用途范围内的分析收益,或使用原始行情配合显式分派与股份单位记账。两种方法的再投资和事件约定需要核对,不能默认数值总等价。19日复权价49也不是有人当时能以49成交的证据,原始观测是100,执行价格应保留原始尺度。

交付带事件连接的核验包

保存原始与供应商表、事件来源、锚点、两条因子链、预期数值、容差、异常和批准后的单口径输出。审阅者应能从拆股与股利分别重建19日0.49,并看出量因子保持二而不跟随股利。事件记录缺少时,保留待核范围,不通过AI猜测修复。

核实事件更正、锚点改变或供应商方法变更后,重算受影响历史。复权序列变化不自动意味着原始行情坏了,但需要新的声明版本。本文核验的是具体分析数据集及失败分支,不认证全部公司行动,不替代真实成交记录,也不重复个人持仓份额与成本台账教程。

将候选修复作为独立产物审阅

修复表列日期、字段、原供应商值、预期值、事件引用与批准状态。预期序列是在选定政策下可复现的计算,不应静默覆盖供应商原序列。审阅者可以接受新的分析来源,也可以决定供应商其实采用另一合法口径,只需重新标记而非改数。两种处理目的不同,都要保留原证据与选择理由。

核对锚点行、每个事件边界和一条更老累计行。锚点检查是否多用了后来事件,生效日检查是否严格只调整此前,老日期检查因子累计。一条序列可能在其中一个位置通过,在另一个位置因日期错一行失败。仅抽最后一日往往看不出复权错误,因为锚点通常本来就等于原始值。

交给下游时,调整定义直接附在选定字段旁。泛化复权标志不够,因为价格包含现金股利,而量只跟随股份单位变化。保持这些区别,才能避免本地核验正确,到了另一工具又按不同默认值解释,重新造成记账或收益口径冲突。字段名可以相同,元数据含义不能丢失。

后来发现事件记录更正,应先标受影响分析序列待核,再按新证据重算和审阅,不把旧因子偷偷替换。修订日期与事件生效日期分开保存,使用者才知道变化来自新信息取得,还是计算政策改变。这一修复流程面向行情数据集,不改变账户真实交易与持仓历史。

常见问题

价格与量可以共用累计因子吗?

只能在事件政策支持时;本例现金股利的价格乘数不能自动用于成交量。

复权价格可以直接当历史成交价吗?

不能直接使用,应核对单位与用途,原始成交观测单独保留。

相关阅读