📰 Latest: HaasOnline Academy Is Back — Structured Education for Smarter Trade Bots
Account
Optimizing & Testing Trade Bots

Simulated (paper trading)

Simulated Trading

Simulated trading is not a separate mode with its own interface. It is simply running a trade bot on a [Sim] account instead of a live one. The setup is identical — same bot, same settings, same market data — the only difference is that order fills are virtual instead of real.

The workflow for setting up simulated trading is covered in previous pages: create a simulated account, create a bot, and deploy it. To read about the differences, see this page. This page covers why you should run a bot on sim before going live, and where simulation fits in your overall testing strategy.

The Testing Pipeline

No single testing method tells the full story. Each stage reveals different things, and each comes with its own trade-off between accuracy and speed.

Stage Speed Accuracy Risk
Backtesting Minutes Approximate None
Simulated forward testing Real-time Better None
Live trading Real-time Ground truth Real capital

Backtests

Backtests replay historical data at speed. They are fast — you can test months of market history in minutes. They are thorough — HaasLabs lets you sweep thousands of parameter combinations.

But backtests have blind spots. They execute orders at the historical ticker price with no slippage, no latency, and no partial fills. A backtest cannot tell you how your bot will behave during an exchange outage or a flash crash where order book depth evaporates. It cannot model funding rate costs on perpetuals. It shows how the strategy would have performed in an ideal world.

Use backtests to disqualify bad strategies quickly. If a bot cannot make money on perfect historical data, it might not make money live.

Simulated Forward Testing

Running a bot on a simulated account in real time bridges the gap. The bot reacts to live market data as it arrives, processes signals at the same cadence it would on a live account, and exposes issues that backtests miss.

What simulated testing catches that backtests do not:

  • Edge cases in real-time decision logic. A condition that evaluates differently when prices arrive tick by tick versus when replayed in bulk.
  • Interval and timing issues. Does the bot behave correctly when an interval closes on a volatile candle?
  • Long-running stability. A bot that runs fine for a 3-month backtest might leak memory or accumulate errors over weeks of continuous operation.
  • Market regime changes. Watching the bot navigate a sudden trend reversal in real time gives you intuition about its behavior that a backtest report cannot convey.

What simulated testing still misses:

  • Slippage. Simulated orders fill at the ticker price regardless of size or liquidity.
  • Funding rates. Not simulated on perpetual contracts.
  • Liquidation risk. Simulated accounts do not liquidate — they refuse new orders when margin is exhausted but leave positions open.
  • Exchange behavior. Rate limits, maintenance windows, and API errors do not exist in simulation.

Simulated results are more realistic than backtests, but still optimistic. Treat positive simulated returns as a necessary condition for going live, not a guarantee of live performance.

Live Trading

Live trading is the only source of truth. Real orders on a real exchange with real fees, real slippage, and real consequences. It is also the only stage where you can lose money.

The goal of backtesting and simulation is to filter aggressively. If a strategy cannot survive on simulated forward testing, it never reaches live capital. The better your filtering at earlier stages, the fewer losses you take when the training wheels come off.

Practical Advice

Run simulated tests for meaningful durations. A few hours is not enough. Run the bot on sim for at least several days, ideally across different market conditions — a trending day, a ranging day, a volatile news event. The bot's behavior during a sideways chop is as important as its behavior during a clean trend.

Size conservatively when going live. Even after extensive simulated testing, start live with smaller position sizes than your backtest assumed. You are testing whether the live execution matches the model, not whether the model is profitable.

Compare sim and live results side by side. Run the same bot on a simulated account and a live account simultaneously with small live size. If the live account consistently underperforms the sim account, investigate why — slippage, fees, latency, or something else. The gap between sim and live is itself useful data.

Do not skip simulation because backtests look good. Every strategy that went live and failed also passed its backtests. The question is not whether the backtest was profitable, but whether it was honest.