Why does my EA work on demo but not live?
Asked as: why does my ea work on demo but not on a live account
Demo fills are simulated: no spread paid, no slippage, no requotes. What changes at a live venue, and how to measure the gap on your own account.
The short answer
Because a demo account is frictionless and a live account is not. The demo fill is a bookkeeping entry: the simulator grants your order at the price on screen, instantly, in any size, every time. The live fill is a transaction: it pays the spread, moves with the queue, arrives late by your round-trip latency, and sometimes does not happen at all. An expert advisor tuned on the frictionless account has been optimised for a market that does not exist — and the tighter its margins, the more of its measured edge was actually the absence of friction.
This is a different failure from a backtest that lies about the past — that one is reconstruction debt, and it has its own article. A demo runs on the real, current feed in real time. What it simulates is not the market; it is your effect on the market, and that is exactly the part that costs money.
WHAT THIS IS — AND WHAT IS NOT PUBLISHED. This article is method: what a demo fill omits and how to measure the omission on your own account. No broker is measured, named or ranked here, no gap statistics are published, and none should be inferred. Where your own gap needs measuring, that is a measurement — see the close of this piece. Status of any measured claim: NOT YET PUBLISHED.
Prerequisite Knowledge
You need a period where the same system ran on both account types at the same broker — even a short live run at minimum size is enough to start — and both platforms’ statement exports. The comparison is between fills, not between profits: a week of fills carries the cost structure; a week of profit carries mostly noise.
The four frictions a demo fill omits
1. The spread you actually pay
The demo books your entry at the quoted price; the live account crosses a spread to get in and crosses it again to get out. On a quiet major pair this looks small until you multiply it by every round trip your system takes — high-frequency entry logic that thrives on demo is often nothing but spread cost wearing a strategy’s clothes. And the live spread is not one number: it has regimes, and it widens at precisely the moments — news, rollover, thin sessions — when many systems fire. That structure has its own article.
2. Slippage, and where it leans
A live market order is matched against available depth. When depth is thin or the price is moving, the fill walks — and it walks against you more often than for you, because your order is likelier to be chasing exactly when everyone else’s is. The average slippage number flatters; the distribution’s tail, sitting on the trades where the market was moving hardest, is where the money went. A demo has no depth to walk, so its slippage is exactly zero, on every trade, forever.
3. Rejections, requotes, and the fills that never happened
On demo, every order is accepted. Live venues can requote, reject, or partially fill — and those events are not uniformly distributed either: they cluster in fast markets, which is to say on the trades your backtest probably counted as its best. A system whose edge lives in volatile moments meets its rejection rate exactly where it planned its profits. The fill ratio is a measurable property of your account, and demo reports it as perfect by construction.
4. Latency between decision and deal
Your EA decides on a price that is already old by the time the order reaches the venue and returns. On demo the round trip is a function call. Live, the staleness of the price you acted on is a real interval — and for reactive systems, the price at decision and the price at execution are systematically different in fast conditions, in the unhelpful direction.
How to measure your own gap
Run the same system on both account types simultaneously, live at minimum size, for long enough to collect a few dozen trades. Export both statements and compare per signal, not per period: entry price against entry price, exit against exit. The differences decompose into the four frictions above — spread paid, slippage per fill, orders present on one statement and absent from the other, and timing offsets. What you have built is a measured cost distribution for your own account, and the question “does my edge survive it” stops being a feeling. The glossary defines each component precisely, including requotes and the fill ratio.
The Observable Mechanism
Everything here is computable from two statement exports you can produce yourself, in any spreadsheet. No broker-side data, no special access, no permission. The gap between your demo and live fills is one of the few things in retail trading you can measure completely from your own side of the account — which makes trading without measuring it a choice.
What This Does Not Establish (The Limits)
This article establishes what a demo omits — not the size of any particular broker’s gap, whether a specific venue’s demo environment matches its live one, or whether your strategy survives your costs. Those are measurements against particular accounts and particular fills. A short live sample also bounds what the comparison can claim: a few dozen trades characterise the typical friction well and the tail poorly, and the tail is where the worst of it lives. The honest reading of a small sample is a lower bound on the gap, not the gap.
Where this leads
If the question is whether the feed itself behaves consistently — cadence, staleness, spread regimes on your own capture — that is the Broker-Feed Auditor’s battery, and the Feed Fidelity assay runs its client-side subset on a log you export, once, without installing anything. If the question is what execution is actually costing you — shortfall decomposed into spread, slippage and timing, with the distribution rather than the average — that is the Execution-Cost Auditor’s ground, and the Execution-Cost assay answers it from the statement you already hold.
Claims examined
Claim 01§ claim-d0484e14
Demo and live show the same prices, so the results should transfer.
Identical quotes do not produce identical fills. A demo order is granted at the displayed price by a simulator with no liquidity to find; a live order must be matched against depth that thins exactly when your system most wants to trade. Two accounts can watch the same feed all day and book materially different trades from the same signals, because the price you see and the price you deal are different quantities — and only one of them exists on demo.
Claim 02§ claim-a91f9987
My broker rigged the demo to flatter me into depositing.
Intent is not measurable from the client's side of the account, and the gap does not need a villain: a simulator with no spread cost, no slippage and no rejections flatters every strategy automatically, without anyone deciding it should. What is measurable is the size and structure of your own demo-to-live gap — and a measured gap is actionable regardless of why it exists, which is more than any theory about motive can offer.
Claim 03§ claim-516cf46e
Three profitable months on demo validate the strategy.
Three months on demo validate the strategy under execution conditions that do not exist. The signal logic was tested; the cost model was absent. Whether the edge survives the real cost distribution — spread actually paid, slippage in the tail, orders that come back rejected at the worst moments — is precisely the part demo cannot test, and for tight-margin systems it is routinely the whole difference between the two account curves.
Each claim above has a permanent address — the § link — whose canonical home is the refutation index, where it carries its variant phrasings and the true proposition stated on its own feet; this article is the evidence behind it. If a claim's text ever changes, it becomes a new claim at a new address, and the old one stops resolving rather than silently meaning something else.
Explore further
Instruments
Concepts
Research
- Why do my forex orders get rejected?Asked as:
why do my forex orders get rejected
- Is my broker trading against me?Asked as:
is my broker trading against me
- Why do backtests fail in live trading?Asked as:
why do backtests fail in live trading