The SIPs are the reason a US stock has one national best bid and offer rather than one per venue, and they are where Massive's stock data comes from. Understanding them explains several things that otherwise look like quirks in the data: why quotes have a single price rather than a venue-by-venue list, and why a trade carries both a participant timestamp and a SIP timestamp.
Applies to
- Plans: every plan.
- Endpoints: every stocks endpoint. /v3/reference/exchanges lists the SIPs alongside the venues.
- Asset classes: US stocks and ETFs. Options have their own equivalent, OPRA.
What they actually do
What they actually do is three jobs, and the third is the one people care about:
- Collect. Every exchange is required to report its quotes and trades to the SIP for the securities it trades.
- Consolidate. The SIP merges those feeds into one stream, so a consumer sees the market rather than a venue.
- Compute the NBBO. From all the venues' best quotes, the SIP publishes the single best bid and best offer across the market, which is the number a broker is measured against.
Why they matter to your data
They matter to your data in three ways, and you can see them in the exchanges list first, alongside the venues they consolidate:
curl -X GET "https://api.massive.com/v3/reference/exchanges?asset_class=stocks&apiKey=YOUR_API_KEY"
Response
{
"results": [
{ "id": 5, "type": "SIP", "name": "Unlisted Trading Privileges" },
{ "id": 13, "type": "SIP", "name": "Consolidated Tape Association" },
{ "id": 4, "type": "TRF", "mic": "XADF", "name": "FINRA Alternative Display Facility" }
],
"status": "OK"
}
They matter to your data because they explain three things you will meet in Massive's responses. The sip_timestamp on a trade is when the SIP received it, and the participant_timestamp is when the exchange generated it, so the gap between them is the SIP's own processing rather than ours. The NBBO you get from /v3/quotes is a consolidated quote, which is why it is one level deep and cannot be turned into market depth. And a trade's exchange id may be a reporting facility rather than a venue, because off-exchange prints reach the tape the same way.
Why not take the exchange feeds directly
Direct exchange feeds exist and are faster, but they are separate products, licensed per venue, and using them means computing the national best bid and offer yourself. Two vendors doing that independently will disagree about the touch at some moments, which makes reconciliation between systems harder for everyone. The consolidated tape is a common reference that the whole market is bound by, which is the right basis for data that is going to be compared against a broker statement or another vendor.
If you see an error
A sip_timestamp later than the participant_timestamp is expected on every trade, not a data problem.
Two vendors disagreeing on a quote at the millisecond usually means one of them is on direct feeds and the other on the tape.
An exchange value that is not a venue you recognize is probably a reporting facility. The exchanges endpoint labels each record with a type.

