favicon HistoricalData
  • Stocks
  • Options
  • Methodology
  • FAQ
  • About
  • Data Methodology & Quality

    This page explains how the datasets sold on HistoricalData.net are collected, processed, adjusted and validated, and what their limitations are. If a question is not answered here, check the FAQ or email [email protected].

    1. Data Sources and Market Coverage

    Stock data is built from trade data consolidated across 20+ U.S. exchanges and trading venues, including XNYS (New York Stock Exchange), XASE (NYSE American), XBOS (Nasdaq OMX BX) and XADF (FINRA Alternative Display Facility), sourced through an institutional-grade market data provider. Options data is sourced from OPRA (Options Price Reporting Authority) feeds covering all U.S. options exchanges.

    Coverage includes more than 15,000 active and 50,000 delisted U.S. tickers: common stocks, ETFs, ADRs, preferred shares, warrants, units and funds. Index options (SPX, NDX, RUT, VIX, XSP and other CBOE index products) are included in the options dataset together with their index level history.

    2. Time Range and Update Schedule

    DatasetHistory startsUpdate cadence
    Stock daily & 1-minute barsNovember 2003Weekly, processed over the weekend; the refreshed bundle is available before Monday's market open
    Options EODMay 2002Every trading day, in the evening (U.S. Eastern); subscription files are kept on the server for the most recent ~50 trading days

    All timestamps in all files are U.S. Eastern Time (EST/EDT according to the date). A new dataset version is published only after the complete update run has finished — a partially updated bundle is never sold (see Validation).

    3. File Structure and Field Definitions

    All files are plain CSV (RFC 4180, comma-separated, \r\n line endings, header row first). Stock files are named {TYPE}_{TICKER}_{day|minute_regular|minute_extended}.csv, where TYPE is the security type (CS = common stock, ETF, ADRC, PFD, WARRANT, …). Delisted tickers are named delisted_{TYPE}_{TICKER}_{delisting-date}_….csv so the delisting date is visible in the filename itself.

    Stock files (16 columns):

    ColumnMeaning
    TimeYYYY-MM-DD (daily) or YYYY-MM-DD HH:MM:SS (minute), U.S. Eastern
    Open, Close, High, LowUnadjusted prices
    VolumeUnadjusted share volume
    AverageVolume-weighted average price (VWAP)
    TransactionsNumber of trades in the bar
    AdjOpen … AdjAverageThe same six fields, fully adjusted for splits and dividends
    DividendCash dividend per share, present only on the ex-dividend date
    SplitSplit ratio (e.g. 1:4), present only on the split execution date

    Options files (18 columns): contract (OCC symbol), underlying, expiration, type (call/put), strike, style (A = American, E = European/index), bid, bid_size, ask, ask_size, volume, open_interest, quote_date, delta, gamma, theta, vega, implied_volatility. Each trading day also has a companion underlying-price file: symbol, open, high, low, close, volume, adjust_close.

    Full per-column documentation with sample rows is on the stocks page and the options page.

    4. Corporate Actions: Splits, Dividends, Renames, Delistings

    5. Adjustment Versions

    Every row carries both unadjusted and fully adjusted values side by side — there are no separate "adjusted" and "unadjusted" downloads to buy or reconcile. Adjusted prices apply the cumulative product of all later split and dividend factors (dividend factor = (close − dividend) / close measured on the prior trading day; split factor = from/to). Adjusted volume applies split factors only, as is standard. If you need a different adjustment convention (e.g. split-only), the in-line Dividend and Split event columns let you rebuild it from the unadjusted columns.

    6. Trading Sessions, Holidays and Missing Bars

    7. Validation

    8. Known Limitations

    9. Sample Data

    Free samples are identical in structure to the paid files — same columns, same naming, same formats — so you can build and test your entire pipeline before buying:

    Loading a file in Python:

    import pandas as pd
    df = pd.read_csv("CS_AAPL_day.csv", parse_dates=["Time"])
    print(df.tail())

    Files also open directly in Excel, R (read.csv) and any tool that reads standard CSV.

    Last updated: 2026-06-11. Questions about methodology: [email protected].