← QGrid_KAMA_PCT_ADX_Anti

QGrid_KAMA_PCT_ADX_Anti — Status & roadmap

ENGINEERING COMPLETEAudited 2026-09-15· quantgrid engine· gunbot-quant· 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 18 tagged calls, 4 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 24 exposed · 20 read at runtime · 0 untunable · 4 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 3.2% against buy-and-hold's 49.6% — an edge of -45.6% — 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

The pack's shared quantgrid engine — one file, one settings block, and 101 strategies in this pack are the same engine with a different block. This one is anchor: kama, spacing: pct, sizing: anti, regime: adx, which is what its name spells out.

A resting ladder under a moving anchor:

This one works, and it barely participates

It is the healthiest result in this audit so far: profit factor above 1 on all seven markets (1.00 to 1.64, median 1.29), profitable on 7 of 7, median drawdown 4.4%, and median fee drag under 2%. Nothing here is broken and nothing is stopping early — the seven returns spread over 8.2 points, which is what seven genuinely different market results look like.

The return is nonetheless +3.17% median over 3.2 years, roughly 1% a year, and the reason is on the deployment line: peak inventory is 7–11% of the account. Ninety percent of the capital never leaves cash.

That is arithmetic, not a judgement. G_clip is an absolute quote amount (30), not a fraction, and the ladder is 30 × 1.3^−(k−1) over ten rungs — about 110 quote in total, however large the account is. On the 1,000 tested that is 11%; on a 10,000 account it would be 1.1%; on a 200 account it would be 55% and the drawdown would be five times what is reported here.

So the honest way to read this page is: a small, well-behaved edge applied to a tenth of the account. Whether it survives being applied to the whole account is the open question, and it is the first thing the roadmap asks for.

The setting that would have expressed the ladder as a fraction of equity — G_invMax, labelled "Ceiling on how much of equity the grid may hold" — is one of the five settings this engine never reads. See the fixes report.

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

The measured constraint

Time in market is 95.8%, over 2750 round trips across all 7 markets and three years. Everything in the performance report rests on that fraction of the bars.

Settings, measured

The GUI exposes 24 settings. Which ones this strategy actually reads was measured by running it with a recording config proxy rather than inferred from the source — a quantgrid file bakes 24 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. Find out whether the edge survives being scaled up

Highest priority

Profit factor is above 1 on all seven markets and drawdown is 4.4%, on a ladder that commits about 110 quote regardless of account size — 9% of the 1,000 tested here.

That makes the headline return almost meaningless on its own. The same edge at four times the size is either roughly four times the return at roughly four times the drawdown, or it is not — grids stop behaving linearly once the ladder is deep enough that a single trend can fill every rung before any of them sells.

The experiment is G_clip at 30, 60, 120 and 240 on all seven markets, reading profit factor and drawdown rather than return. Profit factor holding near 1.29 as the clip grows is the result that would make this strategy interesting; profit factor decaying towards 1 is the result that says the edge lives in being small.

2. Two of this engine's five dead settings are the risk controls

Highest priority

G_invMax ("Ceiling on how much of equity the grid may hold") and G_slPct ("Hard stop for the whole basket") are never read, on this file and on all 101 that share the engine. G_skew, G_target and G_fee are inert too — the first two because the expression that uses them multiplies by zero in both of its branches.

That matters most for the experiment above. Scaling G_clip up is exactly the change that makes an inventory ceiling and a basket stop worth having, and neither exists. Wire G_invMax before scaling the clip, not after.

Fourteen of the 101 ship a non-zero G_slPct, so fourteen operators can see a stop-loss configured on a strategy that has none.

3. Check whether the ADX regime gate earns its place

High priority

The grid does not arm above ADX 25, on the reasoning that a ladder should not catch a trend. That is a plausible rule and it has never been measured on this engine.

It is also the gate most likely to be responsible for the low participation: a grid that refuses to arm in a third of conditions is a grid that is idle a third of the time, and idle is already this strategy's defining characteristic.

Run G_regime as adx and as none, and G_regimeThresh at 20, 25 and 35, across all seven markets. Read round-trip count and profit factor together — if turning the gate off doubles the trades and holds the profit factor, the gate is costing more than it saves.

4. The anti-martingale choice has 100 siblings to compare against

Worth testing

This file ships sizing: anti, making each rung smaller as price falls. Its _Mart siblings ship the opposite. Because all 101 files are the same engine, the pack is already a designed experiment across anchor, spacing, sizing and regime — and no one has read it as one.

Once enough of the 101 have been measured at 15m, the comparison to run is not strategy-versus-strategy but factor-versus-factor: anti versus martingale, pct versus atr spacing, kama versus ema versus donchian anchors, adx versus chop versus no regime gate. That is a far stronger result than any single file's return, and it costs nothing beyond the runs already queued.

5. Nothing is wrong with this one, and that is worth saying

Read before acting on the others

All five correctness invariants hold, the seven markets spread over 8.2 points rather than clustering on an arithmetic floor, no exit is silent, and it does not stop trading. After a run of strategies that reported a floor as a result, this one reports a result.

It still loses to buy-and-hold by a wide margin over this window — +3.17% against +49.6% — and the report says so. But the gap here is a statement about how little of the account it uses, not about the trades it makes.

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
18
Raw and off-format
4
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

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

G_anchorG_anchorPeriodG_atrMultG_atrPeriodG_invMaxG_levelsG_regimeG_regimePeriodG_regimeThreshG_sizingG_skewG_spacingG_stepPctG_trendLenG_zGateG_clipG_sizeFactorG_targetG_tpAtrMultG_tpModeG_tpPctG_slPctG_trendGuardG_fee

Open presentation findings