Orders, Routing & Fill Quality
Limit Order Fill Simulator
Investment Education, Research & Tools for Smarter Decisions.
Estimate fill probability, expected partial-fill size, and queue-position sensitivity for a resting limit order, given spread, depth, order size, hold time, and volatility. All calculations are illustrative models; no real order data is used.
Direct Answer
The limit order fill simulator estimates the probability, expected fill time, and partial-fill risk of a resting limit order based on spread, order book depth, order size, hold time, and volatility. The results are illustrative models built from user-supplied assumptions, not a prediction from real order-book data.
What a Modelled Fill Probability Is Worth
A simulator like this one makes an assumption explicit. It does not forecast what will happen. The inputs are yours: the depth you believe sits ahead of your order, the spread you expect, the volatility you assume. The output restates those beliefs as a probability, which is genuinely useful for comparing scenarios against each other and is not evidence about any particular order.
The temptation is to read a percentage as a measurement. A real order book changes continuously, hidden size can sit at your price, and cancellations ahead of you move you forward without any trading taking place. None of that is observable from the inputs a model accepts.
The comparison that survives these limits is relative. Holding every other input constant and varying only order size, or only the limit price, shows the direction and rough magnitude of the tradeoff being made. That is the question this kind of tool answers well, and it is worth using it for that rather than for a number to quote.
Fills also depend on venue rules, priority conventions and order handling that differ between markets and between brokers, none of which a general model captures.
Educational tool only. All outputs are illustrative probability estimates based on simplified queuing models and user-entered assumptions. This tool does not connect to any broker, exchange, or market data feed. It does not accept account numbers, broker credentials, or personal trading data. Results are not investment advice, execution guarantees, or predictions of real-world fill outcomes.
Fill Simulator
Enter hypothetical order parameters. The simulator estimates fill probability, expected queue-clearance time, and partial-fill risk under your conditions. No real broker data is needed or accepted.
Simulation Results
Illustrative Order Book
Your order is highlighted. Depths are approximated from your inputs. The purple/colored highlight shows your position in the queue.
How price-level choice changes outcomes
Rows show four price levels relative to your current limit. Your chosen level is highlighted.
| Price level | Ticks from mid | Fill prob. (30 min) | Full-fill likelihood | Tradeoff |
|---|
How to use this simulator
Step 1, Enter your order parameters
Choose a buy or sell limit, enter a hypothetical limit price and the current NBBO bid and ask. The simulator needs the NBBO to determine how far your order is from the inside quote, which is the most important driver of fill probability.
Step 2, Estimate queue depth
The key input most traders overlook is shares ahead of you in the queue. If Level 2 data shows 2,000 shares resting at your price, enter 2,000. If you are placing the order fresh at a level with no visible depth, enter 0. The queue depth determines how much volume must trade through your price level before your order receives any allocation.
Step 3, Set daily volume and average trade size
Daily volume tells the model how actively this stock trades. Average trade size at this level approximates how quickly aggressor orders chip away at the queue. A stock that trades 5 million shares per day with an average trade of 300 shares will clear your queue far faster than a stock trading 200,000 shares per day.
Step 4, Choose a hold duration and volatility scenario
Hold duration caps how long the order can sit before it expires or you cancel it. A longer hold gives the queue more time to clear and the market more chances to revisit your level. Volatility affects how often the market touches your price level: high volatility means more sweeps through your level, improving fill speed, but also increasing the risk the price runs through your level and away from you before you're ready.
Step 5, Read the results
The simulator outputs a fill probability (the chance any shares fill within your hold period), a full-fill probability (the chance the entire order fills), estimated queue clearance time, and expected fill size. The order book visualization shows where your order sits relative to the inside quote. The scenario table shows how moving your limit up or down one, two, or three ticks changes all outcomes.
What this model does not capture
- Routing venue. Different exchanges and dark pools use different matching rules (FIFO vs. pro-rata). This model assumes price-time priority (FIFO), which applies to most lit U.S. equity exchanges.
- Hidden orders and icebergs. If significant reserve or iceberg volume rests at your price ahead of your order, the true queue is deeper than Level 2 shows.
- Information leakage. Large resting orders can be detected and front-run by HFT strategies. This effect is not modeled.
- Intraday patterns. Volume concentrates at the open and close. A 30-minute window early in the morning clears queues faster than a 30-minute window at midday.
Frequently asked questions
Why does fill probability drop so steeply when the queue ahead is large?
Queue clearance is the bottleneck. Every aggressor order that trades at your price level removes shares from the front of the queue, not from your order. Until all the shares ahead of you are consumed, none of your shares receive an allocation. If 5,000 shares sit ahead of you and the stock averages 200-share trades at that level, roughly 25 individual aggressor orders must hit your level before any of your shares fill. Whether 25 trades occur within your hold window depends on volume, spread, and how much time the market spends at your exact price. The relationship is roughly exponential: doubling the queue ahead more than doubles the expected clearance time, because each trade at your level is also a random event that may or may not happen within your window.
What happens to my order if I cancel and resubmit at the same price?
You lose your queue position entirely. Under price-time priority, the rule used by most U.S. equity exchanges, an order's place in the queue is determined by when it arrived at that price level. Canceling and resubmitting sends a new order that goes to the back of the line. If you had 2,000 shares ahead of you before, you now have 2,000 plus everyone who arrived between your cancel and your new submission. This is why experienced traders avoid unnecessary cancels and resubmissions at the same price. The only way to move up in the queue is to arrive at a price level earlier than other participants, once you are in the queue, the only way forward is to wait.
How is fill probability different from full-fill probability?
Fill probability is the chance that at least one share of your order executes within the hold window, in other words, the chance you get any fill at all. Full-fill probability is the chance all your shares execute. These diverge significantly when your order is large relative to the depth at your price level. For example, if 1,000 shares of volume reaches your price level within your window but your order is for 500 shares with 800 ahead of you, you receive a partial fill of 200 shares (1,000 minus 800 ahead). Your fill probability is high (you did get some shares), but your full-fill probability is zero (you only got 200 of 500). Partial fills create position-sizing misalignment, as the position you end up with is not the one you planned.
Does the NBBO spread affect fill probability and if so, how?
Yes, significantly. A wide bid-ask spread means your limit price is farther from the mid-price in relative terms. Aggressor orders pay the spread to trade immediately, they cross to the opposite side of the book. If the spread is $0.10 and you place a buy limit at the bid ($50.00), an aggressive seller must be willing to sell at $50.00 rather than the ask ($50.10) to fill your order. That requires the price to move $0.10 to you, which is less likely in a short window. A tighter spread means less movement is required before aggressors reach your price. Spread also affects where you should set your limit: placing a buy limit inside the spread (between bid and ask) at, say, $50.05, what some brokers offer as "price improvement", can meaningfully increase fill probability relative to resting at the bid, at the cost of a slightly worse price than you ideally wanted.
Can I use this to model an iceberg or reserve order?
Approximately. But you have to think through the iceberg's effect on the queue differently from how the tool is set up. An iceberg order displays only its tip, say 100 shares, while hiding thousands of reserve shares. When the displayed 100 fills, the exchange creates a new displayed order for the next 100 shares, but this new display goes to the back of the queue at that price level. So the iceberg repeatedly loses and regains queue position as it refills. To approximate your position behind an iceberg using this tool: if you know an iceberg of 5,000 total shares is resting ahead of you, enter 5,000 as queue ahead. The iceberg will consume volume at your price before your order fills, in effectively the same way that 5,000 conventional shares would, just with the nuance that each refill chunk returns to the back of the queue, which modestly benefits later arrivals relative to a conventional block.
What is a marketable limit order and how does it appear in the results?
A marketable limit order is one whose limit price crosses the inside quote, a buy limit at or above the best ask, or a sell limit at or below the best bid. Instead of resting in the book, a marketable limit order is sent to the exchange and executes immediately (or near-immediately) against resting liquidity on the opposite side. It behaves like a market order in terms of fill speed, but with a price cap that prevents execution worse than your limit. The simulator flags this condition in the warning banner when your limit price is at or through the best opposite quote. In that scenario, fill probability is high and queue considerations are nearly irrelevant, the question shifts from "will I fill?" to "how much of my order fills at the current depth?" For marketable limit orders, the execution cost calculator at Execution Cost Calculator is a more appropriate tool.
Does the model account for the order being cancelled by the trader before it fills?
It estimates the probability of a fill over the specified horizon assuming the order remains resting. A trader who cancels early realizes a lower fill rate than the model shows, and one who leaves the order working longer than the modelled horizon may see a higher one. Cancellation behaviour is a decision outside the model, which is why the horizon used should match how long the order would genuinely be left in place.
How should the queue-ahead input be estimated in practice?
Displayed size at the price level is the observable starting point, and it overstates what is genuinely ahead when part of that size is hidden, layered or likely to be cancelled, and understates it when reserve orders sit behind the display. There is no way to measure the true queue from public data. Running the model across a range of plausible queue sizes gives a range of outcomes rather than a single figure resting on an unverifiable input.
Does the simulator distinguish between exchanges with different matching rules?
It assumes a price-time priority book, which is the common arrangement on U.S. equity exchanges, where orders at the same price fill in the sequence they arrived. Venues using pro-rata allocation, size priority, or a periodic auction distribute fills differently, and queue position means something else there. Applying the model to a venue with different matching rules produces a number that does not describe that venue's behaviour.
Model assumptions and sources
How the model works
The simulator uses a simplified queuing model to estimate fill probability. Core assumptions:
- Price-time priority (FIFO): Shares ahead of you in the queue fill before any of your shares receive allocation.
- Volume arrival rate: Derived from daily volume divided by session minutes (390), adjusted by hold duration and a volatility multiplier (low = 0.6×, medium = 1.0×, high = 1.5×).
- Price-level frequency: The model assumes the market price touches your limit level a fraction of the time proportional to how far the limit is from the inside quote. A limit at the inside quote is touched every time the market is at that side; a limit 10 ticks away is touched rarely.
- Partial fill: If volume reaching your level within the hold window exceeds the queue ahead but is less than queue ahead plus your order size, a partial fill is returned. Expected fill size is the minimum of your order size and max(0, total volume at level minus queue ahead).
- Full-fill: Requires total volume at your level to exceed queue ahead plus your full order size.
Limitations
The model is intentionally simple to be educational. It does not account for intraday volume patterns (U-shaped distribution), order book dynamics, hidden liquidity, cancellation and repricing by other participants, HFT activity, or order routing effects. Real fill outcomes will differ from model estimates, sometimes substantially. Use this tool to build intuition about the direction and magnitude of effects, not to make specific trading decisions.
Educational disclaimer
For education only; not personalized investment, tax, or legal advice. Trading can result in substantial losses, including the loss of more than you invest. This tool does not accept or store any personally identifiable information, account credentials, or real order data.
Exchange priority rules, broker routing practices, ATS matching logic, and regulatory requirements can change. Verify current requirements with your broker, the relevant exchange, or a qualified professional before acting on any information here.