Field reference
Every key of the data object: identity, profile, breakdowns, performance, metrics, costs, freshness, the issuer's documents.Updated October 25, 2026The data object has the same shape for every fund. Breakdown arrays contain { label, weight } with weights in percent; metric strings keep the unit / format as published ("0.20%", "USD 151.7bn"). Missing values are empty strings, empty arrays or null, never absent keys. Every term links to the glossary.
Identity & key facts
Who issues the fund, what it invests in, how large it is and how it is structured.| Field | Type | Description |
|---|---|---|
investmentObjective | string | The fund's stated investment objective / strategy paragraph.e.g. "The Fund seeks to track the performance of an index composed of developed market companies." |
securityType | string | Security-type label of the share class.e.g. "ETF" | "Open-End Fund" |
structure | string | Normalized structure token derived from securityType.e.g. "ETF" | "UCITS Fund" |
shareClass | string | undefined | Share-class letter/label when it can be inferred (e.g. from the fund name).e.g. "A" | "I" | "USD Acc" |
keyFacts.assetClass | string | Broad asset class.e.g. "Equity" | "Fixed Income" | "Money Market" | "Allocation" |
keyFacts.subAsset | string | FundFacts category, identical to profile.category (composed from the disclosed exposures; see the profile group).e.g. "Global Blend Equity" |
keyFacts.currency | string | Share-class base currency (ISO 4217).e.g. "USD" |
keyFacts.aum | string | Fund size / net assets, formatted as reported, with unit and currency.e.g. "USD 105.4 bn" |
keyFacts.inception | string | Inception date of the share class (YYYY-MM-DD); empty when the documents give no date.e.g. "2009-09-25" |
keyFacts.distribution | string | Income treatment.e.g. "Accumulating" | "Distributing" |
keyFacts.holdings | string | number | Number of holdings in the portfolio.e.g. 1355 |
keyFacts.manager | string | Portfolio manager(s) or management company.e.g. "BlackRock Asset Management Ireland" |
managerTenure | string | Tenure of the longest-serving manager, when disclosed.e.g. "5.3 years" |
benchmarkName | string | Primary prospectus benchmark / index tracked.e.g. "MSCI World NR USD" |
replication | "physical" | "synthetic" | null | How an index fund or ETF tracks its index, as the issuer states it (a replication-method or product-structure row, the KID wording, or "Swap" / "(DR)" in the share-class name). physical: holds the index securities (full replication or optimised sampling). synthetic: the index return comes from a swap, and the securities held are a substitute basket that backs it (see holdingsBasis). null when the documents do not state it, and for most active funds.e.g. "synthetic" |
Risk rating & profile
The regulatory risk indicator, plus the FundFacts profile: a classification derived from the fund's own disclosed data with fixed, published rules, so every value can be recomputed from the same payload. Rules are versioned in profile.rules.| Field | Type | Description |
|---|---|---|
riskRating | number | null | SRI / SRRI risk indicator on a 1 (lowest) to 7 (highest) scale, as stated in the fund's KID / KIID or other issuer documents. null when no document read states it: it is never estimated.e.g. 6 |
profile.kind | "equity" | "fixedIncome" | "moneyMarket" | "allocation" | "alternative" | "other" | Broad kind, derived from keyFacts.assetClass.e.g. "equity" |
profile.category | string | Composed label: region + valuation (or sector for sector funds) for equity; currency + credit grade + duration for bonds; equity share for allocation funds. A part is left out when the data behind it is not disclosed (no region without a geography breakdown, no grade without a credit breakdown).e.g. "Global Blend Equity" | "EUR High-Grade Bond, Extensive Duration" | "Balanced Allocation (58% equity)" |
profile.riskBand | "low" | "medium" | "high" | null | SRRI 1–2 low, 3–4 medium, 5–7 high.e.g. "medium" |
profile.concentration | "concentrated" | "balanced" | "diversified" | null | Weight of the ten largest holdings: ≥50% concentrated, 30–50% balanced, <30% diversified. null without holdings, when the holdings are published without weights, and when they are a synthetic fund's substitute basket.e.g. "diversified" |
profile.regionFocus | string | null | Largest region (or country) when it is ≥80% of the portfolio; otherwise "Global", and "Global" also when the benchmark or objective states a global mandate (global, world, international, all-country). null when no geography breakdown is disclosed.e.g. "Global" |
profile.regionTilt | string | null | For Global funds, the largest region when it is 50–80% of the portfolio.e.g. "North America" |
profile.sectorTilt | string | null | Equity only. Largest sector when ≥30%, otherwise "Broad". A fund is categorised as a sector fund with ≥50% in a sector its benchmark or objective names, or ≥70% in any one sector.e.g. "Technology" |
profile.valuation | "value" | "blend" | "growth" | null | Equity only, from the portfolio P/E: <15 value, 15–22 blend, >22 growth.e.g. "blend" |
profile.creditQuality | "high" | "medium" | "low" | null | Bonds and money market, from the credit buckets: AAA–A ≥60% high; investment grade (≥BBB) ≥80% medium; otherwise low.e.g. "high" |
profile.rateSensitivity | "limited" | "moderate" | "extensive" | null | Bonds, from effective or modified duration: <3.5 years limited, 3.5–6 moderate, >6 extensive.e.g. "moderate" |
profile.equityShare | number | null | Allocation funds: equity weight of the asset allocation, in percent.e.g. 58 |
profile.rules | string | Version of the rule set that produced the profile.e.g. "fundfacts-profile/4" |
Portfolio breakdowns
Every breakdown is an array of { label, weight } where weight is a percentage (0–100). Arrays are empty when the panel does not apply to the asset class.| Field | Type | Description |
|---|---|---|
topHoldings | Array<{ name: string; weight: number | null }> | Largest positions with their portfolio weight in percent, in the issuer's order. weight is null when the issuer publishes the names only (e.g. Fundsmith's top 10); a list is never mixed, so either every weight is a number or every one is null, and weights are never estimated. For a synthetic ETF these are the substitute basket's securities, not the index constituents: check holdingsBasis before using them for look-through or overlap.e.g. [{ "name": "NVIDIA Corp", "weight": 5.1 }, …] |
holdingsBasis | "portfolio" | "substituteBasket" | null | What topHoldings lists. portfolio: the fund's own positions, which are its exposure. substituteBasket: a synthetic fund's collateral basket, which backs the swap and says nothing about the exposure (sector, geography and region describe the index instead); /portfolio and /overlap leave such holdings out. null when no holdings are disclosed.e.g. "portfolio" |
indexTopHoldings | Array<{ name: string; weight: number }> | undefined | Only when holdingsBasis is substituteBasket and the issuer publishes it (Amundi does): the largest positions of the index the swap delivers, with their index weight in percent. This is the fund's exposure; topHoldings is the collateral basket behind it. Absent otherwise.e.g. [{ "name": "TAIWAN SEMICONDUCTOR MANUFAC", "weight": 19.34 }, …] |
geography | Array<{ label: string; weight: number }> | Country exposure.e.g. [{ "label": "United States", "weight": 71.8 }, …] |
region | Array<{ label: string; weight: number }> | Regional exposure. Mirrors geography when no distinct regional panel exists.e.g. [{ "label": "North America", "weight": 75.4 }, …] |
sector | Array<{ label: string; weight: number }> | Sector exposure (GICS-style for equity; instrument type for fixed income).e.g. [{ "label": "Technology", "weight": 27.5 }, …] |
creditQuality | Array<{ label: string; weight: number }> | Credit-rating buckets for fixed income and money-market funds.e.g. [{ "label": "AAA", "weight": 12.3 }, …] |
assetAllocation | Array<{ label: string; weight: number }> | Asset-class split (equity / bond / cash / other) for allocation funds.e.g. [{ "label": "Equity", "weight": 60.2 }, …] |
instrument | Array<{ label: string; weight: number }> | Instrument-type breakdown, mostly for money-market funds.e.g. [{ "label": "Commercial paper", "weight": 41 }, …] |
maturity | Array<{ label: string; weight: number }> | Maturity buckets for fixed income / money-market funds.e.g. [{ "label": "1-3 years", "weight": 35.2 }, …] |
strategy | Array | Strategy allocation (e.g. for multi-strategy / alternative funds). Usually empty.e.g. [] |
exposure | Array | Additional exposure panel when available. Usually empty.e.g. [] |
Performance
Calendar-year, cumulative, indexed and annualised returns. When the issuer publishes a total-return history (a NAV of an accumulating class, a total-return index, or the price NAV of a distributing class rebuilt with its distributions), the series and the returns are computed from it (monthly, last observation of each month); a distributing class's price NAV alone is never used. Otherwise the figures are the ones stated in the factsheet, or compounded from the monthly returns it prints. Nothing before the share-class inception is shown. Series can be empty for funds whose issuer does not publish a history.| Field | Type | Description |
|---|---|---|
calendarReturns.years | string[] | Calendar years covered, oldest first: full years since the share-class inception. Partial years (the inception year, the current year) are excluded.e.g. ["2020", "2021", "2022", "2023", "2024"] |
calendarReturns.fund | number[] | Fund total return per calendar year, in percent, aligned with years.e.g. [15.9, 22.9, -17.7, 23.8, 18.9] |
calendarReturns.benchmark | (number | null)[] | Benchmark return per calendar year, in percent, when the factsheet states it (null otherwise).e.g. [15.9, 21.8, -18.1, 23.8, 18.7] |
cumulativePerformance | Array<{ date: string; fund: number | null; benchmark: number | null }> | Monthly cumulative return series (percent from the first point, rebased at the share-class inception).e.g. [{ "date": "2024-12", "fund": 112.4, "benchmark": null }, …] |
indexedPerformance.points | Array<{ date: string; fund: number | null; index: number | null }> | Same series rebased to 100 at the first point, ready to plot.e.g. [{ "date": "2020-01", "fund": 100, "index": null }, …] |
indexedPerformance.hasIndex | boolean | Whether the index series is populated.e.g. false |
annualisedReturns | Array<{ label: string; fund: number | null; index: number | null }> | Trailing returns: 1 Year, 3/5/10 Years p.a. and Since Inception. Multi-year figures are annualised; a horizon longer than the share class's history is null.e.g. [{ "label": "1 Year", "fund": 18.2, "index": 18.0 }, { "label": "3 Years p.a.", … }] |
Headline metrics & risk statistics
Values are strings formatted as published (with % or units) so nothing is lost in conversion. Fields that do not apply to the asset class are empty strings. Volatility, Sharpe ratio and maximum drawdown are the issuer's own figures when its documents state them. Otherwise they are computed from the issuer's total-return history over the last 36 complete months: volatility is the annualised standard deviation of monthly returns, and the Sharpe ratio is the annualised mean monthly return in excess of a same-currency money-market fund divided by the annualised standard deviation of those excess returns. There is no computed Sharpe ratio without such a cash series (USD, EUR, GBP), none for money-market funds, and no 3-year figure for a history shorter than 36 months.| Field | Type | Description |
|---|---|---|
headlineMetrics.ter | string | Ongoing charge as stated in the KID (preferred), otherwise the TER / ongoing charge the issuer's other documents state.e.g. "0.20%" |
headlineMetrics.aum | string | Fund size (duplicate of keyFacts.aum for factsheet layouts).e.g. "USD 105.4 bn" |
headlineMetrics.volatility3y | string | 3-year annualised standard deviation of monthly returns (the issuer's figure when published).e.g. "14.2%" |
headlineMetrics.sharpe3y | string | 3-year Sharpe ratio: the issuer's figure when published, otherwise the annualised mean excess return over a same-currency money-market fund divided by its annualised volatility. Empty for money-market funds.e.g. "0.85" |
headlineMetrics.yieldToMaturity | string | Yield to maturity (fixed income).e.g. "4.1%" |
headlineMetrics.modifiedDuration | string | Modified duration in years (fixed income).e.g. "6.2" |
metrics.peRatio | string | Portfolio price/earnings ratio (equity).e.g. "21.4" |
metrics.incomeYield | string | Distribution / dividend yield as the issuer publishes it; for a distributing class without one, the trailing 12-month distribution yield (distributions with ex-date in the last 12 months over the latest NAV).e.g. "1.6%" |
metrics.volatility3y | string | 3-year volatility (per-asset-class metric slot).e.g. "14.2%" |
metrics.sharpe3y | string | 3-year Sharpe ratio (per-asset-class metric slot).e.g. "0.85" |
metrics.yieldToMaturity | string | Yield to maturity (fixed income slot).e.g. "4.1%" |
metrics.effectiveDuration | string | Effective duration in years.e.g. "5.9" |
metrics.effectiveMaturity | string | Effective / average maturity in years.e.g. "8.4" |
metrics.averageRating | string | Average credit rating of the portfolio.e.g. "AA-" |
metrics.sevenDayYield | string | 7-day yield (money market).e.g. "3.9%" |
metrics.wam | string | Weighted average maturity in days (money market).e.g. "38" |
metrics.wal | string | Weighted average life in days (money market).e.g. "61" |
metrics.maxDrawdown | string | Maximum peak-to-trough drawdown over the same 3-year window (the issuer's figure when published).e.g. "-25.4%" |
metrics.equityCorrelation | string | Correlation to equities (commodities, alternatives, allocation funds): the issuer's figure, or the correlation of the last 36 complete monthly returns with a broad world-equity index fund's NAV.e.g. "0.62" |
metrics.equityBondSplit | string | Equity/bond split summary for allocation funds.e.g. "60/40" |
Costs & sustainability
The PRIIPs KID cost table and the SFDR classification, read from the KID (deterministically where the regulated layout allows) and the factsheet. Strings keep the format printed in the document; empty when the document does not state the line.| Field | Type | Description |
|---|---|---|
sfdrArticle | number | null | SFDR classification stated in the fund's documents: 6 (no sustainability objective), 8 (promotes E/S characteristics) or 9 (sustainable investment objective). null when not disclosed.e.g. 8 |
costs.entry | string | Entry costs (one-off), as printed in the KID. Printed on factsheets (the Costs card) and on the client report's Costs & charges page as stated; an empty string means not disclosed or stated as none.e.g. "0.00%" |
costs.exit | string | Exit costs (one-off).e.g. "0.00%" |
costs.ongoing | string | Management fees and other administrative or operating costs per year (the KID's ongoing-cost line). Falls back to headlineMetrics.ter.e.g. "0.20%" |
costs.transaction | string | Portfolio transaction costs per year.e.g. "0.05%" |
costs.performanceFee | string | Performance fee, when the fund charges one.e.g. "0.00%" |
costs.riy1y | string | Annual cost impact if you exit after one year (reduction in yield).e.g. "0.35%" |
costs.riyRhp | string | Annual cost impact at the recommended holding period.e.g. "0.25%" |
costs.recommendedHoldingPeriod | string | Recommended holding period stated in the KID. Named next to the cost impact at the holding period on sheets and reports.e.g. "5 years" |
costs.exampleInvestment | string | The example investment the KID's costs-over-time table is based on, as printed (10,000 in the share-class currency under the PRIIPs rules). Empty string when the KID prints no costs-over-time table; absent on payloads stored before 25 Oct 2026. The fund cost calculator (/tools/fund-cost-calculator?isin=) runs the same arithmetic for any amount and period.e.g. "USD 10,000" |
costs.totalCost1y | string | Total costs in money if you exit after one year, as printed in the KID's costs-over-time table for its exampleInvestment (one-off and recurring costs plus the growth they would have earned, 0% return assumed in year one); never a client amount. Empty string when not printed; absent on payloads stored before 25 Oct 2026.e.g. "USD 20" |
costs.totalCostRhp | string | Total costs in money if you exit at the recommended holding period, as printed in the KID's costs-over-time table for its exampleInvestment (moderate performance scenario assumed after year one). Empty string when not printed; absent on payloads stored before 25 Oct 2026.e.g. "USD 110" |
Freshness
When the underlying figures are dated and when the payload was produced.| Field | Type | Description |
|---|---|---|
dataAsOf | string | 'As of' date the issuer's documents state for the figures (factsheet, product page or holdings file). When no document states one, the last observation of the NAV or return series the figures come from. Empty when there is neither (a payload of key facts only). A date after the crawl or before 1990 is a reading error and is never served.e.g. "2026-07-31" |
performanceAsOf | string | undefined | Date the annualised returns are as of: the last point of the NAV series they are computed from, or the date the issuer states its returns table at. A month-end figure on a payload whose dataAsOf is later differs from it. Absent without returns.e.g. "2026-09-30" |
generatedAt | string (ISO 8601) | Timestamp of the refresh that produced this payload. Payloads are refreshed when older than 24 hours.e.g. "2026-09-02T13:41:07.112Z" |
Documents
Where the figures come from: the issuer's own public documents, as links (never copies).| Field | Type | Description |
|---|---|---|
documents | object | null | The issuer's retail documents the payload was read from, linked (never copied). Professional, institutional and intermediary addresses are never published; holdings and NAV links only as plain file downloads; cache-buster parameters stripped; https only. null when no public link survives (a professional-only issuer, a payload extracted from an uploaded document). Absent on payloads frozen before 25 Oct 2026 (older factsheet and report snapshots).e.g. { "kid": "https://…/kid.pdf", "factsheet": "https://…/factsheet.pdf", "productPage": "https://…/products/251882/…", "holdings": "https://…/latest-holdings.csv", "nav": null } |
documents.kid | string | null | The PRIIPs KID (or UCITS KIID): a PDF, or the issuer's own document route. The SRI and the cost lines are read from it.e.g. "https://www.ishares.com/uk/individual/en/literature/kiid/kiid-…-ie00b4l5y983-en.pdf" |
documents.factsheet | string | null | The monthly factsheet the headline figures, breakdowns and returns are read from.e.g. "https://www.ishares.com/uk/individual/en/literature/fact-sheet/swda-…-fact-sheet-en-gb.pdf" |
documents.productPage | string | null | The share class's page on the issuer's site; the fund's stored website when no product page was located. Never a professional or intermediary page.e.g. "https://www.ishares.com/uk/individual/en/products/251882/ishares-msci-world-ucits-etf-acc-fund" |
documents.holdings | string | null | The holdings file, only when the issuer publishes it as a plain .csv / .xls / .xlsx / .pdf download without a query string (an API endpoint is not linked).e.g. "https://www.ishares.com/uk/individual/en/products/251882/…/latest-holdings.csv" |
documents.nav | string | null | The NAV history file, same rule as documents.holdings.e.g. "https://www.ssga.com/library-content/products/fund-data/etfs/emea/navhist-emea-en-spyl-gy.xlsx" |