почему спреды шире при открытии рынка
Анализ данных тикового уровня показывает причины расширения спредов в первые полчаса торгов и скорость их сокращения в течение дня для акций и ETF.
В начале торгов спреды шире, чем в любой другой период регулярной сессии в США. Чем менее ликвидна акция, тем выше этот штраф. В представленном скользящем окне медианный бид-аск спред в первые полчаса торгов составил 3.34x от значений в полдень для Etsy (компании со средней капитализацией) и 2.02x для Apple. В то же время у SPY, самого часто цитируемого актива из трех, совокупный коэффициент составил 1x; этот стабильный показатель является следствием шага цены в один цент, а не свободного открытия. Данная страница рассчитывает время на основе котировок тикового уровня.
Стоимость спреда при исполнении рыночного ордера
У каждой акции одновременно есть две цены: bid (лучшее предложение на покупку) и ask (лучшее предложение на продажу). Разница между ними называется бид-аск спредом. Рыночный ордер — сделка по текущей лучшей доступной цене — учитывает этот разрыв: покупка осуществляется по цене ask, продажа — по цене bid. Разницу получает тот, кто выставил котировку, обычно это маркетмейкер. Ниже рассматриваются два свойства этой котировки: она привязана ко времени, когда максимальная стоимость наблюдается в утренние часы, и она изменяется шагами в один цент. Минимальный спред у дорогого ETF и у гораздо более дешевой акции средней капитализации может быть одинаковым и составлять один цент.
График спреда: одна форма, три уровня ликвидности
На графике представлены три уровня ликвидности: SPY (ETF на индекс S&P 500), Apple (акция с мега-капитализацией) и Etsy (акция со средней капитализацией). Каждое обновление NBBO — лучшие котировки спроса и предложения по всему рынку, которые отображает ваш брокер (подробнее в нашем объяснении NBBO) — за недавний многодневный период распределено по 30-минутным интервалам регулярной сессии. Медианный спред для каждого интервала разделен на минимальный спред данного актива; значение один означает максимально узкий спред.
Точный SQL-код для каждого числа
SELECT et_time,
round(anyIf(rel, ticker = 'SPY'), 2) AS spy_x,
round(anyIf(rel, ticker = 'AAPL'), 2) AS aapl_x,
round(anyIf(rel, ticker = 'ETSY'), 2) AS etsy_x
FROM (
SELECT ticker,
et_time,
median_bps / min(median_bps) OVER (PARTITION BY ticker) AS rel
FROM (
SELECT ticker,
formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
quantileExact(0.5)(toFloat64(ask_price - bid_price) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000) AS median_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'ETSY')
AND sip_timestamp >= toDateTime(today() - 14)
AND sip_timestamp < toDateTime(today() - 3)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
AND bid_price > 0
AND ask_price > bid_price
GROUP BY ticker, et_time
)
)
GROUP BY et_time
ORDER BY et_timeВ учебниках внутридневной паттерн называют U-образным: широкий спред на открытии, узкий в середине дня и расширяющийся к закрытию. В данном исследовании для активов с волатильным спредом график напоминает склон: Etsy открылась на уровне 5.78x от минимального значения, к 10:30 показатель снизился до 2.99x, а к обеду составил 1.86x; Apple открылась на уровне 3.04x. Для всех трех активов самый узкий полуторачасовой интервал приходится на конец сессии — 1x, 1x, 1x. Таким образом, расширение спреда, которое трейдеры связывают с «закрытием», относится к продленной сессии после закрытого аукциона.
Линия SPY практически горизонтальна: 1x в первом интервале, 1x в обеденное время. Медианный спред не меняется в течение всего дня. Это не отсутствие премии на открытии, а эффект минимального шага цены.
Сетка ценных бумалей стоимостью в один цент: где скрывается премия в наиболее ликвидных активах
Медианный спред SPY составляет 2¢ на открытии и 2¢ в середине дня. Поскольку значения совпадают, медиана не дает дополнительной информации. Однако данные о распределении цен важны. В этой панели указана доля обновлений котировок с минимальным шагом в один цент за каждые полчаса.
Точный SQL-код для каждого числа
SELECT et_time,
round(100 * countIf(ticker = 'SPY' AND spread_c <= 1.0001) / countIf(ticker = 'SPY'), 1) AS spy_pct_penny,
round(100 * countIf(ticker = 'AAPL' AND spread_c <= 1.0001) / countIf(ticker = 'AAPL'), 1) AS aapl_pct_penny,
round(100 * countIf(ticker = 'ETSY' AND spread_c <= 1.0001) / countIf(ticker = 'ETSY'), 1) AS etsy_pct_penny
FROM (
SELECT ticker,
formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
toFloat64(ask_price - bid_price) * 100 AS spread_c
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'ETSY')
AND sip_timestamp >= toDateTime(today() - 14)
AND sip_timestamp < toDateTime(today() - 3)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
AND bid_price > 0
AND ask_price > bid_price
)
GROUP BY et_time
ORDER BY et_timeВ течение первого получаса после открытия SPY удерживал минимальный спред в один цент в 20.7% случаев, а в последнем получасе — в 43.1% случаях. У Apple этот показатель составил 3.1% против 30.6%; у Etsy — 0.2% против 8.3%. Все активы открываются с более широким спредом, чем закрываются, и хвост распределения также смещается: 90-й процентиль спреда SPY на открытии составил 4¢ против 3¢ в середине дня — это в 1.32 раза больше, в то время как медиана показала лишь 1x. В SPY присутствует премия, но сетка цен в один цент слишком грубая, чтобы медиана ее зафиксировала.
Почему спреды шире в момент открытия?
В первые полчаса торговли одновременно действуют три фактора, ни один из которых не сохраняется к обеду.
- Накопленная за ночь информация поступает одновременно. В период с закрытия в 16:00 до следующего утреннего аукциона открытия рынок не ведет непрерывных торгов. За семнадцать с половиной часов накапливается много данных: отчеты, прогнозы, результаты зарубежных сессий. Первые котировки ориентируются на ценовой разрыв, а не на цену предыдущего закрытия.
- Процесс определения цены еще не завершен. Аукцион сводит весь объем накопленной информации в одну цену; затем рынку требуется несколько минут, чтобы определить диапазон вокруг нее. Переоценка котировок происходит быстрее всего именно в этот период поиска.
- Стакан заявок еще не заполнен. Премаркетинговая торговля характеризуется малым количеством участников; при этом открытие биржи не обновляет стакан мгновенно.
Влияние приостановки торгов на временной фактор
Приостановка торгов — это крайнее проявление тех же механизмов. Согласно правилам LULD (limit up-limit down), если цена акции выходит за пределы установленного диапазона относительно ее недавнего среднего значения, следует пятиминутная пауза; биржа также может приостановить торги в ожидании важных новостей. Во время приостановки двусторонних котировок для совершения сделок нет — односторонний или перекрестный стакан на экране не является доступным для торговли рынком. Торги возобновляются через аукцион открытия, первые котировки которого несут в себе нагрузку по обработке накопленной информации и определению цены, сопоставимую с нагрузкой в 9:30, но сжатую до нескольких минут. Акции, торги которыми приостановлены вблизи открытия, дважды платят за этот избыточный спрос.
Премаркет — это другой рынок
Обычно утверждают, что основным фактором является низкая ликвидность стакана заявок; данный раздел оценивает этот фактор. Используются те же инструменты и тот же временной интервал, пять фаз торгового дня, в базисных пунктах (bps) — сотых долях процента от цены акции, что позволяет сравнивать активы с разной стоимостью.
Точный SQL-код для каждого числа
SELECT phase,
round(quantileExact(0.5)(spy_b), 2) AS spy_bps,
round(quantileExact(0.5)(aapl_b), 2) AS aapl_bps,
round(quantileExact(0.5)(etsy_b), 2) AS etsy_bps
FROM (
SELECT multiIf(et_min >= 240 AND et_min < 420, 'Premarket 04:00-07:00',
et_min >= 420 AND et_min < 570, 'Premarket 07:00-09:30',
et_min >= 570 AND et_min < 600, 'Open 09:30-10:00',
et_min >= 720 AND et_min < 840, 'Midday 12:00-14:00',
et_min >= 960 AND et_min < 1200, 'After-hours 16:00-20:00', 'other') AS phase,
if(ticker = 'SPY', spread_bps, NULL) AS spy_b,
if(ticker = 'AAPL', spread_bps, NULL) AS aapl_b,
if(ticker = 'ETSY', spread_bps, NULL) AS etsy_b
FROM (
SELECT ticker,
toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60
+ toMinute(toTimeZone(sip_timestamp, 'America/New_York')) AS et_min,
toFloat64(ask_price - bid_price) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000 AS spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'ETSY')
AND sip_timestamp >= toDateTime(today() - 14)
AND sip_timestamp < toDateTime(today() - 3)
AND bid_price > 0
AND ask_price > bid_price
)
WHERE phase != 'other'
)
GROUP BY phase
ORDER BY indexOf(['Premarket 04:00-07:00', 'Premarket 07:00-09:30', 'Open 09:30-10:00', 'Midday 12:00-14:00', 'After-hours 16:00-20:00'], phase)Премаркет — это не просто менее качественное открытие; это другой рынок. Медианный спред котировок Etsy составлял 306.25 bps в период с 4:00 до 7:00 по восточному времени и 307.57 bps с 7:00 до открытия биржи, при этом в первые полчаса торгов он составил 30.79 bps, а в середине дня — 9.21 bps. Это процентные пункты от цены, а не центы. Спред Apple составлял 9.82 bps в ранний период против 0.96 bps в середине дня; даже у SPY спред расширялся с 0.8 bps до 0.27 bps. После закрытия в 16:00 ширина спреда возвращается к прежним значениям: 240.45 bps для Etsy и 6.99 bps для Apple.
The bill in cents: the open vs. midday
Costs arrive in cents. The table prices the same names — median spread over the opening half hour (9:30–10:00 a.m. ET) against midday (noon–2:00 p.m. ET), the 90th-percentile quote in each window, the quote-update counts, and the excluded one-sided, locked, or crossed quotes.
Точный SQL-код для каждого числа
SELECT ticker,
round(countIf(isNotNull(spread_cents)) / 1e6, 2) AS valid_updates_m,
round(quantileExactIf(0.5)(spread_cents, clock_min BETWEEN 810 AND 839), 2) AS open30_cents,
round(quantileExactIf(0.5)(spread_cents, clock_min BETWEEN 960 AND 1079), 2) AS midday_cents,
round(quantileExactIf(0.5)(spread_bps, clock_min BETWEEN 810 AND 839), 2) AS open30_bps,
round(quantileExactIf(0.5)(spread_bps, clock_min BETWEEN 960 AND 1079), 2) AS midday_bps,
round(quantileExactIf(0.5)(spread_bps, clock_min BETWEEN 810 AND 839)
/ quantileExactIf(0.5)(spread_bps, clock_min BETWEEN 960 AND 1079), 2) AS open_vs_midday_x,
round(quantileExactIf(0.9)(spread_cents, clock_min BETWEEN 810 AND 839), 2) AS open30_p90_cents,
round(quantileExactIf(0.9)(spread_cents, clock_min BETWEEN 960 AND 1079), 2) AS midday_p90_cents,
round(quantileExactIf(0.9)(spread_bps, clock_min BETWEEN 810 AND 839), 2) AS open30_p90_bps,
round(quantileExactIf(0.9)(spread_bps, clock_min BETWEEN 810 AND 839)
/ quantileExactIf(0.9)(spread_bps, clock_min BETWEEN 960 AND 1079), 2) AS p90_x,
toString(countIf(isNull(spread_cents))) AS dropped_onesided_locked_crossed
FROM (
SELECT ticker,
toHour(sip_timestamp) * 60 + toMinute(sip_timestamp) AS clock_min,
if(bid_price > 0 AND ask_price > bid_price, toFloat64(ask_price - bid_price) * 100, NULL) AS spread_cents,
if(bid_price > 0 AND ask_price > bid_price, toFloat64(ask_price - bid_price) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, NULL) AS spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'ETSY')
AND sip_timestamp >= toDateTime(today() - 14)
AND sip_timestamp < toDateTime(today() - 3)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
)
GROUP BY ticker
ORDER BY indexOf(['SPY', 'AAPL', 'ETSY'], ticker)Cents per share and dollars per 100 shares are the same number, so the table is a bill: a 100-share round trip in Etsy at the median opening quote gives up $24 against $7 at midday quotes; Apple, $6 against $3. The premium climbs as the tape thins — 1x for SPY, 2.02x for Apple, 3.34x for Etsy, whose 0.19 million quote updates are a small fraction of Apple's 8.97 million. The tier swamps the clock: SPY's opening half hour, 0.27 bps, is tighter than Etsy's calmest midday (9.21 bps), whose worst-decile open measured 75.67 bps.
Проявляется ли премия в каждой сессии?
Объединение котировок за несколько дней для расчета медианы отвечает на вопрос о временном окне, а не о конкретном утре. Данная панель пересчитывает соотношение цены открытия к цене в середине дня для каждой сессии отдельно: типичной сессии, самой спокойной, худшей и акции с самым широким спредом при открытии.
Точный SQL-код для каждого числа
SELECT ticker,
count() AS sessions,
round(quantileExact(0.5)(ratio), 2) AS median_session_x,
round(min(ratio), 2) AS calmest_session_x,
round(max(ratio), 2) AS worst_session_x,
round(100 * countIf(ratio > 1) / count(), 0) AS pct_sessions_open_wider
FROM (
SELECT ticker,
toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS session_date,
quantileExactIf(0.5)(spread_bps, clock_min BETWEEN 810 AND 839)
/ quantileExactIf(0.5)(spread_bps, clock_min BETWEEN 960 AND 1079) AS ratio
FROM (
SELECT ticker,
sip_timestamp,
toHour(sip_timestamp) * 60 + toMinute(sip_timestamp) AS clock_min,
toFloat64(ask_price - bid_price) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000 AS spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'ETSY')
AND sip_timestamp >= toDateTime(today() - 14)
AND sip_timestamp < toDateTime(today() - 3)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
AND bid_price > 0
AND ask_price > bid_price
)
GROUP BY ticker, session_date
HAVING countIf(clock_min BETWEEN 810 AND 839) > 0
AND countIf(clock_min BETWEEN 960 AND 1079) > 0
)
GROUP BY ticker
ORDER BY indexOf(['SPY', 'AAPL', 'ETSY'], ticker)В течение 7 сессий цена открытия была выше цены в середине дня в 71% случаев для SPY, в 100% случаев для Apple и в 100% случаев для Etsy. Премия типичной сессии составила: 1x для SPY — у самого ликвидного актива на рынке даже при стабильном расширении спред остается почти незаметным — против 2.03x для Apple и 3.29x для Etsy, где премия очевидна. Основной вывод заключается в дисперсии: в самый спокойный утренний период Etsy цена открытия составляла 2.08x от цены в середине дня, в худший — 4.5x. Премия при открытии — это среднее значение и статистический выброс, а не гарантия на завтрашние 9:31.
Стресс-тест: утро MU 7 июля 2026 года
Скользящие окна сглаживают показатели отдельных дней, поэтому мы зафиксировали один конкретный случай: разбор ситуации с Micron во вторник, 7 июля 2026 года, в рамках полупроводникового ралли обзора того дня.
Точный SQL-код для каждого числа
WITH prev AS (
SELECT argMax(toFloat64(close), window_start) AS prev_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'MU'
AND window_start >= '2026-07-06 13:30:00'
AND window_start < '2026-07-06 20:00:00'
),
day AS (
SELECT argMin(toFloat64(open), window_start) AS day_open
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'MU'
AND window_start >= '2026-07-07 13:30:00'
AND window_start < '2026-07-07 20:00:00'
)
SELECT round((SELECT prev_close FROM prev), 2) AS prior_close,
round((SELECT day_open FROM day), 2) AS jul7_open,
round(((SELECT day_open FROM day) - (SELECT prev_close FROM prev)) / (SELECT prev_close FROM prev) * 100, 1) AS overnight_gap_pctMU закрылась на уровне $984.31 и открылась на уровне $923.01 — ночной гэп составил -6.2%. Спред в течение дня:
Точный SQL-код для каждого числа
SELECT et_time,
median_spread_cents,
median_spread_bps,
round(100 * median_spread_cents / max(median_spread_cents) OVER (), 1) AS pct_of_widest,
dropped_onesided_locked_crossed
FROM (
SELECT formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price) * 100, bid_price > 0 AND ask_price > bid_price), 1) AS median_spread_cents,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price > bid_price), 1) AS median_spread_bps,
toString(countIf(NOT (bid_price > 0 AND ask_price > bid_price))) AS dropped_onesided_locked_crossed
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'MU'
AND sip_timestamp >= '2026-07-07 13:30:00'
AND sip_timestamp < '2026-07-07 20:00:00'
GROUP BY et_time
)
ORDER BY et_timeПоказатели менялись во времени. Медианный спред MU в первые полчаса торгов составил 62¢ — при цене открытия акции $923.01, что соответствует 6.7 б.п. — это самый широкий получасовой интервал за всю сессию. В следующем интервале медиана составила 45¢, затем 39¢ в полдень и 38¢ в последние полчаса. Рост премии произошел согласно графику, при этом уровень ликвидности оставался стабильным: даже в этот период спред MU в процентном отношении был ниже, чем при обычном открытии Etsy (30.79 б.п.).
::: Примечания к данным: окно, фильтры, метод
Панели SPY/Apple/Etsy используют скользящее окно: одиннадцать календарных дней обновлений NBBO, заканчивающихся за три дня до последнего обновления (с учетом задержки обработки данных). Панели регулярных торгов фильтруются по минутам UTC согласно летнему времени (EDT); проверка ниже подтверждает, что окно начинается в 9:30 по ET на обоих концах (570 — это 9:30 ET); при зимнем времени фильтр срабатывает и требует переработки. Панель фаз напрямую конвертируется в восточное время, охватывая период с 4:00 до 20:00 ET. Односторонние котировки (отсутствие bid или ask), а также заблокированные или перекрестные котировки (bid равен ask или выше ask) исключаются; для стабильности сессии учитываются только те сессии, где котировки есть в обоих окнах. Медианы и 90-е процентили точны; панели MU ограничены 6–7 июля 2026 года.
Точный SQL-код для каждого числа
SELECT toHour(toTimeZone(toDateTime(today() - 14) + toIntervalMinute(810), 'America/New_York')) * 60
+ toMinute(toTimeZone(toDateTime(today() - 14) + toIntervalMinute(810), 'America/New_York')) AS win_start_et_min,
toHour(toTimeZone(toDateTime(today() - 4) + toIntervalMinute(810), 'America/New_York')) * 60
+ toMinute(toTimeZone(toDateTime(today() - 4) + toIntervalMinute(810), 'America/New_York')) AS win_end_et_min:::
FAQ
What time of day are bid-ask spreads widest?
Premarket — Etsy's median quoted spread measured 306.25 bps between 4:00 and 7:00 a.m. ET against 9.21 bps midday. Inside regular hours the widest stretch is the first half hour after the open; the tightest, the last before the close.
Why does SPY's spread look flat at the open?
US stocks are quoted in whole cents, and SPY's median spread sits at 2¢ most of the day — too coarse a grid to register a small widening. Session by session its open still ran wider than its midday in 71% of sessions, and its 90th-percentile opening spread measured 4¢ against 3¢.
Is it bad to place a market order at the open?
It is among the most expensive stretches of the regular session for demanding immediacy — $24 against $7 on a 100-share Etsy round trip in the window above. A limit order caps that cost, at the risk of not filling, and an order that can wait may cross a narrower gap: Etsy's premium fell from 5.78x to 2.99x within an hour.
Do spreads widen again at the close?
Not within regular hours — the final half-hour bucket was the tightest of the day on all three names. That widening arrives after the 4:00 p.m. bell, in the thinner extended session: Apple quoted 6.99 bps there against 0.96 bps midday.
Do options spreads widen at the open too?
The panels here measure equity quotes only and claim nothing about options. The mechanics point the same way — an option's quote depends on the underlying stock's price, least settled in the first minutes — and our options-cost breakdown measures option spreads directly.
Every panel carries the SQL that produced it — swap in a ticker you trade and time its spread clock on the Strasmore terminal.