← SuperTrend_MM

SuperTrend_MM — Status & roadmap

BLOCKEDAudited 2026-09-15· mm-dca engine· gunbot-quant· spot

Where this strategy is today

BLOCKED — the code is correct, uniform and shippable. That is a statement about engineering, not about profitability; the performance verdict is separate and sits below it.

Dimension State
Correctness failing
Console output 19 tagged calls, 0 off-format
Side panel 6 rows, padded to the 3-column grid
Chart marks drawn only after the exchange confirms a fill
Palette 8 / 8 canonical
GUI settings 32 exposed · 32 read at runtime · 0 untunable · 0 inert
Deployed to a live install Not yet — audited and staged, not yet shipped

Performance verdict. Over three years on 7 markets it returns a median -80.9% against buy-and-hold's 49.6% — an edge of -130.5% — and is profitable on 0 of 7. On this window it is not a replacement for simply holding the asset, and nothing in these reports claims it is.

What it actually does

Read the return column with care on this page

Every return figure here was measured at a capital of 130 against an order size of 50 — chosen by the audit so the strategy's deepest DCA position is 95% of the account. At that capital the strategy runs out of room: it crosses its own minimum-cash gate at 25 and stops trading for the rest of the run, which is why all seven markets finish within 0.23 percentage points of each other at −80.9%.

At ten times the capital the same strategy on the same markets loses 22.1%, with an identical profit factor of 0.38 and an identical 53% win rate. The signal is just as bad; the account simply survives to keep using it. See the fixes report for the full comparison.

SuperTrend_MM is not a file of its own so much as one setting of a shared file. It runs the pack's MM-DCA template with the selector MM_signal set to supertrend, and that template carries fifteen complete entry/exit engines — rsi, stochrsi, cci, wpr, bb, keltner, atrchan, donchian, emabounce, macd, supertrend, adx, ichimoku, psar, obv. Fourteen of them are dormant in this file, along with their settings, until the selector is changed. Fourteen other strategies in the pack are the same file with a different selector.

With supertrend selected:

Measured over three years and seven markets, only two of those four exits ever fire. The stop loss and the TTL fired zero times in 2,175 exits: the profit target and the trend flip always arrive first. The profit target is the majority exit at 55.8%, which is why the defect this audit found in it mattered so much — it was not a corner case, it was most of the strategy.

Read from the shipped strategy source, not from its documentation.

The measured constraint

Time in market is 4.4%, over 6315 round trips across all 7 markets and three years. Everything in the performance report rests on that fraction of the bars. A strategy out of the market 96% of the time is not therefore a low-risk one: the 80.9% drawdown happens entirely inside the time it is committed.

Settings, measured

The GUI exposes 32 settings. Which ones this strategy actually reads was measured by running it with a recording config proxy rather than inferred from the source — a mm-dca file bakes 32 keys and only the active mode's branch reads any of them.

What to build next

Ordered by expected effect on the result, not by effort.

1. Ask whether this signal has any edge at all, before tuning anything on top of it

Highest priority

Run the same three years with fees and slippage set to zero. The strategy returns a median +0.51% — flat — while buy-and-hold returned 39.2% over the same window.

That single number reframes everything else. A strategy carrying a real edge and losing it to costs is a sizing and turnover problem, and worth fixing. A strategy that is flat when trading is free has no edge for better costs to protect: the SuperTrend near-line dip entry, on hourly bars across these seven markets, is not finding anything. Its measured −44.8% comes almost entirely from paying to trade, and the fee drag figure says so directly — a median 30.9% of the account, and 43.3% on BTC, consumed in fees.

So the first question is not what the gain target should be. It is whether the entry rule predicts anything. Test it as a signal rather than as a strategy: given a bullish SuperTrend and a dip to within 0.5% of the line, what is the distribution of returns over the next 1, 4, 12 and 48 bars, against the unconditional distribution? If those are indistinguishable, no amount of exit tuning will help and the honest outcome is to retire the configuration.

Do this before the sweeps below. They are only worth running if this one comes back positive.

The sibling measurement makes the same point from the other direction: fourteen other entry rules run through this identical template, and not one of the fifteen has a positive median. If the entry rule were the binding constraint, swapping it would move the result. It does not.

2. The target and the stop are 36:1 apart, and the stop never fires

High priority

The shipped configuration risks 8% to make 0.22% (0.12% target plus the 0.10% exit fee the audit wired in). That asymmetry needs a win rate above 97% to break even, and the measured rate is 51%.

It survives at all only because the stop is never reached: in 2,175 exits across three years and seven markets, Stop Loss fired zero times and TTL Exit fired zero times. The trend flip always gets there first, so the real loss-side exit is the indicator, not the stop — and the indicator exit is unbounded, while the target caps every winner at 0.22%.

That is the shape of the bleed: 52% of trades close at a small fixed gain, 48% close at whatever the trend flip costs. Sweeping MM_gain against MM_maxDd is the obvious experiment, but the more interesting one is to let the winners run — replace the fixed target with a trailing exit off the SuperTrend line itself, which is already computed, and measure whether an uncapped upside changes the sign of the result.

3. The other fourteen signals were measured, and all fifteen land in the same place

Highest priority

