Back to Overview

Methodology

How FactorView calculates macro exposure scores and what they mean.

1. Overview

Macro Exposure describes how a stock historically reacted to changes in a macroeconomic factor — not why.

This is fundamentally different from forecasting. We measure sensitivity: when interest rates rose in the past, did this stock tend to go up or down? By how much?

Key distinction:

  • Correlation — how two variables move together
  • Sensitivity (β) — how much one variable moves in response to another
  • Prediction — not what we do ❌

2. Data Sources

All data is sourced from Financial Modeling Prep (FMP) API.

Stock Prices

  • Adjusted close prices (split & dividend adjusted)
  • Resampled to monthly frequency
  • 3–5 years of history

Macro Time Series

FactorSeriesFMP Endpoint
Interest RatesUS 10Y Treasury Yield/treasury
Oil PricesWTI Crude/historical-price-full/WTI
InflationUS CPI YoY/economic?name=CPI
USD StrengthUS Dollar Index (DXY)/historical-price-full/DX-Y.NYB

Update Frequency

Scores are refreshed daily. The underlying regression uses monthly data points.

3. Timeframes & Returns

Return Calculation

We use log returns for stock prices and changes for macro factors:

stock_returnt = log(pricet / pricet-1)

factor_returnt = Δmacro_valuet

Rolling Windows

We calculate exposure over rolling windows of:

  • 36 months (3Y) — default
  • 60 months (5Y) — for stability
  • 12 months (1Y) — for recent sensitivity

Why Monthly?

Macro effects unfold slowly. Daily noise obscures the signal. Monthly data provides a cleaner picture of sensitivity while maintaining sufficient sample size.

4. Exposure Model

Linear Regression

We fit a simple linear regression for each stock-factor pair:

Rstock,t = α + βfactor · Rfactor,t + εt

Rstock,t = Monthly return of the stock at time t

Rfactor,t = Monthly change in the macro factor at time t

βfactor = Macro Exposure — the sensitivity coefficient

α = Intercept (baseline return)

εt = Error term

Interpreting β

  • β > 0 → Stock tends to rise when the factor rises
  • β < 0 → Stock tends to fall when the factor rises
  • β ≈ 0 → No significant sensitivity to this factor

5. Score Normalization

Why Normalize?

Raw β values are not directly comparable across factors. A β of 0.5 for interest rates means something different than a β of 0.5 for oil prices (due to different scales and volatilities).

Normalization Process

exposure_score = clip(β × scaling_factor, -100, 100)

direction = sign(β)

confidence = f(R², sample_size)

The resulting score is mapped to a -100 to +100 range:

  • +100 = Extreme positive sensitivity
  • 0 = No meaningful sensitivity
  • -100 = Extreme negative sensitivity

Confidence Score

The confidence score (0-100) reflects how reliable the exposure estimate is, based on:

  • — How much of the stock's movement is explained by the factor
  • Sample size — More data points = higher confidence

6. Interpretation Guidelines

High exposure ≠ good or bad

A high positive or negative score is not inherently good or bad. It simply indicates strong sensitivity. Whether that is desirable depends on your outlook for the factor.

Exposure ≠ causality

Correlation does not imply causation. A stock may move with a factor due to a third variable, sector effects, or coincidence.

Macro regimes change

Historical sensitivity may not persist. Structural changes in the economy, company strategy, or market dynamics can alter exposure over time.

Example: A stock with negative rate exposure is not "bad" — it is simply sensitive to rising rates. If you expect rates to fall, this could be advantageous.

7. Limitations

  • Structural breaks

    Major events (COVID-19, 2008 crisis) can distort historical relationships. The model does not distinguish normal from crisis periods.

  • Regime changes

    Central bank policy shifts, technological disruption, or industry evolution may render historical patterns less relevant.

  • One-time events

    M&A activity, spin-offs, or company-specific events can create outliers that skew the regression.

  • Young companies

    Stocks with less than 3 years of history may have unreliable exposure estimates due to small sample sizes.

  • Omitted variables

    The model captures univariate relationships. Real-world dynamics involve multiple interacting factors.

Using with ScreenerHub

Macro exposure scores are designed to work as screener fields. Combine them with valuation, quality, and balance sheet metrics for more refined stock selection.

Example filter:

InterestRateExposure < -50 AND PE < 15 AND ROE > 15

Macro exposure is most powerful when combined with fundamental analysis.