Guide · Process

The gap between paper and real money

Paper trading is a useful mechanical rehearsal and a terrible predictor of results. It gets the arithmetic right and omits every friction that decides whether a small edge survives.


What paper trading is genuinely good for

  • Proving the plumbing works — orders route, brackets attach, positions reconcile, the journal populates.
  • Catching bugs that a backtest hides, such as duplicate orders, timezone errors, and stale quotes.
  • Rehearsing the routine so the mechanical steps are automatic before money is involved.
  • Sanity-checking that live signal frequency roughly matches what the backtest predicted.

That is a real list and it is worth doing. What it is not is evidence that the strategy makes money.

What paper does not simulate

FrictionWhat paper assumesWhat real money does
SlippageFills at the quoted priceFills a few ticks worse, much worse on gaps and thin names
Partial fillsThe whole order fillsLimit orders fill partially or not at all, changing the risk you actually took
Market impactYour order does not existSize moves the book in illiquid names, and you trade against your own footprint
Short borrowShorts are always availableLocate may be unavailable, expensive, or recalled mid-trade
Halts and gapsOrders behave normallyA stop through a gap fills far below the stop price, so the loss exceeds 1R
Fees and financingOften ignored entirelyCommission, regulatory fees, and margin interest apply to every round trip
EmotionEvery signal is takenYou skip the uncomfortable ones, which are frequently the good ones

The last row is the largest by a distance. A backtest and a paper account both take 100% of signals. In real money you will hesitate after two losses, size down after a drawdown, and take a discretionary exit at the worst moment. A strategy's realised expectancy is the strategy's expectancy multiplied by your compliance with it, and compliance is never 100%.

How much does friction cost?

Run the arithmetic on the edge I actually validated. The anchored-VWAP reclaim came out at +0.117R over 4,933 trades on a 129-symbol, 10-year universe (95% CI +0.057 to +0.174) — the +0.23R over 101 trades I first reported did not survive my own adversarial re-test. Assume a 1R risk of $300 per trade, so the modelled edge is $35.10 per trade.

modelled edge = 0.117R × $300 = $35.10 per trade slippage 2 ticks × 2 sides on 100 shares ≈ $4.00 commission + fees ≈ $2.00 net edge ≈ $63.00 per trade

That version survives. Now assume slippage of 0.05R per side rather than a few ticks, which is realistic on gappy names, and you lose 0.10R of a 0.117R edge — over 85% of the entire result, gone to execution quality alone. A small edge is not robust to sloppy fills, which is the practical reason execution discipline matters more than signal hunting.

Why a promotion gate

A promotion gate is a pre-committed, written rule that decides when a system is allowed to trade real money, evaluated by something other than your enthusiasm. Without one, the promotion decision gets made on a good week, which is precisely the wrong sample.

A gate needs three properties to be worth anything:

  1. Written before the paper run starts. A threshold invented afterwards is a rationalisation with a number attached.
  2. Sample-size based, not time based. "Two months of paper" can mean four trades. Trades are the unit that carries information.
  3. Enforced by something that is not you. A rule you can quietly waive at 9:28am is not a rule.

The gate I actually enforce

My execution engine refuses to connect a live broker until the paper record shows 60 closed paper trades with positive realised expectancy. It is a hard check in the promotion path, not a note in a document, and the current record against it is zero closed paper trades, so the live path stays shut.

The two numbers are chosen for different reasons. Sixty closed trades is a compromise: it is not enough for statistical confidence, which needs a few hundred, but it is enough to expose an engine that double-fires orders, mishandles a halt, or quietly loses on fees. Requiring realised expectancy rather than modelled expectancy is the important half, because realised includes the fills you actually got.

An override exists in the code because a gate with no escape hatch gets bypassed by editing the source, which is worse. It is named to be uncomfortable to type, and it logs a warning when used. That is the design intent: make the unsafe path possible, obvious, and recorded, rather than impossible and therefore routed around.

Broker choice is part of the gate

  • Prefer a broker with a real paper environment on the same API, so promotion is a credential change rather than a rewrite.
  • Avoid reverse-engineered private APIs. They violate the platform's terms, get accounts restricted, usually offer no paper mode at all, and often require storing a password and second factor locally.
  • Verify the system fails closed: if configuration is missing or ambiguous, it should place no orders rather than default to live.
  • Test concurrency explicitly. Twelve simultaneous signal evaluations must produce exactly one order, not twelve.

A staged promotion, not a switch

  1. Paper until the gate passes on closed trades, with the journal reconciled against broker fills.
  2. Live at minimum size — one share, or the smallest tradeable unit — for 20 trades. This tests fills, fees, and your own behaviour, not profitability.
  3. Live at quarter risk for another 30 trades, comparing realised R against paper R per setup.
  4. Full risk only after realised and paper expectancy agree within a reasonable margin.
  5. Demote automatically on a pre-defined drawdown. My engine halts at a 10% drawdown, which is a rule that only works because it is coded rather than intended.

The measurement layer has to exist before any of this is meaningful, which means logging planned 1R, realised R, and setup tag on every trade from the first paper fill onward. Journal fields that make this work →

Educational content, not financial advice. No live profit-and-loss figures are claimed anywhere on this site; backtest and walk-forward results are always labelled as such. Full terms: /terms.html

Tools referenced in this guide

  • Trading bot — the execution engine with the 60-closed-paper-trade promotion gate enforced in code.
  • TradeLog — logs planned and realised R per setup so paper and live can be compared directly.
  • Walk-forward testing guide — the stage before paper, and the costs a backtest leaves out.

FAQ

Quick answers

What does paper miss?

Slippage, partial fills, borrow, gap fills, fees — and emotion. Paper takes every signal; you will not.

Is paper trading useful?

For engineering, yes: it proves orders route, brackets attach, and books reconcile. It is not evidence the strategy makes money.

What is a promotion gate?

A pre-written rule deciding when a system may trade real money, counted in closed trades and enforced by code rather than by mood.

How many paper trades first?

My engine requires 60 closed paper trades with positive realised expectancy before it will connect a live broker. Currently the record is zero.

Does slippage matter that much?

Yes. Slippage of 0.05R per side removes 0.10R from a 0.117R edge — over 85% of it, lost purely to execution quality.

How do you scale up?

Stages: pass the gate, 20 trades at minimum size, 30 at quarter risk, then full risk — with a coded drawdown halt at 10%.