Trades and pricing
Every trade fills at the next Pyth price after you sign it. No spread, no slippage, any size.
Markets
About 220 US stocks and ETFs: the names that have a live price in every session (pre-market, regular, after-hours and overnight), filtered for liquidity. Only single stocks and unleveraged ETFs are listed; leveraged and inverse ETFs, futures and anything without overnight prices are excluded. The exact list depends on Pyth Pro's 24/5 coverage and is an open item.
Each stock is one market with its own instrument ID. Markets are added by the contract owner. A market that has to be removed (merger, delisting, anything anomalous) is retired, never deleted; see Retiring a market.
Pricing and fills
The reference price comes from Pyth Pro, using the stream for the current session (pre-market, regular, after-hours or overnight). Chainlink's 24/5 US equities streams are a second source on the roughly 66 names they cover: if the two disagree by more than a set tolerance, the fill waits. An independent market-data feed (Databento) is used off-chain to detect halts and bad prints; it never sets a price.
The oracle's market-status flag must match the session the exchange thinks it is in. If it does not, nothing fills.
Every open and close is a two-step fill:
- The trader's session key signs an order with a timestamp
t. - The relayer submits it. A keeper fills it with the first price whose publish time is at least
tplus the session's fill delay (1 second in the regular session, 2 in pre-market and after-hours, 3 overnight), and no more than 3 seconds older than the block it lands in. - If no such price arrives within 30 seconds, the order expires unfilled.
The trader never fills at a price they had already seen when they clicked. That removes the main way a faster feed beats an oracle-priced exchange.
A fill is rejected, and the order waits or expires, if:
- the price is older than 3 seconds, or the oracle's market status does not match the session;
- the market is outside its open window for that action;
- the open would push the house past one of its risk limits on the crowded side;
- the position is over the tier's maximum size or leverage.
There is no slippage and no spread: the fill price is the Pyth price, whatever the size.