Backtesting
HyperionX runs historical strategy backtests through Validator. A backtest replays loaded historical candles using the selected strategy, data-series settings, fill model, commission model, leverage, and position-sizing behavior.
Backtesting is research, not a forecast of live performance. Historical candles cannot reproduce queue position, market impact, disconnected sessions, or every intrabar price path.
Product-owned research defaults date to signed release 1.1.11, and the validated Python Research Runtime is recorded in 1.1.12 and later packages. The signed 1.1.25 release record adds the Validator features identified below; the public stable feed still advertised 1.1.23 on September 29, 2026. Check the documentation version map, verify the installer signature and Help > About, and confirm module discovery before running. A signature check does not validate a research result. If a module is missing, collect diagnostics rather than copying one from an untrusted source. See Install, Update, And Uninstall.
Before You Start
You need:
- A strategy that compiles in Code Lab.
- An instrument and data series.
- Historical candles for every Validator item you plan to run.
- A strategy assigned to each item, or one strategy applied to all items.
- The intended commission selection. If expected packaged modules do not appear after first-launch compilation, stop and collect diagnostics.
- Valid strategy parameters and quantity or money-management settings.
Validator does not download or infer every missing input when you press Run. An item without loaded candles prevents the relevant test from starting.
Run A Historical Backtest
- Open Validator.
- Select Add instrument for one test, or Add test set for a saved group.
- Choose the instrument, connection, bar type, interval, and historical date range.
- Load historical candles for every item.
- Select a compiled strategy.
- Apply that strategy to the current item, or use Apply all when the same strategy and preset should be used across the set.
- Review strategy parameters, commission, backtest leverage, historical fill model, and continuous-futures merge behavior. On a build containing the 1.1.25 Validator changes, also set Slippage (ticks) and review session-close settings.
- Select Run.
- Review the aggregate result and each instrument result.
- Export the summary or save the strategy/test preset when you need to repeat the setup.
Validator can cancel an active run. Completed Validator results are also saved to the performance-results store.
Historical Fill Models
HyperionX currently provides two candle-based historical fill models:
| Fill model | Behavior |
|---|---|
| OHLC stop-first | Uses candle OHLC information and resolves an ambiguous stop/target candle in favor of the stop. |
| OHLC virtual path | Uses a virtual path through the candle to determine the assumed order of intrabar prices. |
Both are approximations. If a candle touches a stop and target, the selected model can materially change the result. Record the selected fill model when comparing runs.
Slippage And Liquidity
The signed 1.1.25 release record includes Validator Slippage (ticks) under the strategy's Backtest properties. Set a nonnegative tick count before the run: historical Market and StopMarket fills receive adverse slippage, while historical Limit fills remain at their limit price. Zero means no added slippage. The setting is preserved in Validator strategy presets and recorded in newer Validator run manifests and summary exports.
This is a Validator control; it does not add an ordinary Optimizer slippage control or a liquidity/queue simulator. The original signed 1.1.12 baseline did not document this setting. Confirm the installed build against the documentation version map: the stable download feed and the signed 1.1.25 release record currently differ.
Commission is modeled through the selected commission module when that module is available. Commission is not the same as slippage, spread, queue position, partial fills, or market impact.
Strategies that depend on tick-level ordering, very small targets, or high turnover need additional playback and simulation testing.
Review The Result
Review more than net profit:
- Total trades and average trade.
- Gross profit and gross loss.
- Closed-trade max drawdown, and intrabar-equity max drawdown where available.
- Profit factor.
- Sharpe and Sortino values where available.
- Win rate and long/short contribution.
- Consecutive wins and losses.
- Commission.
- Instrument contribution in a portfolio test.
- Ambiguous fills and the selected historical fill model.
The 1.1.25 release record separates closed-trade drawdown from intrabar-equity drawdown. Closed-trade drawdown follows the completed-trade ledger; intrabar-equity drawdown also reflects the simulated equity path while positions are open. Compare like-for-like metrics and retain their labels in reports. A reopened trade-only record may not contain the original intrabar equity path.
Use Find Improvements as a research aid, not as proof that a strategy is robust. Re-run changed settings and keep out-of-sample dates separate from the data used to choose parameters.
Move Beyond Historical Testing
HyperionX separates these stages:
| Stage | What it checks |
|---|---|
| Historical backtest | Strategy behavior against stored candles under the selected historical assumptions. |
| Playback | Real-time-style strategy behavior while historical activity is replayed. |
| Simulation | Current platform and connection behavior without intentionally routing to a live account. |
| Small live test | Real execution behavior with tightly controlled risk. |
For playback or simulation, explicitly select the intended LocalPaper or other non-live account. Playback does not change the selected account. Build-specific external-account guards are defense in depth, not a substitute for selecting and verifying LocalPaper before starting playback.
Save Enough Context
Validator result packs from the 1.1.25 changes retain requested and loaded ranges, timezone, commission model and serialized parameters, slippage ticks, fill model, session-close settings, and continuous-merge settings. Older records and other result types can contain less. Keep the strategy source/revision, complete preset, starting capital, application version, and any inputs missing from that particular pack in a separate research record; stored metadata does not make a run fully reproducible.
See Performance Database for the exact persistence limitations.