交易系统 · 方法论

设计一份可靠的交易策略

在写下第一行规则之前,先把策略当成一个会主动证伪自己的科学假设来对待。

可靠性不住在信号里,它住在信号周围的一切:动手前的推理、成本模型、验证纪律、仓位大小。

大多数人是倒着做策略的:先在历史里发现一个好看的模式,再回头给它编一个理由。可靠的设计是正着做的——你先说清楚"为什么这里应该存在一个赚钱的机会",然后用尽全力去证明自己是错的。两种顺序,做出来的是两种东西:前者是一段历史的拟合,后者才是一个策略。

对你来说有个现成的桥梁:一份交易策略的"可靠性"问题,本质上就是机器学习里的泛化(generalization)问题。回测就是训练集,样本外就是测试集,过拟合就是过拟合,"试一千个策略挑最好看的那个"就是测试集泄漏。你在调模型时所有关于"训练好看≠真的有用"的直觉,几乎可以原封不动搬过来。下面的整套方法,都可以看成是把这套泛化纪律应用到市场上。

你不是在找一个会赚钱的信号,你是在建一条会主动杀死自己坏想法的流水线。

可靠性来自这里 信号 / 入场规则 最简单的 20% edge 的来源 成本与容量 验证纪律 仓位与风险
信号是最容易的部分。一份策略能不能活,取决于它周围那四件事。

第一部分 · 重中之重动手之前,必须想清楚的七个问题

这一节是你问题的正面回答:制作之前先想清楚什么。如果这七个问题你答不上来,那不管后面回测多漂亮,你都还没有一个策略。我建议把它们当成一道闸门——全部能给出诚实回答,才放行进入开发。

Q1你在赚谁的钱?

市场扣掉手续费之后是一个负和游戏。你要持续地赢,就必须有人持续地输给你。说不出对手是谁、为什么他会一直输,你就没有 edge,只有一个巧合。

真正可持续的 edge 通常来自下面几类,缺一个机制解释就要警惕:

关键追问

为什么这个低效到今天还没被套利掉?它能持续多久?——对加密市场,资金费率(funding)、清算级联、永续合约的结构性流动,是少数普通人还能碰到的真实结构性 edge。但同样的,它们也最容易随着市场成熟而消失。

Q2它属于哪一类策略?它的"天气"是什么?

趋势跟随、均值回归、套利、做市、事件驱动、carry——每一类都只在某种市场状态(regime)里赚钱,在它的反面状态里稳定失血。趋势策略在震荡里慢慢割肉,均值回归在单边行情里一次爆仓。

动手前你必须能用一句话说出:"这个策略会在 ____ 的时候亏钱。"如果你说不出它的死法,说明你还没真正理解它。

Q3你的时间尺度是什么?

HFT / 日内 / 波段 / 持仓——这个选择会向下游层层传导:需要什么精度的数据、对成本多敏感、容量多大、需要什么基础设施、要占用你多少注意力。

一个反直觉的权衡:越短的周期,样本越多、越容易做出统计显著性,但越被成本和聪明对手主导;越长的周期,独立样本越少、越难验证、越扛 regime 风险,但也越不拥挤。选错尺度,后面全白搭。

Q4成本结构能不能让它活下来?

这是一票否决项,也是大多数漂亮回测真正死亡的地方。手续费、滑点、点差、冲击成本、(加密永续的)资金费率——一个毛利为正的信号,扣完成本可能深度为负。

一道必须先算的算术

如果你每笔的预期 edge 是 0.1%,而一次往返成本是 0.15%,那不管信号多神,你按定义就是亏的。这道减法要在写代码之前先做,而不是回测之后才发现。

Q5它的容量(capacity)有多大?

在你的下单开始把价格推向对自己不利的方向之前,这个策略能装多少钱?小资金的天堂,常常是大资金的坟墓。最好的低效往往容量极小——你能用十万跑,不代表能用一千万跑。先知道天花板在哪。

Q6你的风险预算是多少?

在开始之前定义"疼痛",而不是在亏了之后。你能在情绪不崩的前提下,承受多大的回撤、多长的水下期(underwater)?这件事必须事先定,因为一旦真的回撤了 30%,你的判断力已经被污染了。

回撤的不对称

亏 20% 要赚 25% 才回本;亏 50% 要赚 100%;亏 80% 要赚 400%。路径本身会杀死你——哪怕终点为正,中途的深坑也可能让你在最低点放弃。所以仓位要小到让"最坏回撤"不至于逼你在谷底下车。

Q7你怎么知道它已经失效了?

一份可靠的策略,出生时就该带着一张预先写好的死亡证明:在什么条件下你会停止使用它。比如"滚动三个月夏普 < 0"、"回撤超过回测最大回撤的 1.5 倍"、"我当初识别的那个机制消失了"。

没有这张证明,你会在策略已经坏掉之后还一直持有它,永远相信"它会回来的"——这是把一次正常的失效,拖成一次毁灭性的破产。事先定义失效条件,是区分专业和业余的分水岭。

Q1 赚谁的钱 Q2 策略类别 Q3 时间尺度 Q4 成本 Q5 容量 Q6 风险预算 Q7 失效条件 全部能诚实回答? 闸门 放行 → 进入开发
七问是一道闸门,不是一份清单。任何一个答不出来,就先别动手写代码。

