Paper Trading Fill Delays of 50–260 Seconds (Limit Orders Filled Minutes After Price Crossed)

Hi Alpaca Support,

I’m experiencing severe fill delays in the Paper Trading environment where limit orders are being filled 50–260 seconds after submission, even when market prices cross the limit level immediately.

This issue happens in both premarket and regular market hours, and fills arrive minutes after submission despite live SIP data updating continuously during that window.

Example order IDs (time in IST):

1. 49s delay

ID: a82fb044-9b75-4641-8696-1e32ddd0436a  
Submitted: 2025-12-08 16:56:30  
Filled:    2025-12-08 16:57:21

2. 259s delay

ID: 4555711d-d00b-4c36-bffb-15c03e771395  
Submitted: 2025-12-08 17:00:11  
Filled:    2025-12-08 17:04:31

In both cases, the stock traded through the limit price immediately, yet fills arrived minutes later, causing trades to stop out instantly due to being filled far from the expected entry.

Could you please clarify:

  1. Is the Paper Trading fill engine using delayed or batched matching logic?

  2. Are SIP ticks used to determine limit order fills, or does the simulation follow a different model?

  3. Is this known behavior for volatile small-cap symbols?

  4. Is there a recommended configuration to ensure fills occur when price trades through the limit?

  5. Would upgrading to a different plan or server region improve paper-fill latency?

These delays make it very difficult to properly test a live breakout strategy, and I would greatly appreciate guidance or investigation into this issue.

Thanks,
Tejas

@Tejas_Bhuta Your orders filled exactly as expected, and probably filled similar to how they would have filled in live trading. I’ll explain in more detail, but first here our answers to your specific questions:

Is the Paper Trading fill engine using delayed or batched matching logic?
The paper trading simulation uses real time NBBO quotes to determine if and when an order fills. There is no delay or batching.

Are SIP ticks used to determine limit order fills, or does the simulation follow a different model?
SIP quotes are used to determine fills. Buy orders look at the ask price and sell orders use the bid price. This is also typically how live orders fill. Buy orders fill at the ask and sell orders fill at the bid.

Is this known behavior for volatile small-cap symbols?
The paper trading simulation does not take into consideration volatility or liquidity. It only looks at the quotes.

Is there a recommended configuration to ensure fills occur when price trades through the limit?
There is no configuration. Fills, both in paper trading and live trading, only depend upon the latest quote. The latest trade is not relevant.

Would upgrading to a different plan or server region improve paper-fill latency?
All fills in paper trading and live trading are based upon full market SIP data and independent of which market data plan you are subscribed to. Your market data plan only impacts the data you access using the APIs. The distance from the client machine to Alpaca’s servers only impacts the initial latency in receiving the order. Once an order is received distance doesn’t matter. This initial latency can range anywhere from about 10ms to 40ms, but in the specific case of these two orders would not have impacted fill time at all.

Let’s look at order 4555711d-d00b-4c36-bffb-15c03e771395 to buy BDRX at 7.80. Below is a graph showing the ask price beginning when your order was created at 6:30:10.968 AM EST (market time). The green line is when your order filled at 6:34:20.576 AM EST. It filled when the ask price was at or below your limit price. It didn’t fill sooner because nobody was willing to sell at your limit price any sooner.

Similarly, let’s look at order a82fb044-9b75-4641-8696-1e32ddd0436a to buy BDRX at 7.19. Below is a graph showing the ask price beginning when your order was created at 6:26:30.557 AM EST (market time). The green line is when your order filled at 6:27:14.004 AM EST. It filled when the ask price was at or below your limit price. This order actually filled over three partial fills. That typically wouldn’t happen very often in live trading. The paper trading simulator randomly creates partial fills to ensure the algo handles these partials gracefully. However, it’s the same principal. A buy order only fills if the ask price is at or below the limit price.

In summary, your orders filled exactly as expected, and probably as they would have filled in live trading. There were no “delays”.

Hope that all makes sense.

Hi Dan,

Thanks very much for your explanation. That all makes sense, I’ll need to modify my system to better account for NBBO spreads.

Best,

Tejas