阶段4数据获取●●●●●

数据存储方案:从CSV到ClickHouse的进化阶梯

我的掌握程度:
q-336精讲

先掌握这个答案

四层:①CSV(起步):人类可读、类型丢失——100万行约30秒读取;②Parquet(主力):列式+压缩+类型保留——同数据读取快10-100倍——个人研究的最优性价比;③SQLite/DuckDB(SQL需求):可SQL查询的单文件数据库——DuckDB直接查parquet文件(零导入);④ClickHouse(TB级):服务端列式数据库——团队协作/生产环境。升级时机:CSV→Parquet(当日就开始用);Parquet→DuckDB(需要SQL时);DuckDB→ClickHouse(数据>10GB或多人协作)。

先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。

从理解到使用

先固定IC的实验口径

明确股票池、信号可得时点、预测持有期、相关方法及权重。IC阈值不能跨研究直接套用;重叠标签导致序列相关,ICIR或t值不能无条件按独立样本解释。最终还要检验成本、换手与容量。

本阶段实战方法 · 一条能复现的数据流水线

把接口返回的数据变成可用于因子研究的面板时,先处理时点、主键与单位。

  1. 建立数据字典:字段、单位、时区、交易日历、数据源、抓取时间、原始价与复权因子。
  2. 用(date, code)查重,区分停牌、未上市、窗口不足和真实缺失;不要用向后填充把未来值带回过去。
  3. 保存原始快照与清洗日志,固定随机种子和环境版本;接口字段变化时先核对官方文档。

使用边界

  • 报告期不等于公告可用日,盘后公告通常不能用于当天收盘前决策。
  • API输出名为“动态市盈率”时不能直接改名TTM;浏览器练习不支持任意原生库或行情抓取接口。
背景 · 从一个困惑说起
100万行CSV读一次30秒——每天研究碰数据50次=25分钟纯浪费。存储方案的选择决定了你的研究速度——从CSV到parquet到数据库是一步步自然进化,不是一步到位。
由此产生的问题
四层存储方案(CSV/Parquet/SQLite/DuckDB→ClickHouse)各自的适用阶段?什么时候升级?升级成本与收益?
核心概念
四层:①CSV(起步):人类可读、类型丢失——100万行约30秒读取;②Parquet(主力):列式+压缩+类型保留——同数据读取快10-100倍——个人研究的最优性价比;③SQLite/DuckDB(SQL需求):可SQL查询的单文件数据库——DuckDB直接查parquet文件(零导入);④ClickHouse(TB级):服务端列式数据库——团队协作/生产环境。升级时机:CSV→Parquet(当日就开始用);Parquet→DuckDB(需要SQL时);DuckDB→ClickHouse(数据>10GB或多人协作)。
为什么需要它
①速度=研究吞吐量:每天碰50次数据——快10倍=每天省30分钟=一年省3周;②Parquet是个人甜点:免费+快+类型安全——没有理由继续用CSV存面板;③按需升级:不要一开始就搭ClickHouse——你的数据量(<10GB)用Parquet+DuckDB就够了。
实际应用场景
迁移一行:df.to_parquet('data.parquet')——下次read_parquet——CSV再见。
与之前知识的联系
q-328(下载流程)→本题(存储)→q-339(校验);q-069(Parquet详细原理)是本题的深化。
⚠ 常见误解
  • 数据库一定比文件快:单机研究中「parquet+pandas」常常最快——数据库有服务开销
  • 需要SQL就必须装MySQL:DuckDB可直接查parquet文件——零服务零部署——个人首选
  • CSV够用就不换:「够用」的30秒×50次/天=25分钟/天——Parquet一行迁移省终身时间

🤖 AI导师

导师会先检查你的前置知识(数据下载),再用案例、公式和代码帮助理解。此功能需要先启用服务。