How We Test.
No Shortcuts.

This page explains the data, cost assumptions, metrics, and limits behind our backtests — how we backtest, what we measure, and what we leave out.


How We Backtest

Data

up to 2.9 years of 1-hour OHLCV candles — source: Binance and OKX historical candles, with current updates from OKX USDT-SWAP; historical source boundaries vary by symbol and timestamp. All candles are complete (closed) — no partial or in-progress data is used to avoid look-ahead bias.

Universe

280+ USDT perpetual futures pairs listed on OKX. Stablecoins, non-crypto perpetuals (stocks, ETFs, commodities), delisted, and illiquid pairs are excluded. Daily rankings are computed separately for several top-coin groups and for BTC alone. The exact count varies by strategy version.

Execution

Entry fills at the open of the candle after the signal (engine engine_fast.py: the open of signal index + 1). Filling at the signal candle's close would use information from before that candle closed — that is look-ahead bias. Real fills may differ by a small amount due to timing and order book depth.

Fees

0.05% taker fee per side (0.1% round-trip). This is the OKX USDT-SWAP default for VIP 0 tier.

Slippage

3 liquidity tiers: 0.05% for Top-50 coins, 0.10% for Top-200, 0.20% for the rest — applied per fill (entry + exit). Tier assignment uses current market-cap rank (see Known Limitations below).

Intra-bar Fills (Conservative)

TP and SL are evaluated against each bar's high/low. If both are touched within the same bar, the engine books the STOP LOSS — the worst-case assumption, never the optimistic one. Signal exits are evaluated only at bar close, after intra-bar TP/SL.

Liquidation Comes First

With leverage, each bar is checked for liquidation before TP or SL. If the adverse wick reaches the liquidation price (maintenance margin and fees included), the trade is force-closed there — even if the same bar also touches the take-profit (exit slippage still applies).

Position Sizing

Fixed $60 per trade with 5x leverage ($300 notional). No compounding — each trade uses the same dollar amount regardless of account equity.


Strategy Evaluation Metrics

Every strategy is evaluated using the same set of metrics, calculated after fees:

  • Win Rate — Percentage of trades that closed in profit.
  • Profit Factor — Gross profit divided by gross loss. Above 1.0 means profitable.
  • Total Return % — Net P&L as a percentage of starting capital.
  • Max Drawdown — Largest peak-to-trough decline in equity.
  • Trade Count — Total number of completed round-trip trades.
  • Funding (total_funding_pct) — A cost field (convention stated 2026-09-30): positive means funding was paid, negative means it was received. For each trade, before leverage: net return = gross return − fees − funding.

Risk-Adjusted Metrics

Sharpe Ratio

Risk-adjusted return relative to volatility. Higher is better.

Formula: mean daily return / daily volatility × √365 (annualized; risk-free rate treated as 0)

Sortino Ratio

Like Sharpe, but only penalizes downside volatility.

Formula: mean daily return / downside deviation × √365 (annualized; target return 0)

Calmar Ratio

Annualized return divided by max drawdown. Annualization follows the equity mode: CAGR when compounding, arithmetic scaling for the default fixed-notional mode.

Windows under 1 year are not annualized (GIPS convention). Computed on the full backtest sample, not the original 36-month rolling window. Measures return per unit of risk.

Formula: Annualized Return / Max Drawdown

Advanced metrics (Sharpe, Sortino, Calmar) are calculated for every simulation and displayed in simulator results.


Robustness Validation

Numbers alone can be misleading. The checks below test whether strategy performance is real or just noise:

Out-of-Sample Testing (OOS)

Data is split into in-sample (training) and out-of-sample (testing) periods. A strategy must perform consistently on unseen data to be considered validated. We test across 2024, 2025, and 2026 independently.

Out-of-Sample = testing on data the strategy has never seen, to check if it really works or just memorized patterns.

Walk-Forward (3 windows)

Trades are split into three chronological windows and each window's metrics are compared with the next. The parameter set is fixed — we do not re-optimize per window. That is what separates this from the industry's "walk-forward optimization": we do not refit, we only check whether the same settings still hold in the next window. A strategy that only holds in one window does not pass.

Walk-forward = checking chronological windows in sequence. Here it is done with a fixed parameter set, without re-optimization.

Monte Carlo Simulation

We run 1,000+ bootstrap simulations per strategy — resampling your trade PnLs with replacement. This reveals worst-case scenarios, the 5th–95th percentile band, and whether returns depend on a lucky handful of trades.

Monte Carlo = running 1,000+ random simulations to check worst-case scenarios and confidence levels.


Costs Included and Remaining Limitations

Funding is included using historical-rate proxies, and slippage using current-rank tiers. Point-in-time rank changes and the other unmodeled factors below remain limitations.

×

Funding-rate proxy — funding is charged at real settlement events using actual historical rates (Binance funding history as a proxy for the OKX universe; the sign flips with the market, so shorts can pay too).

What remains approximate: cross-exchange rates differ, and symbols without rate history simply run funding-free — we do not fill the gap with an invented constant, and each result lists those symbols in its cost breakdown so you can see exactly which ones ran funding-free.

×

Universe selection — top-N coin lists use current volume rankings applied across the whole backtest window. A coin that is large today but small in 2023 still enters 2023 trades (survivorship-adjacent selection bias). Point-in-time universe snapshots are on our list.

×

Slippage tiers — per-coin slippage (0.05% / 0.10% / 0.20%) is assigned by TODAY's market-cap rank and applied across the whole backtest window. A coin that is Top-50 now but was small in 2023 gets the cheap tier on its 2023 trades too, understating its historical cost — this flatters returns.

Same point-in-time bias as universe selection above; a PIT rank history would fix it, and until we have one we disclose rather than fake it.

×

Market impact — Large orders can move the price. Our $60 position size minimizes this, but it exists.

×

Exchange outages — exchanges have occasional downtime. Backtests assume 100% uptime.

×

Black swan events — Flash crashes, delistings, and regulatory shocks are not simulated.

×

Liquidity variations — Order book depth changes throughout the day and across coins.


Reproducibility

All strategy parameters are published openly — entry conditions, exit conditions, stop-loss, take-profit, time filters, and coin universe. Signal logic is documented so you can replicate or modify it. The interactive simulator lets you adjust SL/TP and see how results change in real time.


Disclaimer

Past performance does not guarantee future results. Backtests are simulations — not predictions. Real trading involves risks not captured in any model, including emotional decision-making, connectivity issues, and market regime changes. Always test with capital you can afford to lose.


See It in Action

Run a backtest yourself — adjust parameters and see real results. 280+ coins analyzed.

Open Simulator →