Portfolio Performance Analysis

Sample US portfolio: 8 stocks, 2 ETFs. Risk-adjusted returns, attribution, peer checks and rebalancing ideas.

Change any input and every number, chart and recommendation below recalculates. Benchmark = SPY / AGG mix at the weights above, rebalanced daily. Risk-free rate = 13-week US T-bill yield.

Headline numbers

Growth of the portfolio vs benchmark

Total return, dividends reinvested.

Drawdowns

Fall from the previous peak.

Holdings and sector peer check

Each stock is compared with its sector ETF over the same period. "Lagging" = behind its peer over the period AND in most calendar quarters. Opportunity cost = what the position would have earned extra had the same dollars sat in the peer ETF.

Excess return vs sector peer

Percentage points over the period.

Return attribution vs benchmark

Single-period Brinson split by asset class, start-of-period weights.

Contribution by sector

How many percentage points of the portfolio return each sector delivered, and whether stock picks beat the sector ETF.

Forward-looking risk

Built from the realised daily return distribution in the selected period. These describe the range of outcomes the current mix has historically produced, not a forecast.

Recommendations

Generated from the numbers above using fixed rules. In a real engagement each one is reviewed against your goals, taxes and constraints.

    Methodology

    Data. Daily adjusted closing prices (splits and dividends included) from Yahoo Finance, . Risk-free rate from the 13-week T-bill yield (^IRX), converted to a daily rate.

    Portfolio. Buy and hold from the start date at the target weights shown in the holdings table, so weights drift with prices. No trading costs or taxes.

    Returns. Total return and CAGR from the portfolio value series. Annualised volatility = daily standard deviation x √252.

    Sharpe and Sortino. Mean daily excess return over the T-bill rate, annualised, divided by annualised volatility (Sharpe) or downside deviation (Sortino).

    Beta and alpha. Beta = covariance of daily portfolio and benchmark returns / benchmark variance. Alpha is Jensen's alpha, annualised: portfolio excess return minus beta x benchmark excess return.

    Tracking error and information ratio. Annualised standard deviation of daily active return, and annualised active return divided by it.

    Attribution. Brinson-Fachler by asset class. Allocation = (portfolio weight - benchmark weight) x (class benchmark return - total benchmark return). Selection = portfolio weight x (class return - class benchmark return), interaction included. A benchmark rebalancing line closes the gap to the daily-rebalanced benchmark exactly.

    Peer check. Each stock against its SPDR sector ETF (XLK, XLF, XLV, XLE, XLP). Quarterly hit rate = share of calendar quarters in the period where the stock beat its peer.

    Forward risk. Historical 1-day VaR and CVaR at 95%, and a 1-year range from annualised mean and volatility (normal approximation, 5th to 95th percentile).