Methodology
Last updated: July 29, 2026
This page explains how PortLens computes every number it shows you: where the data comes from, how often it refreshes, the formulas behind each metric, and — just as important — the known limitations. If a metric can mislead in an edge case, we say so here and, wherever possible, in the product itself.
Data sources
- Prices & fundamentals: Financial Modeling Prep is the primary source for US-listed equities and ETFs (quotes, profiles, price history, ETF constituent holdings and sector or country weightings). Yahoo Finance is the fallback for international listings. Crypto prices come from CoinGecko. Market data is cached for up to 24 hours.
- Benchmark: the S&P 500 total-return index (^SP500TR), so dividends are included. If only the price-only index is available as a fallback, benchmark returns understate the total return by roughly 1–2% per year — flagged when it happens.
- Risk-free rate: the 1-Year US Treasury constant-maturity yield (FRED series DGS1), refreshed roughly monthly. If FRED is unreachable, we use the most recent stored value.
- Factor data: daily Fama-French three-factor series (market, size, value) from the Ken French Data Library at Dartmouth, updated roughly monthly at the source.
- 13F filings: featured-investor portfolios are sourced from SEC Form 13F disclosures via Dataroma and refreshed quarterly, the day after each 13F filing deadline.
True Exposure (ETF look-through)
Every ETF in your portfolio is exploded into its underlying constituents. A constituent's effective weight is the ETF's weight in your portfolio multiplied by the stock's weight inside the ETF. Exposures to the same company — held directly and through one or more funds — are summed into a single position, which is how PortLens surfaces hidden concentration that a plain holdings list can't show.
From the looked-through portfolio we compute effective holdings (the inverse Herfindahl index, 1 / Σw²: a portfolio of one 50% and two 25% positions behaves like ~2.7 equal positions, not 3), top-10 concentration, per-company fund counts, and the dominant sector.
Attention thresholds: orange emphasis appears when one company reaches 10%, one sector reaches 40%, the top ten positions reach 60%, or effective holdings fall to 10 or fewer. The 10% company threshold borrows a regulatory reference point: Article 52(2) of the UCITS Directive lets Member States raise the ordinary 5% same-issuer limit to no more than 10%, subject to a separate 40% aggregate rule. That rule governs UCITS funds, not personal portfolios. The 60% top-ten threshold is intentionally well above the S&P 500's 36.4% top-ten weight (accessed July 29, 2026). The 40% sector and 10 effective-holdings cutoffs are transparent, round-number PortLens design choices rather than regulatory limits or fitted optima. Crossing any threshold changes visual emphasis only; it is not a risk grade, suitability assessment, or recommendation to trade.
Limitation: constituent data covers the top ~50 holdings per ETF from our data provider, supplemented by curated mappings for major funds. Funds we can't resolve — most often international ETFs — contribute nothing to look-through. We compute and show a coverage ratio for every scan; below roughly 75% coverage, the headline concentration figures understate your true concentration and should be read accordingly.
Risk & return metrics
- Portfolio return: buy-and-hold over the lookback window (one year by default), using start-of-window weights to avoid look-ahead bias. We require at least ~180 days of price history.
- Beta: the weighted average of per-holding betas, each computed as covariance with the S&P 500 total-return index divided by market variance, requiring at least 30 return observations. Holdings whose beta can't be established are excluded and the remaining weights renormalized — not silently defaulted. Crypto betas use weekly sampling to correct the timestamp mismatch between 24/7 crypto closes and 4pm-ET equity closes.
- Treynor ratio: excess return over the risk-free rate divided by beta. Below a beta of 0.1 the ratio is mathematically unstable, so we treat it as undefined and score that component neutrally rather than reporting a misleading number.
- Jensen's alpha: the return above what CAPM predicts for your beta — Rp − Rf − β(Rm − Rf). Well defined at any beta, which is why competitions rank on it (see below).
- Diversification score (0–10): five weighted components — holdings count, sector spread, industry spread, look-through concentration, and geography. Spread components use weight-based effective counts (1 / Σw²) computed on the looked-through portfolio, so ten tech stocks don't count as ten sources of diversification.
- Overall score: 40% risk-adjusted return (normalized Treynor) + 40% diversification + 20% excess return versus the benchmark. These are transparent product-design weights, not weights fitted to historical returns or claimed to be optimal. Risk-adjusted return and portfolio structure receive equal weight so neither recent performance nor diversification dominates the result. Raw excess return receives half as much weight because short-term market exposure and luck can influence it, and performance is already represented in the Treynor component. Beta is shown as context rather than scored because higher or lower market sensitivity is not inherently better. The same weights apply to every portfolio; they are not tailored to your circumstances or objectives.
- Value at Risk: daily VaR is the historical 5th percentile of your portfolio's actual daily returns; the annual figure comes from a lognormal model calibrated to those returns. Both need at least 30 days of aligned history.
Return projections
Projections run five independent models rather than one blended forecast, so you can see where they disagree:
- CAPM: risk-free rate plus your portfolio beta times a 5.5% equity risk premium.
- Historical average: the trailing geometric annualized return of your actual holdings, up to five years.
- Monte Carlo: 10,000 simulations built by block-bootstrapping your portfolio's real daily return history in 20-day blocks — resampling what actually happened, including fat tails, rather than assuming a normal distribution.
- Fama-French three-factor: an OLS regression of your daily excess returns on the market, size, and value factors (minimum 60 overlapping days), with expected return built from the estimated loadings and live factor premia. When factor data or history is insufficient, a clearly labeled heuristic approximation is used instead.
- Macro: an earnings-yield build-up (E/P plus expected inflation from the 10-year breakeven rate), applied to the equity sleeve of your portfolio and levered by its beta.
Uncertainty bands on all models are 95% lognormal intervals. Projections are estimates with wide error bars, not predictions — see Disclosures for how to read them.
Competition scoring
The two competitions rank on different metrics, and scores on both refresh daily at 22:00 UTC. The Alpha Cup ranks by Jensen's alpha (Treynor is displayed alongside it, but alpha is the sort key because it stays well defined for low-beta portfolios). Your holdings and weights freeze the moment you register, so edits afterwards can't game the result. Every entry is scored over the same date window, using the same benchmark and risk-free rate, and the ranking is frozen when the Cup ends.
Portfolio Rankings ranks by portfolio construction quality on a 0–100 scale: concentration, the effective number of holdings, sector and geographic spread, and hidden look-through overlap. It is computed from how a portfolio is built and reads no price history, so it needs no measurement window — there is nothing to wait out and nothing a late reshuffle can flatter. The board is permanent: it never resets, never ends, and nothing is archived. No performance figure appears on it — no alpha, no Treynor, no return — and it awards no prize; every award belongs to the Alpha Cup. You appear only after you join it, and leaving takes you off it.
Featured investors (13F portfolios)
Featured portfolios (Berkshire Hathaway, Pershing Square, Appaloosa, Himalaya Capital, TCI) are rebuilt quarterly from each manager's latest SEC Form 13F filing. 13F filings disclose only long US-listed equity positions — shorts, options, cash, and non-US holdings are invisible — and positions we cannot price against current market data are skipped. Values shown apply current prices to disclosed share counts, so they differ from filing-date values.
Known limitations
- ETF look-through coverage is strongest for US large-cap funds and weakest for international ETFs; the coverage ratio shown on every scan is the honest denominator.
- Metrics need price history: new listings and thinly traded assets can fall below the minimum-observation thresholds and are excluded from the affected metric rather than guessed.
- When an upstream source is unavailable we fall back in a documented order (cached value → alternate source → conservative default) and label estimated inputs where they appear.
- All analytics are computed from publicly available market data. Nothing here accounts for your taxes, fees, or personal circumstances.
Questions
PortLens is built by Finsight Labs Ltd. If you think a number is wrong — or a limitation isn't disclosed clearly enough — email support@finsightlabs.co. See also About and Disclosures.
Finsight Labs Ltd · Registered in England and Wales, Company No. 16941446 · Registered office: 124 City Road, London, EC1V 2NX, United Kingdom