Paper trading vs live trading: why your results won't match

What a paper trading simulator actually models, what it leaves out, and how to use a paper run so the gap to live trading doesn't surprise you.

Algorithmic Trading6 min read

Your bot has run on a paper account for a month and the numbers look fine. You switch it to live with real money, and within a week the fills are worse, a few orders never complete, and the P&L is drifting away from what the paper account showed. Nothing in the code changed.

That gap is normal. A paper account is a simulator, and every simulator makes choices about what to model. Once you know which choices your broker's simulator makes, you can tell which parts of a paper run to trust and which parts to treat as optimistic.

What a paper account actually simulates#

Brokers are fairly open about this if you read the docs. Alpaca's paper trading documentation says its paper environment works the same as live end to end, using the same API, except the order is never routed to an exchange. Instead, fills are simulated from real-time quotes. An order fills only once it's marketable, and it's matched against the best available current market price, the national best bid and offer (NBBO).

That's a reasonable design, and it means the plumbing is real. Authentication, order submission, status updates, cancels and position tracking all behave like the live API. If your bot has a bug in how it handles a rejected order or reads its positions, paper trading will usually find it.

Interactive Brokers' API notes are briefer. They say the paper environment relies on more simulated technology than live trading, that behaviour such as order execution may vary, and that it has inherent limitations. Other brokers will differ in the details, so read your own broker's page before you rely on a paper result.

The list of things that aren't simulated#

Alpaca's page includes a list worth reading slowly. Its paper trading does not account for the market impact of your orders, information leakage, slippage due to latency, queue position for non-marketable limit orders, price improvement, regulatory fees or dividends. Each one moves your results in a predictable direction.

Market impact is the big one for anything beyond small size. In paper, your order doesn't consume liquidity, so the next order sees the same book. Live, a large buy pushes the price up for you and for everyone else.

Queue position matters for limit orders. On a real exchange, a resting limit order waits behind earlier orders at the same price, and the price can touch your level and move away without your order filling. A simulator that doesn't track the queue will tend to fill you more often than reality would. Strategies that rely on passive limit orders (market making, mean reversion entries, anything that "buys the dip" with resting bids) are the ones most flattered by this.

Latency slippage is the time between your signal and your order reaching the market. If the simulator fills you against the quote at the moment it receives the order, the extra milliseconds or seconds of a real route to an exchange disappear. Our earlier piece on order types and slippage covers what happens in that window.

Some omissions cut the other way. Missing price improvement means paper can be slightly pessimistic on marketable orders, and missing dividends can understate the return of a long equity strategy. Missing regulatory fees makes paper look a little better. The net effect depends on how your strategy trades, but for most automated strategies the optimistic items outweigh the pessimistic ones.

Partial fills and liquidity that isn't there#

Two details on the same page surprise people. First, Alpaca says that when orders are eligible to fill, they receive partial fills of a random size 10% of the time, with the remainder re-evaluated for a later fill if the price is still marketable. That's useful, because it exercises your partial-fill handling. But it's a random test, not a model of real liquidity.

Second, the page says your order quantity isn't checked against the quantities available at the NBBO. You can be filled for far more than the market was actually offering. A paper run that buys 20,000 shares of a thinly traded stock at the displayed ask is telling you nothing about what that trade would cost live.

The practical rule is simple. If your typical order is a meaningful fraction of the size displayed at the best bid or offer, paper fills for that order are close to meaningless. Size down your live test or price the trade with a cost model before trusting the paper P&L.

The data you see may not be the whole market#

The quotes driving a paper fill come from a data feed, and feeds differ. Alpaca's paper documentation says paper-only account holders are entitled to IEX market data. Its historical data documentation explains that IEX is a single US exchange accounting for roughly 2.5% of market volume, while the SIP feed consolidates all US exchanges.

That matters for signals as well as fills. If your strategy computes volume, VWAP or short-term momentum from one exchange's trades, the inputs in paper can differ from what you'd see with consolidated data in live trading. When you compare paper and live, make sure both are running on the same feed, or at least that you know which feed each one used.

You trade differently when the money is real#

The last difference isn't in the simulator at all. It's in whoever is supervising the bot.

Economists have measured this in controlled settings. Holt and Laury (2002) gave 212 subjects a series of choices between safer and riskier lotteries, with stakes scaled up to 20, 50 and 90 times the base level. With real payoffs, risk aversion rose sharply as the stakes rose. With hypothetical payoffs, behaviour barely changed. A later follow-up by the same authors (2005), designed to remove an ordering problem other researchers had raised, again found that scaling up payments by 20 times raised risk aversion significantly, but only when the payments were real.

These were lottery experiments with students, not traders, so don't read them as a prediction of how you'll behave. The narrower point carries over: decisions about pretend money are a poor guide to decisions about real money. In automated trading this shows up as overrides. People pause a bot after three losing days, widen a stop "just this once", or skip a signal that felt wrong. None of those happen in a paper run, because nothing was at stake. If you intervene live, you're running a different strategy from the one you paper traded.

Regulators make a related point about simulated track records. In the US, the CFTC's advertising rule for commodity trading advisors and pool operators, 17 CFR § 4.41, requires anyone presenting simulated or hypothetical performance to include a cautionary statement. It says simulated results "do not represent actual trading", may have "under-or over-compensated for the impact, if any, of certain market factors, such as lack of liquidity", and that such programs "are designed with the benefit of hindsight". A paper account is closer to reality than a backtest, but it's still simulated in exactly the ways that statement describes.

How to get value from a paper run#

Paper trading is still worth doing. Use it for what it's good at and keep your expectations calibrated for the rest.

Use paper to test the system, not the edge. It's the right place to check that orders are built correctly, that rejections and partial fills are handled, that the bot recovers after a restart without doubling positions, and that a kill switch actually cancels everything. Those bugs can lose real money quickly, and the simulator exercises them well.

Log the quote you expected at the moment of each signal, the time the order was sent and every fill. Do the same live. Comparing the two gives you a measured slippage figure per order type, which is far better than a guess.

Then go live small. A short period with real orders at a fraction of target size is the only way to measure queue position, latency and market impact for your strategy. Compare live fills against the paper fills you'd have expected for the same signals. If the gap eats most of the edge, you've learned that cheaply.

Finally, write down your intervention rules before going live, and log every manual override. If the live results differ from paper, you'll want to know how much of the gap came from the market and how much came from you.

This article is for education only and isn't financial advice. Trading involves risk of loss.

Sources

  1. Paper Trading — Alpaca API documentation (checked 2026-10-23)
  2. Historical Stock Data — Alpaca API documentation (checked 2026-10-23)
  3. Paper Trading (TWS API notes and limitations) — Interactive Brokers TWS API documentation (checked 2026-10-23)
  4. 17 CFR § 4.41 Advertising by commodity pool operators, commodity trading advisors, and the principals thereof — U.S. Code of Federal Regulations, via Cornell Legal Information Institute (checked 2026-10-23)
  5. Risk Aversion and Incentive Effects — Charles A. Holt and Susan K. Laury, American Economic Review 92(5) (2002) (checked 2026-10-23)
  6. Risk Aversion and Incentive Effects: New Data without Order Effects — Charles A. Holt and Susan K. Laury, American Economic Review 95(3) (2005) (checked 2026-10-23)

Trading a strategy by hand?

If you have rules you already follow and want them automated, tell us about them. You define the strategy; we help automate it.

Get in touch