第二部分 · 流程设计与验证的生命周期

过了闸门,才进入大家以为的"做策略"。这里最重要的纪律只有一句:样本内好看不算数。

把历史切成两段:一段用来开发和调参(样本内 / 训练集),另一段锁起来不碰(样本外 / 测试集)。你只有一次真正的样本外机会——一旦你看了样本外结果,回头又去改参数,这段样本外就被你"污染"成样本内了,泛化能力的证据当场归零。这跟你绝不会拿测试集去调超参,是完全一样的道理。

样本内 · 训练集(可以反复调) 假设 + 数据 信号 + 成本 回测 + 调参 一次性的墙 样本外 walk-forward 模拟盘 小额实盘 逐步放大
墙的左边可以无限调;墙的右边只能验一次。模拟盘和小额实盘是为了暴露回测里看不见的执行摩擦。

模拟盘和小额实盘这两步常被跳过,但它们专门用来抓回测永远抓不到的东西:真实的滑点、撮合延迟、API 故障、你自己手抖的时刻。用真金白银的小仓位买这些教训,比用大仓位买便宜得多。


第三部分 · 核心让回测说真话:七个"假装可靠"的陷阱

"可靠"这两个字的全部重量都压在这一节。下面每一个陷阱,都能让一个其实没用的策略在历史上呈现出迷人的曲线。它们也几乎都能在你熟悉的 ML 语言里找到对应。

假 edge 的气味 复杂:很多参数、很多条件 只在那一段历史好看 说不清为什么会赚钱 真 edge 的气味 简单:少数清晰的规则 跨市场、跨时段都稳健 有清楚的机制解释
判别心法:简单 + 有机制 + 多处稳健,通常是真的;复杂 + 只在一处好看 + 说不清,通常是拟合出来的。

第四部分 · 存活仓位与风险:把"对的方向"变成"活下来的曲线"

这里有个反直觉但致命的事实:即使你的信号有正期望,错误的仓位也能让你破产。方向对、下注太重,在足够长的时间里几乎必然会撞上那次让你出局的回撤。所以"赚钱"和"活着"是两个独立的问题,后者由仓位决定。

凯利 / 分数凯利
凯利公式给出长期增长最快的下注比例,但它对参数估计极其敏感、波动巨大。实务上几乎没人用满凯利,半凯利(half-Kelly)是常见折中——你认识的那套凯利逻辑,在仓位上要主动打折用。
波动率目标
让仓位反比于近期波动(vol targeting):市场越剧烈,下注越轻。好处是把不同时期的风险拉到大致恒定,净值曲线更平滑。
固定分数法
每笔只拿总资金的固定百分比去冒险(如单笔最大亏损不超过 1%)。简单、稳健、难爆仓,适合作为起点。
相关性 / 集中度
五个"看起来不同"但其实高度相关的仓位,等于一个大仓位。真正的分散看的是相关性,不是数量。

期望 ≠ 胜率

高胜率不等于赚钱。决定生死的是期望值:期望 = 胜率 × 平均盈利 − 败率 × 平均亏损。一个 30% 胜率、但盈亏比 5:1 的策略,长期远胜一个 90% 胜率、却会被一次大亏抹平所有小赢的策略。先看期望,再看胜率。


第五部分 · 度量用对的尺子衡量

只看总收益率几乎没有意义——它没告诉你为了这个收益你承受了多大的风险、多深的回撤、多长的煎熬。要看风险调整后的指标:

别被单一漂亮数字骗

一个高得离谱的夏普,常常来自悄悄卖出尾部风险——平时稳稳捡钢镚,直到某天压路机开过来一次清零(picking up pennies in front of a steamroller)。漂亮的均值背后,永远要去看那条肥尾。


收尾 · 一页纸动手前的起飞前检查

把第一部分压缩成一张检查表。在投入第一块钱之前,下面这些你能不能逐条诚实地回答"能"——

对手是谁。我说得出谁会持续输给我,以及为什么。
机制解释。这个低效为什么存在、为什么还没被套利掉。
死法已知。我能用一句话说出它在什么行情里会亏钱。
成本过关。扣完手续费、滑点、资金费率后,期望仍为正。
样本外干净。有一段历史我从没用来调过参,留着做最终验证。
仓位能扛。最坏回撤发生时,我不会在谷底被迫下车。
失效条件。我事先写好了"在什么情况下停止使用它"。

真正的可靠,不是"它一定会赚钱",而是"如果它没用,我能在赔光之前、在纸面上、便宜地发现这件事"。

最后一句诚实话:市场是高度竞争的,绝大多数零售系统化策略最终扛不过成本和对手的进化——这是这个领域的常态,不是你的失败。上面这整套纪律的全部意义,就是让你的坏想法死在回测里,而不是死在账户里。这是方法论,不是投资建议;没有任何流程能保证盈利,能保证的只是让你失败得更便宜、更快、更清醒。

想往下钻的话,可以挑一个具体方向:给你现在 BTC/USDT 那套思路套这七问、搭一个能防前视偏差的回测骨架、或者把凯利在加密永续上的实际算法摊开来推。你定方向,我接着做。