Skip to main content

Paper Trading

Paper trading mode runs the complete TRADEOS.tech pipeline — signal generation, feasibility validation, position management, P&L tracking — against live market data, but without placing real orders. All fills are simulated.

This is the recommended mode for initial deployment and strategy validation.

What paper trading does

In paper trading mode:

  1. The ingestion service connects to real exchange WebSocket feeds and receives live market data
  2. The signal engine generates real signals from that live data
  3. The feasibility service applies all risk checks (drawdown limits, Kelly sizing, confidence thresholds) exactly as in live trading
  4. The execution service simulates fills using a realistic slippage model (see below)
  5. The TCA monitor tracks win rates, Sharpe, P&L, and all other metrics on the simulated fills
  6. The dashboard shows a real-time equity curve, position state, and performance metrics

The system behaves identically to live trading in every respect except that no orders reach an exchange.

Fill simulation

Paper fills are not simulated at the signal price or the last traded price. The simulation uses:

Best venue mid-price — if live order book data is available for the target venue, fills are simulated at the mid-price of the best bid/ask at the time of the fill.

ATR-scaled slippage — the fill price is adjusted by a slippage factor proportional to the instrument's Average True Range. In more volatile markets, slippage is larger. This produces a more conservative (worse) fill price than naive mid-price simulation, making paper P&L a conservative estimate of live P&L.

Fee adjustment — venue taker fees are applied to every simulated fill. The P&L you see in paper mode is net of fees.

This combination means paper trading results are meaningfully predictive of live results — not an optimistic simulation that inflates backtested returns.

Starting capital

Set the paper trading seed balance in .env:

PAPER_SEED_BALANCE=100000.0   # Starting paper balance in USD
PAPER_TRADING=true

The seed balance is applied once on first startup. It persists across restarts — paper P&L accumulates over time.

Switching between paper and live

Paper trading is controlled by the PAPER_TRADING flag in .env. Setting PAPER_TRADING=false and EXECUTION_MODE=live routes fills through the real exchange APIs instead of the simulation.

The switch can be made without restarting any services except the execution service:

# In .env, set PAPER_TRADING=false, EXECUTION_MODE=live
docker compose restart execution

Open positions in paper mode are closed (simulated) before the execution service restarts in live mode.

Why paper trade before going live

  1. Verify signal flow — confirm that all services are generating and processing signals correctly before real money is involved
  2. Calibrate risk parameters — observe real drawdown patterns, signal frequencies, and position sizing on live market data under your chosen profile
  3. System stability — confirm the system runs continuously without crashes, memory leaks, or stuck consumers before adding execution risk
  4. Operator familiarity — learn the dashboard, understand how circuit breakers behave, experience a live regime change — before it costs money

The autonomous agent also requires a minimum sample of paper trade outcomes before it begins proposing parameter adjustments. Starting in paper mode is not just recommended — it is the designed-in path.

Metrics available in paper mode

All performance metrics are available in paper mode and are computed identically to live mode:

  • Equity curve and daily P&L
  • Sharpe ratio, Sortino ratio, Calmar ratio
  • Per-signal-type win rate and information coefficient
  • Drawdown from peak (continuous)
  • Feasibility rejection rate and rejection reasons
  • Signal frequency and confidence distribution
  • Regime classification and regime-conditional performance