MM_signal is a settable knob, so an operator running SuperTrend_MM can turn it into the RSI, MACD, Ichimoku or Parabolic SAR strategy without changing files. The fourteen sibling strategies in the pack are exactly that: the same template with a different selector. The fee-target fix was applied to all fifteen and every one re-measured over the same 3 years × 7 markets, which makes the cross-signal comparison a clean one — same template, same DCA ladder, same exit ladder, same costs, fifteen entry rules.

The answer is not encouraging for any of them:

median return, 3y × 7 markets
Best of the fifteen — Donchian_Reversion_MM -28.8%
SuperTrend_MM -43.7%
Worst — Ichimoku_MM -85.4%
Median of the fifteen medians -79.6%
Profitable strategy-market pairs 4 of 105
Strategies with a positive median 0 of 15

The entry gates are not what separates them, because nothing separates them — swapping the indicator moves the result between bad and much worse. That points at the structure they share rather than at any one signal: a profit target two orders of magnitude smaller than the stop, an exit that fires on every trend flip, market orders on both legs, and a turnover high enough that fee drag runs from 35% to 97% of the account.

So the productive experiments are structural, not per-signal. Widen the target by an order of magnitude and see whether any of the fifteen survives it. Replace the market exits with resting limits and re-measure the drag. Cap turnover directly with a minimum hold. Each of those applies to all fifteen files at once, and each is cheap now that the baseline exists.

Until one of them changes the sign, none of these fifteen should be run on capital.

4. Check the close-to-open gap against the size of the target

Worth testing

The decision is taken on a closed bar and the order fills at the next bar's open. The target is 0.22% wide. On hourly crypto bars the gap between one close and the next open is routinely the same size or larger, which means the realised exit price is dominated by noise rather than by the threshold that triggered it.

This is why the fee fix moved the measured result by about a point rather than by the 0.10% per trade the arithmetic implies: the edge it restores is small compared to the variance it is being paid through. Worth quantifying — the distribution of (next open ÷ trigger close) on the bars where the target fired — because if that distribution is wide relative to the target, then any target of this size is unreachable in practice and the strategy needs a fundamentally wider one, or resting limit orders instead of market exits.

5. Ichimoku_MM, found while auditing this family, has no GUI entry of its own

Read before acting on the others

Fourteen of the fifteen mm-dca strategies have a Gunbot Quant — … MM editor entry carrying the MM_ settings. Ichimoku_MM has none. Its name normalises to ichimokumm, which is the hardcode marker on Quantroduction — Ichimoku Cloud MM — a different strategy, from the other lineage, with a different settings prefix entirely.

So the resolver finds it an entry, and the entry is the wrong one. An operator configuring it would be turning knobs the file never reads, while every knob it does read stays untunable. This was not chased down here because it belongs to Ichimoku_MM's own audit, but it should be fixed before that strategy is published, and the same normalised-match risk applies anywhere a _MM suffix collides across the two lineages.

6. The inert-knob measurement was wrong on this class of strategy until this audit

Read before acting on the others

the presentation audit proves which settings a strategy reads by running it behind a recording proxy. It knew about numeric feature gates — raise SIG_maxAdds, see what becomes readable — but not categorical ones, so every knob belonging to an unselected mode read as dead.

On this strategy that was 18 of 32 knobs reported inert when exactly one was. The auditor now sweeps categorical selectors too, taking the accepted values out of the strategy's own source and reporting a value as a gate only when probing with it actually unlocked something.

The six strategies audited before this one are unaffected — five do not use the config surface at all and WaveTrend_LB had no inert knobs — so nothing already published needs restating. But every remaining templated family in the pack is gated this way (G_anchor and G_regime on 101 QuantGrid files, RB_mode on 100 RebalGrid, N_ref on 34 NeutralMM, F_spacing on 14 FILGrid), and all of them would have been misreported. That is the single highest-leverage thing this audit changed for the strategies still in the queue.

Operator output, measured

Everything below was read out of the strategy file by the presentation audit, not taken from its documentation. These are the surfaces an operator actually watches: the terminal log, the side panel, the chart, and the settings the GUI offers.

Terminal log
Tagged, aligned, coloured
19
Raw and off-format
0
Exempt (object and error dumps)
7

Every non-exempt line carries the strategy name, an event tag and the palette colour for that tag, so one terminal running many pairs stays readable.

Side panel
Data rows
6
Section headers
1
Rows with no tooltip
0
Padded to the 3-column grid
yes
Chart marks
Model
fill-confirmed

A mark is drawn only once the exchange confirms the fill, so the chart never shows a trade that did not happen.

Colour palette
Non-canonical colours
0

One colour per meaning, identical in the log, the panel and the chart — the eight canonical roles.

Settings the GUI exposes

32 settings appear in the Gunbot strategy editor for this strategy. 32 of them are read at runtime — measured by running the strategy with a recording proxy over its config, not inferred from the source.

MM_af0MM_afMaxMM_atrPeriodMM_baseMM_convMM_dcaModeMM_decayMM_entryMM_entryPadMM_entryPctMM_exitMM_exitAdxMM_fastMM_maxDcaMM_maxExpMM_minDipMM_minStrMM_multMM_periodMM_signalMM_signalPMM_smaPeriodMM_spanBMM_stepMM_minOrderMM_tlMM_exitPadMM_gainMM_maxDdMM_maxHoldMM_slowMM_fee