1. 项目缘起:一条被你跳过的“中间路径”
做量化这几年,有个画面我印象特别深。有朋友拿自己“抄来的策略”跑出一张特别漂亮的净值曲线,年化收益高得吓人,结果一上实盘就开始亏,亏到怀疑人生。他问我代码哪里写错了,我点开脚本一看,代码没问题,逻辑也是经典逻辑,真正的毛病在于:他不知道这个想法是怎么一步步变成代码的,于是把“回测漂亮”直接当成了“实盘能赚”。
这个现象在2026年的今天仍然很普遍。Python生态比前几年完善太多,数据源有现成接口,框架有开源轮子,就算不懂底层也能半小时跑出一份回测报告。可工具越便利,越容易让人跳过最关键的中间路径:从想法到规则、从规则到数据、从数据到信号、从信号到带成本的收益模拟,再到参数稳健性验证。这条路任何一个环节偷懒,最后反映出来的都是实盘亏损。
这正是我想通过这篇完整流程聊清楚的事。我会以一套足够简单但又包含真实现场感的案例为主线,把量化策略开发从零到上线的完整链路走一遍。如果你是刚开始学Python、又想接触量化的新手,前两节能帮你把环境、工具、数据这些“最容易卡住”的地方扫平;如果你已经有回测经验,可以重点看参数调优、稳健性验证和上线差异那几节,这些正是回测报告里看不出来、却决定真实战果的部分。
这套流程不是教科书上的标准答案,而是我自己在多次踩坑后沉淀下来的工作方式。它不保证赚钱,但能帮你少亏很多“冤枉钱”。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 流程设计:量化策略开发的分阶段闭环
很多人上手做策略时最大的问题是“没有流程感”。想到一个指标,马上爬到数据,跑完回测看结果,亏了就换参数,赚了就以为自己找到圣杯。这种野路子运行的效率低不说,最大的隐患是最后说不清楚策略到底为什么赚钱、在什么环境下会失效。
我把完整的开发过程拆成六个阶段,每个阶段有明确的输入、输出和退出条件:
- 想法层:用自己的话描述交易逻辑,包括买卖条件、持有周期、止损止盈、适用市场。
- 规则层:把模糊描述写成“如果……就……”形式,每个变量都要能对应到可观测数据。
- 数据层:准备历史行情数据,处理复权、缺失值、异常值,确保数据口径和真实交易一致。
- 信号层:按规则计算交易信号,这会直接决定策略的持仓方向变化。
- 回测层:把信号放到历史数据上模拟执行,扣除手续费和滑点,得到净值曲线和绩效指标。
- 验证层:对参数做敏感性和样本外测试,判断策略是真实逻辑驱动还是数据拟合驱动。
前两层经常被省略,但恰恰是最便宜的排雷阶段。举个例子,如果你的想法是“涨多了就卖,跌多了就买”,那首先要定义什么叫“涨多了”。是相对N日均线偏离超过X%?是创了近N日新高?还是RSI超过某个阈值?定义不同,产生的策略截然不同。把这些写清楚再碰代码,后面能少返工80%。
我在实际推进项目时会先画一张表,把每个阶段的输入输出列出来,然后严格按顺序走,不允许自己跳到未来还没有验证的环节。这个习惯听起来机械,但在策略数量多起来以后,它能让你把每个策略的“生命周期”管理得清清楚楚。
2.1 2026年的量化环境变化
到了2026年,个人做量化的门槛比前几年低了不少,主要体现在数据获取和计算资源两方面。十年前要买商业行情数据,一年费用好几万,现在开源数据源和免费接口基本能覆盖日线级别的个人研究需求。计算方面,一台普通笔记本跑日线级别的回测完全没有压力,只有高频或全市场扫描才需要考虑服务器和并行计算。
但门槛降低也带来了新的问题:无效策略和过拟合策略的数量变多了。很多人用大模型辅助写代码,上午拿到策略,下午就能跑回测,晚上已经准备实盘。代码生成不是瓶颈之后,真正的瓶颈变成了你是否理解自己的策略逻辑、是否知道回测结果在什么条件下会失真。
所以这个完整流程,本质上是在帮你在“代码越来越容易写”的时代,把研究纪律补回来。
3. 想法转规则:先把“我觉得”变成“如果...就...”
这一节是整个流程里最像“翻译”的工作。你需要把自己对市场的观察,翻译成计算机能够严格执行的规则。翻译得越准确,后面的回测越有意义,反之,规则里哪怕一个词含糊,最终结果都可能是噪声。
我在做这个步骤时有一个固定的写作模板,你也可以直接套用:
- 交易标的:比如沪深300指数、螺纹钢主力合约。
- 进场条件:什么时候开仓,例如“快线上穿慢线”或“RSI低于30”。
- 出场条件:什么时候平仓,包括止盈、止损、时间止损。
- 仓位管理:每次投入多少资金,是固定比例还是基于波动率。
- 交易时间与成本:是收盘价成交还是次日开盘成交,手续费和滑点按什么标准扣。
写这页纸的意义在于:它会逼你把策略里每一个模糊词汇都具体化。比如“市场趋势比较好的时候做多”是一句空话,因为“趋势好”没法直接回测;但“收盘价高于200日均线时只做多”就是一条可以执行的规则。两者的差距就是“感觉”和“逻辑”的差距。
3.1 经典双均线策略的规则化示例
为了把后面的流程串起来,我们全程用一个所有人都能看懂的经典案例:双均线交叉。你不会真拿它上实盘,但它非常适合用来理解从规则到代码的每一个坑。
我把它写成规则文档时是这样写的:
- 标的:某指数日线收盘价。
- 进场:5日均线上穿20日均线时,下一交易日开盘买入。
- 出场:5日均线下穿20日均线时,下一交易日开盘卖出。
- 仓位:满仓进出
