Data Dictionary
Complete field reference for the CAPAdata API response. All fields are present in the response unless marked as nullable, in which case the value may be null.
Subscription Tiers
The API response shape is identical for all subscription tiers - the same fields are always present - but free-tier API users receive a reduced dataset that mirrors what a free-tier UI user can see. For fields a free user cannot see, values are null or empty arrays rather than omitted.
Specifically, for a free-tier API user:
fundValueDatais populated only for the30 Yearsand5 Yearsbrackets, and is trimmed to the most recent 5 years. Other brackets return an empty array.- Per-bracket premium metrics (
assetAllocationData,sharpeRatio,annualisedRisk,topBottomPriceVariance) are returned with null values. - Per-fund ESG fields (
tcfdWaci,fundExcludes) are null. - Provider yearly data points (member counts, asset values, bulk transfers) return null per year. Provider-level functionality, ESG, and oversight flags all return null.
inflationSeriesreturns empty arrays.
Response Wrapper
| Field | Type | Description |
|---|---|---|
dataLastUpdated | string | ISO 8601 timestamp of when the provider data was last updated, including any corrective uploads between quarters |
latestQuarter | string | The most recent quarter covered by the data (e.g. "Q4 2025") |
capaFund | CapaFund | The CAPA average fund - a composite benchmark calculated from the mean quarterly percentage returns of all CAPA constituent funds, indexed to a base value of 100. Uses a reduced version of the Fund structure (see CAPA Fund section below). |
inflationSeries | InflationSeries | Quarterly economic reference series (Bank of England base rate and UK CPI) suitable for overlaying on fund performance charts. |
providers | Provider[] | Array of provider objects |
CAPA Fund
The capaFund field contains the CAPA average - a composite benchmark calculated from the mean quarterly percentage returns of all CAPA constituent funds, indexed to a starting value of 100. It uses a reduced version of the Fund structure: fund brackets carry historic unit price data, annualised risk, top-bottom price variance, and fund-bracket time metadata.
The following Fund fields are omitted from the CAPA fund because they are not meaningful for a synthetic benchmark:
tcfdWaci(top-level)fundExcludes(top-level)assetAllocationData(per fund bracket)sharpeRatio(per fund bracket)
Inflation Series
The inflationSeries field contains two quarterly economic reference series that can be overlaid on fund performance charts. Each series is an array of points with an ISO 8601 timestamp and an index value.
| Field | Type | Description |
|---|---|---|
boeBaseRate | InflationPoint[] | UK Bank of England base rate, expressed as a quarterly index series. |
cpi | InflationPoint[] | UK Consumer Prices Index, expressed as a quarterly index series. |
InflationPoint
| Field | Type | Description |
|---|---|---|
time | string | ISO 8601 timestamp marking the start of the quarter this observation relates to. |
value | number | The index value for this quarter. |
Provider Fields
Identity
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier for the provider |
name | string | Full name of the provider (e.g. "Aviva") |
shortName | string | null | Abbreviated name for the provider |
slug | string | URL-friendly identifier (e.g. "standard-life"). Lowercase with dashes. |
imageUrl | string | Full URL to the provider logo image |
description | string | Summary of the provider, their pension schemes, and key characteristics |
createdAt | string | ISO 8601 timestamp of when the provider record was created |
DC Members (yearly data points)
These fields are objects keyed by year (e.g. "2020": 150000, "2021": 160000). Values may be null for years where data is unavailable.
| Field | Type | Description |
|---|---|---|
activeDcMembersDataPoints | Record<year, number | null> | Number of active defined contribution members by year |
deferredDcMembersDataPoints | Record<year, number | null> | Number of deferred (no longer contributing) members by year |
DC Assets (yearly data points)
| Field | Type | Description |
|---|---|---|
bundledDcAssetsDataPoints | Record<year, number | null> | Total value of bundled DC assets by year |
employersAcrossDcBusinessDataPoints | Record<year, number | null> | Number of employers in the DC business by year |
Bulk Transfers (yearly data points)
| Field | Type | Description |
|---|---|---|
bulkTransfersValueDataPoints | Record<year, number | null> | Value of bulk transfers by year |
bulkTransfersNumberDataPoints | Record<year, number | null> | Number of bulk transfers by year |
Oversight and Administration
| Field | Type | Description |
|---|---|---|
authorisedInPrivateMarket | boolean | null | Whether the provider is authorised to invest in private markets |
technologyPlatformUsed | string | null | Name of the technology platform the provider uses |
Adviser and Advice
| Field | Type | Description |
|---|---|---|
facilitatesAdviserCharging | string | null | Whether the provider supports adviser charging |
facilitatesPensionsAdviceAllowance | string | null | Whether the provider allows use of pensions advice allowance |
Mobile App
| Field | Type | Description |
|---|---|---|
appForAllMembers | boolean | null | Whether a mobile app is available for all members |
percentageMembersDownloadedApp | number | null | Percentage of members who have downloaded the app |
percentageMembersViewedAppLastYear | number | null | Percentage of members who used the app in the last year |
percentageMembersNominatedDeathBenefitBeneficiary | number | null | Percentage of members who have nominated a death benefit beneficiary |
Pension Structures
| Field | Type | Description |
|---|---|---|
pensionStructuresOfferedReliefAtSource | boolean | null | Whether the provider supports Relief at Source |
pensionStructuresOfferedNetPay | boolean | null | Whether the provider supports Net Pay |
At Retirement Functionality
| Field | Type | Description |
|---|---|---|
offersPartialWithdrawalFromAge55 | boolean | null | Whether members can make partial withdrawals from age 55 |
offersFlexiAccessDrawdown | boolean | null | Whether flexible access drawdown is supported |
offersUfpls | boolean | null | Whether Uncrystallised Fund Pension Lump Sum is offered |
offersPartialUfpls | boolean | null | Whether partial UFPLS is offered |
offersDripFeedDrawdown | boolean | null | Whether drip-feed drawdown is offered |
dripFeedDrawdownAccommodatesProtectedLifetimeAllowances | boolean | null | Whether protected lifetime allowances can be used with drip-feed drawdown |
offersMultiGoalOrMultiWrapperBucketing | boolean | null | Whether the provider supports multiple goals or wrapper bucketing |
offersAnnuityBorkingService | string | null | Whether the provider offers an annuity broking service |
ESG, Sustainability and Climate
| Field | Type | Description |
|---|---|---|
tcfdReportLink | string | null | URL to the provider TCFD climate report |
tcfdCarbonFootprint | string | null | Total carbon footprint reported in the TCFD report |
tcfdOtherDecarbonisationMetrics | string | null | Other decarbonisation metrics from the TCFD submission |
netZeroTargetYear | number | null | Year by which the provider targets net zero |
interimNetZeroTarget | string | null | Shorter-term net zero milestones (e.g. "50% reduction by 2030") |
Funds
| Field | Type | Description |
|---|---|---|
funds | Fund[] | Array of fund objects for this provider (see Fund Fields below) |
Fund Fields
Identity
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier for the fund |
name | string | Full name of the fund |
shortName | string | null | Abbreviated name for the fund |
color | string | Hex colour used to identify this fund visually |
Fund Characteristics
| Field | Type | Description |
|---|---|---|
isCapaConstituent | boolean | Whether this fund is included in the CAPA benchmark comparison set |
tcfdWaci | number | null | Weighted Average Carbon Intensity - a climate impact metric |
ESG Exclusions
The fundExcludes object shows what the fund avoids investing in. Each sector has a value of "YES", "NO", "PARTIAL", or null.
| Field | Type | Description |
|---|---|---|
fundExcludes.alcohol | string | null | Alcohol sector exclusion |
fundExcludes.tobacco | string | null | Tobacco sector exclusion |
fundExcludes.gambling | string | null | Gambling sector exclusion |
fundExcludes.pornography | string | null | Pornography sector exclusion |
fundExcludes.fossilFuels | string | null | Fossil fuels sector exclusion |
fundExcludes.thermalCoalAndTarSands | string | null | Thermal coal and tar sands exclusion |
fundExcludes.nuclearIndustry | string | null | Nuclear industry exclusion |
fundExcludes.armaments | string | null | Armaments sector exclusion |
fundExcludes.controversialWeapons | string | null | Controversial weapons exclusion |
fundExcludes.animalTesting | string | null | Animal testing exclusion |
fundExcludes.furTrade | string | null | Fur trade exclusion |
fundExcludes.globalCompactViolators | string | null | UN Global Compact violators exclusion |
Fund Brackets
| Field | Type | Description |
|---|---|---|
fundBrackets | FundBracket[] | Array of time-period fund brackets (see Fund Bracket Fields below) |
Fund Bracket Fields
Fund brackets represent different time-period views of fund performance. Each fund typically has brackets for "5 Years", "30 Years", and "1 Day".
Identifier
| Field | Type | Description |
|---|---|---|
fundBracketTime | string | Time period: "5 Years", "30 Years", or "1 Day" |
Fund Value Time Series
Array of data points showing fund value over time:
| Field | Type | Description |
|---|---|---|
fundValueData[].time | string | ISO 8601 date (quarter end, e.g. "2025-12-31") |
fundValueData[].value | number | Fund value at this point in time (always greater than 0) |
Asset Allocation
The assetAllocationData object shows the percentage breakdown across asset classes. Values are percentages (0-100) and may be null where data is unavailable.
| Field | Type | Description |
|---|---|---|
assetAllocationData["UK Equities"] | number | null | Equities - UK equities |
assetAllocationData["Overseas Equities"] | number | null | Equities - aggregate overseas equities (used when granular breakdown is not available) |
assetAllocationData["US Equities"] | number | null | Equities - US equities |
assetAllocationData["Other Developed Markets Equities (exc. UK & US)"] | number | null | Equities - developed markets equities excluding UK and US |
assetAllocationData["Emerging Markets Equities"] | number | null | Equities - emerging markets equities |
assetAllocationData["Listed Private Equity (inc. VC)"] | number | null | Equities - listed private equity including venture capital |
assetAllocationData["Unlisted Private Equity (inc. VC)"] | number | null | Equities - unlisted private equity including venture capital |
assetAllocationData["All Government Bonds"] | number | null | Fixed Income - aggregate government bonds (used when granular breakdown is not available) |
assetAllocationData["UK Government Bonds (Gilts)"] | number | null | Fixed Income - UK government bonds (gilts) |
assetAllocationData["Overseas Government Bonds"] | number | null | Fixed Income - overseas government bonds |
assetAllocationData["All Corporate Bonds"] | number | null | Fixed Income - aggregate corporate bonds (used when granular breakdown is not available) |
assetAllocationData["UK Corporate Bonds"] | number | null | Fixed Income - UK corporate bonds |
assetAllocationData["Overseas Corporate Bonds"] | number | null | Fixed Income - overseas corporate bonds |
assetAllocationData["High Yield Bonds"] | number | null | Fixed Income - high yield bonds |
assetAllocationData["Emerging Market Debt"] | number | null | Fixed Income - emerging market debt |
assetAllocationData["Index-Linked Bonds"] | number | null | Fixed Income - index-linked bonds |
assetAllocationData["Listed Private Credit"] | number | null | Fixed Income - listed private credit |
assetAllocationData["Unlisted Private Credit"] | number | null | Fixed Income - unlisted private credit |
assetAllocationData["Property/Real Estate (Direct)"] | number | null | Real Assets - direct property or real estate |
assetAllocationData["Commodities"] | number | null | Real Assets - commodities |
assetAllocationData["Natural Resources"] | number | null | Real Assets - natural resources |
assetAllocationData["Listed Property"] | number | null | Real Assets - listed property |
assetAllocationData["Unlisted Property"] | number | null | Real Assets - unlisted property |
assetAllocationData["Listed Infrastructure"] | number | null | Real Assets - listed infrastructure |
assetAllocationData["Unlisted Infrastructure"] | number | null | Real Assets - unlisted infrastructure |
assetAllocationData["Hedge Funds/Absolute Return"] | number | null | Alternatives - hedge funds / absolute return |
assetAllocationData["Multi-Asset Credit"] | number | null | Alternatives - multi-asset credit |
assetAllocationData["Structured Products"] | number | null | Alternatives - structured products |
assetAllocationData["Cash/Money Market"] | number | null | Cash & Equivalents - cash / money market |
assetAllocationData["Short-term Deposits"] | number | null | Cash & Equivalents - short-term deposits |
assetAllocationData["LDI (Liability Driven Investment)"] | number | null | Protection / Matching Assets - liability-driven investment |
assetAllocationData["Insurance-linked Securities"] | number | null | Protection / Matching Assets - insurance-linked securities |
assetAllocationData["Derivatives/Overlays"] | number | null | Protection / Matching Assets - derivatives and overlays |
assetAllocationData["Other"] | number | null | Other asset classes not covered above |
Performance Metrics
Sharpe ratios and annualised risk are keyed by lookback period in years ("1", "3", or "5").
| Field | Type | Description |
|---|---|---|
sharpeRatio["1"] | number | null | Sharpe ratio over 1 year (risk-adjusted return) |
sharpeRatio["3"] | number | null | Sharpe ratio over 3 years |
sharpeRatio["5"] | number | null | Sharpe ratio over 5 years |
annualisedRisk["1"] | number | null | Annualised volatility over 1 year (higher = more volatile) |
annualisedRisk["3"] | number | null | Annualised volatility over 3 years |
annualisedRisk["5"] | number | null | Annualised volatility over 5 years |
Price Variance
| Field | Type | Description |
|---|---|---|
topBottomPriceVariance[].year | string | Year of the data point |
topBottomPriceVariance[].value | number | null | Difference between best and worst performing periods in that year |
Enumerated Values
Fund Bracket Time Periods
"5 Years" - 5-year performance window "30 Years" - 30-year performance window "1 Day" - Current day snapshot
Fund Exclusion Values
"YES" - Fund fully excludes this sector "NO" - Fund does not exclude this sector "PARTIAL" - Fund partially excludes this sector null - Data not available
