Strasmore Research
Edukacja Matt ConnorAutor: Matt Connor

Dlaczego notowania giełdowe są opóźnione o 15 minut

Analiza przyczyn piętnastominutowego opóźnienia w prezentacji cen akcji. Wyjaśnienie wymogów licencyjnych giełd oraz wpływu tych regulacji na realną wycenę instrumentów.

630

Notowania giełdowe i opóźnienia licencyjne

Większość darmowych serwisów internetowych prezentuje notowania akcji z piętnastominutowym opóźnieniem, co wynika z wymogów licencyjnych. Infrastruktura techniczna nie jest powolna: cena opuszcza system transakcyjny giełdy i trafia na ekran w ułamku sekundy. Piętnastominutowe opóźnienie stanowi warunek umowny. Zapisy te określają, kto jest uprawniony do prezentowania cen w czasie rzeczywistym oraz jakie opłaty muszą zostać za to wniesione.

Skąd pochodzi cena akcji, zanim trafi do inwestora

Pojedyncza amerykańska akcja jest notowana jednocześnie w ponad dwunastu publicznych systemach obrotu, obok szerokiego wachlarza transakcji pozagiełdowych, które raportują swoje transakcje (prints) oddzielnie. Każdy system publikuje własne kwotowania i transakcje. Branżowe plany konsolidują te dane w jeden zapis (tape) – jeden plan obejmuje spółki z NYSE, a drugi spółki z Nasdaq. Procesory obsługujące te dane to SIP, czyli procesory informacji o papierach wartościowych. Ten skonsolidowany zapis generuje krajową najlepszą ofertę kupna i sprzedaży (NBBO), czyli najlepszą dostępną w danej chwili parę cen, co szczegółowo wyjaśniono w naszym przewodniku na temat czym jest NBBO.

Giełdy sprzedają również własne bezpośrednie kanały danych, które są szybsze i bardziej szczegółowe niż skonsolidowany zapis i są licencjonowane oddzielnie.

Dlaczego notowania giełdowe są opóźnione o piętnaście minut: kwestie licencyjne

Dane rynkowe stanowią źródło przychodów giełd. Każdy dystrybutor cen – dom maklerski, serwis internetowy, terminal czy aplikacja mobilna – zawiera umowy z giełdami oraz operatorami systemów informacyjnych (tape plans). Umowy te dzielą te same dane na dwa produkty. Dane w czasie rzeczywistym są płatne, a ich wykorzystanie jest raportowane w ujęciu miesięcznym dla każdego użytkownika. Dane opóźnione, po upływie co najmniej piętnastu minut, wykraczają poza harmonogram opłat za czas rzeczywisty, co pozwala dystrybutorowi na ich bezpłatne udostępnianie bez konieczności ewidencjonowania liczby odbiorców.

Cenniki obejmują szereg opłat: opłatę za dostęp do łącza, miesięczną opłatę od użytkownika za każdą osobę mającą wgląd w bieżące notowania oraz opłaty za wykorzystanie niedystrybucyjne (non-display fees) dla systemów automatycznych, które przetwarzają dane bez udziału człowieka. Stawki są publikowane publicznie i zmieniają się niemal co roku, dlatego struktura opłat jest istotniejsza niż bieżące kwoty. Ktoś zawsze płaci za każdą osobę miesięcznie za dostęp do notowań na żywo. Nikt nie płaci za cenę, która jest nieaktualna o kwadrans.

To pełna odpowiedź na pytanie, dlaczego wersja darmowa jest bezpłatna. Wolumen jest drugą stroną kosztów utrzymania notowań na żywo: system przesyła ciągły strumień aktualizacji cen przez całą sesję, a rynek opcji stanowi przypadek ekstremalny, co pokazuje wielkość strumienia notowań opcyjnych.

Ile faktycznie kosztuje piętnastominutowe opóźnienie

Opóźnienie ma znaczenie w takim stopniu, w jakim cena zmienia się w jego trakcie, co podlega pomiarowi. Poniższe zestawienie obejmuje każdą minutową świecę sesji regularnej dla SPY, funduszu typu ETF śledzącego indeks S&P 500, do czerwca 2026 roku włącznie i porównuje każdą z nich ze świecą z okresu o piętnaście minut późniejszego, z podziałem na godziny wystąpienia wcześniejszej świecy.

