Blog

Fund data, explained for builders

Guides on ISINs, holdings, risk indicators, performance series and fees — with the code to turn them into products.
AIMCP

FundFacts now works inside Claude and ChatGPT

The FundFacts MCP server brings fund and ETF data into Claude and ChatGPT: ask in plain language, get cards with fees, risk and holdings. On every plan.
1 October 2026 · 5 min read
ComparisonFund data

Fund data providers compared for developers (2026): Morningstar, Bloomberg, Refinitiv, market-data APIs and ISIN-first APIs

A criteria-based comparison of fund and ETF data sources for developers: enterprise platforms, market-data APIs, issuer documents and ISIN-first APIs.
22 September 2026 · 8 min read
FreshnessData quality

How fresh is fund data? As-of dates, publication lags and why a 24-hour cache is enough

Daily NAV, monthly holdings, yearly KID: what 'as of' means for each factsheet block, how to store it, and why a daily refresh matches how funds publish.
21 September 2026 · 6 min read
ETFNAV

ETF NAV vs market price: premiums, discounts and which one your data shows

Why an ETF has two prices, how creation and redemption keep them close, when premiums and discounts appear, and why factsheet performance is NAV-based.
20 September 2026 · 6 min read
SCPIReal estate

What is an SCPI? French real-estate funds explained, and how to get SCPI data programmatically

SCPI definition, capital fixe vs variable, prix de souscription and retrait, taux de distribution, TOF, the documents, and the /api/v1/scpi endpoint.
19 September 2026 · 6 min read
AIMCP

Connect Claude, ChatGPT or Cursor to fund data with an MCP server

Set up the FundFacts MCP server in Claude, ChatGPT, Claude Code and Cursor: one URL, an account sign-in or an API key, and tools for fund lookup, comparison, look-through and overlap.
18 September 2026 · 7 min read
ETFHoldings

How to calculate holdings overlap between two ETFs (formula, code and an API)

The min-weight overlap formula, name matching, why top-ten lists give a lower bound, and how to get the figure from one call to the overlap endpoint.
17 September 2026 · 5 min read
PRIIPsKID

PRIIPs KID vs UCITS KIID: what changed in 2023 and what developers can extract

KIID (2 pages, SRRI, past performance) vs PRIIPs KID (3 pages, SRI, scenarios, cost table): the regulations, the differences, and which fields each yields.
16 September 2026 · 7 min read
FactsheetFundamentals

How to read a fund factsheet, section by section (with the JSON field for each)

A walkthrough of every block on a fund or ETF factsheet — key facts, risk, fees, holdings, exposures, performance — and the API field that carries each figure.
15 September 2026 · 7 min read
UCITSRegulation

What is a UCITS fund? Definition, structure and why the ISIN matters

UCITS explained: the EU directive, the 5/10/40 and liquidity rules, SICAV, FCP and ICAV forms, domiciles, the KID, and how to read one from an ISIN.
14 September 2026 · 6 min read
ETFHoldings

Physical vs synthetic ETF replication: what the holdings list really shows

Full replication, optimised sampling and swap-based ETFs: how each works, what the holdings show, counterparty exposure, and how to detect the method in data.
14 September 2026 · 6 min read
IdentifiersISIN

ISIN vs ticker vs SEDOL vs WKN vs CUSIP: fund identifiers explained

What each fund identifier is for, which ones are unique per share class, how they nest inside an ISIN, and which one to use as the key in a database or API.
13 September 2026 · 7 min read
Look-throughPortfolio

Aggregating sector and country exposure across a portfolio of funds

Weight, normalise and merge each fund's sector and geography exposures into a portfolio view, handle classification mismatches and see what look-through misses.
12 September 2026 · 5 min read
AIAgents

Giving LLMs and agents fund data safely: tools, grounding, guardrails

Why factsheet PDFs are poor tool input and JSON is good, a getFund(isin) tool schema, grounding in dataAsOf, refusal rules and an MCP-style tool definition.
11 September 2026 · 5 min read
DomicileISIN

Ireland vs Luxembourg: fund domicile explained, and what the ISIN prefix tells you

Why most UCITS are Irish or Luxembourg funds, what IE/LU/FR/DE/GB/US prefixes mean, ICAV vs SICAV, UK OEICs, US 40-Act funds and how to route by prefix in code.
10 September 2026 · 6 min read
TutorialReporting

Generate branded PDF factsheets from fund JSON with Node

