Alpaca Spreads VS Robinhood

Hello,

I used to trade with robinhood and spreads were on average around 1% (checked thousands of trades).
For the same type of trades in Alpaca Paper Trading the spreads seem extremely high: ~4% on average. I can really tell the difference on my accound after I place a high number of trades.

Is Alpaca taking any profit from spreads? coudnt find documentation about it.

Thank you

I’ve noticed the opposite. Can you show some examples?

Spreads on Alpaca paper trading are extremely low for me < 1%.

Also might have to do with which securities you’re trading. What securities are you trading?

Interesting…
I am testing 320 securities, Low share value >$1 and <$5. The same ones in robinhood have a much lower spread. Which securities are you trading?

Some examples of the very high ones: (this is an extraction of a 306 total trades, average spread = 11%). I compared with robinhood, and it is 4/5 times lower.
|Symb|askPrice|bidPrice|Spread|
|SNCR|5.5|2.87|91.6%|
|PIM|5.28|3.06|72.5%|
|GMLP|3.56|2.1|69.5%|
|SNDE|2.51|1.49|68.5%|
|LEDS|3.86|2.31|67.1%|
|KIN|4.81|2.89|66.4%|
|MTSL|1.62|0.975|66.2%|
|VBLT|1.62|0.98|65.3%|
|BPT|2.75|1.67|64.7%|
|ANY|2.12|1.3|63.1%|
|SLS|4.58|2.82|62.4%|
|AGTC|5.58|3.44|62.2%|
|APOP|3.16|1.95|62.1%|
|USEG|5|3.09|61.8%|
|SINO|2.73|1.69|61.5%|
|MOGU|2.85|1.77|61.0%|

I just made a quick comparison today at 10AM. Comparisons are made at the exact same time.
Alpaca is 90% of the times higher than Robinhood and significantely higher.

(Legend: ask price, bid price, spread%)

BPTH RH: 3.38 3.32 1.81 % AL: 3.45 3.32 3.92 %
AEY RH: 3.2 3.14 1.91 % AL: 3.17 3.07 3.26 %
CAN RH: 3.61 3.6 0.28 % AL: 3.6 3.54 1.69 %
PHIO RH: 2.51 2.43 3.29 % AL: 2.48 2.42 2.48 %
MYT RH: 1.76 1.75 0.57 % AL: 1.83 1.69 8.28 %
XELB RH: 1.11 1.06 4.72 % AL: 1.14 1.01 12.87 %
HUSA RH: 1.67 1.66 0.6 % AL: 1.73 1.65 4.85 %
TRUE RH: 4.07 4.06 0.25 % AL: 4.09 4.05 0.99 %
BWEN RH: 4.43 4.37 1.37 % AL: 5.92 4.34 36.41 %
MOHO RH: 2.5 2.44 2.46 % AL: 2.54 2.37 7.17 %
NEPT RH: 1.75 1.74 0.57 % AL: 1.75 1.74 0.57 %
INPX RH: 1.05 1.04 0.96 % AL: 1.06 1.03 2.91 %
MARK RH: 1.47 1.46 0.68 % AL: 1.47 1.46 0.68 %
ASTC RH: 1.85 1.83 1.09 % AL: 1.85 1.82 1.65 %
RCON RH: 1.27 1.25 1.6 % AL: 1.57 1.2 30.83 %
CDEV RH: 1.26 1.25 0.8 % AL: 1.28 1.25 2.4 %
SINT RH: 1.95 1.94 0.52 % AL: 1.95 1.93 1.04 %
PTI RH: 1.04 1.03 0.97 % AL: 1.09 1 9.0 %
LLNW RH: 4.28 4.27 0.23 % AL: 4.28 4.27 0.23 %
AMPY RH: 1.12 1.09 2.75 % AL: 1.16 1.09 6.42 %
RMTI RH: 1.09 1.08 0.93 % AL: 1.1 1.08 1.85 %
UONEK RH: 1.4 1.38 1.45 % AL: 1.4 1.33 5.26 %
CPRX RH: 3.61 3.6 0.28 % AL: 3.61 3.6 0.28 %

Well I have to admit, you may have proved me wrong. If that data is accurate it’s certainly compelling and seemingly a serious problem.

I’d have to really look into your methods to be completely convinced, but I’m not sure I have the time or motivation.

I do have a 2 suggestions though for what you can do about it:
A) Arbitrage $
B) Contact FINRA https://www.finra.org/investors/have-problem/file-complaint

mhopper, this is no special method. Just using the API funcions from both to get the bid and ask prices and compare.
I just noticed because after placing a bunch of orders, Alpaca was showing a more negative profit than I expected and I didnt get that at all in robinhood.
I just run another example with random securities (see picture).

I’d like to hear from Alpaca about this.

1 Like

One thing to be cognizant of. The quotes fetched on Alpaca are provided by 3rd party data providers (either Polygon or IEX). They do not necessarily represent the bid/ask data the exchange or market maker executing the order uses to actually fill the orders. Alpaca doesn’t actually execute the orders. They are passed onto other executing entities. The bid/offer data they are using to actually fill orders will more than likely be different from the data one fetches in an API call. Robinhood is a little different in that they do their own clearing.

Why are quotes so different? The bid/ask data for odd lot orders (ie orders less than 100 shares) are sometimes not included in all quote streams. The polygon data is quite comprehensive and includes quotes from 16 different market participants. Robinhood data, because they do their own clearing, may only include the subset of exchanges/markets they participate in. This higher diversity is probably what drives higher spreads in the Polygon data.

Often odd lot quotes are only used to fill orders on the exchange where they originated. Only round lot quotes (ie orders of multiples of 100) are used to determine the National Best Bid Offer (NBBO) prices and therefore common across all exchanges. If you look at the quantity for many quotes they are not in multiples of 100. This is a telltale sign the quote will never reach all exchanges. If an odd lot order was routed to an exchange different from the quoting exchange there is a good chance it would never get matched against the other exchanges quote.

So, for odd lot orders, without knowing the quote size, the exchange where it originated, where ones order is actually routed, and the odd lot processing rules on that particular exchange, the bid/offer spread quoted by Polygon, or some other data provider, is somewhat meaningless. However, if one is trading in round lot orders, then the only appropriate quotes to be looking at are those in multiples of 100. Those are regulated by the SEC and what round lot orders are filled against across all exchanges (ie NBBO prices).

I’ve had to create a max spread limit to stop it from opening positions considering those spreads. And I check spreads several times for a few minutes before I place the order, but sometimes it just stays very high.
About 30% of my positions fail to open because of these.

@Dan_Whitnable_Alpaca

I have the same issue. See below highlighted quotes from real time API vs. historical client. How can I filter out the other quotes?