Methodology
Every number this tool shows is deterministic arithmetic over published fund holdings. No models, no predictions, no advice. Here is all of it.
Data sources
- ETF constituents— issuer holdings files (Vanguard, iShares/BlackRock, State Street, Invesco), refreshed nightly. Weights are derived from each holding's market value divided by the sum of all market values, which avoids the rounding loss in the issuers' 2-decimal weight columns.
- Mutual funds & target-date funds— SEC N-PORT filings (monthly, ~60-day lag; the as-of date is always shown). TDF constituents are share classes; well-known index share classes are mapped to their index-equivalent ETF (e.g. “Vanguard Total Stock Market Index Fund” → VTI) so look-through can continue one more level.
- A failed scrape never overwrites good data— validation (row counts, weight sums, negative-weight checks) rejects corrupt batches and keeps yesterday's labeled data. Stale and honest beats fresh and wrong.
Look-through expansion
Each holding's portfolio weight is its dollar value over the portfolio total. Fund holdings are expanded into their constituents (weight × constituent weight), recursively for funds-of-funds, at most two levels deep, with a cycle guard. Anything unresolvable stays as an explicit line or the _OTHER bucket — exposure weights must total 100% ± 0.1%, or the analysis refuses to render.
Overlap
overlap(A, B) = Σ min(wi,A, wi,B)
Summed over every holding the two funds share, weights measured within each fund. VOO×SPY ≈ 99%; VOO×VB ≈ 0%. The portfolio duplication score is the value-weighted mean of all pairwise overlaps among your funds, and “your N funds behave like X” is N − duplication × (N − 1).
Concentration score (0–100)
HHI = Σ wi² · score = clamp(0, 100, 100 × (1 + log₁₀(HHI) / 2.4))
The Herfindahl–Hirschman index over your true exposures, log-scaled so the anchors land where intuition says: a single stock scores 100; 100% VTI (HHI ≈ 0.013) scores ≈ 21; 100% VOO ≈ 29. The 2.4 divisor is the calibration constant.
Fee audit
Blended expense ratio = Σ (holding weight × fund expense ratio); stocks count as zero. Fund pairs overlapping ≥70% are listed with both expense ratios — a factual comparison, never a recommendation.
What we deliberately don't compute
There are no limits, flags or grades here. Earlier versions marked a single stock over 10%, a sector over 30% and a fund pair over 80% as warnings — but those numbers were ours, not yours, and a limit is a recommendation in different clothes. 40% in one sector is alarming for someone who believed they held a diversified index portfolio and exactly the point for someone deliberately holding a sector fund, and this tool cannot tell which of those you are.
So every measurement above is reported without a verdict attached: no red, no “too high”, no score you are supposed to beat. If you want to be told when a number moves past a line, a saved portfolio can carry limits — the ones you choose.
Now run it on something real
Every formula above is published precisely so you can check the output rather than trust it. Paste your holdings and see the arithmetic applied to your own portfolio. Free, no account, nothing stored.
X-ray my portfolio — free →Questions or a fund we should cover? Run an analysis — uncovered tickers are logged automatically and drive the coverage roadmap.