Choose a PDF renderer, lay out key facts, holdings, exposures, returns, the 1–7 risk scale and fees, add the required disclaimers, and batch-generate by ISIN.
9 September 2026 · 5 min read
ETFIndex funds

Tracking difference vs tracking error for index funds and ETFs

Tracking difference is what investors pay, tracking error is what traders watch. Definitions, formulas, drivers, and how to compute TD from calendar returns.
9 September 2026 · 5 min read
Share classesISIN

Fund share classes explained: Acc vs Dist, hedged, retail vs institutional, clean vs bundled

Why one fund has many ISINs: accumulating vs distributing, currency-hedged, retail vs institutional and clean classes, and how to pick the right one in code.
8 September 2026 · 6 min read
PerformanceQuant

Cumulative vs annualised vs calendar returns: formulas and conversions

The three fund return conventions, the formulas behind them, how to convert between them, and the mistakes that produce plausible but wrong numbers.
7 September 2026 · 4 min read
TutorialNext.js

Build a fund screener with Next.js and Postgres, step by step

Data model, a server-side route handler, a filter table for asset class, risk, TER, AUM and region, sorting, and a cache aligned with the 24-hour refresh.
6 September 2026 · 5 min read
SFDRESG

SFDR Article 6, 8 and 9 explained for product teams

What SFDR Article 6, 8 and 9 mean, why it is a disclosure regime and not a label, where the classification appears, and how to store it in your fund data model.
6 September 2026 · 6 min read
Risk metricsQuant

Volatility, Sharpe ratio and maximum drawdown from a NAV series

Compute annualised volatility, Sharpe ratio and maximum drawdown from a fund's indexed NAV series in Python, and see why your figures differ from the factsheet.
5 September 2026 · 4 min read
KIDRegulation

The UCITS KID / PRIIPs KID explained for developers: every field you can extract

What the PRIIPs KID is, how it replaced the UCITS KIID, every section it contains (SRI, scenarios, costs, holding period) and which fields map to API paths.
4 September 2026 · 6 min read
TutorialAI agents

Build a fund data app with Cursor or Claude Code in ten minutes

Use an AI coding agent to build a fund comparison page from ISINs. What an AGENTS.md for a financial data API must contain, and the prompts that work.
2 September 2026 · 7 min read
PerformanceCharts

Fund performance data explained: cumulative, calendar-year, annualised and rebased to 100

The four ways fund performance is reported, what each one hides, how to compute tracking difference, and how to chart fund vs benchmark from API data.
2 September 2026 · 3 min read
RiskRegulation

SRRI and SRI explained: the 1–7 fund risk indicator and how to display it

What the SRRI / SRI risk indicator on a KIID or PRIIPs KID means, how it is calculated from volatility, how funds move between classes, and how to render it from API data.
2 September 2026 · 3 min read
HoldingsExposure

ETF holdings API: fetch top holdings, sector and country exposure as JSON

How to pull ETF and fund holdings, sector weights, geographic exposure and asset allocation from an API, and how to turn them into portfolio look-through and concentration checks.
26 August 2026 · 3 min read
TutorialAPI

How to get fund data from an ISIN with a REST API (curl, JavaScript, Python)

Step-by-step: call a fund data API with an ISIN and get key facts, holdings, risk and performance as JSON. Includes curl, fetch and requests examples and error handling.
19 August 2026 · 2 min read
ISINIdentifiers

What is an ISIN? A developer's guide to fund and ETF identifiers

ISIN format, check digit, how it differs from tickers, SEDOL, CUSIP and WKN, and how to validate an ISIN in code before you look up fund data.
12 August 2026 · 3 min read
FeesTER

TER, ongoing charges and fund fees: how to compare fund costs programmatically

TER vs OCF vs total cost of ownership, why 0.20 % and 1.50 % end up 30 % apart over 25 years, and how to parse and rank fund fees from API data.
5 August 2026 · 2 min read
TutorialArchitecture

Build a fund comparison tool in an afternoon with a fund data API

A practical architecture for a fund screener or comparison page: ISIN input, caching, side-by-side table, charts and a PDF export, with code in Next.js and Python.
29 July 2026 · 2 min read
AutomationWealth management

Automating fund factsheets: from PDF scraping to structured JSON

Why parsing factsheet PDFs breaks, what a normalised fund data schema looks like, and how wealth managers and fintechs generate client-ready factsheets automatically.
22 July 2026 · 3 min read