Kaggle NYSE S&P 500 Historical Prices & Fundamentals

Datadory delivers kaggle nyse s p 500 historical prices fundamentals data covering roughly 851,000 daily price rows across about 500 tickers from January 2010 through December 2016 - raw and split-adjusted OHLCV - joined to around 1,400 annual fundamental rows drawn from SEC 10-K filings for fiscal years 2012-2016, cleaned and delivered to your spec.

What is the Kaggle NYSE S&P 500 Historical Prices & Fundamentals dataset?

Two things every equity model wants - where the price went and what the filings said - in one package. The Kaggle NYSE S&P 500 Historical Prices & Fundamentals dataset bundles four CSVs into a single archive: two parallel daily price tables, an annual fundamentals table built from SEC 10-K filings, and a company reference sheet with GICS classifications.

The numbers that earn it shelf space: roughly 851,000 price rows across about 500 tickers, spanning January 2010 through December 2016; a second copy of that same history adjusted for the roughly 140 splits the window contains; about 1,400 annual fundamental rows carrying approximately 78 line items per company-year for fiscal years 2012-2016; and a reference table of roughly 500 companies with sector, sub-industry and CIK.

Within Datadory's catalog of 1,744 datasets across 159 viable industries, this is the only S&P-500-specific record that puts prices and filing-derived fundamentals side by side on the investment banking & brokerage shelf - the rest of that shelf splits into regulator feeds and statistics series.

Get a sample of this dataset

What do the sample rows look like?

Captured during the August 2026 research pass, straight from the tables:

# daily price row (raw series)
date       2016-01-05
symbol     WLTW
open       123.43
close      125.84
low        122.31
high       126.25
volume     2163600

# company reference row (securities)
ticker_symbol          MMM
security               3M Company
gics_sector            Industrials
gics_sub_industry      Industrial Conglomerates
address_of_headquarters St. Paul, Minnesota
cik                    0000066740

# annual fundamentals row (truncated at the source mirror)
ticker_symbol     AAL
period_ending     2012-12-31
accounts_payable  3068000000
net_income        (null in mirror)

Reading the rows: the WLTW bar shows why recent listings matter - Willis Towers Watson only enters the tape near the end of the window, so its history starts in 2016 rather than 2010. The MMM reference row carries the classification spine; its CIK is the bridge that lets a fundamentals figure trace back to the exact 10-K it came from. The AAL row is shown truncated because the source mirror cuts off mid-record - your sample arrives complete, with nulls flagged rather than silently zeroed.

What fields does the dataset include?

Eight field groups verified during the August 2026 review. The spine first - the long tail of roughly 78 annual line items sits folded under additional fields on request.

  • date (date) - Trading day of the price observation in the raw and split-adjusted price tables. Example: 2016-01-05.
  • symbol (string) - Ticker symbol of the listed company; the join key between price history, fundamentals and the reference table. Example: WLTW.
  • open / close / low / high (number) - Daily opening, closing, intraday low and intraday high prices in dollars. Example: 123.43.
  • volume (integer) - Shares traded during the session. Example: 2163600.
  • Ticker Symbol / Period Ending (string / date) - Composite key in the fundamentals table identifying the company and the fiscal period end of its 10-K metrics. Example: AAL, 2012-12-31.
  • GICS Sector / GICS Sub Industry (enum) - Sector and sub-industry classification carried on the company reference table. Example: Industrials / Industrial Conglomerates.
  • CIK (string) - SEC Central Index Key, enabling joins from a fundamentals figure back to its EDGAR filing. Example: 0000066740.
  • Accounts Payable ... Total Revenue (~78 columns) (number) - Annual 10-K financial-statement line items: accounts payable and receivable, capital expenditures, cash ratios, cost of revenue, EBIT and pre-tax earnings, goodwill, gross margin and profit, income tax, intangibles, interest expense, inventory, liabilities, long-term debt, net cash flows by activity, net income lines, operating income, profit margins, R&D, retained earnings, total equity, total revenue and valuation ratios. Example: Net Income, Gross Margin, EBIT.
  • Additional fields - per-column coverage counts, any extended identifiers beyond the verified spine, and column availability confirmed per fiscal year before modeling. Confirmed with your sample rather than promised blind.

The dictionary below is the same spine in table form. Ask for folded fields with your sample and they arrive confirmed in the same tables, not a separate negotiation.

Where does coverage start and stop?

Three chips, honestly drawn:

  • Geography - United States - S&P 500 constituents listed on the NYSE
  • Temporal - Prices January 2010 - December 2016 (shorter histories for recent listings); fundamentals fiscal years 2012-2016
  • Granularity - One price row per ticker per trading day; one fundamental row per company per fiscal year

One scope rule worth knowing before you model: this is a fixed historical window, not a rolling one. Every date range you build on it ends in December 2016, so pair it with a live feed wherever recency matters - and enjoy perfectly reproducible backtests everywhere else.

How is the dataset delivered?

API, files, or your warehouse. Daily, weekly, or hourly.

The four-table structure lands however your stack wants it - pushed to storage, served over an endpoint, or synced straight into your database with the price and fundamentals tables already keyed for the join. Name the tickers, the field set and the history window when you request the sample; the sample ships first either way.

One honest note on cadence: this corpus is a fixed historical snapshot, so scheduled deliveries matter for keeping derived features reproducible across your systems - not for catching new bars. Nothing here updates past December 2016, and pretending otherwise is how silent train/serve drift starts.

Who uses this data, and for what?

