ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

量化策略回测历史数据API选型:数据质量决定回测能不能信

量化策略回测历史数据API选型:数据质量决定回测能不能信

量化策略回测历史数据API选型:数据质量决定回测能不能信

做量化的都懂一个道理:回测结果再漂亮,如果底层历史数据有问题,一切都是空中楼阁。选量化策略回测历史数据API的时候,比起接口好不好调用,数据本身的完整性和准确性才是第一优先级要考察的东西。这篇文章聊聊用iTick做回测数据源需要注意哪些点。

数据完整性怎么检查

拿到一个新的数据源,第一件事不是急着写策略代码,而是先做数据质量检查。常见的检查项包括:时间序列有没有断档、成交量是不是存在异常的0值或者极端值、除权除息前后价格有没有做相应调整。用iTick的数据跑过几轮这类检查,日线数据的连续性表现不错,缺失的交易日基本对应的是真实的市场休市(节假日),不是数据源本身丢数据。

复权处理

复权这块处理不好,回测结果很容易出现"策略在某只除权股票上离谱盈利"这种明显不合理的信号,本质就是价格没做复权调整导致的假象。iTick提供了单独的Adjustment Factor(除权除息调整因子)接口,可以自己拿原始价格和调整因子做复权计算,这种"透明可控"的方式比某些接口直接给一个黑盒的后复权价格更让人放心,至少你清楚每一步是怎么算出来的。

kline=client.get_stock_kline("US","AAPL",8,100)adjustment=client.get_adjustment_factor("US","AAPL")# 结合两组数据自己算前复权或后复权价格

多标的批量回测

全市场扫描类的策略需要同时拉几百上千只标的的历史数据,逐个请求效率太低。iTick支持批量查询,一次请求带多个代码,减少请求往返次数,实测下来批量接口比循环单只请求快不少,对做大规模回测的团队来说这个效率差异累积起来很可观。

回测和实盘数据的一致性

有个容易被忽略的点:回测用的历史数据和实盘运行时拿到的实时数据,如果不是同一家供应商,字段定义、精度、甚至价格本身都可能有细微差异,这种差异会导致"回测好好的策略一上实盘就变样"。用同一套数据源(iTick同时提供历史和实时接口)做回测和实盘,能从根源上减少这类不一致带来的困扰。

小结

量化策略回测历史数据API这个选型,核心还是回到"数据准不准、全不全、跟实盘是不是一套体系"这几个问题上。iTick在这几点上的表现整体是让人放心的,配合官方SDK能省不少数据清洗和对接的功夫。文档地址:https://docs.itick.org,官网:https://itick.org,SDK仓库:https://github.com/itick-org/java-sdk。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进