CAPM & Factor Model Dashboard

What Are We Looking At? — A Bird's-Eye View of 500 Stocks

This tab summarises the factor characteristics of all ~500 S&P 500 stocks at once, using two models. CAPM explains each stock's returns using just one thing: how much it moves with the overall market (Beta). The Carhart four-factor model adds three more explanations — company size (SMB), value vs growth (HML), and recent price momentum (WML). Each histogram below shows how the entire S&P 500 is distributed across that factor.

Beta measures market sensitivity. Alpha is excess return that no factor explains — it's what a manager would claim as "skill." tells you how much of a stock's movement is explained by the model (0% = nothing, 100% = perfectly).

🟢 Healthy: Beta clustered around 1.0 (most stocks move with the market). R² improving meaningfully from CAPM to Carhart means the extra factors add real explanatory power. Most alphas near zero — no widespread "free lunch."
🔴 Noteworthy: A fat right tail in Alpha (many stocks with high positive alpha) often signals a bull-market period or a model missing a risk factor. Very low R² stocks are highly idiosyncratic — driven by company-specific events, not market forces.
📖 How to read it: Each histogram shows the count of stocks at each value. Taller bars near the centre mean most stocks behave similarly. The R² comparison bar shows how much better Carhart explains returns vs plain CAPM — a bigger gap means factors matter.
How are these numbers derived? Each histogram below is the cross-section of a regression coefficient estimated separately for every stock. The drawers below give the formula, universe and horizon for each factor — and the full walk-through, including an interactive per-industry explorer, lives on the dedicated methodology page.
Factor Methodology & Transparency →
How is Market Beta (β) calculated? — data, universe, horizon, formula
What it measures. A stock's sensitivity to the overall market. β = 1 tracks the market one-for-one; β > 1 amplifies it; β < 1 is defensive.
ri rf = α + β(Rmrf) + ε   ⟹   β = Cov(rirf, Rmrf) / Var(Rmrf)
β is the OLS slope of the stock's monthly excess return on the market's excess return.
Which stocks. Every current S&P 500 constituent with ≥24 months of history (~500 names). Each stock's own returns are the dependent variable.
The "market". Ken French's Mkt-RF — the value-weighted return of all CRSP US stocks minus the risk-free rate. This is the total US market, not SPY (SPY is only a price benchmark elsewhere on this dashboard).
Horizon. Trailing 5 years of month-end returns (~58 monthly observations) per stock.
How is SMB (size) calculated? — which stocks, what criteria
What it measures. A stock's loading on the size premium — how much it co-moves with small caps vs large caps. Positive = small-cap-like; negative = mega-cap-like.
SMB = ⅓(SL+SN+SH) ⅓(BL+BN+BH)
Avg return of three small-cap portfolios minus three big-cap portfolios (Ken French), then the stock's loading s is its regression slope on this series.
The criterion. Market capitalisation. Each June the full CRSP US universe is split Small vs Big at the NYSE median, crossed with three book-to-market buckets, giving six value-weighted portfolios.
Which stocks are "part of SMB". The factor return uses the entire US market, not just the S&P 500. What this dashboard reports per stock is its loading onto that factor — so even a large-cap name can show a positive s.
HML / WML follow the same logic. HML sorts the same six portfolios on book-to-market (value vs growth); WML sorts on prior 2–12 month return (winners vs losers). See the methodology page for each formula.
Avg Market Beta
Avg CAPM R²
Avg Carhart R²
Sig. Alpha (p<0.05)
Beta Distribution
Market beta (β) across all stocks
SMB Loading Distribution
Size factor exposure across all stocks
HML Loading Distribution
Value factor exposure across all stocks
WML Loading Distribution
Momentum factor exposure across all stocks
Alpha Distribution
Monthly alpha (annualized) across all stocks
CAPM vs Carhart R²
Average R² improvement from adding factors

Sector Tilts — Which Industries Lean Small, Value, or Momentum?

Different parts of the economy behave very differently in financial markets. This tab shows the average Carhart factor "tilt" for each GICS sector — whether that sector tends to be dominated by large or small companies (SMB), cheap or expensive stocks relative to their book value (HML), and whether recent winners keep winning (WML). Think of it as a personality profile for each sector.

SMB (Size): positive = sector leans small-cap. HML (Value): positive = sector leans cheap/value stocks. WML (Momentum): positive = recent winners continue to outperform. Beta: how aggressively the sector moves when the market moves.

🟢 What to look for: High HML in Energy or Financials (value sectors historically). High WML in Technology (momentum often persists there). High Beta in Consumer Discretionary (people cut spending first in downturns). Low Beta in Utilities and Consumer Staples (defensive sectors).
🔴 Warning signs: A sector with very high Beta and negative HML (expensive growth stocks) can fall steeply when the market drops. Negative WML means recent losers dominate — often a sector in structural decline or cyclical downturn.
📖 How to read it: The grouped bar chart shows each sector's average factor loading side-by-side. The table below gives the exact numbers plus R² for precision. Bars above zero are positive tilts; below zero are negative. Compare sectors against each other to find contrasts.
Sector Factor Tilts
Average Carhart factor loadings by GICS sector
Sector N β SMB HML WML α (ann.) R² CAPM R² Carhart

Stock Comparison — How Did Individual Stocks Perform vs the Market?

This chart lets you place multiple stocks side-by-side to see how they've grown relative to each other and to the S&P 500 (shown as a dotted line). All prices are "indexed to 100" at the start of the selected period — so every stock starts at the same point and you can see who pulled ahead or fell behind, regardless of their share price.

