엔지니어링 현장 노트. 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.

34 / 70beat the matched null arm
−4.5%optimizer portfolio on holdout
0 / 70passed the live-readiness gate
−16%−6%+4%+10% −35%−10%0%+25%+45% null arm: median configuration on holdoutoptimizer pick on holdout above line = optimizer winsbelow line = null arm wins
Each dot is one coin. Green means the in-sample winner beat its matched null arm on the holdout; red means it did not. The count is 34–36, and most coins remain below zero on both axes.

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%
$0 invested $70,000 → Buy and hold $39,539 · −43.5% EMA/RSI full $66,547 EMA/RSI defaults $70,526 SMA200 + trail $36,907 · −47.3% Momentum top-10 $24,681 · −64.7%
Three of four rule sets beat buy-and-hold. Exactly one ended the window above the money it started with — the one that was in the market 1.6% of the time.

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:

  1. 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.
  2. 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).
  3. 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.
  4. 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.
  5. 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

15 Nov 2025 → 7 Aug 2026 · $70,000 re-based at the split Buy and hold $31,963 · −54.3% Random config $66,041 · −5.7% Optimizer pick $66,845 · −4.5%
Against buy-and-hold the optimizer looks like a rescue: 50 points better. Against a configuration picked at random from the same grid it is 1.2 points better — and beats it on only 34 of 70 coins. That gap between the bottom two bars is everything 268,655 simulations bought.
Holdout, 267 days포트폴리오Median coinCoins 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. 优化后的配置在68个币种上跑赢了买入并持有。作为标题这很惊人,但实际上几乎毫无意义——在这个保留集上,几乎所有配置都跑赢了,因为市场下跌了。
  • 70个中的34个。 优化后的配置在其自身网格的34个币种上跑赢了中位数配置。随机概率预测是35个。搜索——268,655次模拟,每个币种3,838次——在未见过的数据上,没有带来任何可衡量的区分好坏配置的能力。
  • 3.2%. 所选配置在保留集上的市场时间中位数。中位数币种进行了6次交易。优化器相对于持有的全部优势在于它几乎从未持有。

样本内优化器在70个币种中的70个上盈利,中位数+91.7%。向前看,它在22个上盈利,中位数币种亏损7.6%。这种崩溃——不是亏损本身——才是衡量标准。它是“在历史中发现”和“在未来有效”之间差距的真实大小。

我们自己的门槛拒绝了全部70个

每个所选配置都由决定我们系统中任何东西是否可以离开纸面的确定性实时就绪门槛评分:夏普比率、回撤、胜率、盈利因子、交易次数、破产风险、卡尔马比率。 70个中的0个通过。 平均得分:28.9分(满分100分)。对它们全部的评价:NOT_READY。

这是正确的结果,值得直说:我们的优化器,针对一个真实投资组合,没有找到任何它愿意交易的东西。一个无法给出这个答案的研究层就是营销层。

有一个家族有点意思: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%。这不是隐藏在参数中的优势——它是一种避开市场的工具,代价是整个上涨空间。这与本文其余部分说的是同一句话,只是通过不同的路径得出。

如果你有一个调优的回测

把结果用作测试设计,而不是选择不同指标的理由。在相信一个找到漂亮赢家的回测之前,问:

  1. 宇宙和入场规则是否在结果之前冻结? 保留退市名称、重命名代码和确切的决策时间戳在记录中。
  2. 选择是否看到了保留集? 仅在训练切片上选择参数。在看到前向结果后,不要调整分割。
  3. 匹配的零假设臂是什么? 运行一个从相同搜索空间采样的配置,使用相同的成本、资本和敞口合约。仅聚合收益可能掩盖零假设同样表现良好。
  4. 结果是否经受住逐资产检查? 报告击败零假设的数量、中位数资产结果、市场时间和异常值——而不仅仅是最佳权益曲线。
  5. 第二次测试后发生了什么? 使用带禁运和多重检验校正的清除滚动前向测试。如果稳健数量不高于随机水平,将结果标记为不确定并保留在纸面上。

这个清单不会为你找到策略。它回答了这项研究能回答的更基本问题:回测是否赢得了被认真对待的权利。

五个结论

  1. 当入场是单一时,广泛分散不是风险控制。 70个名字,一个购买日,其中36个在那个月达到峰值——相关的相关性是时机,而不是行业。
  2. 一个赢家承担了所有工作。 仅ZEC就占剩余的43.7%。一个因移除一行而翻转的投资组合结果从来就不是投资组合结果。
  3. 止损改变了形状,而不是符号。 趋势臂将−69%的回撤变成−37%,但仍然低于什么都不做。购买安心是合法的购买;就这么称呼它。
  4. 在下跌市场中,“跑赢买入并持有”是一个弱主张。 现金在下跌市场中跑赢买入并持有。四组规则中的三组和70个优化配置中的68个通过了这个标准,但几乎没有一个赚钱。
  5. 优化不是缺失的要素。 鉴于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%,推导的拼接因子精确复现。不同的机器,不同的下载,相同的答案。

如果你想要对你实际持有的币种进行同样的处理,优化器在平台上开放——相同的引擎,相同的保留集纪律,相同的告诉我们七十次“不”的门槛。