在量化交易圈,逐笔成交数据(Tick-by-tick trades)是策略回测与微观结构研究的金矿。我每天要从 Binance、Bybit、OKX、Deribit 四家交易所拉数 TB 的原始成交记录,写过 ETL 脚本的同行都知道痛点:每家 schema 不一样、时间戳精度不一致、字段命名混乱、消息顺序错位。本文就用我过去三个月踩过的坑,整理出一套从 Tardis 拉数据 → 多交易所归一化 → 列式存储 → 查询优化的完整流水线。

不过先把题外话讲完:做策略离不开 LLM 辅助(因子挖掘、研报总结、代码生成)。我自己每月大概要烧 100 万 token 的 output。我把国内外几家主流模型的官方价拉出来算了一笔账(按 2026 年最新 output 价格):

100 万 token 月度支出对比(官方渠道按 ¥7.3=$1 信用卡结算):

HolySheep AI(¥1=$1 无损汇率、微信/支付宝直充、国内直连延迟 <50ms、新用户免费额度):

单 Claude 一项就省 ¥94.50/月,整体节省 85%+。这是我后来把所有 LLM 调用都迁到 HolySheep 的核心理由——同样能稳定拉到模型,价格直接打 1.4 折。

回到正题。下面进入 Tardis ETL 主线。

一、为什么必须做归一化 ETL

Tardis.dev 把各交易所的原始 WebSocket 消息 dump 成 CSV/JSON 提供下载,但同一笔 trade 在不同平台的字段长这样:

字段BinanceBybitOKXDeribit
成交价pricepricepxprice
成交量qtysizeszamount
时间戳trade_time(ms)timestamp(ms)ts(ms)timestamp(ns)
方向is_buyer_makersidesidedirection
交易对symbolsymbolinstIdinstrument_name

直接进数仓会导致:SQL 要写 4 套 JOIN 条件、回测脚本到处 if exchange == ...、时间戳单位混用引发毫秒/微秒级错位。归一化的目标就是把 4 套异构流压成 1 张宽表。

二、目标归一化 Schema

我定的最终 schema(ClickHouse / Parquet 双兼容):

相关资源

相关文章