A measure of how sensitively an asset's price moves in relation to a benchmark, typically the overall market.
In Plain English
If the stock market drops 10%, how much will your stock drop? Beta answers that question. A beta of 1.0 means the stock moves lockstep with the market. A beta of 1.5 means it swings 50% more — a 10% market drop becomes a 15% drop in your stock, but a 10% rally also becomes a 15% gain. A beta of 0.5 means the stock is half as volatile as the market. And a negative beta (rare, but seen in assets like gold or certain inverse ETFs) means the stock tends to rise when the market falls.
Beta captures systematic risk — the risk you can't diversify away by holding a broad portfolio. If every stock in the market falls during a recession, your high-beta tech stocks fall harder. The risk premium embedded in expected returns (the "equity risk premium") compensates investors for bearing this systematic risk. What beta does not capture is idiosyncratic risk — company-specific events like earnings misses or product recalls that affect only that stock.
Practical applications are everywhere. A market-neutral hedge fund hedges out beta to eliminate market exposure and isolate stock selection skill. A pension fund uses beta to ensure its portfolio doesn't move more than the benchmark. A risk manager monitors portfolio beta in real time to make sure leverage isn't creeping up.
One subtlety that trips up many investors: beta is not constant. A company that was a boring utility in 2015 might have acquired a fast-growing tech subsidiary by 2024, dramatically changing its beta. Beta estimates using 60-month rolling windows can lag regime changes by years.
Technical Definition
Beta of asset i relative to market m from CAPM:
β_i = Cov(r_i, r_m) / Var(r_m)
Equivalently, β is the slope coefficient from the OLS regression:
r_i,t − r_f = α + β_i (r_m,t − r_f) + ε_t
Standard estimation uses 60 months of monthly returns or 252 days of daily returns. The Vasicek adjustment shrinks raw betas toward 1.0 to correct for mean reversion in beta estimates: β_adjusted = 0.67 × β_raw + 0.33 × 1.0.
Levered vs unlevered beta: leverage amplifies equity beta because debt holders have first claim on assets. Unlevered (asset) beta: β_unlevered = β_levered / (1 + (1 − t) × D/E) where t is the tax rate and D/E is the debt-to-equity ratio. Unlevered beta is used for cross-company comparison and project-level WACC estimation.
In Fama-French multi-factor models, the single market beta is replaced by loadings on multiple factors (market, size, value, profitability, investment), giving a more complete risk decomposition.
How VectorFin Uses This
VectorFin's signals/regime table provides daily regime classifications (bull, bear, volatile, sideways) with confidence scores. Regime shifts are one of the most important drivers of realized beta changes: stocks that behave as moderate-beta (β ≈ 1.0) in bull markets often exhibit significantly higher betas during volatile or bear regimes as correlations spike.
Systematic strategies can use the regime signal to adjust their beta hedges dynamically:
- In a "volatile" regime (confidence > 0.7): increase hedge ratio, reduce net beta
- In a "bull" regime (confidence > 0.7): accept higher net beta, reduce hedge cost
GET https://api.vectorfinancials.com/v1/signals/regime/{ticker}?date=2024-10-01The anomaly signal (signals/anomaly) can also identify when a company's co-movement with the market is unusual — potential early warning of an idiosyncratic event that could cause the stock to temporarily decorrelate from its historical beta.
Code Example
import requests
import pandas as pd
import numpy as np
API_BASE = "https://api.vectorfinancials.com"
API_KEY = "vf_your_api_key_here"
# Fetch regime signal to guide dynamic beta targeting
def get_regime(ticker: str, date: str) -> dict:
resp = requests.get(
f"{API_BASE}/v1/signals/regime/{ticker}",
params={"date": date},
headers={"X-API-Key": API_KEY},
)
resp.raise_for_status()
return resp.json()
regime = get_regime("SPY", "2024-10-01")
print(f"Market regime: {regime['regime']} (confidence: {regime['confidence']:.2f})")
# Adjust target portfolio beta based on regime
if regime["regime"] == "volatile" and regime["confidence"] > 0.6:
target_beta = 0.5 # defensively reduce market exposure
elif regime["regime"] == "bull" and regime["confidence"] > 0.7:
target_beta = 1.2 # lean into the trend
else:
target_beta = 1.0 # neutral
print(f"Target portfolio beta: {target_beta}")
# With individual stock betas (from your own calculation or data provider),
# you can construct a portfolio that hits the target beta:
# sum(weight_i * beta_i) = target_betaRelated Terms
External References
Put Beta to work in your pipeline
Access AI-ready financial data — embeddings, signals, Iceberg tables.