第二章:数据基础设施——数据源分类、数据库选型与数据清洗

做量化研究,说白了就是跟数据打交道。我见过太多人策略写得漂亮,结果一上实盘就崩——问题往往出在数据上。今天咱们就把数据基础设施这块彻底聊透。

2.1 数据源分类:行情、财务、另类

数据源我习惯分成三大类。每一类都有它的脾气,处理方式完全不同。

2.1.1 行情数据

行情数据是最基础的。包括日线、分钟线、Tick级数据。我个人最常用的是日线和1分钟线。

  • 日线:开高低收、成交量、成交额。做中低频策略够用了。
  • 分钟线:我一般用1分钟和5分钟。做高频回测时,分钟线能捕捉到更多细节。
  • Tick数据:逐笔成交。这东西数据量巨大,我只有在做订单流分析时才用。
我的经验:刚开始做量化时,我一股脑全下载Tick数据,结果硬盘爆了。后来学乖了——先想清楚策略需要什么粒度,再决定下载什么。

2.1.2 财务数据

财务数据是基本面分析的命根子。包括三大报表、财务指标、业绩预告等。

这里有个坑:财务数据有滞后性。年报可能4月底才出,但股价1月份就反应了。我曾在回测中用最新财报数据,结果策略表现特别好——后来发现是用了未来数据。嗯,这个教训很深刻。

2.1.3 另类数据

另类数据范围很广。舆情数据、卫星图像、电商销售、供应链数据……说白了,就是传统行情和财务之外的一切。

我做过一个项目,用电商平台的销量数据预测消费股走势。效果还不错,但数据清洗特别麻烦。你想想看,电商数据里各种促销、刷单、退货,不洗干净根本没法用。

2.2 数据库选型:InfluxDB vs ClickHouse

选数据库这事,我踩过不少坑。直接说结论吧。

特性 InfluxDB ClickHouse
定位 时序数据库 列式分析数据库
写入速度 极快,专为时序优化 快,批量写入更优
查询灵活性 一般,适合简单聚合 强,支持复杂SQL
存储压缩 中等 极高,压缩比可达10:1
适用场景 实时监控、高频Tick 历史回测、多因子分析

我的建议

  • 如果你主要做高频策略,需要实时写入和查询Tick数据,选InfluxDB。它原生支持时间戳索引,写入速度没话说。
  • 如果你做中低频策略,需要跑复杂的SQL查询(比如跨品种、跨时间段的因子计算),选ClickHouse。它的列式存储让聚合查询快得离谱。

避坑指南:我曾经在一个项目里用InfluxDB存日线数据,结果查询多因子时慢得要命。后来换成ClickHouse,同样的查询从30秒降到了0.3秒。选对工具,事半功倍。

2.3 数据清洗与对齐

数据清洗是量化里最脏最累的活,但也是最重要的。我常说:垃圾进,垃圾出。数据不干净,策略再牛也白搭。

2.3.1 复权处理

复权是为了消除分红、送股、配股对价格的影响。不处理的话,回测结果会失真。

有三种复权方式:

  • 前复权:调整历史价格,让价格连续。我习惯用前复权做回测,因为能看到真实的历史收益率。
  • 后复权:调整当前价格,保持历史价格不变。适合看长期走势。
  • 不复权:原始价格。做事件驱动策略时可能会用到。
注意:前复权有个问题——早期价格可能变成负数。尤其是分红多的股票,复权后历史价格可能为负。这时候要小心,别让负数价格搞乱你的因子计算。

2.3.2 停牌处理

停牌是A股特色。股票停牌期间没有交易数据,但你的策略可能还在跑。

我常用的处理方法:

  • 停牌期间:用前一日收盘价填充。但要注意,如果停牌时间太长,这个价格可能严重失真。
  • 复牌当天:通常会有补涨或补跌。我习惯在复牌当天重新计算因子,而不是直接用停牌前的数据。
  • 回测时:如果股票停牌,我一般会暂停该股票的持仓,直到复牌。否则回测会高估收益。

我的经验:我曾经在回测中没处理停牌,结果策略在2015年股灾期间表现特别好——因为很多股票停牌了,净值曲线平滑得像一条直线。后来发现是数据没对齐,白白浪费了几个月时间。

2.3.3 数据对齐

数据对齐是让不同频率、不同来源的数据在时间轴上保持一致。说白了,就是让日线数据和财务数据在同一个时间点上能对上。

我常用的对齐规则:

  • 行情数据:按交易日对齐。非交易日的数据直接跳过。
  • 财务数据:按财报发布日期对齐。不是按财报截止日期。这一点很多人搞错。
  • 另类数据:按数据采集时间对齐。比如舆情数据,按发布时间对齐到最近的交易日。

2.4 数据存储规范

数据存储规范这事,看似简单,但做不好后面全是坑。我总结了几条铁律。

  1. 统一命名规则:股票代码、字段名、表名,全部统一。我习惯用全小写+下划线,比如 stock_codeclose_price
  2. 分区存储:按日期分区。查询时只扫需要的分区,速度能快10倍。
  3. 数据版本管理:每次数据更新都保留版本号。万一数据出问题,可以快速回滚。
  4. 元数据记录:记录数据来源、更新时间、清洗规则。方便排查问题。

核心原则:数据存储要可追溯、可复现。你永远不知道三个月后会不会需要重新跑一遍回测。到时候数据对不上,哭都来不及。

2.5 知识体系框架

下面这张图概括了本章的核心内容。我画的时候特意把数据清洗放在中间——因为它是连接数据源和策略的桥梁。

量化数据基础设施架构 数据源层 行情数据(日/分钟/Tick) 财务数据(报表/指标) 另类数据(舆情/电商等) 数据清洗与对齐层 复权处理(前/后/不复权) 停牌处理(填充/暂停) 数据对齐(时间轴统一) 数据存储层 InfluxDB(高频/实时) ClickHouse(历史/分析) 策略回测 / 因子计算

这张图从左到右展示了数据从源头到最终使用的完整流程。你想想看,任何一个环节出问题,后面的策略都会受影响。所以别嫌麻烦,数据基础设施值得花时间好好打磨。


公众号:蓝海数据掘金营,微信deep3321