257 essays 1,087 funds measured independent · not paid by any fund or issuer we cover

Reference · CC BY 4.0

Data dictionary and changelog

What each field means, how each dataset is built, and when a definition changed. If you are putting these files into a pipeline, this is the page to read first; if a number here ever changes meaning, it will be dated below before it changes.

Conventions

  • Percentages are percent of the fund's net assets unless a field says otherwise (weights in overlap and calculator files are renormalised, see the dataset notes).
  • Dates are ISO (YYYY-MM-DD). asOf is the filing's reporting period end; filedDate is when it reached EDGAR. A figure is valid as of asOf, not as of today.
  • Money is US dollars as filed. Fund identifiers are exchange tickers; securities are keyed by CUSIP, then ISIN, then name.
  • null means the value is not published for that record, and the reason is in notComparableReason or qualifiers; it is never a silent zero.
  • Every record links to the SEC filing it was computed from (source). Recompute it; if you get a different number, write to us.

Definition changes

16
DateChange
2026-10-07CORRECTION, leverage.json counterparties. Swap counterparties were keyed on the name as filed, so one bank spelled several ways counted as several banks: "GOLDMAN SACHS INTERNATIONAL" and "Goldman Sachs International", "BANK OF AMERICA, N.A." and "Bank of America NA", "BNP Paribas SA" and "BNP Paribas". Every figure derived from the counterparty list therefore understated each bank. Names are now resolved on <counterpartyLei>, which these filings populate without exception, the same rule build_lending.py already used for securities-lending borrowers. Effect: 117 apparent counterparties resolve to 66; Bank of America goes from 43 funds and $11.6bn to 77 funds and $40.1bn. XML entities in filed names are also unescaped now ("Goldman Sachs &amp; Co. LLC" was published with the entity intact). No fund's exposure figures change -- only who the exposure is attributed to.
2026-09-19Comparability: funds whose swap plus futures notional is 50% or more of net assets are marked not comparable (derivativeNotionalPct, netAssetsUSD added). 51 funds affected, all leveraged or inverse; their as-filed derivative value had passed the 20% test. Definition tag is now ex-collateral-v2.
2026-09-18Point-in-time positions dataset published: per-fund gzipped CSV of every position for every N-PORT period held (files up to 1 MB hosted at /pit/, larger ones built and listed pending a bulk host).
2026-09-18Headline definition changed to ex-collateral for every weight statistic, in concentration, history (all periods back to 2019), overlap and the calculator. As-filed figures kept under asFiled. 308 funds' headline effective holdings moved by more than 5% (IWM 33.2 to 840.2); 73 funds previously marked not comparable for collateral returned to comparable. Figures before and after this date are not directly comparable; use asFiled to compare with earlier publications.
2026-09-18Ownership rebuilt across 1,039 funds (was 694); per-security concentration fields added (largestDollarHolder, heaviestWeightHolder, top3SharePct, effectiveHolders). Published slugs pinned so no URL moved.
2026-09-17Quarterly history added for 345 funds published on 2026-09-14 (1,007 funds with history).
2026-09-15leverage.json published (555 funds with derivatives). 13F dataset for 24 registrants published at /managers/ and /data/13f/.
2026-09-14Securities-lending cash collateral identified as inflating concentration figures. Interim rule: collateral producing 25% or more of the HHI marked the fund not comparable, with the ex-collateral figure beside it (fields cashCollateralPct, collateralHhiShare, effectiveHoldingsExCollateral). Superseded 2026-09-18. 341 funds (assets over $500M) added; 10 single-stock leveraged funds publish no figure because filed weights cover about a third of net assets.
2026-09-11Fund pages published for every fund with holdings on file (72 to 716). Compare pairs pinned to twenty funds; 89 thin pairs set to noindex. Upper bound on weightSum removed from verification (476 funds legitimately file over 100% because of collateral).
2026-09-07Zero-overlap pair pages corrected: a combined figure below the more diversified fund alone is explained by weight, not by overlap, when the pair shares nothing.
2026-09-02overlap.json first published (190 pairs). history.json first published.
2026-08-31Site moved from Blogger to a static build; concentration.json first published.
2026-09-19Country tables published: per-fund, per-country and pooled-by-quarter shares of investments by filed invCountry, collateral excluded (ex-collateral-v2). Pages at /world/ and /world/{cc}/; series hub at /series/world-through-etfs/.
2026-09-22Filing-to-filing changes published per fund (/data/changes/{TICKER}.json, RSS at /funds/{ticker}/changes.xml, index at /filings/). Fund pages gained the largest positions, country split, asset mix and option book from the filing. Portfolio calculator returns look-through positions with carriers, country split, derivative notional and per-fund caveats. MCP tools get_country and get_changes.
2026-09-23Monthly total returns published as the funds filed them (Form N-PORT Item B.5): 1,067 funds, up to 84 months since 2019, per fund at /data/returns-filed/{TICKER}.json and on each fund page. Cross-checked against a price-derived series; 15 funds where the two disagree are named and their summary figures withheld.
2026-09-23Securities lending borrowers published (Form N-PORT Item B.4.a): 742 lending funds, 116 borrowers named with their legal entity identifiers, $176bn on loan at the latest filings, per fund and quarter at /data/lending/{TICKER}.json with a reverse index by borrower, and a section on each lending fund's page. The cash collateral reported against each loan is published as a floor on collateralisation, not as the whole of it, because collateral the fund does not hold as a position is not in the filing. Every borrower figure is re-read with an XML parser before each deploy. MCP tool get_lending answers in both directions: a fund's borrowers, or the funds a named firm borrows from.