ZapytanieZasięg cenowy SPY w interwałach 15-minutowych z podziałem na godziny sesji (czerwiec 2026)
Dokładny kod SQL dla każdej liczby
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
Run this yourself

Świece z pierwszej godziny sesji, rozpoczynającej się o godzinie 9:30 czasu ET, wykazały medianę zmian na poziomie 0.125% w ciągu kolejnych piętnastu minut, przy dziewięćdziesiątym piątym percentylu wynoszącym 0.556%. W godzinie 15:00 mediana wyniosła 0.065%. Każda grupa obejmuje 630 nakładających się na siebie par minutowych, zatem są to wartości typowe, a nie wynik jednorazowego zdarzenia. Krzywa nie jest płaska, a stałe opóźnienie w niektórych godzinach ukrywa więcej niż w innych.

Skala ukrytych zmian zależy również od konkretnego waloru. Ten sam pomiar, sześć popularnych tickerów, ten sam miesiąc.

ZapytanieZasięg 15-minutowy dla sześciu wybranych spółek (czerwiec 2026)
Dokładny kod SQL dla każdej liczby
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 DESC
Run this yourself

AMD charakteryzował się najszerszą typową luką spośród sześciu analizowanych walorów, wynoszącą 0.361%, a SPY najwęższą, na poziomie 0.071%. Kolumna dziewięćdziesiątego dziewiątego percentyla wymaga szczególnej uwagi: w najgorszym jednym procencie piętnastominutowych okien w tym miesiącu, AMD przebył dystans 2.532%.

Poniżej przedstawiono tę samą koncepcję w ujęciu jednodniowym. Zestawienie wskazuje sesję z czerwca 2026 roku o najszerszym zakresie wewnątrzdziennym dla SPY, a następnie wykreśla dwie linie: bieżący kurs w odstępach dziesięciominutowych oraz odczyt opóźniony o piętnaście minut w tym samym momencie.

ZapytaniePorównanie ceny bieżącej z opóźnieniem 15-minutowym podczas jednej sesji SPY
Dokładny kod SQL dla każdej liczby
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.et
Run this yourself

W dniu Jun 9, o godzinie 09:50 czasu ET, bieżący kurs SPY wynosił 746.13, podczas gdy opóźniony odczyt wskazywał 744.22, co stanowiło różnicę $1.91. Do godziny 15:50 obie wartości wynosiły odpowiednio 735.29 oraz 734.49. Linie pokrywają się, gdy rynek jest spokojny, i rozchodzą się, gdy następuje ruch. Opóźnienie nie kosztuje nic na nieruchomym rynku, a najwięcej w momentach, w których uwaga inwestorów jest największa.

Zasada prezentacji danych: co musi pokazać serwis internetowy

Regulacja NMS zawiera wymóg skonsolidowanej prezentacji danych, określony w Rule 603(c). Dostawca udostępniający publicznie dane o kwotowaniach musi prezentować informacje skonsolidowane, czyli krajową najlepszą ofertę kupna i sprzedaży (NBBO) wraz ze skonsolidowaną ceną ostatniej transakcji, a nie kwotowanie z jednego miejsca obrotu przedstawione jako cena rynkowa. Dostawcy muszą również oznaczać opóźnione dane jako opóźnione; stąd bierze się drobny druk na dole każdej strony finansowej. Dla każdego, kto korzysta z darmowych kwotowań, wynikają z tego dwie kwestie.

  • Darmowe kwotowanie na żywo z jednej giełdy jest ceną rzeczywistą, ale nie jest to NBBO. Pokazuje ono arkusz zleceń tylko jednego miejsca obrotu, który może mieć szerszy spread niż najlepsza dostępna oferta.
  • Strona z ceną ostatniej transakcji na żywo bez ofert kupna lub sprzedaży jest zjawiskiem typowym. Dane o ostatniej transakcji oraz kwotowania są odrębnie licencjonowanymi produktami, przy czym dane o ostatniej transakcji są tańsze.

Informacje o tym, co dzieje się, gdy dwa miejsca obrotu spotykają się na szczycie arkusza, znajdują się w sekcji rynki zablokowane i skrzyżowane.

Inwestor profesjonalny czy indywidualny: test określający wysokość opłat

