tRPC Fund Composition API
tRPC Endpoints
tRPC Fund Composition API
Top holdings of the fund underlying an ETF ticker.
POST
tRPC Fund Composition API
The
fundComposition.* namespace serves the composition (“what’s in this
fund”) of the fund underlying a ticker. Data comes from Massive ETF Global
(constituents and profiles), which covers the broad US ETF universe and
refreshes roughly daily upstream.
- Base endpoint:
POST /v1/trpc - Namespace:
fundComposition.* - Auth: public (rate-limited, Tier 2)
- Display data only: composition never feeds pricing or execution.
Procedures
-
fundComposition.getByTicker- Purpose: the symbol page’s “Fund composition” panel for ETFs
- Input:
- required
ticker: underlying fund ticker (e.g.AGG); normalized to uppercase
- required
- Source: Massive ETF Global constituents (latest processed_date
snapshot; upstream
weightfractions are converted to percent) - Response:
nullwhen the ticker has no constituent data (plain stocks, uncovered funds) or the entitlement is unavailable, so clients render nothing rather than an empty panel. Otherwise:asOf: provider snapshot date (effective/processed date), ornullwhen unreportedsource: provider slug, currently alwaysetf-globalcoveragePct: sum of the returned holdings’ weights — how much of the fund the response covers. Diversified funds can be small; clients must not renormalize weights to 100%.holdings: up to ten rows, heaviest first:name: display name (provider all-caps names are title-cased server-side)symbol: underlying ticker for listed securities, elsenull(bonds, cash sleeves)weightPct: percent of the whole fund (0.42= 0.42%)
-
fundComposition.getExposures- Purpose: the symbol page’s “Exposure” panel (Sectors / Countries tabs) plus the fund presentation of Key metrics and About (profile facts)
- Input: required
ticker - Source: Massive ETF Global profiles (sector_exposure and geographic_exposure arrive as fraction dicts and are converted to percent rows; country labels are ISO codes localized client-side)
- Response:
nullwhen the ticker has no ETF Global profile or the entitlement is unavailable. Otherwise:asOf: provider snapshot date, ornullsource: provider slug, currently alwaysetf-globalaumUsd: assets under management in USD, ornullexpenseRatioPct: total expense ratio in percent points (0.09= 0.09%), ornullsectors/countries:[{ label, weightPct }]provider-reported percentages sorted descending; either list may be empty (the facts below still populate)facts: fund-level profile facts, ornull:fundName: full fund name (“SPDR S&P 500 ETF Trust”)issuer,benchmark,assetClass,category,focus: provider display strings, each nullableproductType: lowercaseetf/etnmanagementClassification: lowercaseactive/passiveleverageFactor: multiplier (3= 3x, negative = inverse),nullwhen unleveragedinceptionDate:yyyy-mm-dddistributionFrequency: provider schedule code (M,Q, …)numHoldings,avgDailyVolumeShares: nullable numbersnetExpenseRatioPct: net of fee waivers, percent pointsttmDividendYieldPct: trailing-12-month distribution yield in percent points, derived from Massive dividends and the snapshot price (funds are absent from the ratios endpoint);nullwhen distributions or price are unavailable
-
fundComposition.getDistributions- Purpose: backward-compatible fund namespace for dividend history; new
symbol-page clients use
tradFiMarketData.getDividendsfor both stocks and funds - Input: required
ticker - Source: delegates to the instrument-neutral Massive dividend-history read
documented under
tradFiMarketData.getDividends - Response:
nullwhen there is no market-data source or the ticker has no payable cash distributions. Otherwise:annual: ascending calendar years, at most the current year plus the nine before it:{ year, totalPerShareUsd, partial }wherepartialmarks the in-progress current yearavgYield5yPct: average annual yield in percent points over the last five complete calendar years (each year’s distributions over its year-end monthly close, from Massive aggregate bars);nullwhen price history or distributions are unavailablerecent: the last payments, newest first, capped at ten:{ exDate, payDate|null, amountPerShareUsd }
- Purpose: backward-compatible fund namespace for dividend history; new
symbol-page clients use