Extended Hours Coverage

Kibot's stock and ETF intraday files cover three sessions: pre-market (8:00 to 9:30 AM ET), the regular session (9:30 AM to 4:00 PM ET), and after-hours (4:00 to 6:30 PM ET). Some symbols trade as early as 4:00 AM and as late as 8:00 PM ET, and those prints are also captured when an exchange reports them. This page explains what is actually in the files outside the regular session, why some symbols have very little extended-hours data, when each session is published, and how the extended-hours prints interact with the daily file.

What Counts as Extended Hours

The standard US equity day is divided into three windows:

SessionTime (ET)What it contains
Pre-market8:00 to 9:30 AMECN prints, opening-imbalance crosses, retail and institutional pre-open activity
Regular9:30 AM to 4:00 PMContinuous lit auctions on NYSE, NASDAQ, ARCA, and CBOE; consolidated tape
After-hours4:00 PM to 6:30 PMClosing crosses, late prints, post-close ECN activity, earnings reaction

For very liquid names (SPY, QQQ, AAPL, NVDA) some prints appear as early as 4:00 AM and as late as 8:00 PM ET. Those are kept in the tick and 1-minute files when an exchange or ECN reports them; they are not removed. The 8:00 to 9:30 AM and 4:00 to 6:30 PM windows are the bounds within which extended-hours bars are expected for most active symbols.

Why Some Symbols Have No Pre-Market Data

A common support question is the absence of pre-market 1-minute bars for stocks that customers expected to see. The cause is almost always that no trades actually printed in the extended-hours window for that symbol on that day. Kibot does not synthesize bars for sessions with no activity, so a missing bar at 08:15 ET for a small-cap stock means no shares changed hands at 08:15 ET for that stock. Mid-cap and small-cap names commonly have only a handful of pre-market prints per day, sometimes none at all. Even some S&P 500 members go entire pre-market sessions with zero prints. For S&P 500 ETFs, large-cap megacaps, and the most liquid sector ETFs, pre-market bars are nearly always present.

Quote data follows the same rule. In tick-with-bid-ask files, an extended-hours line appears only when a print is recorded; the bid and ask are sampled at the moment of trade. There is no separate quote-only stream, so a symbol with no extended-hours prints also has no extended-hours quotes in Kibot files.

When Pre-Market Data Is Published

For Premium subscribers using the API or the Kibot Agent, the pre-market session is available immediately as prints arrive, with a small internal processing delay. By the time the 9:30 AM regular open begins, the full 8:00 to 9:30 AM window is downloadable. For customers on FTP or direct-download channels, the previous day's complete file (regular plus both extended-hours sessions) is rebuilt overnight and made available in the early morning ET. After-hours data through 6:30 PM ET is included in the same overnight rebuild.

A separate question that comes up: live pre-market access. Kibot's intraday API is end-of-bar with a short delay; it is not a live quote feed. Customers who need streaming pre-market prices need a real-time broker feed; Kibot's role is the historical archive of those same prints once they have been recorded.

How Extended-Hours Prints Affect Daily Bars

Kibot's daily bar is built from the regular session only. The daily Open is the first regular-session print at or after 9:30 AM ET, the daily Close is the last regular-session print at or before 4:00 PM ET, and the daily High and Low are the extremes within that 6.5-hour window. Pre-market and after-hours prints never enter the daily file.

This is the source of a frequent reconciliation question: a customer pulls Yahoo Finance daily and sees a high or close that is not in the Kibot daily file. The usual cause is that Yahoo's daily high was set by an after-hours print and Yahoo includes it; Kibot does not. The intraday Kibot file still contains the after-hours print, so the customer can rebuild a 24-hour daily aggregate from intraday if they need it. See Comparing Kibot Data to Other Sources for the BGP-on-2008-11-24 worked example.

Excluding Extended Hours From Your Analysis

A common backtesting workflow is to restrict analysis to the regular session. Two ways to do this in code:

# pandas, regular session only
df = df.between_time("09:30", "16:00")

# polars, regular session only
df = df.filter(
    (pl.col("time") >= pl.time(9, 30)) &
    (pl.col("time") <= pl.time(16, 0))
)

For the opposite case, isolating only extended-hours prints, invert the filter (before 09:30 or after 16:00). Note that the 09:30 bar itself is the first regular-session bar; some customers prefer to exclude it because the opening-auction print can be far from the surrounding prices. The conservative window for "true" continuous regular trading is 09:31 through 15:59.

Forex and Futures Have No Extended-Hours Concept

The pre-market and after-hours split applies only to US equities and ETFs. Forex is a 24-hour OTC market with no central session, so every print is in the same file with no extended-hours flag. Futures on CME Globex run nearly continuously from Sunday 6:00 PM ET to Friday 5:00 PM ET, with a daily one-hour maintenance halt; the Kibot file timestamps every print without an extended-hours label. The daily futures bar is built from the exchange's official trading-day window, which spans a calendar-day boundary (5:00 PM ET to 5:00 PM ET). See Trading hours for the per-contract session windows.

Key Takeaways

  • Pre-market is 8:00 to 9:30 AM ET; after-hours is 4:00 to 6:30 PM ET. Liquid names occasionally print as early as 4:00 AM and as late as 8:00 PM ET, and those prints are kept.
  • Missing extended-hours bars almost always mean no prints occurred, not that data is missing. Small-cap and mid-cap names commonly have sparse or zero pre-market activity.
  • Pre-market data is published live to API and Agent users as prints arrive, and is rebuilt into the day-end file overnight for FTP and direct-download channels.
  • Daily Kibot bars use the regular session only. Other vendors may include extended-hours prints in the daily high, low, or close.
  • To restrict analysis to the regular session, filter on 09:30 to 16:00 ET; for the strictest continuous-trading window, use 09:31 to 15:59.
  • Extended-hours concepts do not apply to forex or futures; both use single-window or near-continuous sessions instead.