One row per fund, latest N-PORT filing · Cadence weekly check, republished when any fund files a new period (typically monthly) · Source SEC Form N-PORT (NPORT-P), Part C, item C.1 through C.12 of every reported position

FieldDefinition
tickerExchange ticker of the fund.
seriesNameFund name as filed.
cik / series / sourceRegistrant CIK, SEC series id, and the URL of the filing every figure below was computed from.
asOf / filedDateReporting period end / date filed.
definition"ex-collateral" since 2026-09-18: weight statistics are computed on the fund's own investments, with securities-lending cash collateral set aside and the remaining weights renormalised to their own total.
netAssetsUSD / derivativeNotionalPctNet assets as filed, and swap plus futures notional as a share of it (absolute values summed). At 50% or more the fund is not comparable.
holdingsNumber of positions counted under the definition (as-filed count is asFiled.holdings).
weightSumSum of all filed long-position weights, % of net assets, before any exclusion. Above 100 usually means securities-lending collateral or derivative marks are in the filing.
effectiveHoldings1 / sum of squared weights: the number of equal-sized positions with the same concentration. The site's headline measure.
concentrationMultipleholdings / effectiveHoldings: how many times the reported count overstates the effective one.
top10Pct / largestPctWeight of the ten largest / the single largest position under the definition.
hhiSum of squared weights (Herfindahl); effectiveHoldings = 1 / hhi.
cashCollateralPctSecurities-lending cash collateral as filed, % of net assets, read from the filing's isCashCollateral flag.
collateralHhiShareShare of the as-filed HHI produced by collateral lines alone; the size of the distortion the definition removes.
asFiled{holdings, effectiveHoldings, concentrationMultiple, top10Pct, largestPct, hhi} computed with every filed position counted, collateral included — what the site published before 2026-09-18, kept so earlier numbers remain reproducible.
effectiveHoldingsExCollateralEqual to effectiveHoldings since 2026-09-18; retained for clients that read the field name introduced 2026-09-14.
byCountry / countries / largestCountryPctWeight by issuer country (ISO code), number of countries above 0.01%, and the largest country's weight.
byAssetCatWeight by N-PORT asset category (EC equity, DBT debt, STIV short-term investment vehicle, DE derivative, ...).
byFairValLevel / level1Pct / level3PctWeight by fair-value level as filed; Level 1 is a quoted price in an active market, Level 3 an unobservable estimate.
restrictedPctWeight of positions the fund flags as restricted securities.
totalAssetsUSDTotal assets as filed.
comparable / notComparableReasonWhether the figure may be set beside other funds. False when filed long positions cover under 95% of net assets, derivative exposure is 20% or more, one holding exceeds 100% of net assets, or the arithmetic exceeds the position count; the reason is stated. The record is published either way.
qualifiersNotes a reader needs before the number: cash-like fund, unclassified positions, collateral share and the as-filed reading.

One row per position, per fund, per N-PORT period (2019 onward) · Cadence rebuilt from the raw archive when new filings arrive (monthly) · Source the fund's own NPORT-P filings, Part C, every reported position with pctVal > 0

FieldDefinition
asOf / filedDatePeriod end / date filed.
cusip / isin / nameSecurity identifiers and name as filed (name truncated to 120 chars).
assetCat / issuerCat / country / fairValLevelN-PORT classifications as filed.
valueUSDPosition value as filed.
pctOfNetAssetspctVal as filed: percent of net assets, collateral rows included.
isCashCollateralY when the row is securities-lending cash collateral; the site's headline figures exclude such rows.
isLoanByFundY when the security is on loan.

