How a portfolio gets its grade

Every rule, every threshold, and the exact numbers three sample portfolios produce. There is no hidden weighting and no machine learning: the grade is the average of five rule grades, and each rule is arithmetic on the dataset below.

Reproduce this page. It is generated from the code that runs the analysis: node scripts/build-methodology.mjs. Every figure below is computed at build time, and the page records a fingerprint of the engine (7f0bf9a950caaecd) so a stale page fails the test suite.

1. What the analysis reads

The dataset covers 314 ETF and each entry carries: category, subcategory, issuer, expenseRatio, aum, inception, indexTracked, country, assetClass, sector, topHoldings.

Where each field comes from: sector weights and the top-ten holding names are fetched from Yahoo Finance's fund summary; net assets from stockanalysis.com, which reports the ETF/share-class figure rather than a whole trust; the country mandate is read off the index definition rather than measured, so it carries no date and cannot go stale. Composition and assets were fetched on the same day — 2026-10-27 — and a page states one date because all three of its numbers come from that one day. Two consequences are visible on the pages: a fund whose positions are not listed equities (bonds, bullion, futures, crypto) has no sector split at all rather than one relabelled "Bonds 100%", and a fund the source gives fewer than five holdings for gets no holdings list rather than a list of one. Sector weights are as published and are not renormalised, so they often add to slightly under 100%; the remainder is cash, derivatives or positions the breakdown does not classify.

What it does not have: constituent weights. The data lists a fund's top-10 holding names, not how much of each it owns. So this tool cannot tell you "12% of your money is in Apple". It can tell you two funds hold the same names, and it can fold tickers that track the same index into one exposure. Anyone publishing an exact single-stock percentage from this kind of dataset is estimating, not measuring — say that plainly rather than guess.

Prices and fund attributes are a snapshot, not a live feed. Every run is computed in your browser; holdings you type are not uploaded.

2. The rules

Concentration risk — measured in effective exposures

Positions are folded into exposures before anything is graded. VOO + SPY + IVV are one S&P 500 exposure, not three. VXUS + VEA + VWO are one international exposure. Broad exposures (US broad, international broad, aggregate bonds) are allowed to be large; narrow ones (a sector, a single country, a theme) are judged tighter, because the same 50% means different things in VTI and QQQ.

Geographic diversification

Each fund is labelled with the country it is chartered to hold. The rule asks how much of the measured book a single country carries, then discounts that by how big the country is: severity = largest single-country share × (1 − that country's share of global equity). A book entirely in the United States scores 0.36; entirely in Japan, 0.95; entirely in a fund that spans many countries, zero. A is below 30%, C up to 60%, F above. Funds that span several countries by mandate (global, ex-US, emerging) carry no single country, so they neither raise nor lower the largest-country share — their internal split is not assumed. Bullion, futures, a currency and crypto have no country at all: a book made only of them is left ungraded on this rule rather than graded F.

Cost efficiency

The weighted expense ratio of the portfolio, ignoring everything else: A below 0% a year, C below 0%, F above.

Asset class balance

A needs 2+ asset classes and a largest class under 80%. Holding a single asset class scores F; anything above 80% with two or more scores C. There is deliberately no further cut-off: the tool does not claim 85% equity is worse than 82%.

Holding overlap

Pairwise: two funds tracking the same index score 0.70; otherwise the share of shared names among their top-10 holdings. Pairs above 0.70 count as redundant, above 0.40 as partially redundant.

Issuer scale — shown, not scored

Holding only Vanguard funds is not a defect, so this dimension is information rather than a grade input. What it measures is fund size: the share of your money in funds under $1B in assets (closure, spreads, delisting). A up to 5%, C up to 30%, F above. A large issuer does not rescue a small fund — a $10M fund carries the same closure risk whoever runs it.

3. The overall grade

The overall grade is the unweighted average of the five scored rules (A=100, B=80, C=60, D=40, F=20), mapped back to a letter. Issuer scale is excluded. Nothing else is in the number.

4. Three portfolios, computed

Three-fund, 60/30/10

The plainest portfolio in the book. Three tickers, three exposures.

VOO 60% · VXUS 30% · BND 10%

Overall grade A (score 92)

RuleGradeWhat it saidCounted?
Concentration risk A Well distributed — largest exposure is US broad equity at 60.0% across 3 distinct exposures. scored
Geographic diversification A the United States is 70.0% of the measured book and about 63.6% of global equity, so the money is not sitting in one market. 30.0% is in multi-country funds (VXUS); their internal split is not assumed here. scored
Cost efficiency A Excellent cost efficiency — weighted ER of 0.042% costs you $42/year on a $100,000 portfolio scored
Asset class balance C 2 asset classes present, but Equity dominates at 90.0% scored
Holding overlap A No significant overlap detected — your ETFs provide distinct exposures scored
Issuer scale A All holdings are in funds above $1B in assets. Largest issuer: Vanguard at 100% across 1 issuer. shown, not scored

Six tickers, four exposures

Six ETFs that look diversified and are three-quarters one market.

VOO 25% · SPY 20% · VTI 20% · QQQ 15% · SCHG 10% · VYM 10%

Overall grade F (score 52)

RuleGradeWhat it saidCounted?
Concentration risk C Your largest exposure is US broad equity (VOO + SPY + VTI) at 65.0% of the portfolio. Your 6 tickers collapse into 4 distinct exposures. scored
Geographic diversification C 100.0% of the measured book is chartered to the United States, which is about 63.6% of global equity. scored
Cost efficiency A Excellent cost efficiency — weighted ER of 0.070% costs you $70/year on a $100,000 portfolio scored
Asset class balance F Your portfolio is 100% Equity — no diversification across asset classes scored
Holding overlap F Significant overlap detected — 10 pairs of ETFs are highly redundant scored
Issuer scale A All holdings are in funds above $1B in assets. Largest issuer: Vanguard at 55% across 4 issuers. shown, not scored

Two-fund, 70/30

A single market above the 60% comfort line.

VOO 70% · BND 30%

Overall grade B (score 84)

RuleGradeWhat it saidCounted?
Concentration risk C Your largest exposure is US broad equity at 70.0% of the portfolio. scored
Geographic diversification C 100.0% of the measured book is chartered to the United States, which is about 63.6% of global equity. scored
Cost efficiency A Excellent cost efficiency — weighted ER of 0.030% costs you $30/year on a $100,000 portfolio scored
Asset class balance A Good asset class diversification across 2 classes scored
Holding overlap A No significant overlap detected — your ETFs provide distinct exposures scored
Issuer scale A All holdings are in funds above $1B in assets. Largest issuer: Vanguard at 100% across 1 issuer. shown, not scored

5. What this is not