DocsCore Concepts

Core Concepts

The ideas behind the backtesting engine and how to think about results.

Event-driven backtesting

Quantinger uses an event-driven backtesting model. Signals fire on bar close. Trades execute at the next bar's open. This is the only correct behavior — using the signal bar's close price for entry is look-ahead bias, which inflates backtest results and leads to real money losses when strategies are applied live.

Every trade in our engine is filled at next-bar open, with slippage applied on top. This means your backtest performance is always slightly worse than the raw signal would suggest — and that is correct.

Slippage and fees

Default slippage is 0.05% on entry and 0.10% on exit. Default fees are 0.075% taker and 0.020% maker (standard Binance/Bybit rates). These defaults mirror real-world conditions for retail traders.

You can adjust these in strategy settings. If you are testing a strategy that trades during high-volatility periods, increase slippage. If you have a maker-only approach, use the maker fee.

Walk-forward optimization

Walk-forward testing (WFO) splits your data into a train window, a validation window, and a test window (50/25/25 by default). The strategy is optimized on train data, validated on validation data, and the final performance is reported on the test window — data the optimization never touched.

This is the most important tool in Quantinger for detecting overfit strategies. If your test window performance drops significantly versus train, the strategy is overfit.

Monte Carlo simulation

Monte Carlo runs 1000 iterations of your backtest with random trade sequence shuffling. This gives you a distribution of outcomes rather than a single equity curve. The key output is the 5th percentile drawdown — the worst outcome in 95% of simulated scenarios.

If the 5th percentile drawdown is acceptable (you would not blow your account), the strategy has structural robustness. If even the median simulation is a disaster, no parameter tweaking will save it.

Something wrong or missing? Email support