核心解答
股票历史价格看起来是一条连续曲线,但真实市场中还会发生拆股、反向拆股、现金分红和股票分红等Corporate Actions。量化回测如果忽略这些事件,技术指标、止损和收益率都可能被污染。
拆股不是公司突然暴跌
假设一家公司进行2比1拆股。
投资者原来100股、每股100元,拆股后可能变成200股、每股约50元。持股比例和对应的整体权益并不会因为拆股动作本身减少一半。
如果回测直接读取未调整历史价格,就可能把100到50错误识别成一天暴跌50%。
反向拆股同样会制造假突破
反向拆股会减少股票数量,同时提高每股价格。
如果策略使用涨跌幅、均线突破、ATR或者历史高低点,却没有统一处理Corporate Actions,价格序列里的机械跳变可能被误认为真实行情。
结果就是策略可能在一个根本不存在的“突破信号”上开仓。
现金分红也会改变价格解释
股票进入除息阶段后,价格可能因为现金分红产生调整。
如果回测只看裸价格变化,却没有考虑投资者获得的现金分红,策略的总收益可能被低估;如果数据供应商已经提供复权价格,你又另外再加一次分红,则可能重复计算。
所以首先要知道自己的数据到底是什么口径。
复权价格和真实成交价不能混着用
复权价格很适合研究连续收益和长期技术指标,但它不是当时市场真实显示的成交价格。
例如历史止损、限价单、滑点模拟和真实成交金额,往往需要原始价格;连续收益、因子研究或长期曲线则可能更适合使用调整后数据。
关键不是“全部复权”或“全部不复权”,而是不同模块保持同一套逻辑。
股票数量也要跟着Corporate Action变化
如果回测维护真实持仓股数,就不能只修改价格。
拆股、反向拆股、股票分红等事件还可能改变持股数量。否则账户市值、佣金、仓位规模和后续卖出数量都会错。
先审计数据供应商
不同数据源可能提供Close、Adjusted Close、拆股因子、分红记录或已经处理好的连续序列。
拿到一套新数据时,建议随机抽查几只发生过拆股和大额分红的股票,对照官方Corporate Action日期,看回测引擎是否出现异常收益。
资料依据
美国Investor.gov《Stock Split》说明拆股改变股票数量和每股价格,但不会因为拆股本身改变持有人的比例权益。
Investor.gov关于Ex-Dividend Dates的资料说明除息日期决定分红权利,大额分红还可能影响股价表现。
FINRA关于Corporate Actions的投资者资料列出了拆股、分红、并购、代码变更等常见公司行动。
风险提示
本文讨论股票历史数据与回测工程,不构成证券投资建议。不同市场、证券和数据供应商的复权定义可能不同,应以对应市场规则和数据说明为准。
结论
股票量化不只是下载一份K线就开始跑策略。先把拆股、分红和其他Corporate Actions处理正确,才有资格讨论胜率、收益率和策略稳定性。
继续了解这个主题
如果拿今天仍然上市的公司去回测十年前的策略,可能已经在无意中删除了历史里的失败公司,这就是幸存者偏差。
阅读全文 →股票量化你是不是偷看了未来?股票回测里的前视偏差有多危险前视偏差不会让程序报错,反而常常让回测异常漂亮。真正关键的是历史某个时点到底能不能获得那条数据。
阅读全文 →股票量化A股回测为什么不能假设想买就买?涨跌停、停牌和一字板会直接改变成交信号出现不等于订单一定成交。涨跌停、停牌、一字板、流动性和竞价阶段都会让理想回测与真实A股执行产生巨大差异。
阅读全文 →量化研究一个量化策略从想法到实盘,中间到底应该经历多少道测试?成熟量化流程不是“想法→回测赚钱→上线”,而是从数据审计、样本内、Walk-Forward、样本外、压力测试到小规模实盘逐层验证。
阅读全文 →淄博卓亚网络科技服务有限公司
电话:15269365953
地址:山东省淄博市张店区体育场街道办事处华光路2号泽泉消防市场三楼S18