← Back to Portfolio OS

Methodology

How Portfolio OS turns your holdings into the numbers you see — in plain language first, with a deeper technical section below for those who want it. Our guiding principle is to show our work and be honest about what a model can and can't tell you. Everything here is informational, not investment advice.

Overview

Everything is derived from your holdings

You enter what you own, and every panel is computed from that — using end-of-day (EOD) prices, i.e. the latest settled close, not live intraday quotes. Nothing here is a stock tip or a forecast of a specific security; it is a description of the portfolio you actually hold.

Two kinds of numbers: what happened vs what could happen

We keep these separate on purpose. Realized figures — past performance, volatility, drawdown, Sharpe — are measured from your portfolio's own history and describe what your mix did. Forward-looking figures — the risk engine's volatility, the Monte Carlo range, stress scenarios — are estimated from a statistical model and describe what could happen. That's why you may see two "volatility" numbers that differ: one is the realized standard deviation of your returns, the other the model's forward estimate. Both are labelled.

How we measure risk

Volatility is how bumpy the ride is — the spread of returns. Drawdown is the worst peak-to-trough drop, i.e. how far down you'd have been at the low point. Sharpe / Sortino is reward for risk — return earned per unit of volatility (Sortino counts only downside moves). Value-at-risk / expected tail loss gives a sense of bad-day magnitude. The forward-looking risk used in the Risk tab, the optimizer, and the Monte Carlo comes from a factor model (see Under the hood), chosen because it is more stable and trustworthy than naively measuring how every holding has moved together.

How the projections work (Monte Carlo)

We simulate thousands of possible futures for your portfolio from its own estimated return and risk, then show the range of outcomes — optimistic, median, pessimistic — rather than a single number. It answers "given how this mix behaves, what's a plausible spread of where I could end up?" It uses standard market assumptions, is illustrative, and is not a guarantee.

How we read your diversification

Holding many names isn't the same as being diversified if they move together. We compute an effective number of holdings that adjusts for correlation — two nearly-identical index funds count as roughly one bet — alongside concentration and clustering measures. That's why a 10-position book can behave like only ~3 independent bets.

Exposures and look-through

For ETFs we look through to their actual constituents (from public fund-holdings filings) to attribute your true sector, region, and currency exposure — so a broad index ETF shows up as its underlying sectors, not just "ETF". Bond funds are shown as one Fixed Income bucket (their holdings are individual bonds, not equities), and crypto is bucketed explicitly rather than dropped as "unknown".

What's driving you (factors)

The factor lens and attribution break your portfolio's behaviour into common drivers — the broad market, style tilts (growth/value, size), sectors, and crypto — showing how sensitive you are to each and how much each contributed to your return.

The tax figures

Short- vs long-term is determined from each position's acquisition date (held over a year = long-term); long-term gains and losses are valued at up to the 20% federal long-term rate, short-term at your marginal rate. Each position is treated as a single blended lot, a position with no recorded date is assumed held since its price history began, and state taxes, NIIT, and wash-sale timing are not modelled. These are estimates, not tax advice — consult a professional.

What we deliberately don't do

We don't forecast individual stock returns (they're too unreliable to optimise against), we don't give buy/sell recommendations, and we don't use live intraday data. Where a number is uncertain or rests on limited history, we flag it rather than show a confident-looking figure built on noise.

Under the hood

The forward-looking risk model (factor covariance)

Every forward-looking risk figure — the Risk tab's volatility and risk contributions, the Portfolio Lab optimizer, and the Monte Carlo's sigma — comes from a single factor covariance matrix, Σ = B·F·B′ + D, where B holds each position's factor loadings (betas), F is the covariance of a small set of market / style / sector / crypto factors, and D is each position's idiosyncratic (name-specific) variance.

Why not just measure how every pair of holdings has moved together (a sample covariance)? Because you cannot reliably estimate that many pairwise relationships from a limited history — the smallest, noisiest directions come to dominate, and an optimizer will happily load into them (the well-known "error maximization" failure). Estimating a handful of factor relationships instead of thousands of pairwise ones is far more stable, and the matrix is positive-definite by construction (a small floor on idiosyncratic variance guarantees it), so it stays well-behaved at any number of holdings.

The trade-off: all co-movement must flow through the factors, so co-movement beyond them is invisible. We add a factor where that gap matters (e.g. a second crypto factor) and flag holdings the factors explain poorly.

Factor betas

Loadings are estimated by regression over each holding's full available history. Because the factors are themselves correlated, an ordinary regression can hand a holding an unstable or even wrong-signed beta; we use a condition-adaptive regularized (ridge) regression that stabilises the loadings without distorting the overall risk. Holdings with too little history to estimate reliably are excluded from the modelled book and flagged (insufficient history) rather than shown a noisy number.

Monte Carlo calibration

Each path is a geometric-Brownian-motion simulation. Drift (μ) is estimated per asset on its own history, then shrunk toward a long-run prior and capped, so a recent hot or cold streak doesn't dominate a multi-year projection. The portfolio's variance comes from the same factor Σ at the projection horizon. For a non-USD display currency we fold in the exchange-rate move over the horizon; for holdings in a pegged currency we add a tail term for the risk the peg breaks — which realised history alone would price at almost zero.

Factor attribution

Realised return is decomposed into a factor part (each factor's return × your loading on it) and a selection/timing residual, so you can see how much of your result came from broad exposures versus everything else.

Concentration & effective N

The effective number of holdings is a correlation-adjusted, HHI-style measure (roughly 1 / w′Rw): equal-weighted, uncorrelated positions approach the raw count, while correlated or lopsided books collapse toward one. We also report a cluster-weighted count and a diversification score built on the same idea, so "diversification" reflects genuine independence, not just the number of tickers.

Data & instruments

Prices are EOD closes refreshed on a nightly schedule; analytics read from a cache rather than calling live market APIs on every request. Instrument reference data (sector, region, currency, asset class) is resolved deterministically from a data feed, not guessed by a language model — anything unmapped is left blank and flagged rather than fabricated. ETF look-through uses public fund-holdings filings.

Configuration & limitations

The factor set and estimation parameters are configuration, not hard-coded constants, and evolve as the model improves — so treat any specifics above as the current approach, not fixed values. Known limitations: it is EOD (not intraday); it treats each position as a single blended lot for cost and tax; its forward estimates assume the statistical structure of the past broadly persists; and it deliberately does not predict individual security returns. Where data is thin or a holding is unusual, we withhold or flag the figure rather than publish false precision.

Informational analytics only — not investment advice. Portfolio OS is not a broker-dealer, investment adviser, or exchange. Figures are estimates from models and historical data and may be revised as the methodology improves.