One row per quarter and country (pooled); fund and period (per fund); fund, period and country (per country) · Cadence with every update of the site · Source the point-in-time positions, pooled by filed issuer country

FieldDefinition
byCountry{CC}Share of a fund's own investments (cash collateral removed, remainder renormalised: definition ex-collateral-v2) whose issuer the filing reports under that invCountry, percent, two decimals. Shares under 0.01 and beyond the 60th country are summed under OTHER; a blank or N/A invCountry is XX.
invCountryThe issuer's country as the filer reports it, ISO 3166-1 alpha-2. It follows incorporation, not listing venue or revenue: Accenture files as IE, many China-based companies as KY. Never reassigned by this site.
collateralPctSecurities-lending cash collateral as filed, percent of net assets, removed before byCountry is computed.
quarters{YYYYQn}Pooled map: comparable funds only, one filing per fund per calendar quarter (the first period seen wins), each fund weighted by netAssetsUSD on its period date. funds = number pooled; byCountryUSD = dollars implied. The fund count grows over time as the archive fills, so early quarters describe a smaller set.
netAssetsUSDNet assets of the filing series, which for some sponsors includes mutual-fund share classes; the pooled total is therefore larger than ETF assets alone.
generatedAtUTC time the tables were built. Every period also carries asOf (filing period end) and filedDate (SEC receipt); the analysis date is the third date shown on pages.

history.json

4 fields

One row per fund, then one point per quarterly N-PORT filing back to 2019 · Cadence rebuilt with concentration.json · Source every NPORT-P the fund has filed; originals archived so definitions can be re-applied

FieldDefinition
funds[].ticker / periods / from / toFund, number of quarterly points, first and last period end.
funds[].effFrom / effTo / effRatioeffectiveHoldings at the first and last comparable point and their ratio (below 1 = more concentrated over time).
funds[].top10From / top10ToTop-ten weight at first and last point.
funds[].series[]{period, holdings, effectiveHoldings, concentrationMultiple, top10Pct, largestPct, level1Pct, weightSum, comparable} per filing, all under the current definition.

One row per fund pair · Cadence rebuilt with concentration.json · Source both funds' latest position-level filings, matched on CUSIP, then ISIN, then name

FieldDefinition
a / b / aAsOf / bAsOfThe two tickers and each filing's period end; when they differ the pair page says so.
overlapPctSum over shared securities of the lesser of the two weights: the share of a dollar that sits in the same companies either way. Weights are each fund's own-investment weights (collateral excluded, renormalised to weightSum minus collateral).
sharedCount / aCount / bCountShared securities and each fund's position count.
combinedEffectiveeffectiveHoldings of the two portfolios merged at 50/50 — what holding both in equal size behaves like.
topShared[]Ten largest shared positions with {name, id, pct (lesser), aPct, bPct}.
onlyA[] / onlyB[] / onlyAPct / onlyBPctLargest positions held by one fund and not the other, and the total weight each fund holds in securities the other does not.

One row per fund that files any derivative · Cadence rebuilt from the archived filings with concentration.json · Source N-PORT Part C derivative sub-items (swapDeriv, futrDeriv, optionSwaptionWarrantDeriv, fwdDeriv)

FieldDefinition
directEquityPct / cashLikePctWeight of directly held equity / short-term investment vehicles, % of net assets.
swapCount / swapNotionalPct / swapNotionalUSDNumber of swaps and their signed notional (inverse funds file negative) as % of net assets and in dollars.
futuresCount / futuresNotionalPctFutures and their signed notional (Long +, Short -).
optionsCount / optionsWritten / forwardsCountOption lines, how many are written, forward lines.
notionalExposurePctdirectEquityPct + swapNotionalPct + futuresNotionalPct. A sum of filed notionals: for a 3x equity fund about 300; the notional of a rate or currency swap is not equity exposure.
counterparties[]{name, notionalUSD, notionalPct} per swap counterparty.
financing.pays / receivesThe floating leg the fund pays on long swaps / receives on short swaps: rate index and notional-weighted spread, as filed. Issuers fill the spread field differently; compare within an issuer only.
swaps[] / futures[] / options[]Per-instrument detail: reference index, counterparty or clearing house, notional, unrealised value, termination or expiry, legs.

One row per security (equity positions only), across all tracked funds · Cadence rebuilt with concentration.json · Source every tracked fund's position-level filing; assetCat EC lines only

