- 实盘连亏两天之后,我们回测了十二种"跳过坏单"的设计:趋势斜率闸、tick占比闸、市况切换、事件后加深入场、时钟禁令,以及一个朴素贝叶斯分类器。每一种都降低了利润——在最好的那个月里从−3%到−96%——而且没有一种救回了那个引发它们的坏日子。
- 原因可以测量,不是玄学。在入场那一刻,将来会赢的单和将来会输的单在我们能算出的每一个特征上都统计相同:效应量0.00–0.15σ。贝叶斯似然比≈1,没有任何东西可以更新。
- 关于一笔交易的信息只出现在两个地方:开仓之后(出场规则)和季节尺度(资金配置)。按它来自的225个资产的筛选池诚实缩水之后,这套策略本身是真货的概率为54–89%——而只有未经挑选的实盘月份能把这个数抬上去。
两套自动化账本度过了糟糕的48小时。一支稳定币做市舰队在锚定价格迁移时交了一笔"搬家税";一套在三个山寨币上运行的薄盘均值回归策略,在某个代币解锁引发的抛售里连吃三根满额止损。两笔亏损都不大,都在设计上限之内。但它们都引出了每个策略主人迟早会问的那个问题:这些单我们难道不能提前看见、然后跳过去吗?我们花了48小时、大约二十次回测去找答案。答案是"不能"——而这个"不能"的形状,才是有用的部分。
为什么这很重要:入场过滤器是策略主人和评审者最常为实盘策略提出的"改进"。它也最容易过拟合,因为它瞄准的坏单在事后看得一清二楚。下面是一种可复现的方法,可以在写下任何一行过滤器代码之前,先判断它需要的信息到底存不存在。
1把考场布置得让过滤器有机会赢
三年tick数据、模拟器里带上全部真实结构规则、每个过滤器考两道题。
展开推导
过滤器通常只在那个引发它的日子上测试——它们就是这么通过的。我们把每一个都放到三段时间上考:引发它的事件日、整段历史里最赚钱的那个月(任何过滤器最可能破坏的时期)、以及一个平静的对照月。模拟器带着完整的实盘结构——保守的成交规则、单仓互斥、利息、熔断器、稳定币舰队的波动市况切换——因为本站此前的一次评审已经展示过,缺了一条结构规则的回测可以把一个利润中心算成亏损。
两道考题,按顺序答:这个过滤器在最好的那个月里花了多少钱?以及它在坏日子里省了多少?第一题不及格的过滤器,没有资格去答第二题。
2墓园
十二种设计、六个家族、一个模式:每个过滤器都在好月份里付了钱,在坏日子里一分没收回。
展开推导
| 过滤器家族 | 它假设了什么 | 最佳月的代价 | 坏日子的挽救 |
|---|---|---|---|
| 趋势斜率闸(4个变体) | 锚在移动时暂停 | −7% 至 −83% | 0 |
| tick占比闸 | 价格持续压在锚的一侧时暂停 | −83% | 0 |
| 事件后加深入场(1–4小时) | 冲击之后要求更大折扣 | −26% 至 −29% | 为负 |
| 事件后禁止开仓(4–12小时) | 等尘埃落定 | −88% | 为负 |
| 冲击后单向禁令 | 只禁止与复苏方向相反的那一侧 | −28% | 为负 |
| 市况依赖触发器(48小时/7天回看) | 在抛售中更严格 | −17% 至 −25% | 0 — 探测器来得太迟 |
| 朴素贝叶斯 P(赢) ≥ 0.70…0.85 | 让分类器来挑 | −9% 至 −97% | 无 — 胜率纹丝不动,仍为77–79% |
整张表反复出现两个发现。第一,真正造成伤害的单子,是在任何探测器能看见事件之前就开出来的:一张在旧价格水平上站着的仓位,恰逢这个水平搬家;或者一根在抛售开始第一分钟就触发的止损。所以每一个"冲击之后"的过滤器都是在税交完之后才到场;它们实际拦下的,是那些正忙着把税赚回来的康复单。第二,最好的那个月里最赚钱的那些时段——均值回归账本赚到全年大部分利润的那些缓慢、安静的台阶——与那些缓慢、安静的失血段,拥有同一副表面特征。能拦住其中一个的闸门,也一定拦住另一个。
探测器迟到,对防御是致命的(伤害在事件出生那一刻就造成了),对复工却是无害的(你只是漏掉几笔单)。这支舰队里唯一通过评审的闸门,建立在这句话的后半段上:一个哨兵,按已实现的亏损暂停,等一个影子账本证明市场重新付钱时复工。它在事后审判一群交易,从不在事前审判单笔交易。
3直接测量信息本身
写过滤器之前先算效应量。这里是0.00–0.15σ——噪音。
展开推导
任何入场过滤器都是在打一个赌:入场那一刻可观测的某样东西,在将来会赢的单和将来会输的单之间有所不同。这个赌可以在不造出过滤器的情况下被测量:取历史上每一笔交易,记录它入场时的候选特征,按结果分组,计算均值的标准化差异(Cohen's d)。对那套山寨币策略——3,346笔交易、77%胜率——结果如下:
| 入场时的特征 | 未来赢家均值 | 未来输家均值 | 分离度 (d) |
|---|---|---|---|
| 最近60秒跌速 | 149 bp | 137 bp | 0.15 |
| 最近5分钟跌速 | 256 bp | 255 bp | 0.01 |
| 1小时回报 | −189 bp | −214 bp | 0.05 |
| 24小时回报 | +251 bp | +120 bp | 0.09 |
| 30分钟振幅 | 538 bp | 547 bp | 0.02 |
| 一天中的小时 | 12.0 | 12.0 | 0.00 |
0.3σ的分离度通常是"这里有点东西"的门槛;一个真正有选择力的过滤器需要的是0.8σ。表里没有一项够到0.15。赢家和输家是同一个群体,在同一时刻拍下的同一张照片。一个在这些特征上训练的走向前朴素贝叶斯分类器,用更昂贵的方式确认了这一点:在每一个概率阈值上,它都只删掉了交易,没有动过胜率。
稳定币舰队讲了一个更微妙的故事。在那里,有一个特征——近期波动率——以0.4–0.8σ分开了赢家和输家。但把平静季的交易按这个特征分桶后,148笔里有144笔坐在同一个桶里:这个分离存在于季节之间,而不是同一季节内的交易之间。而这条信息早已在用——用在舰队的市况切换上,用在分给每个季节的资金上。回到单笔交易的尺度,信号再一次消失。
4按贝叶斯的方式读它
似然比等于一,先验就留在原地。过滤器能做的只有从一条正期望的交易流里删单。
展开推导
一个过滤器只有在特征能改变赔率时才配存在:即P(特征 | 赢)与P(特征 | 输)不同。效应量接近零意味着这两个分布几乎完全重叠,似然比≈1,后验等于先验——也就是策略的基础胜率。此时过滤器无论做什么,都是在从一条正期望的交易流里随机删单;而从正期望流里随机删单,在构造上就是负期望的。上面十二个结果不是十二个糟糕的设计,是同一条定理被观察了十二次。
那么信息到底在哪?在账本早已在用的那两个地方。开仓之后:一次错位会不会回吐,只有在仓位打开之后才揭晓,这就是为什么所有通过评审的规则都是出场规则——跟踪止盈、硬止损、时间保险丝、连亏熔断。季节尺度:波动市况确实能预测结果,但那是按月做的资金配置决定,不是逐笔做的入场决定。
5现在给策略本身缩水
Bonferroni校正轻松通过;紧缩夏普比率说54–89%,取决于一个诚实参数。
展开推导
如果入场过滤器无法改进策略,下一个诚实的问题就是:策略自己的回测有多少是真的。它是从225个资产的筛选中找到的,tick级测试了大约30个,留下三个。每笔交易的夏普比率为0.099,共2,472笔(t = 4.9),偏度−1.78,峰度5.1——许多小赢、几次满额止损的肥尾签名。Bonferroni校正后的显著性检验在假设5,000次试验时也能通过;那是大样本的人为产物,不是证据。紧缩夏普比率才是对的工具,而它的判决随着你承认的试验次数而移动:
| 承认的试验次数 (N) | N代表什么 | 夏普比率为真的概率 |
|---|---|---|
| 6 | 最终设计上的参数变体 | 99% |
| 30 | 在盈亏上做过tick级测试的资产 | 89% |
| 225 | 一级筛选中的资产 | 54% |
| 1,000 | 这个团队曾经尝试过的一切 | 27% |
关于算术的两点说明。负偏度是真实的惩罚,不是技术细节:它放大了夏普比率的标准误,这正是这套策略历史上那十三个月回撤在统计学里的化身。另一条独立路径——给一个经过筛选的零售策略设0.20的显式贝叶斯先验,再按证据链更新——落在0.53的后验上。两种方法、两套假设、一个答案:一枚介于六四开和九一开之间的硬币。
那十二个入场过滤器也属于这本账。假如其中一个"通过"了,它就是同一份数据上十二次尝试里的最好者,它自己的紧缩夏普比率要从N = 12起算。过滤器也是试验。
6数字往上走的唯一途径
经过挑选的证据要打折;未经挑选的实盘月份全额计入。资金等的就是它们。
展开推导
54%之所以低,是因为这份回测是在许多候选里事后挑出来的。而一个实盘月份没法事后挑。每一个都是N = 1的试验,全额计入,而这套策略的第一个实盘半月在胜率(67%对67%)和每笔经济账上与模型分毫不差地对齐。保持这种对齐,算术会在大约三个实盘月之后越过95%线——与本月早些时候应用在舰队自身业绩上的"毕业日期"逻辑相同。由此落下的操作规则:在缩水后的数字越过95%之前只用试点资金;不凭回测本身放大规模;由一次排定日程的重新评级来决定时机,而不是由感觉。
生产环境里改了什么:什么都没加。十二个过滤器被附上数字后否决。一个已有的暂停机制在它自己的实测成本(330天−5个单位)与两次误报被权衡之后,降级为提醒。这次评审的产出是一张效应量表、一条缩水后的置信区间、和一个日期。
可复用的检查清单
在构建任何入场过滤器之前——无论是你自己的还是供应商的:
- 先算效应量。把历史交易按结果分组,测量每个候选特征在入场时的值,报告Cohen's d。低于0.3σ就停下;过滤器没有东西可读。
- 先在最好的月份上测,再看坏日子。在丰收期里养不活自己的过滤器,没有资格去防守。
- 把探测器的延迟对照那笔造成伤害的单子。如果亏损在信号能触发之前就已开仓,这个过滤器保护的是一具尸体。
- 问清信息是交易级的还是季节级的。季节级信息属于资金配置,不属于入场规则。
- 数清你试过多少个过滤器。每一个都是一次试验;生还者的显著性必须按那个N缩水。
- 按策略自身筛选池的诚实N给它缩水——然后让未经挑选的实盘月份、而不是更多的回测,去抬高这个数字。
这篇文章的位置
这与MOA在独立验证与确认(IV&V)服务中对企业供应商主张所采用的纪律完全相同——延伸到量化策略以及为它们提出的各种改进。我们评审方法论与证据;我们不销售也不管理被评审的策略,本文内容亦不构成任何个性化的财务建议。对答案没有立场,也没有宽松打分的动机。