第二章:数据基础设施——数据源分类、数据库选型与数据清洗
做量化研究,说白了就是跟数据打交道。我见过太多人策略写得漂亮,结果一上实盘就崩——问题往往出在数据上。今天咱们就把数据基础设施这块彻底聊透。
2.1 数据源分类:行情、财务、另类
数据源我习惯分成三大类。每一类都有它的脾气,处理方式完全不同。
2.1.1 行情数据
行情数据是最基础的。包括日线、分钟线、Tick级数据。我个人最常用的是日线和1分钟线。
- 日线:开高低收、成交量、成交额。做中低频策略够用了。
- 分钟线:我一般用1分钟和5分钟。做高频回测时,分钟线能捕捉到更多细节。
- 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 数据存储规范
数据存储规范这事,看似简单,但做不好后面全是坑。我总结了几条铁律。
- 统一命名规则:股票代码、字段名、表名,全部统一。我习惯用全小写+下划线,比如
stock_code、close_price。 - 分区存储:按日期分区。查询时只扫需要的分区,速度能快10倍。
- 数据版本管理:每次数据更新都保留版本号。万一数据出问题,可以快速回滚。
- 元数据记录:记录数据来源、更新时间、清洗规则。方便排查问题。
核心原则:数据存储要可追溯、可复现。你永远不知道三个月后会不会需要重新跑一遍回测。到时候数据对不上,哭都来不及。
2.5 知识体系框架
下面这张图概括了本章的核心内容。我画的时候特意把数据清洗放在中间——因为它是连接数据源和策略的桥梁。
这张图从左到右展示了数据从源头到最终使用的完整流程。你想想看,任何一个环节出问题,后面的策略都会受影响。所以别嫌麻烦,数据基础设施值得花时间好好打磨。
公众号:蓝海数据掘金营,微信deep3321