工程领域笔记。 We gave our optimizer the same 70-coin universe as a mechanical buy-and-hold study, then judged its in-sample winners on untouched data. The result is a negative one: a matched null arm performed just as well, and the system rejected every selected configuration for live readiness.
The setup, and why it is a fair test
The ticker list was fixed by the operator before any result was known, deduplicated to 70 names, and capital was split mechanically — $1,000 each, no ranking by "promise". Daily candles were downloaded from 1 June 2023 so that SMA200, EMA and RSI are already armed on the first trading day; the pre-window history is warm-up only and cannot be traded. Positions open at the close of 1 March 2024 and the window ends 7 August 2026 — 890 days.
Five tickers changed identity mid-window. Their series are stitched using factors derived from the boundary prices (last close of the old pair against first open of the new one), not from memory: EOS→Vaulta 1.000, MKR→SKY 23,997, AGIX→FET 0.474, plus MATIC→POL and FTM→S as renamed pairs. The first two match the officially announced 1:1 and 1:24,000 exchange terms — that agreement is the check that the method works. XMR came from KuCoin, the only venue of the three carrying the pair for the full window.
Result 1: the basket
$70,000 became $39,539 — a loss of 43.5%, with a 69% maximum drawdown along the way. Six coins out of 70 finished positive. Fifty-six finished below −50%, and twenty-nine below −90%. The median coin lost 85.8%.
Diversification did not diversify. The basket lost almost exactly what a single ETH position lost (−44.3%), and finished 47 points behind a single bitcoin (+3.9%). Only five coins beat BTC: ZEC, XMR, TRX, XRP, BNB.
And the survivors are not a portfolio, they are one position: ZEC returned +1,627% and now accounts for 43.7% of everything left. Remove that single coin and the remaining 69 come to −67.7%. A "broad" portfolio whose outcome hangs on one name was never broad.
The timing explains most of it. For 36 of the 70 coins the highest price of the entire 890-day window was in March 2024 — the month of purchase. Another 15 peaked in December 2024. Nothing about the list was wrong in an unusual way; the entry was.
Result 2: four sets of rules
Same candles, same window, same $1,000 per coin. Nothing here is tuned — every parameter is the textbook default, which is the point:
| 策略 | Final | 回报 | 最大回撤 | Time in market |
|---|---|---|---|---|
| Buy and hold | $39,539 | −43.5% | −69.0% | 100% |
| EMA 9/21 + RSI, full allocation | $66,547 | −4.9% | −37.3% | 33.7% |
| EMA 9/21 + RSI, engine defaults (10% size, +3%/−2%) | $70,526 | +0.8% | −1.4% | 1.6% |
| SMA200 trend + 25% trailing stop | $36,907 | −47.3% | −60.1% | 27.5% |
| Monthly momentum rotation, top 10 | $24,681 | −64.7% | −77.8% | — |
Read that table twice, because it contains the trap this whole article exists to dismantle. "Beat buy-and-hold" and "made money" are different claims. Three of four rule sets beat the basket. Only one finished above $70,000, and it did so by keeping 10% of capital per trade with a +3%/−2% bracket on daily bars — which means the money sat in cash 98% of the time. That is not a strategy winning. That is a strategy declining to play, and the tape doing the rest.
The trend arm deserves its own line. SMA200 with a 25% trailing stop lost more than doing nothing (−47.3% against −43.5%) across 1,199 trades — about 17 round trips per coin. Price chopped around the moving average in torn impulses, and every false break bought high and sold low. What the stops did buy was the shape of the loss: 37% drawdown on the signal arm against 69% for holding. That is a real product, and it is not the product most people think they are buying.
Result 3: so we removed the excuse
Every result above uses fixed textbook parameters. The standard objection writes itself: EMA 9/21 was the wrong pair, RSI 14 was the wrong period, −25% was the wrong trail. Fine. Our optimizer exists precisely to answer that, so we pointed it at the same 70 coins and the same candles.
The protocol, which is the only part that matters:
- 65 signal generators from the strategy-lab registry — breakouts, EMA and MACD crosses, RSI and Bollinger reversion, chart patterns, order blocks, liquidity sweeps, PSAR flips, the Phoenix and Jesse families — crossed with a daily-scale grid of stop, take-profit, trailing stop and maximum hold. 268,655 configurations were simulated, an average of 3,838 per coin.
- The window is split 70/30. In-sample: 1 March 2024 → 14 November 2025 (623 days). Holdout: 15 November 2025 → 7 August 2026 (267 days).
- Selection sees the in-sample slice only, ranked by a consistency score (profit factor, Sharpe, net, penalised for thin samples and deep drawdown). The holdout judges the chosen configuration and never chooses it.
- Long-only, 1×, next-bar-open entry, stop evaluated before target inside the same bar, 5 bps taker per side. Same engine that runs our public optimizer — no separate research build.
- A null arm runs alongside: the median configuration of the same grid for the same coin. If in-sample selection carries real information, the chosen configuration must beat that. If it does not, the optimizer is an expensive random number generator.
What the optimizer found in-sample: everything
On the in-sample slice the optimizer found a profitable configuration for 70 coins out of 70. Median in-sample result: +91.7%. On a basket that lost 43.5% by holding. Any screenshot from this stage would look like a solved market.
What happened on the holdout
| Holdout, 267 days | 投资组合 | Median coin | Coins in profit |
|---|---|---|---|
| Buy and hold | −54.3% | −56.4% | 2 / 70 |
| Random configuration (null arm) | −5.7% | −6.1% | — |
| Optimizer, selected in-sample | −4.5% | −7.6% | 22 / 70 |
Three numbers carry the finding:
- 68 of 70. The optimized configuration beat buy-and-hold on 68 coins. As a headline this is spectacular, and it means almost nothing — over this holdout, so did nearly everything, because the market fell.
- 34 of 70. The optimized configuration beat the median configuration of its own grid on 34 coins. Chance predicts 35. The search — 268,655 simulations, 3,838 per coin — bought no measurable ability to tell a good configuration from an average one on data it had not seen.
- 3.2%. Median time in market on the holdout for the selected configurations. Six trades on the median coin. The optimizer's entire advantage over holding is that it was almost never holding.
In-sample the optimizer was profitable on 70 of 70 coins with a median of +91.7%. Forward, it was profitable on 22 and the median coin lost 7.6%. That collapse — not the loss itself — is the measurement. It is the honest size of the gap between "found in history" and "works next".
Our own gate rejected all 70
Every selected configuration was scored by the deterministic live-readiness gate that decides whether anything in our system may leave paper: Sharpe, drawdown, win rate, profit factor, trade count, risk of ruin, Calmar. 70个中通过了0个。 平均分:28.9分(满分100分)。对所有这些的判定:未就绪。
这是正确的结果,并且值得直说:我们的优化器,针对一个真实投资组合,没有找到任何它愿意交易的标的。一个无法得出这个答案的研究层,就是营销层。
有一个家族稍微有点意思:PSAR翻转在70个币中的39个上持有期为正,中位数为+3.0%——这是唯一在单次分割中超过掷硬币广度的生成器。所以我们让它通过更严格的关卡,而不是仅仅留下一句好听的话。
唯一幸存者,仔细拆解
单次70/30分割可能靠运气。经过净化的锚定向前验证是更难的测试:扩展的训练窗口,一个禁运间隙使得没有交易跨越边界,仅在训练集上选择,在未触碰的下一个窗口上评判,每个币重复四次折叠——同样的70个币共280次折叠,仅做多,1倍杠杆。
| 280次向前验证折叠 | 平均折叠收益 | PSAR击败它 |
|---|---|---|
| PSAR翻转,仅做多 | +0.45% | — |
| 掷硬币入场,相同出场 | +0.10% | 143 / 280 |
| RSI反转 | −2.46% | 154 / 280 |
| Buy and hold | −15.33% | 194 / 280 |
它在以下次数击败了掷硬币入场: 280次折叠中的143次 ——51%。而多重检验校正解决了这个问题:17个币通过了“稳健”标准(四次折叠中至少三次为正),而 仅掷硬币折叠就会产生21.9个。观察到的稳健性 低于随机水平 (p = 0.92)。我们自己的机制给出的判定: 无确凿优势.
制度分割说明了该策略的实际本质。在牛市折叠中,它赚了+5.9%,而持有赚了+44.3%。在熊市折叠中,它亏了1.4%,而持有亏了40.2%。这不是隐藏在参数中的优势——它是一种置身市场之外的装置,代价是整个上涨空间。这与本文其余部分说的是同一句话,只是通过不同的路径得出。
如果你有一个调优过的回测
将结果用作测试设计,而不是选择不同指标的理由。在相信一个找到漂亮赢家的回测之前,问:
- 在结果之前,标的池和入场规则是否已冻结? 在记录中保留已退市名称、更名代码和确切的决策时间戳。
- 选择是否看到了持有期数据? 仅在训练切片上选择参数。不要在看到前向结果后调整分割。
- 匹配的零假设对照组是什么? 运行一个从相同搜索空间采样的配置,使用相同的成本、资本和敞口合约。仅聚合收益可能掩盖零假设同样表现良好的事实。
- 结果是否经得起逐资产检查? 报告击败零假设的数量、资产结果中位数、市场时间以及异常值——而不仅仅是最佳权益曲线。
- 第二次测试后发生了什么? 使用带禁运的净化向前验证和多重检验校正。如果稳健数量不高于随机水平,将结果标记为不确定,并保留在纸面阶段。
这份清单不会为你找到策略。它回答了本研究能回答的更基本问题:回测是否赢得了被认真对待的权利。
五个结论
- 当入场日期只有一个时,广泛分散并非风险控制。 七十个名称,一个购买日,其中36个在当月达到峰值——关键的相关性是时机,而非行业。
- 一个赢家承担了所有工作。 ZEC单独占剩余部分的43.7%。一个因移除一行而翻转的投资组合结果从来就不是投资组合结果。
- 止损改变了形态,而非方向。 趋势策略将−69%的回撤转为−37%,但仍低于什么都不做。购买安心是合法的购买;就称其为购买。
- “跑赢买入并持有”在下跌市场中是一个薄弱的说法。 在下跌市场中,现金跑赢买入并持有。四套规则中的三套和70个优化配置中的68个达到了这一标准,但几乎没有盈利。
- 优化并非缺失的要素。 在268,655次尝试中,我们的优化器在样本内为每个币种找到了赢家,但在前瞻中无法区分其选择与随机选择。如果供应商向你展示一个经过调优的回测而没有保留样本和零假设对照组,你看到的就是本文的样本内列。
这并未证明什么
- 一个窗口,一种市场状态。 890天的周期后期和漫长的山寨币流血。在牛市阶段,趋势和动量会翻转局面——这衡量的是买在顶部的买家,而非所有买家。
- 执行是理想化的。 每日收盘价,无滑点,无止损缺口风险,无小市值山寨币的流动性不足现实,无资金费率,无税收。
- 保留样本为267天。 这是一个真正的盲切,而非滚动前推的传送带;单一保留样本可能在任何方向上幸运。零假设对照组是保持诚实的关键,而零假设正是我们不声称优势的原因。
- AGIX携带约10个百分点的误差 来自ASi合并拼接:推导出的0.474因子与公布的0.43335不同,因为价格在停牌和FET重启之间发生了变动。
复现它
所有三个部分都在公共仓库中,位于 plans/march2024/。固定规则研究自行下载K线数据(约7 MB,大约七分钟),从边界价格拼接重命名的交易对,并写入 study/results.json。优化器重新分析读取相同文件并写入 optimizer_results.json ,包含每个币种的选定配置、样本内和保留样本数字、零假设对照组中位数以及门控判定——在四核上运行33秒。滚动前推活动写入 qn_psar_walkforward.json:每个折叠、两个朴素基线、每个币种的过拟合概率以及稳健性对比随机性检验——四秒。
我们在发布前使用新下载的K线数据在自己的基础设施上重新运行了固定规则研究:买入并持有结果为−43.5%,而一天前的原始运行为−44.6%,推导出的拼接因子精确复现。不同的机器,不同的下载,相同的答案。
如果你希望对你实际持有的币种进行同样的处理,优化器在平台上开放——相同的引擎,相同的保留样本纪律,相同的门控,它告诉我们七十次“不”。