Knowledge Base/Is Massive's stock data adjusted for splits or dividends?

Is Massive's stock data adjusted for splits or dividends?

REST aggregate bars are split-adjusted by default, and you get raw prices with adjusted=false. Nothing is dividend-adjusted, and tick-level trades and quotes and the flat files are never adjusted at all, so they always show the price that printed.

Three different answers apply depending on which endpoint you call, and mixing them is what produces a series that quietly fails to reconcile. REST bars are adjusted unless you ask otherwise, ticks and flat files never are, and nothing anywhere is dividend-adjusted. The consequence worth planning for: an adjusted series is recomputed against today's share count, so the history you downloaded last year no longer matches the history you download today.

Applies to

  • Plans: aggregate bars, including the grouped endpoint, are on every Stocks plan. Trades, quotes and the stock flat files need a paid plan: Stocks Basic includes none of them, and each one's documentation, such as trades or the minute aggregates flat files, lists the plans that include it.
  • Endpoints and files: /v2/aggs/... and the grouped endpoint take an adjusted parameter; /v3/trades, /v3/quotes and the stock flat files do not, because they are never adjusted.
  • Asset classes: US stocks and ETFs, where splits happen.

What is adjusted and what is not

What is adjusted depends on what you ask for, and there are three different answers:

DataSplit adjusted?Dividend adjusted?
Aggregate bars, defaultYesNo
Aggregate bars with adjusted=falseNoNo
Trades and quotesNeverNever
Stock flat files, every datasetNeverNever
Dividend cash_amountNo, stored as paidNot applicable

The flat files row comes from the stocks flat files overview, which states that all stock flat files contain unadjusted data: prices and volumes are not adjusted for splits, dividends or other corporate actions.

How to get raw prices

curl -X GET "https://api.massive.com/v2/aggs/ticker/NVDA/range/1/day/2024-06-06/2024-06-07?adjusted=false&apiKey=YOUR_API_KEY"

Response

{ "ticker": "NVDA", "adjusted": false, "results": [{ "c": 1209.98 }], "status": "OK" }

The same request with no parameter returns "adjusted": true and a close of 120.998, because NVDA split ten for one on 10 June 2024. The adjusted field in the envelope always tells you which version you received, so read it rather than assuming.

Which one to store

Store the unadjusted prices if you are keeping a permanent record. An adjusted series is computed against today's share count, so it changes retroactively every time the company splits again: the history you downloaded last year no longer matches the history you download today, and nothing in your data will tell you it moved. Storing raw prices plus the split records from /stocks/v1/splits lets you rebuild any adjusted view you need and keeps the stored numbers stable.

Use the adjusted default when you are charting or computing returns across a split and do not intend to keep the result.

Why there is no dividend adjustment

There is no dividend-adjusted series because a dividend adjustment is a modeling choice rather than a fact. It depends on whether you assume dividends are reinvested, at what price, and whether you net out withholding tax, and different vendors answer those differently, which is why two dividend-adjusted series of the same stock rarely agree. Massive publishes the raw prices and the dividend records, so you can apply whichever convention your work requires.

If you see an error

A price series with a step on one date, and no news to explain it, is almost always an unadjusted series crossing a split. Check /stocks/v1/splits for an execution_date near the step.

Bars that disagree with a broker statement are usually the adjustment. Ask for adjusted=false and compare again.

Trades that disagree with an adjusted bar are expected: the trades are raw. That is not a data error.

Related


Was this article helpful?

Modernizing Wall St.

Reimagining financial market data for the 21st century.

Schedule a demo

Talk with our market data experts

Recommended

Can't find the answer you're looking for? Contact our team.
  • Title
    Are all indices available through the basic subscription tier?
    Data Coverage Category

    Data Coverage

    Indices Category

    Indices

    Description
    No, and the ones it withholds are the famous ones: SPX, DJI, RUT and VIX all need a paid Indices tier. Basic still reaches more than 10,000 of the 13,000-odd indices Massive publishes, and NDX and the Nasdaq Composite are among them.
  • Title
    Does Massive offer dark pool data?
    Data Coverage Category

    Data Coverage

    Stocks Category

    Stocks

    Description
    Yes. Off-exchange prints, which include dark pool executions, arrive on the ordinary trades feed and are identified by an exchange ID of 4. There is no separate dark pool endpoint, and no way to tell which individual venue a print came from.
  • Title
    Does Massive offer pre-market and after-hours data?
    FAQ Category

    FAQ

    Stocks Category

    Stocks

    Description
    Yes. Every extended-hours trade and quote is published, from 04:00 to 20:00 Eastern. There is no session parameter, so you select a session with timestamps, and expect far fewer aggregate bars outside regular hours because many extended-hours trades are odd lots that cannot set a price.