Select a sector from the first dropdown, then pick a stock from the filtered list. Add as many stocks as you like. Use the 1Y / 3Y / 5Y buttons to zoom in or out. The SPY benchmark line stays fixed so you always know if a stock beat or lagged the market.

🟢 Outperformance: A stock line consistently above SPY means it beat the market over that period. Strong outperformers during downturns (when SPY drops but the stock holds up) are the most interesting — they may have genuine defensive qualities or alpha.
🔴 Underperformance: A stock consistently below SPY underperformed the market — you would have done better just owning an index fund. This doesn't mean "bad company" but it does mean lower return for the risk taken.
📖 How to read it: Start at the left edge — all stocks are equal at 100. The further apart the lines diverge over time, the more their paths differ. Crossing lines show periods where one stock overtook another. Use the 1Y view to see recent momentum; 5Y for the full cycle.
Indexed Price Performance
All series indexed to 100 at start of selected range

Deep Dive — The Full Factor Story for One Stock

Pick any stock and this tab gives you a complete breakdown of what has been driving its returns. The scorecard shows how the stock loads on each factor under both CAPM and Carhart, along with a plain-English interpretation. The rolling beta chart shows whether the stock's market sensitivity has been stable or has shifted over time — useful for spotting when a company's risk profile changed.

The monthly attribution chart splits each month's return into the portion explained by the market, each factor, and any unexplained alpha. The price chart compares the actual stock price to SPY and to the model's "fitted" prediction, revealing where the stock behaved unexpectedly.

🟢 What's interesting: Stable rolling beta (flat line) = consistent risk exposure. Monthly attribution dominated by the market factor = the stock just rides the index. A gap between actual price and the fitted line = the model missed something — could be earnings surprises, M&A news, or genuine alpha.
🔴 Watch out for: Rising rolling beta over time = the stock is becoming more volatile relative to the market. Large unexplained residuals month after month = high idiosyncratic risk — this stock is hard to predict using factors alone.
📖 How to read it: Enter a ticker (e.g. AAPL, MSFT) and click Load. The scorecard table reads left to right: factor name, CAPM loading, Carhart loading, and what it means in plain English. In the attribution chart, stacked bars above zero are positive contributors; below zero are drags on that month's return.
Enter a ticker to load stock data

Factor Performance — Did Size, Value, and Momentum Actually Pay Off?

Academic researchers discovered decades ago that certain stock characteristics — being small, being "cheap" relative to book value, or having recent price momentum — have historically earned extra returns above the market. These are the famous Fama-French and Carhart factors. But they don't always work. This tab shows how each factor has actually performed over the past 5 years so you can see which ones paid off and which ones struggled.

The cumulative chart shows the growth of $1 invested in each factor portfolio since the start. The rolling 12-month chart shows recent momentum — whether each factor has been in or out of favour over the trailing year.

🟢 Factor working: A steadily rising cumulative line means investors who tilted their portfolio toward that factor were rewarded. WML (momentum) has historically been one of the most consistent factors. Market premium (Mkt-Rf) should generally trend upward over long horizons — it's the basic reward for owning stocks.
🔴 Factor struggling: A flat or declining cumulative line means the factor premium has not materialised recently. HML (value) had a notorious "lost decade" in the 2010s as growth stocks dominated. Factor premiums come and go — they are cyclical, not guaranteed.
📖 How to read it: Lines starting at 1.0 in the cumulative chart — above 1.0 means the factor earned a positive return from the start date. In the rolling chart, bars above zero = factor earned positive return that year; below zero = negative year for that factor. Long negative stretches suggest the factor is out of favour.
Cumulative Factor Returns
Growth of $1 invested, compounded monthly
Rolling 12-Month Factor Returns
Trailing 12-month compound return by factor

Alpha Screen — Which Stocks Generated Returns That No Factor Can Explain?

Alpha is the portion of a stock's return that cannot be attributed to any known risk factor — not the market, not its size, not value, not momentum. It's the Holy Grail of investing: pure outperformance. But finding statistically reliable alpha is extremely rare. Most "alpha" is just compensation for a risk the model hasn't captured yet, or plain luck that won't repeat.

This table ranks all ~500 S&P 500 stocks by their annualised Carhart alpha. The t-statistic tells you how confident we are that the alpha is real and not random noise — a t-stat above 2.0 (or below −2.0) suggests statistical significance at the 95% confidence level.

🟢 Positive alpha + significant t-stat: The stock generated excess returns beyond what its risk factors predict, and we're statistically confident it wasn't random. This is the rarest and most valuable finding — use the "Significant only" filter to isolate these stocks.
🔴 Be sceptical: With 500 stocks, roughly 25 will show significant alpha by pure chance at the 95% level (false positives). High alpha with a low t-stat is probably noise. Past alpha is also no guarantee of future alpha — strategies get crowded and premiums disappear.
📖 How to read it: Sort by any column by clicking the header. Use the sector dropdown to compare within an industry (so you're comparing apples to apples). The "Significant only" checkbox filters to t-stat > 2 — these are the candidates worth investigating further with the Deep Dive tab.
— stocks
Ticker ↓ Name Sector Alpha (ann.) α t-stat β SMB HML WML ΔR²

⚠ Survivorship bias caveat: This dataset contains only stocks currently in the S&P 500 index. Stocks that were delisted, merged, or removed due to poor performance are excluded, which systematically overstates historical returns and alpha. Interpret results with caution.