FieldDefinition
id / nameCUSIP (or ISIN, or name) and the name as filed by the largest holder.
fundCount / combinedValUSDNumber of tracked funds holding it and the sum of their reported position values.
topFunds[]Largest holders by dollars: {ticker, pct (weight in that fund), valUSD}.
largestDollarHolder / heaviestWeightHolderThe fund with the largest dollar stake (and its share of combined value) / the fund with the highest weight in its own portfolio.
top3SharePct / effectiveHoldersShare of combined value in the three largest holders / 1 over the sum of squared dollar shares across holders.

One row per registrant (13F filer), latest two 13F-HR filings · Cadence quarterly, within days of the 45-day filing deadline · Source SEC Form 13F-HR information tables

FieldDefinition
registrant / cik / period / filed / accessionFiler as named by EDGAR, its CIK, period end, filing date, accession number. Named for the registrant, never for a person.
totalValueUSD / positionsSum of reported values and number of distinct (CUSIP, put/call) lines.
effectiveHoldings / top10Pct / largestPctSame arithmetic as for funds, on reported values.
holdings[]{issuer, class, cusip, valueUSD, shares, sharesType, putCall, weightPct}.
changes{new[], closed[], changed[]} versus the previous filing, by CUSIP; changed lists share-count moves of 1% or more with sharesChangePct.
valueUnitSuspect / staleTrue when values look filed in thousands (dollar totals withheld, weights kept) / when the latest filing is more than two quarters old.

One row per audit day and verifier run · Cadence daily, and with every update of the site · Source daily re-derivation of published figures from EDGAR and the pre-publication checks

FieldDefinition
audits[]{date, checked, mismatched, unreachable, funds[], findings[]}: ten published funds re-derived from EDGAR and compared with the site.
verifierRuns[]{at, kind, ok, checked, problems, note}: pre-publication checks; a failed run means nothing was published.

One row per consecutive filing pair per fund · Cadence with every update of the site · Source the point-in-time positions of each fund, consecutive periods compared

FieldDefinition
from, to, filedDateThe two filing periods compared and the SEC receipt date of the later one.
added[], dropped[]Positions present in only one of the two filings (name, weight% at the filing where present). Matched on ISIN, then a real CUSIP, then name; an identifier change shows as one drop and one add.
increased[], decreased[]The six largest weight changes among positions in both filings (from, to, % of own investments).
turnoverPctHalf the sum of absolute weight changes including adds and drops; 100 means every position was replaced.

One row per fund and month · Cadence with every update of the site, from the archived filings · Source SEC Form N-PORT Item B.5, the share class the SEC's ticker table names for the ticker

FieldDefinition
series{YYYY-MM}Monthly total return in percent, net of expenses, as the fund reported it. Not computed here.
sourcePeriods{YYYY-MM}The filing period and SEC receipt date the month was read from.
crossCheckComparison with a monthly series computed separately from prices: months compared, median absolute difference, share of months more than 3 points apart, and whether the two agree (median <= 1.5 pp and <= 25% of months beyond 3 pp).
cumulativePct, last12PctCompounded from the series; null when the series has a gap or the two readings disagree.
gapsMonths where the series is not continuous; a compounded figure across a gap is not a return.

One row per fund, quarter and borrower · Cadence with every update of the site, from the archived filings · Source SEC Form N-PORT Item B.4.a (securities lending: borrower name, LEI, aggregate value on loan) and the isLoanByFund flag on each position

FieldDefinition
borrowers[]Every firm the fund reported lending to in that quarter: name, legal entity identifier, and the aggregate value on loan to it in US dollars. Names are normalised by LEI, keeping the first spelling seen, so one firm filed under several spellings counts once.
onLoanToBorrowersUSDThe sum of those values: what the fund had out on loan at the reporting date. Loans open and close daily; this is a quarter-end balance, not an average.
positionsWithLoansUSDThe value of positions whose isLoanByFund flag is set. The flag marks a holding SOME part of which is lent and does not say how much, so this is much larger than the loan and is not it.
cashCollateralPctCollateral the fund holds as a position, as a percent of net assets (the same figure used to exclude collateral from the concentration measures).
cashCollateralCoverPctThat collateral over the amount lent, in percent. A floor on collateralisation, not the whole of it: collateral the fund does not hold as a position does not appear in N-PORT, and in some leveraged funds the flagged cash is posted against swaps rather than against a loan. Published unadjusted; a value under 100 is not evidence of under-collateralisation.
largestBorrowerSharePctThe largest single borrower's share of everything the fund lent that quarter.
filedDate, asOfSEC receipt date of the filing, and the reporting period it covers. Every figure here is re-measured when the next filing arrives.

Machine access

All files are static JSON or CSV at the URLs above, no key required. Index of everything: /.well-known/api-catalog (RFC 9727). Tool interface: /mcp (MCP, read-only). Checks that ran before this build: /verification/.