Methodology
Every number on this site is reproducible from public data. Here is exactly how each one is computed, formulas included.
Price data
End-of-day prices, adjusted for splits and dividends, covering every US-listed common stock (sourced from the official Nasdaq Trader symbol directories, excluding warrants, rights and preferred shares) plus a set of major ETFs, over the past 5 years. Returns are computed on weekly closes (Friday). Weekly sampling reduces the noise and the asynchronicity issues that daily data introduces, at the cost of a slower-moving estimate.
Coverage note: an asset needs roughly 10 months of price history before we publish a correlation for it, so recent IPOs join the database automatically once they qualify. That filter is why the covered count sits below the raw number of listed symbols.
Correlation
Pearson correlation of weekly returns over rolling windows of 1 year (52 weeks), 3 years (156 weeks) and 5 years (260 weeks). We require a minimum history per window (about 75% of the window) before showing a figure. The 3-year figure is our headline number: long enough to be stable, short enough to reflect the current regime. Correlation measures co-movement, not performance, and it changes over time, which is why every pair page shows a rolling 1-year correlation chart.
The formulas (rA,t is the weekly return of asset A in week t, r̄A its mean over the window, n the number of weeks):
Correlation ρ(A,B) = cov(rA, rB) / (σA · σB)
Covariance cov(rA, rB) = Σt (rA,t − r̄A)(rB,t − r̄B) / (n − 1), annualized as cov × 52
Volatility σA = stdev(rA) × √52, shown as a percentage
Beta βA = cov(rA, rSPY) / var(rSPY), over the 3-year window
Overlap O(A,B) = Σi min(wA,i, wB,i) over every holding i present in both funds
Covariance, beta and volatility
Annualized covariance is the covariance of weekly returns multiplied by 52, expressed in %². Beta is computed against SPY over 3 years of weekly returns. Volatility is the standard deviation of 3-year weekly returns, annualized.
Holdings overlap
For ETF pairs where both funds publish daily portfolio files, overlap is the sum of the minimum common weights: for each holding present in both funds, we take the smaller of the two weights and sum them. 100% means identical portfolios and 0% means no common holdings. We display only derived metrics and do not republish issuer portfolio files. Portfolio data is currently available for the SPDR fund family, and coverage expands over time.
Update cadence & limitations
Data refreshes on end-of-day prices, and the as-of date is printed on every page. Known limitations: correlations on weekly data react slowly to regime changes, assets with under about 10 months of history are excluded, overlap is computed on issuer-disclosed portfolios which carry their own publication dates, and nothing here forecasts anything. Sources: end-of-day market data (Yahoo Finance) and issuer fund disclosures (SSGA/SPDR).
Free API
Everything on this site is also served as JSON. See the API documentation, or take the whole set of figures as CSV.