Koszt dostępu do danych rynkowych na żywo dla inwestora indywidualnego zależy od jego klasyfikacji, a ta wynika z charakteru wykonywanej pracy, a nie z wielkości posiadanego kapitału. W nomenklaturze giełdowej status inwestora indywidualnego (non-professional) przysługuje osobie spełniającej łącznie poniższe warunki:

  • Jest osobą fizyczną korzystającą z danych na własny użytek, a nie w imieniu firmy lub innego podmiotu.
  • Nie posiada rejestracji ani kwalifikacji wymaganych przez SEC, CFTC, stanowe organy nadzoru rynku papierów wartościowych, giełdy papierów wartościowych, stowarzyszenia branżowe ani rynki kontraktów terminowych.
  • Nie pracuje jako doradca inwestycyjny ani zarządzający aktywami i nie jest zatrudniona na stanowisku wymagającym takich uprawnień.
  • Nie wykorzystuje danych do celów zawodowych, w tym w ramach obowiązków u pracodawcy, który refunduje koszt subskrypcji.

Niespełnienie choćby jednego z tych warunków powoduje, że giełdy klasyfikują użytkownika jako profesjonalistę. Opłaty są wówczas naliczane odrębnie dla każdej giełdy, od każdego użytkownika i w ujęciu miesięcznym, stanowiąc wielokrotność stawki dla inwestora indywidualnego. Młodszy analityk w funduszu inwestycyjnym, posiadający niewielki rachunek prywatny, jest traktowany jako profesjonalista; emerytowany inwestor z dużym portfelem, handlujący wyłącznie własnymi środkami, nie jest. Dystrybutorzy danych mają obowiązek pozyskania i raportowania tej informacji, dlatego każdy proces rejestracji do usług danych na żywo zawiera pytania o pracodawcę oraz posiadane uprawnienia zawodowe.

Czym jest wycena typu snapshot?

Snapshot to pojedynczy odczyt pobrany w momencie zapytania: ostatnia cena lub bieżące kwotowania kupna i sprzedaży, zwrócone jednorazowo bez późniejszych aktualizacji. Strumień danych to stała subskrypcja, w której każda zmiana jest przesyłana w czasie rzeczywistym. Licencjonowanie obu tych rozwiązań różni się cenowo – często opłata za zapytanie jest rozliczana inaczej niż opłata za użytkownika miesięcznie, dlatego darmowe API oferuje zazwyczaj opóźniony punkt końcowy typu snapshot, a nie strumień danych na żywo. Odświeżanie snapshota co sekundę pozwala na odtworzenie strumienia, co jest monitorowane w zapisach umów licencyjnych.

Jak rozpoznać, czy wyświetlana cena jest opóźniona

  • Jedynym wiarygodnym wskaźnikiem jest znacznik czasu. Notowania w czasie rzeczywistym posiadają znacznik czasu z dokładnością do jednej lub dwóch sekund względem zegara czasu wschodniego (ET).
  • Dzienne maksimum oraz bieżący wolumen również ulegają dezaktualizacji, przez co opóźniona strona może nie uwzględniać szczytu odnotowanego na taśmie dziesięć minut wcześniej.
  • Przez pierwsze piętnaście minut po otwarciu sesji o godzinie 9:30 czasu ET, opóźniona strona nie zawiera żadnych danych z bieżącej sesji, wyświetlając jedynie kurs zamknięcia z poprzedniego dnia lub transakcje przedsesyjne.
  • Test zamrożenia, polegający na obserwowaniu, czy liczba w ogóle ulega zmianie, sprawdza się wyłącznie w przypadku instrumentów o dużej zmienności.

Ostatni punkt wymaga potwierdzenia danymi.

ZapytanieCzęstotliwość zmian ceny ostatniej transakcji w ujęciu minutowym (czerwiec 2026)
Dokładny kod SQL dla każdej liczby
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
Run this yourself

Do czerwca 2026 roku AMD odnotowywał cenę różną od poprzedniej minuty w 99.8% minut sesji regularnej, przy medianie zmiany między minutami wynoszącej 9.6 punktów bazowych, gdzie punkt bazowy stanowi jedną setną procenta. KO odświeżał się najrzadziej z całej szóstki, osiągając wynik 94.1%. W przypadku tak aktywnych instrumentów, ostatnia cena, która nie zmieniła się przez kilka minut w trakcie sesji, jest wyraźną wskazówką, że wyświetlana wartość jest opóźniona lub pochodzi z pamięci podręcznej. W przypadku akcji o niskiej płynności taka stagnacja jest zjawiskiem typowym, dlatego to znacznik czasu pozostaje rozstrzygającym testem.

