← Back to Learn
IV ExpertWeek 15 • Lesson 46Duration: 50 min

FM Factor Models

Decomposing returns into what's common and what's yours

Learning Objectives

  • Identify and construct common factors for FX and futures markets
  • Run factor attribution on strategy returns
  • Distinguish alpha from factor exposure
  • Evaluate whether apparent alpha is compensated risk

Explain Like I'm 5

Factor models break down your returns into pieces: how much came from broad market moves, how much from known risk premiums (momentum, carry, etc.), and how much is genuinely unexplained — your alpha.

Think of It This Way

Imagine you run faster on a windy day. A factor model separates your true speed from the tailwind. If 80% of your "performance" was the wind, you need to know that before entering a race on a calm day.

1Common Factors in FX and Futures

Factor models originated in equities (Fama-French, Carhart), but the concept translates directly to any asset class. For FX and futures, the standard factors are: Momentum (MOM). The tendency for recent winners to continue outperforming. In FX, this means currencies with positive 3-12 month returns tend to continue appreciating. Asness, Moskowitz, & Pedersen (2013) showed momentum works across asset classes. Carry (CRY). High-yielding assets tend to outperform low-yielding ones. In FX, this is the classic carry trade — go long high-rate currencies, short low-rate. In futures, it's the roll yield: contango vs. backwardation. Value (VAL). Assets that appear cheap relative to fundamentals tend to outperform over long horizons. In FX, this is often measured by PPP deviation or real effective exchange rate. Much weaker than in equities. Volatility (VOL). Low-volatility assets tend to deliver higher risk-adjusted returns than high-volatility assets. Liquidity (LIQ). Less liquid assets command a premium. In practice, this means monitoring bid-ask spreads and market depth as both a signal and a source of return. The key question for any active strategy: how much of your return is explained by these known factors, and how much is unexplained alpha?

2Running Factor Attribution

The standard approach is multivariate regression:
ri=α+k=1Kβkfk+εir_i = \alpha + \sum_{k=1}^{K} \beta_k f_k + \varepsilon_i
Where: - rir_i = your strategy's return in period ii - α\alpha = the intercept (your unexplained alpha) - βk\beta_k = your exposure to factor kk - fkf_k = the return of factor kk - εi\varepsilon_i = residual Interpreting the output: - Alpha (intercept): If statistically significant, you have genuine skill. If near zero, you're just harvesting known risk premiums. - Betas (factor loadings): These tell you where your returns come from. A momentum beta of 0.4 means 40% of your volatility comes from momentum exposure. - R-squared: The proportion of return variance explained by factors. High R-squared (>0.7) means most returns are factor-driven. Low R-squared (<0.3) suggests genuinely idiosyncratic alpha. A critical subtlety: factor models are sensitive to the choice of factors. Including too few underestimates factor exposure (inflating alpha). Including too many creates multicollinearity.

3Factor Returns Over Time

Factors aren't constant return streams — they go through extended periods of under- and overperformance:

4Alpha or Factor? The Existential Crisis

This is where factor analysis gets philosophically interesting. Consider three scenarios: Scenario A: Your strategy returns 15% annually with a momentum beta of 0.8. After factor attribution, alpha is 2%. You're running a leveraged momentum portfolio with a small skill edge. Scenario B: Your strategy returns 12% annually with no significant factor loadings and R-squared = 0.15. You have genuine idiosyncratic alpha. This is the dream — but verify it's not just missing factors. Scenario C: Your strategy returns 20% annually, but all of it loads onto carry and momentum during specific regimes. Your "alpha" is regime-conditional factor exposure. What sophisticated allocators look for: 1. Statistical significance of alpha (t-stat > 2, ideally > 3) 2. Stability of alpha across sub-periods 3. Low factor loadings AND low R-squared 4. Positive alpha after including conditional factor models 5. Capacity: can the alpha scale? Fama & French (1993, 2015) and Carhart (1997) established the foundational factor models. Ang (2014) in Asset Management provides the most accessible treatment for practitioners.

Key Formulas

Factor Model

Return decomposition into factor exposures (beta), unexplained alpha, and noise (epsilon)

Hands-On Code

Factor Attribution Analysis

python
import numpy as np
from sklearn.linear_model import LinearRegression

def factor_attribution(strategy_returns, factor_returns):
    """
    Run factor attribution regression on strategy returns.
    
    Parameters:
        strategy_returns: array of daily strategy returns
        factor_returns: dict of {'factor_name': returns_array}
    
    Returns:
        dict with alpha, betas, t-stats, R-squared
    """
    factor_names = list(factor_returns.keys())
    X = np.column_stack([factor_returns[f] for f in factor_names])
    y = strategy_returns
    
    reg = LinearRegression().fit(X, y)
    
    y_pred = reg.predict(X)
    residuals = y - y_pred
    
    n, k = X.shape
    dof = n - k - 1
    mse = np.sum(residuals**2) / dof
    
    X_with_const = np.column_stack([np.ones(n), X])
    var_beta = mse * np.linalg.inv(X_with_const.T @ X_with_const)
    se = np.sqrt(np.diag(var_beta))
    
    alpha_annual = reg.intercept_ * 252
    alpha_tstat = reg.intercept_ / se[0]
    
    ss_res = np.sum(residuals**2)
    ss_tot = np.sum((y - np.mean(y))**2)
    r_squared = 1 - ss_res / ss_tot
    
    results = {
        'alpha_annual_pct': round(alpha_annual * 100, 2),
        'alpha_tstat': round(alpha_tstat, 2),
        'alpha_significant': abs(alpha_tstat) > 2.0,
        'r_squared': round(r_squared, 3),
        'factors': {}
    }
    
    for i, name in enumerate(factor_names):
        results['factors'][name] = {
            'beta': round(reg.coef_[i], 4),
            't_stat': round(reg.coef_[i] / se[i+1], 2),
        }
    
    return results

Runs OLS regression of strategy returns against factor returns to decompose performance into alpha and factor contributions, with t-statistics for significance testing.

Knowledge Check

Q1.If your strategy has an R-squared of 0.85 against a momentum-carry factor model, what does this imply?

Q2.A strategy alpha with a t-statistic of 1.3 over 5 years should be interpreted as:

Assignment

Construct simple momentum (12-month return) and carry (interest rate differential) factors for the G10 FX universe. Run factor attribution on a simple moving-average crossover strategy. What percentage of the strategy's returns are explained by momentum vs. carry? Is the residual alpha statistically significant?