ETF implied demand

API Enterprise

Flow-implied passive demand: the buying or selling of a stock that ETF creations and redemptions implied on each date. When an ETF creates units it buys its basket and when it redeems it sells it, so each fund's daily flow (NAV times the change in units, in USD) times the stock's weight in that fund, summed over every ETF holding the stock, is the passive demand for it that day, in USD, in shares, and as a share of average daily volume and of shares outstanding.

Region-wide for one date: every stock with ETF flows on the date whose most liquid listing trades in the requested region, with the full instrument-identity block on every row. Uncharged.

Available Data Points:

  • Date: The trading date of the ETF flows (YYYY-MM-DD).
  • Company: The name of the company issuing the security.
  • Ticker: The ticker symbol associated with the security.
  • Operating MIC: The operating Market Identifier Code of the security.
  • MIC: The Market Identifier Code (MIC) for the traded security.
  • ISIN: The International Securities Identification Number for the security.
  • FIGI: The Financial Instrument Global Identifier.
  • Share Class FIGI: The Financial Instrument Global Identifier for the share class.
  • Ortex Company ID: Unique id for a company.
  • Ortex Security ID: Unique id for a security issued by a company.
  • Ortex Tradable item ID: Unique id for a listing of a security.
  • Ortex Tradable item main indicator: Indicates if the trading item is the main trading item for the security.
  • Tradable Item Currency: The currency of the tradable item.
  • Exchange Country: The country location of the exchange.
  • Implied Net USD: Net passive buying (positive) or selling (negative) of the stock implied by the date's ETF flows, USD.
  • Implied Buy USD: The positive contributions: funds whose creations bought the stock, USD.
  • Implied Sell USD: The negative contributions: funds whose redemptions sold the stock, USD. Never positive.
  • Implied Net Shares: The net demand in shares, at the date's price.
  • Pct ADV: Implied net shares as a percentage of the one-month average daily volume summed over the stock's listings.
  • Pct Shares Outstanding: Implied net shares as a percentage of the shares outstanding on the date.
  • Price USD: The close of the stock's most liquid listing on the date (or the latest in the week before), in USD.
  • ADV Shares: One-month average daily volume summed over the stock's live listings, shares.
  • Shares Outstanding: Shares outstanding on the date, as they stood then.
  • Fund Count: ETFs whose flow reached the stock.
  • Share Based Fund Count: Of those, funds whose basket states shares but no weights.
  • Stale Fund Count: Of those, funds whose holdings file was more than a week old.
  • Max Holdings Age Days: Age of the oldest holdings file behind the row, days.
  • Avg Holdings Age Days: Age of the holdings files behind the row, weighted by each fund's flow, days.

Region and date

Use region to select the universe (a region name, an ISO-2 country code, or ALL; defaults to US) by the stock's most liquid listing, and date to select the flow date (defaults to the latest available). A date with no stored figures resolves back to the most recent date that has them.

Point in time

A flow on a date is applied with the holdings file each fund had published before that date - its basket at the previous close - never a file dated on or after it. A fund's quarterly SEC N-PORT basket counts only from sixty days after its quarter end, when it is published. A file is used for at most 35 days (100 for monthly Vanguard US files, 155 for N-PORT); a fund with no file inside that bound contributes nothing. avgHoldingsAgeDays, maxHoldingsAgeDays and staleFundCount say how old the files behind each row were.

What is excluded

Leveraged, inverse and synthetic (swap-based) funds are left out: their exposure is a swap whose hedge, not the fund's own basket, does the trading. ETNs and ETCs hold no stocks. Cash, futures and bond lines are never attributed to a stock, but stay in each fund's weights, so the cash part of a creation is not reattributed to the stocks. Holdings that ORTEX could not match to a listing are not attributed.

Units and coverage

Demand is per security: funds that file one stock under different venues add up. Shares are converted at the USD close of the stock's most liquid listing; pctAdv divides by the one-month average daily volume summed over the stock's listings in ORTEX (off-exchange and unlisted venues are not in it). Share figures are left null where they would exceed 10% of the shares outstanding in a day: that is a wrong price, not demand. Funds whose basket states share counts but no weights (the mainland China exchange baskets) contribute the change in units times their share count, counted in shareBasedFundCount. Coverage follows the ORTEX holdings store: daily issuer files since October 2026, and before that about one file per fund per month plus the quarterly N-PORT baskets of US funds.

Try it out! You can test the API with the trial key TEST. Simply include it in your request headers; either here, or add the header "Ortex-Api-Key": "TEST" to your http request.

Trial key restrictions: Trial keys may be limited to a specific date range and set of regions. Requests outside the allowed regions or entirely outside the allowed date range are rejected; a date window that partially overlaps the allowed range is trimmed to it, reported in meta.restriction.

Get full access! Contact [email protected]

Query Params
string
Defaults to US

Which instruments to return: a region name, a two-character ISO-2 country code, or "ALL" for the whole covered universe. Defaults to "US". An unrecognized value returns 400 invalidRegion.

date

The single date to return data for (defaults to the latest available). Format: YYYY-MM-DD.

integer

Page number within the paginated result set. Must be >= 1. Defaults to 1.

integer

Number of rows per page. The default and the maximum allowed depend on the API tier; a value above the tier maximum is rejected with 400 invalidPageSize.

string
enum
Defaults to json

Response format. "json" (default) or "csv".

Allowed:
Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
Responses

Language
Credentials
Header
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json
text/csv
*/*