专栏:量化系统从0到1(9 篇)

数据引擎:从 Tushare 到 parquet

72 阅读 0 1879 字 · 约 7 分钟

把行情从 Tushare 搬成本地 parquet 的三个决策:按交易日拉控制调用成本(六倍差价)、写盘前校验挡住静默错误(分级:抛错/夹回/阈值)、增量合并让数据越积越安全(三态合并 + 哈希分桶躲开 OOM)。

因子引擎:先定契约,再谈依赖图

62 阅读 0 2000 字 · 约 7 分钟

因子引擎的设计稿画了四件事:注册表、依赖图、版本化缓存、失败隔离。实装只落了两件。为什么输出定死成三列长表、为什么依赖写在函数里、为什么版本号只当可复现锚点不当缓存 key:先说契约,再谈依赖图。

【量化系统从0到1】回测引擎:性能不是难点,语义才是

97 阅读 0 2607 字 · 约 9 分钟

回测引擎的主线不是"跑得快"而是"把 A 股语义做对":自研 142 行撮合核心、价格口径必须自洽(后复权修掉除权日假跳变)、费用用 Decimal 精确到一分钱、验证逼出三个 bug——以及 Rust 为什么最终没有写(50 票实测 0.3 秒,全市场按线性外推约 30 秒)。

跑得快:把 Rust 判了缓刑

108 阅读 0 1036 字 · 约 4 分钟

跑得快实录:profiling 实测 50 票纯计算不到 1 秒、全市场外推 30 秒——按决策表 Rust 取消、分区存储和 tj-web 推迟,三个大复杂度全部缓刑;把「什么时候优化」写成可对照的触发阈值。

跑得稳:不盯也能跑

113 阅读 0 1092 字 · 约 4 分钟

跑得稳实录:任务表让跑批可追溯,调度写进代码不依赖宿主 cron(Docker/本地同构),备份先做、告警克制,以及「机制就绪不等于验证完成」的诚实边界。

跑得准:300% 的假收益与真的 IC

110 阅读 0 1264 字 · 约 5 分钟

跑得准实录:样本扩到 50 只后发现回测里 +300% 的假收益——真实价撮合在除权日权益跳变,账户换后复权口径;补全数据校验,IC 验证动量 20 日在 10/20 日窗口显著为正。

能跑:当设计稿撞上真实数据

124 阅读 0 1717 字 · 约 6 分钟

能跑阶段实录:契约先行防返工,接口文档和实际的落差,复权因子校验被真实数据推翻,验证逼出三个 bug,以及「10 万买不起一手茅台」的资金约束教训。

动笔之前,我画完了全套架构图

115 阅读 0 1945 字 · 约 7 分钟

开工前我把设计做到了 v0.6,拆成四份文档,然后发现自己违背了刚写完的《架构不是设计出来的》:一行代码没写,却在讨论"怎么写对"。复盘哪些设计该留、哪些是阶段前移,以及如何用四阶段路线图补救。