Methodology
How the numbers are made
Where each number on Bullrun comes from, how it is computed, and what it cannot tell you. Questions and corrections go to [email protected]. Who builds the site is on the About page.
Funds
UCITS ETF fees and fund facts
A fund is identified by its ISIN, not by a ticker, and one fund page lists every exchange the fund trades on.
The fee shown is the ongoing charge (TER). Where the issuer's own documents give it, that value wins. Otherwise it is checked against justETF, which states the TER and payout policy per ISIN. Yahoo Finance reports a fee of 0% for many European listings; Bullrun rejects that value rather than publish a false 0%, so a fee with no reliable source stays blank.
Domicile, fund size and holdings come from fund profiles (Yahoo Finance and issuer files). One-year performance is the price return of the most traded listing, without distributions.
Funds
Index comparisons and listings
Each fund is assigned to an index family from its name and its stated benchmark, using a fixed list of indexes. Index pages sort the funds in a family by fee, cheapest first. Nobody can pay to change that order.
The comparisons cover domiciles a European investor can buy. US-domiciled ETFs are left out, because PRIIPs rules stop European brokers selling them to private investors.
A fund's listings are ordered by average daily turnover over the last 90 days, converted to euros so that venues quoting in different currencies, or in pence, compare fairly. The Xetra line is marked as the default at German brokers.
Companies
Company financials
US companies: SEC EDGAR XBRL filings, annual and quarterly, back to about 2009. European and UK companies: ESEF annual reports, which are filed in XBRL. Elsewhere, and to fill gaps: Yahoo Finance and StockAnalysis.
Each source fills only fields that are still empty; it never overwrites a value another source has already written. Where two sources disagree, the figure shown is the one that arrived first.
One company gets one page. When a company is listed on several exchanges, the secondary lines point to its primary listing, using ISINs and cross-listing data from EODHD.
Companies
Prices
Prices are end-of-day closes, not live quotes. US listings come from an open 10-year daily dataset (defeatbeta, published on Hugging Face) and Finnhub. Other markets come from Yahoo Finance, with StockAnalysis filling gaps on smaller exchanges.
A company page appears once its primary listing has a recent price.
Models
Valuation: how a P/E compares with its fundamentals
The Valuation figure comes from a gradient-boosted model (LightGBM) trained on each company's last eight reported quarters: profitability, growth and its trend, the balance sheet, current multiples, size, sector, and macro data for its country. It estimates the P/E that a company with those fundamentals typically trades at. The gap is that estimate divided by today's P/E, minus one.
It describes; it does not predict. In walk-forward tests the model estimates P/E levels well (a rank correlation of 0.62 with the multiple a year later), but the published gap has no reliable link to later returns (rank correlation +0.012, t = 0.9). It is shown as context, and the page says so.
Where a company has no usable P/E, for example because it makes a loss, a sister model on price-to-sales fills in, marked P/S.
A company is left out when the figure would mislead: a P/E below 3 or above 150, the smallest 10% by market value in its currency, a price fall of more than 50% in twelve months, net income more than 1.5 times operating income (one-off gains; banks and insurers are exempt), or revenue more than tripling in a year. Gaps beyond 300% either way show as "far below" or "far above typical". Scores are recomputed every night.
Forecast, the related model that ranks companies by expected one-year return, is experimental. It has shown no stable edge out of sample.
Models
Risk scores
Six dials, each from 0 to 100, where higher means more strain: market expectation, operating pressure, cash conversion, leverage and coverage, competitive position, and concentration on one supplier, customer or region. They read a company's own filings: its financial statements, its segment and geographic revenue notes, and the suppliers and customers it names.
Each reading blends how bad the current level is (55%), how much rides on it (25%) and how much it has moved over five years (20%). A reading built on a thin sample is pulled toward its sector's normal. The company score is a weighted average of the dials that have enough data, and the dial contributing most is named as the driver.
A missing input is never a low score. A dial with less than 60% of its inputs is not shown, and the page names what is missing; a company whose debt is not reported is not scored as debt-free.
Bands: 0-19 Contained, 20-39 Normal, 40-59 Elevated, 60-79 Stretched, 80-100 Acute. Scores are recomputed every night from the latest filings and prices. The risk board ranks every scored company.
Markets
Economic and market data
Economic series come from FRED, the World Bank, OECD, BIS, the IMF and Eurostat, refreshed every six hours. Market news comes from GDELT and Finnhub, refreshed hourly. See Global Markets.
Limits
Limits and corrections
The data is collected automatically and can be late, incomplete or wrong, most often for small companies and for exchanges outside the US and Europe. Where a value is missing, Bullrun shows a blank rather than a guess.
Nothing here is investment advice. If you spot an error, write to [email protected] with the page address.