A frozen seven-year panel with filings attached earns its keep in specific jobs:

  • Data scientists & ML engineers - start regression, factor and ML tutorials on split-adjusted daily bars joined to 10-K fundamentals, with every run reproducing bit-for-bit (data scientists use cases).
  • Developers & data-product builders - demo portfolio, charting and valuation products against real tickers without stitching a price feed together first (developers & builders use cases).
  • Journalists, academics & students - teach data cleaning, joins and valuation concepts on a widely forked corpus whose quirks are documented rather than discovered (journalists & academics use cases).
  • Competitive intel & product teams - prototype screening logic on real symbols before committing to a licensed feed (competitive intel use cases).
  • Investors & quant researchers - keep it as the fixed control panel for benchmarking live strategies against an era everyone can see (investors & quants use cases).
  • Market researchers & consultants - illustrate valuation-ratio mechanics with real numbers in client explainers, flagging the 2016 cutoff up front (market researchers use cases).

What should I know before requesting a sample?

Three things upfront. First, the split story: the raw price table deliberately ignores the roughly 140 splits in the window, so any return math runs against the split-adjusted table - using the raw one produces fake crashes on every split date. Second, survivorship: prices were sourced from Yahoo Finance without survivorship handling, meaning today's constituents dominate the tape and companies delisted along the way may not be there - reconstructing a point-in-time index membership needs care. Third, scope of the fundamentals: about 1,400 annual rows against roughly 500 companies raises an unresolved question - whether every ticker filed in all five fiscal years or whether coverage thins in earlier years - which we verify against your requested universe before delivery rather than promising blind.

None of these are hidden defects; all three are stated on the card itself. They are also precisely why the corpus works as a teaching and prototyping standard: the traps are documented, and your sample comes cut to the tickers and years you actually need.

Which datasets pair with this one?

Four complements cover what a frozen snapshot cannot:

Browse the full set on the best investment banking & brokerage datasets ranking or the investment banking & brokerage data hub. For terminology, start with OHLCV, daily OHLCV history and ticker-to-CIK mapping.

Field dictionary

Every field below is documented against real records. The full dictionary ships with the sample.

Field dictionary - Kaggle NYSE S&P 500 Historical Prices & Fundamentals (verified spine)
fieldtypedefinitionexample
datedateTrading day of the price observation in the raw and split-adjusted price tables.2016-01-05
symbolstringTicker symbol of the listed company; the join key between price history, fundamentals and the reference table.WLTW
open / close / low / highnumberDaily opening, closing, intraday low and intraday high prices in dollars.123.43
volumeintegerShares traded during the session.2163600
Ticker Symbol / Period Endingstring / dateComposite key in the fundamentals table identifying the company and the fiscal period end of its 10-K metrics.AAL, 2012-12-31
GICS Sector / GICS Sub IndustryenumSector and sub-industry classification carried on the company reference table.Industrials / Industrial Conglomerates
CIKstringSEC Central Index Key, enabling joins from a fundamentals figure back to its EDGAR filing.0000066740
Accounts Payable ... Total Revenue (~78 columns)numberAnnual 10-K financial-statement line items: accounts payable and receivable, capital expenditures, cash ratios, cost of revenue, EBIT and pre-tax earnings, goodwill, gross margin and profit, income tax, intangibles, interest expense, inventory, liabilities, long-term debt, net cash flows by activity, net income lines, operating income, profit margins, R&D, retained earnings, total equity, total revenue and valuation ratios.Net Income, Gross Margin, EBIT
Additional fields-Folded under 'additional fields on request': per-column coverage counts, any extended identifiers beyond the verified spine, and column availability confirmed per fiscal year before modeling. Confirmed with your sample rather than promised blind.on request

Coverage at a glance

dimensionvalue
GeographyUnited States - S&P 500 constituents listed on the NYSE
TemporalPrices January 2010 - December 2016 (shorter histories for recent listings); fundamentals fiscal years 2012-2016
GranularityOne price row per ticker per trading day; one fundamental row per company per fiscal year

Questions buyers ask

What is the Kaggle NYSE S&P 500 Historical Prices & Fundamentals dataset?

A packaged corpus of S&P 500 market history: roughly 851,000 daily OHLCV rows across about 500 tickers for January 2010 through December 2016 in raw and split-adjusted versions, roughly 1,400 annual fundamental rows of approximately 78 line items extracted from SEC 10-K filings for fiscal years 2012-2016, and a company reference table with GICS classifications.

Does prices.csv adjust for stock splits?

No - the raw file leaves the roughly 140 splits in the window unadjusted by design, which is why a second table repeats every series on a split-adjusted basis. Run return calculations against the split-adjusted table; level analysis can use either.

How far back do the prices and fundamentals go?

Prices run from January 2010 through December 2016, with shorter histories for recently listed companies such as WLTW, which first appears on the tape in January 2016. Fundamentals cover five fiscal years, 2012 through 2016, one row per company per fiscal period end.

Which fields join the price tables to the fundamentals?

Ticker symbol is the shared key. Price tables key each bar on symbol and date, the fundamentals table keys each row on Ticker Symbol plus Period Ending, and the securities reference table adds GICS Sector, GICS Sub Industry and CIK so companies roll up by sector or trace back to their EDGAR filings.

Is the snapshot frozen after 2016?

Yes - it is a fixed historical snapshot with no refresh path, which is exactly what makes it valuable as a stable benchmark: every model run sees identical inputs. Any analysis needing post-2017 bars pairs this corpus with a live feed.

Can I get just the tickers and fields I need?

Yes. Name the tickers, the date range and the columns when you request a sample - the full universe, one sector, or a single company's price-plus-fundamentals panel all ship as clean tables cut to your specification.

See the rows before you pay anything.

Name this dataset and we send real records from it — scoped to the fields you asked for.

See pricing