Które darmowe notowania giełdowe są rzeczywiście w czasie rzeczywistym

Dwa źródła wiarygodnie dostarczają ceny na żywo dla inwestora indywidualnego, a jedno powszechne oznaczenie wymaga dokładniejszej analizy.

  • Zasilony rachunek maklerski. Domy maklerskie posiadają uprawnienia do udostępniania danych klientom nieprofesjonalnym i przesyłają notowania na żywo przez aplikację; właśnie dlatego formularz otwarcia rachunku zawierał pytanie o pracodawcę.
  • Strona internetowa operatora giełdy, w odniesieniu do instrumentów notowanych na danej giełdzie. Dane są w czasie rzeczywistym i pochodzą z jednego miejsca, więc reprezentują jeden arkusz zleceń, a nie skonsolidowany NBBO.
  • Każde źródło reklamujące darmowe notowania w czasie rzeczywistym bez logowania i bez składania oświadczeń o statusie inwestora. Przed podjęciem decyzji w oparciu o takie dane należy sprawdzić oznaczenie czasowe przy notowaniu.

Gdy odbiorcą danych jest program, a nie ekran, klasyfikacja ulega zmianie: konsumpcja maszynowa podlega licencjonowaniu na warunkach non-display, co stanowi odrębny cennik od tego opartego na liczbie użytkowników. Nasze opracowania na temat darmowych API z danymi giełdowymi oraz odpytywania danych rynkowych za pomocą SQL omawiają te poziomy dostępu.

Najczęściej zadawane pytania

Dlaczego notowania giełdowe są opóźnione dokładnie o piętnaście minut?

Piętnaście minut to czas, po którym ceny akcji w USA przestają być produktem czasu rzeczywistego podlegającym opłatom zgodnie z umowami dotyczącymi danych giełdowych. Dystrybutor może publikować dane o takim lub większym opóźnieniu bez konieczności raportowania liczby użytkowników.

Co sprawia, że ktoś jest profesjonalnym subskrybentem danych rynkowych?

Rejestracja u regulatora rynku papierów wartościowych lub kontraktów terminowych, zatrudnienie na stanowisku inwestycyjnym, pobieranie danych w imieniu podmiotu gospodarczego lub jakiekolwiek wykorzystywanie cen w celach biznesowych. Wartość netto majątku oraz wielkość rachunku nie mają w tym przypadku znaczenia.

Jak sprawdzić, czy notowanie akcji jest opóźnione?

Należy porównać znacznik czasu notowania z aktualnym czasem ET oraz poszukać oznaczenia o opóźnieniu, które dostawcy mają obowiązek wyświetlać. W przypadku aktywnego waloru w godzinach regularnego handlu, cena, która pozostaje niezmieniona przez kilka minut, stanowi dodatkową wskazówkę.

Czy darmowe notowania w czasie rzeczywistym są tym samym co NBBO?

Często nie. Darmowe notowanie z jednej giełdy pokazuje arkusz zleceń tylko tego jednego miejsca obrotu. NBBO to najlepsza oferta kupna i sprzedaży (best bid and offer) ze wszystkich miejsc obrotu, obliczana na podstawie skonsolidowanego strumienia danych (consolidated tape).

Czy piętnastominutowe opóźnienie ma znaczenie dla danych na koniec dnia?

Nie. Po zamknięciu sesji opóźniona i rzeczywista wersja ceny zamknięcia lub dziennego wolumenu są identyczne. Opóźnienie jest odczuwalne wyłącznie w trakcie trwania sesji.


Każdy panel w tym miejscu jest dostarczany wraz z kodem SQL, który wygenerował zawarte w nim dane, dzięki czemu każdą z powyższych liczb można zweryfikować dla innego tickera lub innego miesiąca. Aby sprawdzić, ile warte jest piętnaście minut w przypadku obserwowanego waloru, należy zapytać o to prostym językiem w terminalu Strasmore.

#market data#quotes#sip#exchange fees#nbbo