一、四层结构,缺一层都跑不起来
量化系统通常由四部分组成:数据层负责获取与清洗行情;规则层把交易想法翻译成明确条件;执行层负责下单、撮合或模拟撮合;评估层负责统计结果并解释原因。四层之间靠统一的字段与口径衔接。
很多项目一开始只关注规则层,写出一段条件判断就认为完成了策略。真正上线后才发现,数据字段对不上、成交假设过于乐观、评估指标无法复现,问题逐层暴露。
二、数据层:先定义口径,再谈策略
数据层至少要回答三个问题:标的范围是什么、时间跨度有多长、复权与停牌如何处理。这些问题没有标准答案,但必须在项目开始时固定下来,并写进数据字典。
同一段逻辑,用前复权和不复权数据跑出来的结果可能完全不同。若口径没有记录,后续换人接手时几乎无法判断差异来自策略还是数据。
- 字段定义:开高低收、成交量、成交额与复权因子
- 时间口径:交易日历、时区与停牌标记
- 版本管理:数据快照与清洗规则可回溯
三、规则层:把模糊描述变成可判定条件
“趋势向上时参与”不是规则,因为它无法被代码判定。可执行的规则需要明确指标、窗口、阈值与比较方式,例如“收盘价高于二十日均线,且二十日均线高于六十日均线”。
规则还要写清仓位与退出条件。只写进入条件、不写退出与仓位,回测结果就无法解释,也无法判断是逻辑有效还是参数偶然。
四、执行层与评估层:把理想假设拉回现实
回测中的成交假设决定结果的可信度。以收盘价成交、忽略滑点与手续费、假设任意时刻都能成交,都会系统性地高估结果。评估层则负责把收益、回撤、换手与成本分开呈现。
评估的目的不是证明策略“行”,而是回答它在什么条件下表现如何、成本来自哪里、结果能否被复现。指标只是描述,不是结论。
五、从想法到可运行代码的最小清单
一个可交付的最小版本,通常包含:数据读取与校验、规则计算、仓位与费用模型、结果输出、运行说明。每一部分都要能单独运行与单独检查。
如果团队只有一个人,也建议把数据、规则、评估拆成不同文件或模块。拆分不是为了架构好看,而是为了出问题时能定位到具体一层。
- 一份固定的样例数据与预期输出
- 一份说明参数含义与默认值的配置文件
- 一份记录数据来源、复权方式与运行环境的说明
六、可复现比“看起来聪明”更重要
研究过程中最容易被忽略的是记录:改过哪个参数、换过哪段数据、为什么放弃某个版本。没有记录,三个月后连自己都无法解释结果是怎么来的。
可复现的最低要求是:同一份输入、同一套配置,任何人按说明都能得到同一份输出。做到这一点之后,讨论策略好坏才有共同基础。