Appearance

Personalize your experience

Mode
Accent Color
Direction
Pitfalls & Anti-Patterns

Pitfalls & Anti-Patterns

Reference

The failure modes that show up repeatedly, what each one looks like from inside the builder, and the change that actually fixes it.

Why these are worth reading in advance

Every item here produces a good-looking backtest. That is what makes them dangerous: none of them announce themselves as errors, and several of them make the better. They are only visible if you know what to look for, which is the of the list.

Overfitting

Fitting the noise in one specific history rather than a relationship that repeats. It is the default outcome of trying many configurations against one dataset, because with enough attempts something will fit by chance.

AspectDescription
What it looks likeExcellent backtest, poor . Five or more conditions with specific tuned values. A above 3 on fewer than 50 .
Why it happensEach parameter you adjust is a of freedom. Twenty combinations tried means the best one is the 95th percentile of twenty draws even with no edge present.
The fixFewer conditions, rounder parameters, and validation on the tuning never saw. If a needs (13) rather than RSI(14) to work, it does not work.

No exit strategy

Deploying with entry conditions only. The engine opens positions as signals fire and never closes them, because nothing instructed it to.

AspectDescription
What it looks likeA backtest with very few closed and a open position at the end. The look calm because most of the loss is unrealised.
Why it happensThe Exit step is optional in the interface and the will let you past it. Nothing enforces a stop.
The fixA on every , always. Then an exit condition or a target on top of it.

Bias in the test data

Survivorship bias

Testing on instruments that exist today. Delisted and failed instruments are absent, so the sample is the winners of the by construction. Include a diverse set and several time periods.

Look-ahead bias

Using information that was not available at the time. The builder prevents the obvious forms, but a custom formula can reintroduce it — referencing a that only settles after the bar closes is enough.

Regime bias

A test containing only one kind of market. A trend-following validated across 2020–2021 has never met a range, and the backtest cannot tell you what it does in one.

Ignoring costs

Zero commission and zero slippage. Costs are per trade, so they punish frequency hardest — a thin edge on 600 a year can be entirely commission.

!
Caution: is the one worth being paranoid about, because it produces implausibly good rather than merely optimistic ones. A above 3 or a above 80% is far more likely to be a leak than an edge. Investigate before celebrating.

Sizing and leverage errors

Anti-patternDescription
Over-leveragingHigh leverage without a proportionally tight stop. A 10× position with a 2% adverse move is a 20% account loss, and a margin call closes it on the broker’s terms rather than at your stop.
Tight stop, large size with a very tight stop produces a very position. The stop-out loss is unchanged, but a gap through the stop costs proportionally more — and gaps are exactly when stops do not hold.
Uncapped laddersA DCA or grid ladder without maxReEntries set deliberately. Four levels at 1.5× the opening size into thirteen times itself, at an average price worse than the current one.
Correlated positionsFive positions each risking 1% risk 5% only if independent. Five bank stocks in one are one trade in five wrappers, and a sector move takes all of them together.

Condition construction errors

Anti-patternDescription
Two triggers ANDedTwo crossovers in one AND group must fire on the same bar. They almost never do, so the produces nearly no and looks broken.
Trigger used as a filterUsing a comparison where a was meant produces an entry on every bar the comparison holds, not once at the transition. explodes and so do costs.
Same-family stacking, Stochastic and Williams %R all the same thing. Three of them agreeing is not confirmation, it is one opinion counted three times.
Deep nestingBeyond three levels nobody can predict what the tree does without tracing it. A condition you cannot reason about is one you cannot debug when it misfires.
Unguarded divisionA formula dividing by a price difference will meet a bar where that difference is zero — a halt, an illiquid option, the bar after a gap.

A short pre-flight list

★
Pro tip:Before trusting any result, ask four . Is the above 30? Were commission and slippage set to realistic values? Does the agree with the backtest? Could I have sat through the worst drawdown on the chart? Four noes is not a , however good the return looks.

See also

Related articles

  • Condition Evaluator

    Automation / Strategy Builder / Reference

    How a condition becomes true on a bar: series computed up front, no value during warm-up, the exact cross and rising rules, and the order of work on each…

  • DSL Bots

    Automation / Strategy Builder / Reference

    The 49 ready-made strategy-DSL bots: where to find them, how to load and adapt one, the file format, and what every bot is tested for.

  • Indicator Reference

    Automation / Strategy Builder / Reference

    All 94 indicators the strategy engine computes, grouped as in the builder's picker, with their parameters, outputs and the range of values each output can take.

  • Overfitting & Validation

    Backtesting / Validation

    Why searching for a good backtest reliably produces one even when no edge exists, how to recognise a fitted strategy, and the validation designs that…

  • Strategy Builder FAQ

    Automation / Strategy Builder / Reference

    The questions that come up most often, answered with what the engine actually does rather than what would be convenient.

  • Strategy DSL Format

    Automation / Strategy Builder / Reference

    The engine JSON a strategy saves as. The form, node and JSON editors all edit this one document, and the C++ engine runs it unchanged in backtests and live.

  • Variables Reference

    Automation / Strategy Builder / Reference

    What can appear on either side of a condition — bar fields, earlier bars, higher timeframes, statistics, clock and calendar values, and formulas — and how…

  • Step 0 — Particulars

    Automation / Strategy Builder / Wizard Steps

    Identity and metadata: the name, description, tags and visibility that make a strategy findable a year from now. Also where the immutable Strategy ID is minted.

  • Step 1 — Settings

    Automation / Strategy Builder / Wizard Steps

    Global behaviour that decides how entries and exits interact: whether the strategy builds a position in stages, which multi-entry model it follows, and how…

Browse all knowledge base articles →