Bid-Ask Spread: Wetin E Cost to Trade
Learn wetin bid-ask spread mean, how to calculate am, and wetin e cost per trade, with real US stock spreads from tick-level quote data.
Bid-ask spread na the gap between the highest price wey any buyer dey ready to pay now for stock (the bid) and the lowest price wey any seller dey ready to accept (the ask). Na the built-in cost of trading: buy at the ask, sell at the bid, and the difference remain with the person or firm wey provide the quote. Every spread figure for this page come from tick-level quote data, and exact query wey produce each number dey attached to am.
Bid-ask spread na wetin? Plain-English meaning
For any time during trading day, stock get two prices, no be one. Bid na the best offer wey dey wait to buy. Ask, wey dem sometimes call offer, na the best offer wey dey wait to sell. Bid-ask spread na the gap between both.
Make we use hypothetical example: if stock quote na $20.00 bid / $20.05 ask, the spread na five cents. Anybody wey wan buy immediately go pay $20.05. Anybody wey wan sell immediately go receive $20.00. That nickel no be brokerage fee. Na the price of immediacy, and e go give the trader for the other side of the quote. Most times, na professional market maker dey there, ready to buy at the bid and sell at the ask throughout the session.
For US stocks, dem dey combine the best bid and best ask across every exchange into one national best bid and offer, the NBBO. Na this quote your brokerage app dey show, and na this data this post dey measure. (For Finance, dem dey use "spread" for other gaps too: the 2s10s spread na difference between Treasury yields, no be stock prices.)
Bid versus ask: how to read stock quote
Below na real NBBO record for Apple, the last quote for our data window, wey come from consolidated feed.
| stock | bid price | ask price | spread | midpoint price | spread pct | quote time et |
|---|---|---|---|---|---|---|
| AAPL | 327.60 | 327.84 | 0.24 | 327.72 | 0.073 | 2026-09-03 19:59 |
The exact SQL behind every number
SELECT stock,
toDecimalString(bid, 2) AS bid_price,
toDecimalString(ask, 2) AS ask_price,
toDecimalString(ask - bid, 2) AS spread,
toDecimalString((ask + bid) / 2, 2) AS midpoint_price,
round((ask - bid) / ((ask + bid) / 2) * 100, 3) AS spread_pct,
quote_time_et
FROM (
SELECT ticker AS stock,
argMax(toFloat64(bid_price), sip_timestamp) AS bid,
argMax(toFloat64(ask_price), sip_timestamp) AS ask,
formatDateTime(toTimeZone(max(sip_timestamp), 'America/New_York'), '%Y-%m-%d %H:%i') AS quote_time_et
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= now() - INTERVAL 7 DAY
AND bid_price > 0
AND ask_price > bid_price
GROUP BY ticker
)Read am from left to right: best bid na $327.60, best ask na $327.84, and spread, wey be ask minus bid, na $0.24, recorded at 2026-09-03 19:59 ET. The midpoint, $327.72, dey exactly halfway between both prices, and na the normal reference for stock fair value for that moment.
One important detail be say this quote show near the end of extended session, hours after closing bell. Time matter for spreads. The intraday chart down below show how much e matter.
How to calculate spread: cents, percent, and basis points
The same gap fit show in three ways:
- Dollars and cents. Spread = ask minus bid. E simple, but e hard to compare am across stocks wey dey trade at different prices.
- Percent. Spread ÷ midpoint × 100. Five-cent spread for $20 stock na 0.25% of the price; that same five cents for $200 stock na 0.025%.
- Basis points (bps). Hundredths of a percent, na the professional convention. Multiply the percentage by 100: 0.25% equal 25 bps.
For the real Apple quote wey we show above: $0.24 ÷ $327.72 come to 0.073% of the share price, na after-hours reading, and e still dey well below 1% of the price.
Tight vs. wide spreads: real numbers from liquid and thin stocks
Most explainers dey stop for “liquid stocks get narrow spreads.” Na the real size of the difference be this, measured across every NBBO update inside one recent multi-day window. The table pair six heavily traded names with two genuinely thin small caps, Nathan's Famous (NATH) and Seneca Foods (SENEA). “Typical” mean the median quote for the window, and the last column convert the spread to dollars for 100-share round trip. Cents per share and dollars per 100 shares na the same number.
| ticker | typical spread cents | typical spread bps | spread cost for 100 shares |
|---|---|---|---|
| SPY | 2 | 0.3 | 2.00 |
| AAPL | 3 | 0.9 | 3.00 |
| NVDA | 2 | 0.9 | 2.00 |
| MSFT | 9 | 1.7 | 9.00 |
| KO | 1 | 1.1 | 1.00 |
| TSLA | 8 | 2.1 | 8.00 |
| NATH | 129 | 132.5 | 129.00 |
| SENEA | 167 | 82.4 | 167.00 |
The exact SQL behind every number
SELECT ticker,
round(median_spread_usd * 100, 1) AS typical_spread_cents,
round(median_spread_bps, 1) AS typical_spread_bps,
toDecimalString(median_spread_usd * 100, 2) AS spread_cost_100_shares
FROM (
SELECT ticker,
quantileDeterministic(0.5)(toFloat64(ask_price - bid_price), toUInt64(sip_timestamp)) AS median_spread_usd,
quantileDeterministic(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), toUInt64(sip_timestamp)) * 10000 AS median_spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'NVDA', 'MSFT', 'KO', 'TSLA', 'NATH', 'SENEA')
AND sip_timestamp >= now() - INTERVAL 7 DAY
AND bid_price > 0
AND ask_price > bid_price
GROUP BY ticker
)
ORDER BY indexOf(['SPY', 'AAPL', 'NVDA', 'MSFT', 'KO', 'TSLA', 'NATH', 'SENEA'], ticker)Among the liquid names, SPY typical quoted spread measure 2¢, or 0.3 bps of the share price. Coca-Cola come at 1¢ (1.1 bps), while Tesla come at 8¢ (2.1 bps). Then the gap become very wide: Nathan's Famous measure 129¢ (132.5 bps), and Seneca Foods 167¢ (82.4 bps). Na the same market and the same rulebook, but liquidity dey cause the difference: how many buyers, sellers and market makers dey compete for each name at the same time.
Wetin spread dey cost for real trade
One useful way to understand spread na to price a round trip: buy for ask, then sell for bid one moment later. By doing that, you give up the full spread on every share. For 100 shares, conversion don dey for table above. The usual spread in cents per share na the same number in dollars. For the popular names, the cost na small like coffee money: $3.00 for 100 shares of Apple, and $1.00 for Coca-Cola. The thinly traded names get different bill: $129.00 for Nathan's Famous and $167.00 for Seneca Foods. This one na before any commission and before the order move the price. These figures assume say the order fill for the displayed quote. Order wey bigger pass the displayed size fit pay more.
When spreads dey widen: the open, the close, and after hours
Spreads no dey constant throughout the day. The chart below dey track Apple median quoted spread for 30-minute clock buckets (Eastern Time) across the same window, including extended hours. Na this pattern most explainers dey claim, but dem never show am.
| et time | median spread cents |
|---|---|
| 04:00 | 27 |
| 04:30 | 28 |
| 05:00 | 19 |
| 05:30 | 16 |
| 06:00 | 15 |
| 06:30 | 20 |
| 07:00 | 19 |
| 07:30 | 14 |
| 08:00 | 12 |
| 08:30 | 11 |
| 09:00 | 12 |
| 09:30 | 7 |
| 10:00 | 4 |
| 10:30 | 3 |
| 11:00 | 3 |
| 11:30 | 3 |
| 12:00 | 3 |
| 12:30 | 3 |
| 13:00 | 3 |
| 13:30 | 3 |
The exact SQL behind every number
SELECT formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(quantileDeterministic(0.5)(toFloat64(ask_price - bid_price), toUInt64(sip_timestamp)) * 100, 1) AS median_spread_cents
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= now() - INTERVAL 7 DAY
AND bid_price > 0
AND ask_price > bid_price
GROUP BY et_time
ORDER BY et_timeThe shape na U with tall edges: e wide before the open, e reduce to pennies for the middle of the day, then e wide again after the close. Four checkpoints from that curve, tied to clock time:
| et time | median spread cents |
|---|---|
| 04:00 | 27 |
| 09:30 | 7 |
| 13:00 | 3 |
| 16:00 | 12 |
The exact SQL behind every number
SELECT formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(quantileDeterministic(0.5)(toFloat64(ask_price - bid_price), toUInt64(sip_timestamp)) * 100, 1) AS median_spread_cents
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= now() - INTERVAL 7 DAY
AND bid_price > 0
AND ask_price > bid_price
GROUP BY et_time
HAVING et_time IN ('04:00', '09:30', '13:00', '16:00')
ORDER BY et_timeFor the 04:00 premarket bucket, wey be the first one for the day, Apple median spread measure 27¢. For the 09:30 bucket, wey cover the first half hour of regular trading, e drop to 7¢, while the 13:00 early-afternoon bucket dey at 3¢. The 16:00 bucket, wey start for closing bell together with the closing auction, jump to 12¢, and the gap remain high through the evening, reaching 13¢ for the final bucket of the session. During regular hours (9:30 a.m.–4 p.m. ET), dozens of market makers dey quote the stock at the same time. Outside those hours, during after-hours and premarket trading, far fewer quotes dey compete, so the gap dey wider.
Wetin dey make spread tight or wide
Four things dey usually go together with tight spreads:
- Competition. When market makers plenty and resting orders plenty for one name, quotes for both sides dey tighter. Thinly traded stock fit get only one active quoter wey dey set the whole market.
- Trading volume. Heavy volume and tight spreads dey show together across the table above. Names wey people dey trade well get gaps wey be small fraction of the gaps for thinly traded names.
- Volatility. For fast markets, dem dey re-price quotes nonstop, and the gap dey tend to stay wider until trading calm down.
- Share price and tick size. US stocks above $1 dey quote for one-cent increments, and one cent na the floor. The most liquid low-priced names dey spend plenty of the day for that level. For low-priced stock, that same minimum cent dey represent bigger percentage of every share.
How to keep your spread costs low
- Limit orders dey set the price. Market order go take any quote wey dey available; limit order go fill only for the price wey you state or better. Buy order wey dey wait for bid fit earn the spread instead of paying am when seller come meet am. The trade-off be say e fit never fill.
- Liquid names for regular trading hours na the cheaper combination. Intraday chart above show the scale: spreads for liquid stocks dey tightest around midday.
- Basis points dey show wetin cents fit hide. Gap wey sound like small change fit represent meaningful part of one percent for thinly traded or low-priced stock, as the small-cap rows above show.
- Fewer round trips mean smaller toll. Every round trip pay the spread once. Total cost dey increase based on how often position turn over.
Bid-ask spread FAQ
Good bid-ask spread na wetin?
No official threshold dey, but the table above show the scale: for the period wey we measure, SPY typical spread na 0.3 bps of the share price, while Tesla own na 2.1 bps. The thin small caps reach 132.5 and 82.4 bps. Single-digit basis points mean say spread tight. Once spread pass roughly 1% of the share price, limit order fit help reduce your cost.
Who dey keep bid-ask spread?
The person wey supply the quote, normally a market maker, dey earn the spread when both sides of the quote fill. Na compensation for staying ready to trade at any time. E no be fee wey your broker or the exchange collect.
Wide bid-ask spread good or bad?
Wide spread dey increase your cost for each round trip, as the 100-share cost column for the table above show. Wide spread also carry information: fewer participants dey quote, and the last trade price no too reliable as estimate of wetin your order go actually get.
Why ask price dey higher than bid?
Na so the system set am. Bid na the best price wey buyers ready to pay, while ask na the best price wey sellers ready to accept. Anytime the two meet, the exchange match dem into trade immediately and the quote move on. Any standing quote go always show ask at or above bid.
Bid-ask spread matter for long-term investors?
E matter less than e matter for active traders, and the data show the scale: 100-share round trip for SPY cost $2.00 in typical spread. If you pay am once every ten years, e no too matter. But if you dey pay thin-stock spread every week, the cost go compound into serious money.
Every number above dey come from stored, inspectable query. You fit expand the SQL under any panel to audit am. To measure spread for ticker wey you own, ask the same questions in plain English for the Strasmore terminal.