Knowledge Base/How does Massive handle fractional share trades?

How does Massive handle fractional share trades?

They are published like any other trade, with the real size in decimal_size and the integer size field rounded down, often to zero. They add to a bar's volume but never set its open, high, low or close, because they carry the odd-lot condition.

Two fields on a fractional share trade from the Massive trades endpoint do not mean what their names suggest, and both catch people out. size is an integer, so a trade for a quarter of a share reports zero there; the number you want is the string in decimal_size. The odd-lot sale condition on these trades is the second surprise, and it is what keeps them out of a bar's OHLC.

Applies to

  • Plans: a Stocks subscription.
  • Endpoints: /v3/trades/{ticker} and the flat-file trade datasets; the T channel on the /stocks WebSocket cluster, where the decimal size is ds.
  • Asset classes: US stocks and ETFs, where brokers offer fractional investing.

What a fractional trade looks like

One fractional trade, pulled from an ordinary session:

curl -X GET "https://api.massive.com/v3/trades/AAPL?timestamp=2026-09-04&limit=1000&apiKey=YOUR_API_KEY"

Response

{
  "results": [
    { "price": 320.0017, "size": 0, "decimal_size": "0.250624",
      "conditions": [12, 37], "exchange": 4 }
  ],
  "status": "OK"
}

A quarter of a share, at a price carried to four decimal places, reported off-exchange. In that page of 1,000 AAPL trades, 106 were fractional and 104 of those reported size: 0.

The three fields to get right

Three fields decide whether your numbers come out right:

FieldWhat it holdsThe trap
sizeThe size rounded to a whole numberZero on almost every fractional trade, so summing it undercounts
decimal_sizeThe real size, as a stringParse it as a decimal, not a float, if you are reconciling exactly
conditionsIncludes 37, Odd Lot TradeDecides what the trade may update

Sum decimal_size rather than size whenever you build your own bars, and do not filter out trades with size: 0. They are real executions for less than a share.

Why they move volume but not price

Every fractional trade in that sample carried condition 37, the odd-lot condition, and the conditions endpoint reports its consolidated rules as updates_volume: true with updates_high_low: false and updates_open_close: false. So a fractional trade adds its size to the bar and can never set the bar's price.

That is the mechanism behind two things that otherwise look like bugs. Aggregate volume comes back as a decimal, because the bar sums real sizes including the fractions. And a bar can carry volume at a price its own high and low do not span, because the trades that contributed the volume were not eligible to move the range.

Why fractional trades exist at all

Brokers offering fractional investing buy whole shares on the exchange and allocate parts of them to customers, and the resulting executions are reported off-exchange through a FINRA facility rather than matched on a lit venue. That is why the example above carries exchange 4. The market's reporting rules treat them as odd lots, which is where the price-eligibility rule comes from: an odd lot is not considered representative of the market's price.

If you see an error

Volume that does not match your own reconstruction is almost always size against decimal_size.

Trades with size: 0 are not empty records to discard. Read decimal_size.

A bar whose volume looks inconsistent with its high and low is odd lots contributing volume without price. Check the conditions on the trades in that window.

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.