Joshua Dunnink · Trading Systems

← Jab

Jab — Research Note

What the machine does, what was changed on the way to the shipped version, and what each change did — with the tests that decided it.

Version 1.51 · XAUUSD, M15

All figures in this note are Strategy Tester runs on real broker ticks at 100% history quality. They are backtest figures, not a record of live trading. Every number names the broker feed and the window it came from. Where a design decision is described without a number, it is because the underlying test produced a small or negative reading that this note does not repeat — the decision it led to is stated instead, in words.


0. The result in one table

Version 1.51, compiled defaults (Risk level Medium, 1.0 % of balance per trade). Backtest, MetaTrader 5 Strategy Tester, real ticks at 100 % history quality, 10,000 starting deposit, 2 January 2024 to 26 September 2026, three live broker feeds (Vantage's real-tick history starts in July 2025, so its row covers July 2025 on):

feed net % of deposit profit factor trades relative equity drawdown
Fusion - the published figure, the weaker of the two feeds that cover the whole window 14,594.75 +145.9 % 1.57 467 7.22 %
BlackBull 23,515.39 +235.2 % 2.00 469 9.23 %
Vantage (from July 2025) 14,563.17 +145.6 % 2.17 272 5.93 %

Jab 1.51 at its default settings on three live brokers

Pepperstone, used in earlier measurements, is left out of the current figures: its real-tick archive on our test terminal has gaps in 2026, and a figure built on filled-in ticks is not published.

Earlier measurement

Jab runs out of the box on its compiled defaults — no set file needed. Strategy Tester, real broker ticks, 100% history quality, a 10,000 starting balance, matched window 2025-07-01 to 2026-09-07, measured on build 1.42; every default through the current 1.48 build reproduces the same trades:

feed net profit factor trades equity drawdown
Fusion Markets — the published claim +348 (+3.5%) 1.82 262 0.32%
BlackBull Markets +536 (+5.4%) 2.59 264 0.27%
Pepperstone EU +676 (+6.8%) 2.86 269 0.28%
Vantage Markets +451 (+4.5%) 2.24 259 0.29%
OANDA (demo, spread-survival check only) +262 (+2.6%) 1.56 274 0.34%

The published claim is always the worst-performing qualifying live feed. Where the same configuration takes near-identical trades on every broker and earns different money on each, the surviving edge is smaller than the gap between brokers — the rest of this note is the record of what was tested to find a configuration that survives that gap at all.


1. How it was tested


2. The base mechanism: a stop order at the freshest unbroken pivot

Gold builds recent swing highs and lows that price has not yet traded back through. Jab watches the M15 chart for the freshest such pivot far enough from the current price, and rests a stop order just beyond it, in the direction of the last closed candle. If price reaches the pivot the order fills; if it does not fill within its patience window, it is cancelled. A pivot that has already been tested more than once is skipped rather than traded again.

Every position carries a hard stop loss from the moment it opens, is managed by a short two-stage trailing stop, and Jab holds at most one position per side. It does not average down, does not grid, and does not use martingale sizing.

What the level is worth. Measured against a resting order placed at a random moment with the same offsets and the same exit, the pivot-anchored order was the stronger, or tied-strongest, entry on every measure taken, on both live and demo tick archives — the level adds a real, repeatable displacement in the trade's favour in the minutes after the fill, over and above what a same-sized breakout with no level under it would give on its own.


3. Choosing the level: eight definitions were screened, one survived

The natural question for any level-to-level system is which price counts as "the level." Before the shipped rule was fixed, eight different definitions were measured against the two controls above, across several years of tick data on more than one broker:

Across every one of these, the freshest untested wick extreme was the level with the largest and most repeatable displacement in the trade's favour after the fill. Levels chosen for being nearby in price, or for having survived several tests already, carried measurably less of that displacement, and in the case of the nearest-in-price rule, none beyond what a level-less breakout already gets. The prior-session extreme was also built into the EA as a selectable option: inside Jab's own order flow it turned out to already be, almost always, the same pivot the shipped rule would have picked, so the two rules produce nearly the same trades and the shipped rule stayed the default. This is why the level ships as one definition rather than several: the alternatives were not close substitutes, they were measurably worse or, in the closest case, redundant with what was already there.

4. Timing the fill: waiting for confirmation gives the edge back

A second, separate question is when to take the trade once a qualifying level exists: at first touch (a stop order), on a confirming candle close beyond the level, or after a retest of the level from the far side. All three were measured on the same set of levels. Filling at first touch carried essentially all of the measured edge; waiting for a confirming close, or for a retest, gave almost all of it back — on the retest rule, what remained was no better than chance. The market does not distinguish, in the first minutes after a level breaks, between a genuine continuation and a stop-run that reverses; by the time a confirmation would have formed, that distinction has already been priced. Jab is built to be filled at the touch for this reason, and this is also why the request for a filter that only takes the "real" breaks and skips the sweeps could not be met by changing entry timing — the two are, at this resolution, the same population of fills.

5. Shaping the exit: the two-stage trail versus faster alternatives

The shipped exit moves the stop once a trade is a set distance ahead, then switches to a tighter trail once it is further ahead again, and gives back as little of the move as possible from there. Two faster, tighter exits were measured against it on the same entries, across live feeds: one a scratch-style exit that locks in a small win almost immediately, the other a genetic-search pick optimised on a different chart timeframe from the one the product trades.

On every live broker feed tested, the shipped exit was the strongest, or tied-strongest, arm on the measure that matters most for an account that compounds — the number of days between one equity high and the next, and the depth of the worst rolling three-month stretch. The faster exits produced a higher win rate on paper, because they cap the size of a winning trade well below the size of the stop; that trade-off looked better on a demo feed than it did once real broker spread was applied to the same trades, and on two of the three live feeds tested it also gave up money outright. Scaling the stop and target to the day's own volatility was tested the same way, as a separate lever, and was dropped for the same reason: it cost money and made the worst stretches less predictable on every live feed it was tried on, confirming an earlier reading from the machine this engine descends from.

6. An optional faster cadence, shipped off by default

Loosening three of the entry gates — the minimum distance to a level, how far back a pivot is searched for, and how many prior tests of a level are still acceptable — roughly doubles the number of trades. Across four live feeds this traded configuration earned more in total, at a lower profit factor, than the shipped defaults; it is a cadence choice rather than a stronger trade, each individual fill earning less, and the extra fills are the ones most exposed to a wide spread. It ships as a named optional preset for a trader on a tight-spread broker who wants more frequent, smaller trades, and the defaults remain the tested configuration Jab ships on. In the most recent three-month window measured, the defaults held their edge and the faster preset did not add anything to it — read as a reminder that a cadence choice is not free to change back and forth, not as a permanent verdict on either setting.

7. What was tested and not built in

So the reader knows what this product does not do, and why:

8. The Jab family: what is, and is not, shared

Jab, Heavy Jab and Jab Savant share one engine lineage but are three separate builds, each validated on its own market:

9. Lineage

Jab's engine descends from an earlier gold decode programme (an earlier gold research programme), which is where the level rule, the trailing-stop shape and the volatility-scaling question were first measured. This programme re-ran and, in most cases, reconfirmed those findings on Jab's own build and on a wider set of live broker feeds — the ATR-scaling result above is one example of a finding that repeated on real ticks after first appearing on the ancestor engine.


Limits


Appendix — build history

version change
1.44 trailing-stop distance widened; the earlier tighter trail sat inside the spread of most live feeds and gave back the edge
1.45 added a selectable prior-day-first level mode; default unchanged, and inside the EA's own order flow this mode reproduces the shipped default almost exactly
1.47 trade-management calls skipped while the trading session is closed, removing spurious counter activity outside trading hours; trading itself unchanged, proved deal for deal against the prior version
1.48 added an optional prop-firm rules group (daily loss limit, maximum loss limit, profit target, best-day cap, Friday close), every rule off by default; with every rule off, Jab places the same deals as the version before it, proved deal for deal

Every figure in section 0 names its feed and window; the compiled binary that produced it is recorded by its hash in the product manifest.