rangeRider

rangeRider — Status & roadmap

ENGINEERING COMPLETEAudited 2026-09-12· hand-written (no shared engine) engine· quantroduction· spot

Where this strategy is today

ENGINEERING COMPLETE — 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 5 / 5 invariants pass
Console output 13 tagged calls, 0 off-format
Side panel 22 rows, padded to the 3-column grid
Chart marks reference-levels
Palette 8 / 8 canonical
GUI settings 15 exposed · 0 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 4.3% against buy-and-hold's 39.2% — an edge of -20.1% — and is profitable on 7 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

An ATR-spaced accumulation grid for sideways markets, with a trend brake.

The important structural fact is that there is no stop-loss sell. The only sell path is the gain target above break-even. Everything the strategy cannot sell profitably, it keeps.

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

The measured constraint

Time in market is 0.7%, over 191 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 99% of the time is not therefore a low-risk one: the 2.9% drawdown happens entirely inside the time it is committed.

Settings, measured

This strategy does not use the engine config surface.

What to build next

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

1. Treat the 100% win rate as an artifact, not a result

Read before acting on the others

This strategy shows a 100% win rate on all seven markets. That is not skill and it is not a bug — it is the direct consequence of having exactly one sell path, priced at or above break-even. Every trade it closes is profitable by construction.

The risk therefore does not appear in the trade record at all. It appears as inventory the strategy is still holding, and as drawdown: 12.3% on BTC and 12.9% on ETH over the window. Any comparison of this strategy against one that does cut losses must use return and drawdown, never win rate — and the same caution applies to every grid strategy in the pack built this way.

Nothing here needs fixing. It needs reading correctly.

2. Test a time-based or invalidation exit for stranded inventory

Highest priority

Because the only exit is a profitable one, a layer bought before a sustained decline is held indefinitely — the ADX brake stops it adding, but nothing releases what it already holds. Exposure across the window averages 3.5% but reaches 9.0% on BTC, and the drawdown figures are where that shows up.

Worth testing, in order of how little they change the character of the strategy: release a layer once the range it was bought into has demonstrably broken (price beyond the grid bounds by some ATR multiple for N bars); or a maximum hold age per layer; or a scaled-out exit that accepts break-even minus fees rather than requiring a gain. All three are additions to the sell path, not changes to the entry, so the accumulation behaviour that works is left alone.

3. Decide the honest benchmark

High priority

It returns a positive result on 7 of 7 markets and still loses to buy-and-hold on 5 of them, by a wide margin where the market trended hard — SOL +2.8% against a held +216.7%, XRP +14.6% against +152.1%.

That is the expected shape for a strategy that is out of the market 96.5% of the time and caps every win at a small gain target. It is not a growth strategy, so measuring it against buy-and-hold answers a question it was not built for. The fairer benchmarks are cash plus the realised gain (does it beat sitting in quote currency?) where it wins clearly, and risk-adjusted return per unit of exposure. Both are worth adding to the measurement rather than arguing about the buy-and-hold column.

4. Sweep the gain target and grid spacing together

High priority

GAIN_ATR (0.3) and GAIN_PCT (1.0) set how little the strategy will accept, and GRID_ATR (0.4) sets how often it gets the chance. They interact directly: a tighter target with wider spacing is a different strategy from a wider target with tight spacing, and only the pair has been shipped, never swept.

Both are now genuinely settable across their whole range, including 0, which was not true before this audit — so a sweep will now measure what it appears to measure.

5. Extend the settings measurement to this lineage

Worth testing

The audit measures which settings a strategy actually reads by running it with a recording proxy over its config object. That works for the 348 Gunbot Quant files, which read settings through a single shared config accessor, and does not yet work for the 79 Quantroduction files including this one — they build a plain settings object straight from the GUI values, so there is nothing to wrap.

Consequence: for this strategy the report can say 15 settings are exposed in the GUI, but cannot yet prove that all 15 are read, or that nothing it reads is missing from the GUI. Wrapping the settings object in the same recording proxy would close the gap for all 79 files at once and is the single highest-value improvement to the audit itself.

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
13
Raw and off-format
0
Exempt (object and error dumps)
24

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
22
Section headers
5
Rows with no tooltip
1
Padded to the 3-column grid
yes
Chart marks
Model
reference-levels

draws price levels into customChartTargets and no per-trade marks, so there is no intent-vs-fill distinction to get wrong

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

15 settings appear in the Gunbot strategy editor for this strategy. Which of them the code reads has not yet been measured for this lineage: it does not use the shared config surface, so there is nothing to wrap with a recording proxy.

LOG_LEVELWARMUP_CYCLESRR_GRID_ATRRR_MAX_DCARR_DCA_DECAYRR_ADX_PAUSERR_MAX_EXPRR_SPMIN_ORDER_QUOTERR_TLRR_CAPITAL_ALLOCRR_GAIN_ATRRR_GAIN_PCTRR_MAX_DDRR_FEE

Open presentation findings