
量化研究工作流:Jupyter Notebook 与特征工程
一套可重复的量化研究工作流,用 Jupyter notebook 覆盖特征工程、验证和 notebook 卫生,产出能上线的信号。
交互工具在翻译视图中可能无法使用。
量化研究工作流:Jupyter Notebook 与特征工程
量化研究的产出不是 notebook——是一个有文档化假设、可上线的信号。多数研究死在 Jupyter 里,因为 notebook 变成了无法阅读的废墟。纪律化的工作流把探索变成生产。
Notebook 结构
每个研究问题一个 notebook,固定章节按顺序:假设、数据加载、特征工程、信号、回测、验证、结论。开头没有假设陈述的 notebook 是观光,不是研究。
让 notebook 在 Kernel → Restart 后能从头到尾跑通。如果只能靠上一次运行的状态才跑得动,它就是坏的。提交前跑 nbstripout,让 diff 显示逻辑而不是输出。
特征工程原则
特征编码你的经济假设。没有陈述理由的特征是捞针。
- 先说机制。 "趋势持续性在低波动状态里更强"——然后构建一个结合斜率和实现波动率的特征。从目标反推特征本身就是过拟合。
- 平稳性检查。 算 ADF(Augmented Dickey-Fuller)统计量;拒绝非平稳特征或做差分。趋势性的特征会骗过任何线性模型。
- 未来函数审计。 每个特征写下它在哪个时间戳才可知。
rolling(20).mean()在时刻t上算收盘,只有用截至t-1的 K 线算才有效。差一个 index 是假优势的头号原因。 - 分布和离群值。 在 1% 和 99% 分位裁剪或缩尾。一次 20 sigma 的异常打印(拆股数据错误)会主导梯度提升。
回测前的验证
在任何盈亏曲线之前,算:特征自相关(目标不应只从滞后目标就可预测)、特征-目标互信息、跨不重叠窗口的稳定性。一个特征在 2018 vs 2022 对目标的关系符号翻转,它不是特征——是噪音。
回测诚实规则
- 走向前:训练 2016–2019,测试 2020;然后训练 2016–2020,测试 2021。永远别只报单次样本内拟合。
- 成本:假设最低往返 5 bps,即使你的券商收费更低。滑点是真实的。
- 容量:如果策略需要日成交量的 10%,标为不可扩展。
从 notebook 到生产
信号验证后,从 notebook 移植到带单元测试的版本化模块。notebook 是实验室;模块是产品。如果生产信号和 notebook 分叉,notebook 是错的。
交付物
研究交付物是:假设、带机制的特征、带成本的走向前结果、失败条件(什么时候停止工作?)、生产移植。少任何一项都是永远不会交易的 notebook。
实时行情
打开完整图表 →相关市场数据由 TradingView 提供。
我的笔记
登录后可在本文保存笔记并与社区分享。
下一篇推荐
Build a Python Trading Script With ccxt and vectorbt
A working Python trading script template combining ccxt for exchange data and vectorbt for fast vectorized backtests, with concrete code you can adapt.
阅读更多 →Smart Recommendations