量化交易
量化策略研究的闭环:从想法到可交易规则
量化研究不是把指标堆到回测里,而是把市场假设、数据约束、交易成本和失效条件放进同一个验证流程。
很多量化策略失败,不是因为模型不够复杂,而是因为研究过程没有闭环。一个交易想法如果不能被清楚地表达成市场假设、可观测变量、入场条件、出场条件和失效条件,它就还不是策略,只是直觉。直觉可以作为起点,但不能直接变成仓位。
闭环的意义,是让每一步都有可反驳的证据。假设解释为什么市场可能存在可交易结构;数据定义我们能观察到什么;回测检验规则在历史中的行为;样本外和小资金实盘暴露执行偏差;监控和复盘判断策略是否还在它原本的适用区间内。
好的研究流程不是为了证明策略一定赚钱,而是为了更快发现它在哪些条件下不该交易。
先写假设,再写代码
策略研究的起点应该是一句话假设。例如:强趋势中的回撤更容易延续原方向;高波动后的低波动收缩会提高突破概率;资金费率极端时,反向交易的风险回报可能改善。假设越具体,越容易知道应该验证什么,也越容易知道什么时候放弃。
直接从指标开始很危险。均线、RSI、布林带、成交量因子都只是测量工具,不是交易理由。如果研究记录里只有参数组合,没有市场机制解释,回测结果再漂亮也很难判断它是在捕捉真实现象,还是刚好贴合了历史噪声。
一个更完整的假设应该包含四个部分:市场参与者为什么会造成这种现象,现象会反映在哪些可观测变量上,什么环境下现象更容易出现,什么环境下这个假设应该失效。少了最后一项,研究很容易变成只找支持证据。
例如“突破策略有效”这句话太宽。更可检验的版本是:当价格经历较长时间低波动收缩、成交量同步萎缩、随后向上突破区间并伴随成交量恢复时,市场可能出现仓位重定价;如果突破后没有后续成交量,或者大盘波动率突然抬升,则假设减弱。
数据质量决定研究上限
量化研究里最常见的隐性错误是数据问题。K 线是否包含未完成周期,成交量口径是否一致,合约换月是否处理,手续费和滑点是否被低估,退市或停牌资产是否被遗漏,这些细节都会让策略在回测中显得比真实交易更稳定。
一个保守做法是先建立数据检查清单:时间戳单调递增,缺失值有记录,极端价格有来源,交易成本按实际账户费率计算,信号只使用当时已经知道的信息。只要其中一项不成立,回测就不应该进入收益讨论。
- 时间戳检查:是否有重复、缺口、乱序、时区偏移和未完成 K 线。
- 价格检查:最高价是否低于最低价,收盘价是否超出高低区间,异常跳价是否有交易所来源。
- 成本检查:手续费、资金费率、滑点、价差和最小下单单位是否按真实账户口径计算。
- 信息检查:因子是否使用了未来数据,样本筛选是否包含事后才知道的结果。
数据问题最麻烦的地方,是它通常不会报错。程序会正常运行,回测会输出曲线,研究者也会得到一个看似严谨的结论。真正严谨的流程要在回测之前拦截这类错误,而不是等策略上线后才用亏损发现它。
把规则拆成可审计模块
可交易规则不应该是一团难以解释的 if-else。更好的结构是把策略拆成信号、过滤器、仓位、退出和风控五个模块。信号负责描述机会,过滤器负责判断环境,仓位负责把机会转换成风险暴露,退出负责定义错误和兑现,风控负责限制系统级损失。
这种拆分能减少研究混乱。比如一个趋势策略表现不好,到底是趋势信号无效,还是过滤器太窄,还是止损距离不适合波动水平?如果所有逻辑混在一起,研究者很容易通过调参掩盖问题。模块化记录能让每次改动都有明确目的。
策略日志也要按模块记录。每笔交易至少应该能回答:为什么入场,哪个过滤条件通过,仓位如何计算,预期风险是多少,退出原因是什么,实际滑点是多少。没有这些字段,复盘只能停留在“这笔亏了”“那笔赚了”的低层次描述。
回测不是收益截图
好的回测至少要回答四个问题:收益来自哪些市场阶段,最大回撤发生在什么环境,单笔交易分布是否依赖少数极端样本,参数轻微变化后结果是否仍然可接受。只看年化收益率和胜率,会把很多脆弱策略包装成稳定系统。
更有价值的是拆解收益来源。趋势策略应该在趋势段赚钱、震荡段少亏;均值回归策略应该在过度偏离后赚钱、在单边行情中受控亏损。如果策略赚钱的阶段和它的假设不一致,研究者应该优先怀疑自己,而不是急着上线。
回测报告至少应该包含收益曲线、回撤曲线、月度收益、交易持有时间分布、单笔盈亏分布、最大连续亏损、成本敏感性、参数扰动结果和样本外表现。指标越少,越容易被单一漂亮数字诱导。
举个例子,一个策略年化收益 60%,最大回撤 12%,看起来不错。但如果 80% 的利润来自三个交易日,去掉最大三笔盈利后策略收益转负,且成本上调 30% 后夏普比率从 1.8 降到 0.4,那么它更像事件押注,而不是稳定交易系统。
样本外验证要先固定规则
样本外验证的关键,不是随便拿一段新数据再跑一次,而是在看到结果之前固定规则。研究者必须先冻结指标、参数、标的池、成本假设和风控规则,再进入未参与研究的数据。如果样本外表现不好,又继续修改到它变好,这段数据就已经变成新的样本内。
时间切分也不能机械。金融数据存在强烈的 regime 特征,临近时间段并不完全独立。一个策略可能在低利率、高流动性、单边上涨阶段表现很好,但在紧缩、横盘、波动率抬升时完全失效。因此验证集要尽量覆盖不同市场状态,而不是只覆盖最近一段顺风行情。
除了普通样本外,还可以做滚动验证:用前一段时间训练或选择参数,用后一段时间测试,然后向前滚动。它不能消除过拟合,但能暴露策略在不同窗口的稳定性。如果只有某一个窗口表现突出,就需要降低对策略的信心。
把失效条件写进策略
策略上线前必须定义失效条件。失效条件不是单次亏损,而是策略假设被系统性破坏的信号,例如成交成本显著上升、信号频率异常下降、滑点持续超过回测分位数、相关市场结构变化,或者连续多个样本外窗口表现偏离预期。
没有失效条件的策略会变成信仰。亏损时你不知道是正常回撤、市场环境切换,还是策略已经失效。量化交易真正需要自动化的,不只是下单动作,也包括风险暴露、异常指标和研究假设的监控。
失效条件最好提前写成阈值和动作。例如:如果最近 30 笔交易的平均滑点超过回测 95 分位数,则仓位减半;如果连续两个自然周信号频率低于历史 5 分位数,则暂停新增仓位;如果实际回撤超过压力测试回撤的 1.25 倍,则进入人工复核。
小规模实盘是研究的一部分
纸面回测和真实执行之间永远有距离。小规模实盘不是为了快速赚钱,而是为了暴露延迟、滑点、成交率、接口异常、风控触发和心理干预。只有这些问题被看见,策略才算进入完整验证。
小规模实盘阶段应该限制目标。不要一边验证执行质量,一边频繁修改策略逻辑,否则你无法判断结果来自市场、代码、执行还是人工干预。更合理的做法是先保持规则稳定,重点记录订单生命周期:信号生成时间、下单时间、成交时间、撤单原因、成交均价、预期价格和实际成本。
一个成熟的研究闭环通常是:假设记录、数据校验、初始回测、稳健性测试、样本外验证、小规模实盘、监控复盘。每一步都应该留下可追溯记录。量化交易的优势不在于永远正确,而在于错误能被更早发现、更快定位、更低成本修正。