Чому котирування акцій відстають на 15 хвилин
Чому котирування акцій відстають на 15 хвилин? Як ліцензування біржових даних встановлює це правило та скільки коштує така затримка на реальних цінах.
На більшості безкоштовних сайтів котирування акцій відстають на 15 хвилин через ліцензійні обмеження. Інфраструктура не є повільною: ціна залишає matching engine біржі й потрапляє на екран за частки секунди. 15 хвилин — це умова договору, прописана в угодах, які визначають, хто може показувати поточні ціни та скільки за це платить.
Звідки береться ціна акції, перш ніж вона доходить до вас
Одна акція зі США одночасно торгується більш ніж на дюжині публічних майданчиків. Крім того, існує значний обсяг позабіржових угод, про які звітують окремо. Кожен майданчик публікує власні котирування та угоди. Галузеві плани передбачають консолідацію всіх цих даних в одному потоці. Один план охоплює акції, лістинговані на NYSE, а інший — акції, лістинговані на Nasdaq. Обробкою даних займаються SIP — скорочено від securities information processors. Консолідований потік формує national best bid and offer — найкращу пару цін, доступну будь-де в цей момент. Детальне пояснення наведено в нашому матеріалі про те, що таке NBBO.
Біржі також продають власні прямі потоки даних. Вони швидші та містять більше деталей, ніж консолідований потік, і ліцензуються окремо від нього.
Чому котирування акцій затримуються на 15 хвилин: відповідь у ліцензуванні
Ринкові дані є окремим джерелом доходу біржі. Кожен розповсюджувач котирувань — брокер, вебсайт, термінал або мобільний застосунок — укладає угоди з біржами та планами поширення біржової стрічки. Ці угоди поділяють одні й ті самі дані на два продукти. Дані в реальному часі є платними, а кількість користувачів щомісяця звітується. Дані із затримкою, які вже щонайменше 15 хвилин не є актуальними, не підпадають під тарифний план даних у реальному часі. Тому розповсюджувач може надавати їх безкоштовно й не вести облік кожного користувача.
Тарифні плани передбачають кілька видів платежів: плату за доступ до каналу, щомісячну плату за кожного користувача, який може бачити актуальне котирування, а також плату за non-display data для машин, що споживають котирування без перегляду людиною. Тарифи публікуються у відкритому доступі й змінюються майже щороку, тому важливіша сама структура платежів, ніж показники поточного року. За дані в реальному часі хтось сплачує щомісячну плату за кожного користувача. За котирування, що втратили актуальність 15 хвилин тому, ніхто не платить.
У цьому й полягає відповідь на питання, чому безкоштовна версія є безкоштовною. Обсяг даних — інша складова витрат на передачу котирувань у реальному часі: біржова стрічка безперервно передає оновлення котирувань протягом торгової сесії. Найбільш показовим прикладом є опціони, як видно з обсягу потоку опціонних котирувань.
Чого насправді варта 15-хвилинна затримка
Затримка має значення настільки, наскільки ціна змінюється протягом цього часу. Це можна виміряти. На панелі нижче для кожного хвилинного бару звичайної торгової сесії SPY, фонду, що відстежує S&P 500, до червня 2026 року наведено порівняння з баром через 15 хвилин. Дані згруповано за годиною, на яку припав ранніший бар.
Точний SQL-код для кожного числа
WITH regular_bars AS
(
SELECT
toTimeZone(window_start, 'America/New_York') AS et,
toTimeZone(window_start, 'America/New_York') + INTERVAL 15 MINUTE AS et_later,
toFloat64(close) AS px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND close > 0
AND window_start >= '2026-06-01 00:00:00'
AND window_start < '2026-07-01 00:00:00'
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
)
SELECT
formatDateTime(toStartOfHour(a.et), '%H:%i') AS et_time,
round(quantileDeterministic(0.5)(abs(b.px / a.px - 1) * 100, toUInt64(toUnixTimestamp(a.et))), 3) AS median_gap_pct,
round(quantileDeterministic(0.95)(abs(b.px / a.px - 1) * 100, toUInt64(toUnixTimestamp(a.et))), 3) AS p95_gap_pct,
count() AS sample_count
FROM regular_bars AS a
INNER JOIN regular_bars AS b ON b.et = a.et_later
GROUP BY et_time
ORDER BY et_timeБари, зафіксовані у першій годині торгів, що починається о 9:30 a.m. ET, за наступні 15 хвилин зміщувалися на медіанні 0.125%, а 95-й перцентиль становив 0.556%. У годину 15:00 медіанне значення дорівнювало 0.065%. Кожен сегмент містить 630 пар хвилинних барів із перекриттям. Тому це типові показники, а не випадковий результат одного дня. Крива не є рівною: фіксована затримка приховує більше інформації в одні години, ніж в інші.
Значення також залежить від конкретного активу. Вимірювання те саме: шість широко відомих тикерів за один і той самий місяць.
Точний SQL-код для кожного числа
WITH regular_bars AS
(
SELECT
ticker,
toTimeZone(window_start, 'America/New_York') AS et,
toTimeZone(window_start, 'America/New_York') + INTERVAL 15 MINUTE AS et_later,
toFloat64(close) AS px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'KO', 'AAPL', 'MSFT', 'NVDA', 'AMD')
AND close > 0
AND window_start >= '2026-06-01 00:00:00'
AND window_start < '2026-07-01 00:00:00'
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
)
SELECT
a.ticker AS ticker,
round(quantileDeterministic(0.5)(abs(b.px / a.px - 1) * 100, toUInt64(toUnixTimestamp(a.et))), 3) AS median_gap_pct,
round(quantileDeterministic(0.99)(abs(b.px / a.px - 1) * 100, toUInt64(toUnixTimestamp(a.et))), 3) AS p99_gap_pct
FROM regular_bars AS a
INNER JOIN regular_bars AS b ON b.ticker = a.ticker AND b.et = a.et_later
GROUP BY ticker
ORDER BY median_gap_pct DESCAMD мав найбільший типовий розрив серед шести — 0.361%, а SPY — найменший, 0.071%. На стовпчик із 99-м перцентилем варто звернути увагу двічі. У найгіршому одному відсотку 15-хвилинних інтервалів того місяця AMD пройшов 2.532%.
Ось та сама ідея на прикладі одного дня. Панель визначає торгову сесію в червні 2026 року з найбільшим внутрішньоденним діапазоном у SPY, а потім будує дві лінії: поточні котирування на кожній десятихвилинній позначці та значення, яке в цей момент показувала сторінка із 15-хвилинною затримкою.
Точний SQL-код для кожного числа
WITH
widest_session AS
(
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND close > 0
AND window_start >= '2026-06-01 00:00:00'
AND window_start < '2026-07-01 00:00:00'
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
GROUP BY d
ORDER BY (max(toFloat64(high)) - min(toFloat64(low))) / min(toFloat64(low)) DESC
LIMIT 1
),
session_bars AS
(
SELECT
toTimeZone(window_start, 'America/New_York') AS et,
toTimeZone(window_start, 'America/New_York') - INTERVAL 15 MINUTE AS et_earlier,
toFloat64(close) AS px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND close > 0
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM widest_session)
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
)
SELECT
formatDateTime(a.et, '%H:%i') AS et_time,
round(a.px, 2) AS live_price,
round(b.px, 2) AS delayed_price,
round(abs(a.px - b.px), 2) AS gap_delta,
formatDateTime(a.et, '%b %e') AS session_label
FROM session_bars AS a
INNER JOIN session_bars AS b ON b.et = a.et_earlier
WHERE toMinute(a.et) % 10 = 0
ORDER BY a.etJun 9 о 09:50 ET поточна ціна SPY становила 746.13, тоді як на сторінці із затримкою відображалося 744.22 — різниця становила $1.91. Станом на 15:50 ці значення дорівнювали 735.29 і 734.49. Лінії збігаються, коли ринок малорухомий, і розходяться під час руху ціни. На спокійному ринку затримка нічого не коштує, а найбільше значення вона має саме в моменти, коли учасники стежать за ринком.
Правило відображення: що вебсайт має вам показувати
Regulation NMS містить вимогу щодо консолідованого відображення даних — Rule 603(c). Постачальник, який показує публіці котирування, має надавати консолідовану інформацію: найкращу національну ціну bid і offer разом із консолідованою ціною останньої угоди, а не видавати котирування одного майданчика за ринкову ціну. Постачальники також мають позначати відкладені дані як відкладені. Саме тому внизу кожної фінансової сторінки є дрібний шрифт. Для кожного, хто читає безкоштовне котирування, це має два наслідки.
- Безкоштовне котирування в реальному часі з однієї біржі є справжньою ціною, але не є NBBO. Воно показує книгу заявок одного майданчика, де спред може бути ширшим за найкращу доступну пропозицію.
- Сторінка з останньою угодою в реальному часі без bid або ask — це звичайна ситуація. Дані про останні угоди та котирування ліцензуються окремо, причому дані про останні угоди коштують дешевше.
Про те, що відбувається, коли два майданчики зустрічаються на найкращих рівнях книги заявок, див. заблоковані та перехресні ринки.
Професійний чи непрофесійний: тест, що визначає ваш рахунок
Вартість live-даних для фізичної особи залежить від класифікації, а класифікація — від вашої роботи, а не від розміру капіталу. За термінологією бірж, ви вважаєтеся непрофесійним передплатником, якщо виконуються всі наведені нижче умови.
- Ви є фізичною особою й отримуєте дані для особистого використання, а не від імені компанії чи іншої юридичної особи.
- Ви не зареєстровані та не маєте відповідної кваліфікації в SEC, CFTC, державному регуляторі ринку цінних паперів, на біржі або в біржовій асоціації чи на ринку ф’ючерсних контрактів.
- Ви не працюєте investment adviser або asset manager і не виконуєте роботу, яка потребувала б такої реєстрації.
- Ви не використовуєте дані у підприємницькій діяльності, зокрема у роботі в компанії, яка компенсує вам вартість передплати.
Якщо хоча б одна умова не виконується, біржі класифікують вас як професійного користувача. Тоді плата стягується окремо за кожну біржу, кожного користувача та кожен місяць і становить кратну суму непрофесійного тарифу. Молодший аналітик фонду з невеликим особистим рахунком є професійним користувачем. Пенсіонер із великим портфелем, який торгує лише власними коштами, — непрофесійним. Дистриб’ютори зобов’язані отримувати від вас цю інформацію та звітувати про неї. Саме тому під час кожної реєстрації для отримання live-даних вас запитують про роботодавця та наявність реєстрацій.
Що таке snapshot quote?
Snapshot — це один замір, отриманий у момент запиту: остання ціна або поточні bid і ask, які повертаються один раз і більше не оновлюються. Stream — це постійна підписка, у межах якої кожна зміна надходить у момент її виникнення. Ліцензійні тарифи на ці два типи доступу відрізняються: часто оплата стягується за кожен запит в одному випадку та за кожного користувача на місяць — в іншому. Саме тому безкоштовний API може надавати endpoint для відкладеного snapshot, але не live stream. Якщо оновлювати snapshot щосекунди, фактично відтворюється stream, і ліцензійні угоди містять положення, що це забороняють.
Як визначити, чи є ціна перед вами запізнілою
- Часова позначка — єдиний надійний орієнтир. Поточна котирування має часову позначку, що відстає від поточного часу за ET не більш як на одну-дві секунди.
- Денний максимум і поточний обсяг також застарівають. Тому сторінка із затримкою може не показати максимум, якого стрічка торгів досягла десять хвилин тому.
- У перші 15 хвилин після відкриття о 9:30 за ET сторінка із затримкою не містить даних поточної сесії та показує ціну закриття попередньої сесії або premarket print.
- Тест на «зависання» — перевірка, чи змінюється число взагалі, — працює лише для інструментів, ціна яких рухається.
Для останнього потрібні дані.
Точний SQL-код для кожного числа
WITH regular_bars AS
(
SELECT
ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
toTimeZone(window_start, 'America/New_York') AS et,
toFloat64(close) AS px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'KO', 'AAPL', 'MSFT', 'NVDA', 'AMD')
AND close > 0
AND window_start >= '2026-06-01 00:00:00'
AND window_start < '2026-07-01 00:00:00'
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
),
stepped AS
(
SELECT
ticker,
et,
px,
lagInFrame(px) OVER (PARTITION BY ticker, session_date ORDER BY et
ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_px
FROM regular_bars
)
SELECT
ticker,
round(100 * countIf(px != prev_px) / count(), 1) AS minutes_price_moved_pct,
round(quantileDeterministic(0.5)(abs(px / prev_px - 1) * 10000, toUInt64(toUnixTimestamp(et))), 1) AS median_move_bps
FROM stepped
WHERE prev_px > 0
GROUP BY ticker
HAVING count() > 0
ORDER BY minutes_price_moved_pct DESCСтаном на червень 2026 року AMD показував ціну, відмінну від ціни попередньої хвилини, у 99.8% хвилин регулярної сесії. Медіанна зміна від хвилини до хвилини становила 9.6 базисних пунктів, де базисний пункт дорівнює одній сотій відсотка. KO найрідше оновлював ціну з шести інструментів — у 94.1% випадків. Для настільки активних інструментів незмінна протягом кількох хвилин остання ціна в середині сесії є обґрунтованою ознакою того, що ви бачите запізніле або кешоване значення. Для низьколіквідної акції така нерухомість є звичайною, тому часовий штамп залишається основним тестом.
Які безкоштовні котирування акцій справді є котируваннями в реальному часі
Два джерела стабільно надають приватним інвесторам ціни в реальному часі. А до одного поширеного позначення варто придивитися уважніше.
- Поповнений брокерський рахунок. Брокери оформлюють для клієнтів статус non-professional і передають котирування в реальному часі через застосунок. Саме тому у формі для відкриття рахунку були запитання про вашого роботодавця.
- Власний вебсайт оператора біржі — для інструментів, що котируються на цій біржі. Дані надходять у реальному часі й охоплюють лише один майданчик, тому це одна книга заявок, а не консолідований NBBO.
- Будь-який сервіс, який рекламує безкоштовні котирування в реальному часі без входу в акаунт і без самостійного підтвердження статусу. Перш ніж покладатися на такі дані, перевірте позначку часу в котируванні.
Якщо дані потрібні програмі, а не користувацькому інтерфейсу, класифікація знову змінюється: машинне споживання ліцензується за умовами non-display, передбаченими окремим тарифним планом, а не планом для одного користувача. У наших матеріалах про безкоштовні API ринкових даних для акцій і запити до ринкових даних за допомогою SQL розглянуто ці рівні доступу.
FAQ
Чому котирування акцій затримуються рівно на 15 хвилин?
Після 15 хвилин ціни на акції США перестають вважатися платним продуктом із передаванням даних у реальному часі за угодами бірж із постачальниками даних. Дистриб’ютор може публікувати дані, яким виповнилося щонайменше 15 хвилин, без звітування про кількість користувачів.
Що робить користувача професійним передплатником ринкових даних?
Таким користувачем вважається особа, зареєстрована в регулятора з нагляду за ринком цінних паперів або ф’ючерсів, працівник, який виконує інвестиційну функцію, особа, що отримує дані від імені організації, або користувач, який застосовує ціни у своїй господарській діяльності. Статки та розмір рахунку значення не мають.
Як визначити, що котирування акції затримане?
Порівняйте часову мітку котирування з поточним часом за ET і перевірте, чи є позначка про затримку, яку постачальники зобов’язані відображати. Для активно торгованої акції в години основної сесії додатковою ознакою може бути ціна, яка не змінюється протягом кількох хвилин.
Чи збігаються безкоштовні котирування в реальному часі з NBBO?
Часто ні. Безкоштовне котирування однієї біржі показує книгу заявок лише цього майданчика. NBBO — це найкраща ціна bid і найкраща ціна offer на всіх майданчиках, розраховані на основі консолідованої стрічки.
Чи має 15-хвилинна затримка значення для даних наприкінці дня?
Ні. Після закриття сесії відкладена та актуальна версії ціни закриття або денного обсягу є ідентичними. Затримка має значення лише під час сесії.
Кожна панель тут містить SQL-запит, за допомогою якого її сформовано. Тому будь-яке наведене вище число можна повторно розрахувати для іншого ticker або іншого місяця. Щоб виміряти, чого варті 15 хвилин для акції, за якою ви стежите, сформулюйте запит звичайною англійською мовою в терміналі Strasmore.