Paper trading order fulfillment delay

I am seeing anywhere from 1 to 5 second delay in order fulfillment for Market orders being submitted to my paper account. Below is one example. I did some searching and found some discussions on this issue and Alpaca claims it was fixed, but those threads were from 2022 and earlier.
Is this to be expected, or something that Alpaca team needs to look at. I have filed a service request but have not heard much back from them.
Thanks for any insights!

Order({ ‘asset_class’: ‘us_equity’,
‘asset_id’: ‘8ccae427-5dd0-45b3-b5fe-7ba5e422c766’,
‘canceled_at’: None,
‘client_order_id’: ‘caa27ff0-0461-4bdd-9da7-01c81ec6fd8b’,
‘created_at’: ‘2023-12-20T16:21:00.676787Z’,
‘expired_at’: None,
‘extended_hours’: False,
‘failed_at’: None,
‘filled_at’: ‘2023-12-20T16:21:04.339288Z’,
‘filled_avg_price’: ‘257.800681’,
‘filled_qty’: ‘367’,
‘hwm’: None,
‘id’: ‘c2177e7f-32fb-422b-9024-1dfea381662e’,
‘legs’: None,
‘limit_price’: None,
‘notional’: None,
‘order_class’: ‘’,
‘order_type’: ‘market’,
‘qty’: ‘367’,
‘replaced_at’: None,
‘replaced_by’: None,
‘replaces’: None,
‘side’: ‘buy’,
‘source’: ‘access_key’,
‘status’: ‘filled’,
‘stop_price’: None,
'submitted_at’: ‘2023-12-20T16:21:00.684911Z’,
‘subtag’: None,
‘symbol’: ‘TSLA’,
‘time_in_force’: ‘day’,
‘trail_percent’: None,
‘trail_price’: None,
‘type’: ‘market’,
‘updated_at’: ‘2023-12-20T16:21:04.342025Z’})

Anyone have any experience with this? I have not heard anything from Alpaca support in three or four days after giving them the above order info. TSLA is a highly liquid stock, I would not expect to see several seconds in order fullfillment delays.
Thanks for any help or insights.

@torobot The paper trading environment tries to simulate live trade execution but it is just a simulation. One paper trading behavior is the random application of ‘partial fills’. Partial fills are very real in live trading and is the reason they are included in paper trading. That is the reason this specific order took so long to fill. There were 6 partial fills required to fill the entire order (see below). Would this happen in live trading? Maybe, but as noted TSLA is a highly traded stock. The paper trading simulation rules don’t take liquidity into account and simply apply a randomizing function. This can create the opposite issue if, for example, one tries to buy 1,000,000 shares of a stock which only trades 500,000 shares on an average day. The simulation gladly fills those million shares which, in live trading, might not happen.

These are just a few of the limitations of the paper trading environment.

Transaction Time Side Symbol Order Status Avg Price Qty
2023-12-20T08:21:00.684911-08:00 buy TSLA new 0 0
2023-12-20T08:21:01.175435-08:00 buy TSLA partially_filled 257.8 27
2023-12-20T08:21:01.758957-08:00 buy TSLA partially_filled 257.8 314
2023-12-20T08:21:02.510773-08:00 buy TSLA partially_filled 257.80034 12
2023-12-20T08:21:03.171761-08:00 buy TSLA partially_filled 257.80058 9
2023-12-20T08:21:03.813284-08:00 buy TSLA partially_filled 257.800683 4
2023-12-20T08:21:04.339288-08:00 buy TSLA filled 257.800681 1

Thanks @Dan_Whitnable_Alpaca ! I thought that may be the case after doing more research.
With regard to slippage (actual order fill price vs. the current bid/ask for Market orders) - what is the simulation doing there to mimic live trading? I know this is difficult to simulate. In my application which is doing a lot of trading, slippage can have a drastic effect on the outcome and I am seeing a fair bit using the paper trading simulations.

@torobot Slippage is an interesting topic and can mean different things in different scenarios. Most typically, a ‘slippage’ factor is applied to a simulation, or expected return, because the simulation is filling orders at the latest (ie current) trade price. That of course is not realistic because 1) that was a trade which happened in the past and 2) one doesn’t know anything about that trade. Your trade almost certainly won’t fill at that price. A ‘slippage’ factor is therefore applied to each fill as an attempt to estimate what the order would have filled at.

Alpaca’s paper trading environment doesn’t rely on last trade prices to simulate fills. Alpaca uses the actual live quote prices. Market buy orders fill at the current ask price. Market sell orders fill at the current bid. This is very typical, and should be the expectation, of how a live order will fill. Since fill prices are not being ‘estimated’ by the last trade price no ‘slippage’ really needs to be applied to account for that.

Another reason for slippage is to account for how ones order impacts price. If one submitted an order to buy 1 million shares of a stock with low liquidity, the price may rise above the current ask. However, for most reasonable size orders for reasonably liquid stocks this is never an issue. Part of the reason is Alpaca orders generally execute off-exchange and do not directly interact with displayed orders and quotes. The market maker executing the orders will generally create liquidity to fill the order independent of other existing retail orders therefore one’s order does not impact price. In fact, they are typically required to fill orders at the existing quote.

What are you seeing which makes you feel “I am seeing a fair bit [of slippage] using the paper trading simulations”.