Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

2. Financial Time Series: Dependence and Inference

Question: Why do the dates and dependence structure of returns change how we estimate uncertainty?

Chapter 1 derived estimators and sampling uncertainty. Here we examine the environment in which asset-pricing regressions are fitted: return transformations, stationarity, autocorrelation, volatility clustering, ergodicity and mixing. The examples use monthly Fama–French data, turning abstract assumptions into questions we can investigate.

By the end you should be able to interpret ADF, ACF/PACF, Ljung–Box and ARCH results; explain why uncorrelated observations can still be dependent; and identify which assumptions remain unverified after plotting the data.

Prerequisite: the CLT, regression and covariance-estimation ideas in Chapter 1. This chapter motivates the checks used before and after the fund regressions in Chapter 3. Sample coverage is reported with the data; Data and methods explains the conventions.

Previous: Statistical foundations · Next: The three-factor model

Source
US FF3 monthly (decimal returns): 321 observations, 2000-01-01 to 2026-09-01; as of 2026-10-31
            Mkt-RF     SMB     HML      RF
Date                                      
2000-01-01 -0.0474  0.0512 -0.0110  0.0041
2000-02-01  0.0246  0.2134 -0.0973  0.0043
2000-03-01  0.0521 -0.1739  0.0848  0.0047
2000-04-01 -0.0639 -0.0603  0.0645  0.0046
2000-05-01 -0.0439 -0.0607  0.0458  0.0050

Section 1: Prices vs. Returns — Why We Transform the Data

1.1 The Problem with Prices

Price levels can change persistently over time, so a stationary regression model cannot be applied to them without justification. Below we construct a total-return market index from the released factor data and compare its behaviour with returns. A higher price level does not itself prove nonstationarity; the model and diagnostics matter.

Many models treat stock-price levels as nonstationary. The simple stationary LLN/CLT framework used here is then inappropriate for levels; more specialised nonstationary methods would be needed. Transforming prices into returns makes a stationary model more plausible without establishing it.

1.2 The Solution: Returns

The simple return over one period is:

Rt=Pt−Pt−1Pt−1=PtPt−1−1R_t = \frac{P_t - P_{t-1}}{P_{t-1}} = \frac{P_t}{P_{t-1}} - 1

The log return (continuously compounded return) is:

rt=ln⁡(PtPt−1)=ln⁡(Pt)−ln⁡(Pt−1)r_t = \ln\left(\frac{P_t}{P_{t-1}}\right) = \ln(P_t) - \ln(P_{t-1})

For small returns, Rt≈rtR_t \approx r_t (by the Taylor expansion ln⁡(1+x)≈x\ln(1+x) \approx x). The Fama-French factors are reported as simple returns.

Why returns are a useful starting point:

  • Returns are scale-free: a 2% return in 2003 and a 2% return in 2023 are directly comparable, even though the price levels differ by a factor of 5.

  • Returns can be modelled as approximately stationary over some windows. Stable moments remain a working assumption to examine, not an automatic consequence of differencing.

  • Log returns are additive: the multi-period log return is rt:t+k=rt+rt+1+⋯+rt+kr_{t:t+k} = r_t + r_{t+1} + \cdots + r_{t+k}. This makes aggregation clean.

1.3 Excess Returns

In asset pricing, we typically work with excess returns:

Rte=Rt−RtfR^e_t = R_t - R^f_t

where RtfR^f_t is the risk-free rate (e.g., 1-month Treasury bill rate). This is what the Fama-French factors represent: Mkt-RF is the market excess return.

An excess return is a realised return relative to the risk-free asset. Its expectation is the corresponding expected premium; an individual month also contains unexpected news.

Source
<Figure size 1600x800 with 4 Axes>
Rolling dispersion differs between price levels and returns; these plots do not prove stationarity.
This is why these stationary factor regressions use returns. Other financial models can explicitly study nonstationary price levels.

Section 2: Stationarity — The Foundation of Time Series Inference

2.1 What Is Stationarity?

A time series {Xt}\{X_t\} is (weakly / covariance) stationary if:

  1. Constant mean: E[Xt]=μE[X_t] = \mu for all tt

  2. Constant variance: Var(Xt)=γ0\text{Var}(X_t) = \gamma_0 for all tt

  3. Autocovariance depends only on lag: Cov(Xt,Xt+k)=γk\text{Cov}(X_t, X_{t+k}) = \gamma_k for all tt

In words: the statistical properties of the process do not change depending on when you observe it. A stationary process “looks the same” whether you examine it in 2005 or 2019.

There is also a stronger notion — strict (strong) stationarity — which requires that the entire joint distribution of (Xt1,…,Xtk)(X_{t_1}, \ldots, X_{t_k}) is invariant to time shifts. For most financial applications, weak stationarity is sufficient.

2.2 Why Stationarity Matters

Stationarity is not just a mathematical nicety — it is essential for inference:

What we want to doWhy stationarity is needed
Estimate a mean μ\muIf E[Xt]E[X_t] changes over time, “the mean” is not well-defined. Xˉn\bar{X}_n estimates... what?
Estimate a variance σ2\sigma^2If Var(Xt)\text{Var}(X_t) drifts, the sample variance does not converge to anything meaningful
Apply the CLTThe stationary time-series CLT used here needs stable moments and weak dependence; other CLTs allow non-identically distributed data
Run a regressionOLS assumes the coefficients β\beta are constant. If the relationship between yy and xx changes over time, β^\hat{\beta} is an average of a moving target
Use Newey-WestThe autocovariance structure γk\gamma_k must be constant over time; otherwise the HAC estimator has no fixed target

The bottom line: Nearly every statistical tool we use in the Fama-French tutorials assumes either weak stationarity or a close approximation to it over the sample at hand. If returns were strongly non-stationary, our regressions, t-statistics, and p-values would not have a stable interpretation.

2.3 Are Stock Returns Stationary?

Approximately, yes — and this is why financial econometrics works at all.

  • Prices are non-stationary (they trend, they have unit roots).

  • Returns are approximately stationary: their mean and autocovariance structure are roughly constant over long periods.

The qualification “approximately” is important:

  • Volatility is not perfectly constant — it clusters (Section 4). But the unconditional variance Var(Xt)\text{Var}(X_t) can still be constant even if the conditional variance Var(Xt∣Xt−1,…)\text{Var}(X_t \mid X_{t-1}, \ldots) fluctuates (this is the GARCH framework).

  • The mean return may shift slowly over very long horizons (structural breaks, changing risk premia). Even within 10–25 year windows, structural changes can matter and should be investigated.

2.4 Testing for Stationarity: The Augmented Dickey-Fuller Test

The Augmented Dickey-Fuller (ADF) test is the standard tool for detecting non-stationarity. It tests:

  • H0H_0: The series has a unit root (non-stationary — behaves like a random walk)

  • H1H_1: The series is stationary

The test fits a regression:

ΔXt=c+δXt−1+∑j=1pϕjΔXt−j+ϵt\Delta X_t = c + \delta X_{t-1} + \sum_{j=1}^{p} \phi_j \Delta X_{t-j} + \epsilon_t

and tests H0:δ=0H_0: \delta = 0 (unit root) vs. H1:δ<0H_1: \delta < 0 (stationary / mean-reverting).

If the pp-value is small, we reject the null of a unit root. That is evidence consistent with stationarity, but it is not a complete proof of weak stationarity.

AUGMENTED DICKEY-FULLER TESTS FOR STATIONARITY
=================================================================
Series                           ADF Stat    p-value  Reject unit root?
-----------------------------------------------------------------
Cumulative price level             3.5467     1.0000             NO
Mkt-RF (returns)                 -17.3409     0.0000            YES
SMB (returns)                    -15.1095     0.0000            YES
HML (returns)                    -15.8023     0.0000            YES
Log(price level)                   1.1736     0.9958             NO
A rejection is evidence against a unit root under the chosen ADF specification.
Failure to reject does not prove a unit root. Neither outcome establishes
constant variance, mixing, exogeneity, or validity of a particular regression.

Section 3: Autocorrelation — Does Today Predict Tomorrow?

3.1 The Autocorrelation Function (ACF)

For a stationary series, the autocorrelation at lag kk is:

ρk=γkγ0=Cov(Xt,Xt+k)Var(Xt)\rho_k = \frac{\gamma_k}{\gamma_0} = \frac{\text{Cov}(X_t, X_{t+k})}{\text{Var}(X_t)}

This measures the linear dependence between observations kk periods apart. Key values:

  • ρ0=1\rho_0 = 1 always (a series is perfectly correlated with itself)

  • ∣ρk∣≤1|\rho_k| \leq 1

  • For i.i.d. data, ρk=0\rho_k = 0 for all k≥1k \geq 1

The sample ACF at lag kk is:

ρ^k=∑t=1n−k(Xt−Xˉ)(Xt+k−Xˉ)∑t=1n(Xt−Xˉ)2\hat{\rho}_k = \frac{\sum_{t=1}^{n-k}(X_t - \bar{X})(X_{t+k} - \bar{X})}{\sum_{t=1}^{n}(X_t - \bar{X})^2}

3.2 The Partial Autocorrelation Function (PACF)

The PACF at lag kk measures the correlation between XtX_t and Xt+kX_{t+k} after removing the linear effects of the intervening observations Xt+1,…,Xt+k−1X_{t+1}, \ldots, X_{t+k-1}.

  • If the PACF cuts off after lag pp, this suggests an AR(pp) model: the current observation depends directly on only the last pp observations.

  • If the ACF cuts off after lag qq, this suggests an MA(qq) model.

3.3 What Does This Mean for Returns?

Under a model with constant conditional expected returns, demeaned return innovations are a martingale difference sequence. Weak-form market efficiency alone does not imply this, because expected risk compensation can vary. In that simplified model:

  • ρk≈0\rho_k \approx 0 for all k≥1k \geq 1 (returns are a white noise or a martingale difference sequence)

  • The ACF of returns should be flat — no significant spikes after lag 0

In practice, monthly returns show very small autocorrelations — typically ∣ρ^k∣<0.10|\hat{\rho}_k| < 0.10 — consistent with near-efficiency. But even small autocorrelations can matter for standard errors, which is why we use Newey-West.

3.4 The Ljung-Box Test

The Ljung-Box test is a formal test for whether any of the first mm autocorrelations are significantly different from zero:

Q(m)=n(n+2)∑k=1mρ^k2n−k∼χm2under H0Q(m) = n(n+2) \sum_{k=1}^{m} \frac{\hat{\rho}_k^2}{n-k} \sim \chi^2_m \quad \text{under } H_0
  • H0H_0: The first mm autocorrelations are all zero (not a test of independence)

  • H1H_1: At least one autocorrelation is nonzero

This is important: even if no individual ρ^k\hat{\rho}_k looks large, there might be a collective pattern.

Source
<Figure size 1800x1200 with 9 Axes>
LJUNG-BOX TESTS FOR AUTOCORRELATION IN RETURNS
======================================================================
H0: No autocorrelation up to lag m
H1: At least one autocorrelation is nonzero

--- Mkt-RF ---
  ACF lags 1-6: 0.0299, -0.0770, 0.0696, 0.0620, 0.0209, -0.0517
  Q( 6) =    6.077,  p-value = 0.4146 
  Q(12) =   14.097,  p-value = 0.2946 
  Q(24) =   29.276,  p-value = 0.2099 

--- SMB ---
  ACF lags 1-6: -0.1258, 0.0120, -0.1622, 0.0412, 0.0586, 0.0074
  Q( 6) =   15.454,  p-value = 0.0170 **
  Q(12) =   18.853,  p-value = 0.0921 *
  Q(24) =   31.413,  p-value = 0.1422 

--- HML ---
  ACF lags 1-6: 0.1200, 0.0387, 0.0537, 0.1195, -0.0143, -0.0620
  Q( 6) =   12.093,  p-value = 0.0599 *
  Q(12) =   15.680,  p-value = 0.2064 
  Q(24) =   21.739,  p-value = 0.5948 

INTERPRETATION:
- Mkt-RF: Individual autocorrelations are tiny. Ljung-Box may or may
  not reject — even small autocorrelations can be jointly significant.
- SMB and HML: May show slightly more autocorrelation (factor portfolios
  are rebalanced less frequently than individual stocks).

Even when autocorrelation is small, Newey-West corrects for it.
The key insight: returns are NEARLY uncorrelated but NOT independent.

Section 4: Volatility Clustering — The Hidden Dependence

4.1 The Key Distinction: Uncorrelated ≠ Independent

Section 3 showed that factor returns have very weak autocorrelation: ρ^k≈0\hat{\rho}_k \approx 0 for all k≥1k \geq 1. A naive conclusion might be: “Returns are independent, so the classical CLT applies and we don’t need Newey-West.”

This would be wrong.

Uncorrelated means Cov(Xt,Xt+k)≈0\text{Cov}(X_t, X_{t+k}) \approx 0 — there is no linear dependence between returns at different times. But independent means no dependence of any kind — not even in higher moments.

The crucial observation: while Corr(Xt,Xt+k)≈0\text{Corr}(X_t, X_{t+k}) \approx 0, we typically see:

Corr(Xt2,Xt+k2)≫0andCorr(∣Xt∣,∣Xt+k∣)≫0\text{Corr}(X_t^2, X_{t+k}^2) \gg 0 \qquad \text{and} \qquad \text{Corr}(|X_t|, |X_{t+k}|) \gg 0

Large returns (of either sign) tend to be followed by large returns, and small returns by small returns. This is volatility clustering — the variance of returns changes over time in a persistent way.

4.2 Conditional vs. Unconditional Variance

This introduces a distinction that is crucial for understanding when standard errors need correction:

  • Unconditional variance: Var(Xt)=γ0\text{Var}(X_t) = \gamma_0 — a single number, constant over time (by stationarity)

  • Conditional variance: Var(Xt∣Xt−1,Xt−2,…)=σt2\text{Var}(X_t \mid X_{t-1}, X_{t-2}, \ldots) = \sigma_t^2 — varies over time, depending on recent history

A GARCH(1,1) model makes this explicit:

σt2=ω+αXt−12+βσt−12\sigma_t^2 = \omega + \alpha X_{t-1}^2 + \beta \sigma_{t-1}^2

Even though σt2\sigma_t^2 fluctuates period-to-period, its long-run average E[σt2]=ω/(1−α−β)E[\sigma_t^2] = \omega / (1 - \alpha - \beta) is constant. So the series is still weakly stationary — the unconditional variance exists — but the conditional variance changes.

4.3 Why This Matters for Standard Errors

Volatility clustering in the return series is a warning sign that a regression run on those data can easily inherit conditional heteroscedasticity in its residuals, even if the series is stationary in the unconditional sense.

This violates the “constant variance” assumption of classical OLS. Under appropriate exogeneity and regularity conditions, the consequences are:

OLS coefficients (β^\hat{\beta})Classic standard errorsNewey-West standard errors
Affected?No — OLS is still unbiased and consistentYes — can be too small or too largeNo — designed for this

OLS coefficients remain valid (unbiased, consistent) regardless of heteroscedasticity. But the standard errors — and therefore the t-statistics, p-values, and confidence intervals — can be badly wrong with classic OLS. This is exactly what heteroscedasticity-consistent (HC) and HAC (Newey-West) standard errors fix.

4.4 The ARCH Test

To formally test for volatility clustering, we use Engle’s ARCH test (1982). The idea is simple: regress the squared residuals ϵ^t2\hat{\epsilon}_t^2 on their own lags:

ϵ^t2=α0+α1ϵ^t−12+⋯+αpϵ^t−p2+ut\hat{\epsilon}_t^2 = \alpha_0 + \alpha_1 \hat{\epsilon}_{t-1}^2 + \cdots + \alpha_p \hat{\epsilon}_{t-p}^2 + u_t

The null hypothesis is:

H0:α1=α2=⋯=αp=0H_0: \alpha_1 = \alpha_2 = \cdots = \alpha_p = 0

If we reject H0H_0, the squared residuals are predictable from their own past — evidence of ARCH effects, i.e. volatility clustering.

In a pure time-series setting like this section, those residuals come from an auxiliary mean equation for the series itself. In a Fama-French regression, the same logic gets applied later to the regression residuals, not directly to raw returns.

Source
<Figure size 1800x1200 with 9 Axes>
KEY FINDING:
- Left column: Absolute returns cluster — volatile periods are followed by volatile periods.
- Middle column: Returns themselves have near-zero ACF, but SQUARED returns are
  strongly autocorrelated. This is the signature of volatility clustering.
- Right column: |X_t| and |X_{t-1}| are positively correlated — large moves
  predict large moves (of either sign).

Uncorrelated does not imply independent. HC or HAC depends on regression-score covariance.
ENGLE'S ARCH TEST FOR CONDITIONAL HETEROSCEDASTICITY
=================================================================
H0: No ARCH effects (constant conditional variance)
H1: ARCH effects present (volatility clustering)

Factor         Lags    LM Stat    p-value           Result
-----------------------------------------------------------------
Mkt-RF            1     31.613     0.0000 ARCH effects ***
Mkt-RF            6     41.153     0.0000 ARCH effects ***
Mkt-RF           12     46.202     0.0000 ARCH effects ***

SMB               1     69.027     0.0000 ARCH effects ***
SMB               6      7.532     0.2745     Not rejected
SMB              12     28.152     0.0053 ARCH effects ***

HML               1     11.915     0.0006 ARCH effects ***
HML               6     36.453     0.0000 ARCH effects ***
HML              12     37.583     0.0002 ARCH effects ***

These tests use residuals from a constant-mean model, after demeaning.
Small p-values support ARCH-type dependence at the tested lags; large
p-values do not prove constant variance. Diagnose factor-model residuals separately.

4.5 From ARCH to GARCH(1,1): Modelling Volatility Dynamics

The ARCH test tells us volatility clustering exists, but it does not tell us how to model it. The GARCH(1,1) model (Bollerslev, 1986) is the workhorse specification:

rt=μ+ϵt,ϵt=σtzt,zt∼N(0,1)r_t = \mu + \epsilon_t, \qquad \epsilon_t = \sigma_t z_t, \qquad z_t \sim \mathcal{N}(0,1)
σt2=ω+α ϵt−12+β σt−12\sigma_t^2 = \omega + \alpha\, \epsilon_{t-1}^2 + \beta\, \sigma_{t-1}^2

where:

  • σt2\sigma_t^2 is the conditional variance at time tt (the variance you would forecast given information up to t−1t-1)

  • ω>0\omega > 0 is a constant (long-run intercept)

  • α≥0\alpha \geq 0 captures the shock impact: a large ∣ϵt−1∣|\epsilon_{t-1}| (yesterday’s surprise) raises today’s variance

  • β≥0\beta \geq 0 captures persistence: today’s variance inherits a fraction of yesterday’s variance

  • Finite-variance (covariance) stationarity requires α+β<1\alpha + \beta < 1 for unit-variance innovations; strict stationarity has a weaker log-moment condition

Why does this matter for Fama-French regressions?

  1. OLS coefficients are still unbiased and consistent — GARCH affects the error variance, not the expected value of the errors.

  2. Classic standard errors are wrong — they assume Var(ϵt)=σ2\text{Var}(\epsilon_t) = \sigma^2 (constant). Since σt2\sigma_t^2 fluctuates, classic SEs are biased.

  3. Newey-West fixes this — the HAC estimator allows each ϵ^t2\hat{\epsilon}_t^2 to differ (the “heteroscedasticity” part of “HAC”), so GARCH-type patterns do not invalidate inference.

  4. Unconditional variance still exists — if α+β<1\alpha + \beta < 1, the unconditional variance is σunc2=ω/(1−α−β)\sigma^2_{\text{unc}} = \omega / (1 - \alpha - \beta), and the process is strictly stationary. Mixing additionally depends on conditions on the innovation distribution and the model parameters.

Typical estimates for monthly US equity returns: α≈0.05–0.15\alpha \approx 0.05\text{–}0.15, β≈0.80–0.92\beta \approx 0.80\text{–}0.92, with α+β≈0.95–0.99\alpha + \beta \approx 0.95\text{–}0.99 — high persistence but strictly below 1.

Note: We do not fit a GARCH model here because our goal is running Fama-French regressions, not forecasting volatility. An ARCH rejection is evidence of conditional variance dependence, not confirmation of a particular GARCH model. HC can accommodate heteroscedasticity when regression scores are serially uncorrelated; HAC also allows score autocorrelation under its regularity conditions.


Section 5: Ergodicity and Mixing — Why a Single Time Path Is Enough

5.1 The Ergodicity Problem

Here is a deep conceptual issue that is often glossed over.

In cross-sectional statistics (e.g., polling 1,000 people), we have many independent draws from a population. The Law of Large Numbers and the CLT are straightforward: as the sample size grows, the sample mean converges to the population mean.

In time series, we have a single realization of the process. The current sample runs from 2000 to the latest released month — we cannot rewind history and observe another draw from the probability measure. All observations come from one path.

So why does Xˉn\bar{X}_n converge to E[Xt]E[X_t]? This is not obvious — the Law of Large Numbers was stated for independent draws.

5.2 Ergodicity: Time Averages = Ensemble Averages

A stationary process {Xt}\{X_t\} is ergodic if time averages converge to population averages:

Xˉn=1n∑t=1nXt→a.s.E[Xt]=μ\bar{X}_n = \frac{1}{n}\sum_{t=1}^n X_t \xrightarrow{a.s.} E[X_t] = \mu

and more generally, any function of (Xt,Xt+1,…,Xt+k)(X_t, X_{t+1}, \ldots, X_{t+k}) has its time average converge to its expectation.

Intuition: If the process “forgets” its past quickly enough, then observations far apart in time are effectively independent, and we can treat them like multiple draws from the same distribution.

Mean convergence is weaker than mixing. Summable autocovariances give mean-square convergence of the sample mean under covariance stationarity, but do not establish full ergodicity or a CLT. The stronger mixing-rate and moment conditions in Notebook 1, Section 3.5 are sufficient for that CLT.

5.3 Mixing: How Fast Does Dependence Decay?

Mixing conditions formalize the idea that “the distant past and the distant future are approximately independent.” A process is α\alpha-mixing (strongly mixing) if:

α(k)=sup⁡A∈F−∞0,B∈Fk∞∣P(A∩B)−P(A)P(B)∣→0as k→∞\alpha(k) = \sup_{A \in \mathcal{F}_{-\infty}^0, B \in \mathcal{F}_k^{\infty}} |P(A \cap B) - P(A)P(B)| \to 0 \quad \text{as } k \to \infty

In words: events in the far past and events in the far future become independent. The rate at which α(k)\alpha(k) decays determines which CLT version applies and what lag length Newey-West needs.

For financial returns: Short-memory ARMA/GARCH models can satisfy strong-mixing conditions under additional regularity assumptions. Observed ACFs are diagnostics of linear dependence, not estimates or tests of the mixing coefficients. Neither an ADF rejection nor a visually small ACF proves a mixing CLT applies.

5.4 What Could Go Wrong: Non-Ergodic Processes

Not all processes are ergodic. Important counterexamples:

ProcessErgodic?Problem
Random walk (Pt=Pt−1+ϵtP_t = P_{t-1} + \epsilon_t)NoVariance grows without bound; no stable mean to converge to
Structural break (mean shifts from μ1\mu_1 to μ2\mu_2 at unknown time T∗T^*)NoXˉn\bar{X}_n converges to a weighted average of μ1\mu_1 and μ2\mu_2, not “the” mean
Unit root in volatilityNoUnconditional variance does not exist
Stationary GARCH returnsYesConditional variance changes, but the process still forgets its past fast enough

ADF examines one kind of nonstationarity. It cannot rule out structural breaks, infinite variance or stationary non-ergodic processes. For example, Xt=Z+utX_t=Z+u_t with a fixed random component ZZ is stationary but not ergodic for the mean.

Source
<Figure size 1600x550 with 2 Axes>
ACFs describe linear dependence; they cannot prove strong mixing.
The right panel sums ABSOLUTE autocovariances. It is not the long-run variance,
which uses signed autocovariances and may be above or below gamma_0.
Sampling noise makes absolute sample sums rise even for independent data.

Section 6: Summary — What Fama-French Regressions Actually Require

6.1 The Assumption Stack

When you run a Fama-French regression like:

Ri,te=αi+βi,1⋅Mkt-RFt+βi,2⋅SMBt+βi,3⋅HMLt+ϵi,tR^e_{i,t} = \alpha_i + \beta_{i,1} \cdot \text{Mkt-RF}_t + \beta_{i,2} \cdot \text{SMB}_t + \beta_{i,3} \cdot \text{HML}_t + \epsilon_{i,t}

it is crucial to separate two objects:

  • The raw return and factor series studied in Sections 2-5

  • The regression errors ϵi,t\epsilon_{i,t} that remain after projecting returns on the factors

Sections 2-5 tell us whether the time-series environment looks compatible with modern asymptotic theory. They do not by themselves prove that the regression residuals satisfy the same properties. Residual-specific assumptions must be checked after fitting the model.

AssumptionWhat it meansNeeded forWhere assessedWhat this notebook establishes
StationarityStatistical properties of returns/factors do not drift too much over timeLLN, CLT, consistency of β^\hat{\beta}ADF test, visual inspection on returns/factorsEvidence consistent for return series (Section 2)
ErgodicityTime averages converge to population quantitiesConsistency of estimatorsStrict stationarity + strong mixing is sufficientPlausible background condition (Section 5)
LinearityTrue conditional mean is linear in the factorsCorrect specification of β^\hat{\beta}Residual plots, Ramsey RESET after fitting the regressionNot tested here
No perfect multicollinearityFactors are not exact linear combinations of each otherXTX\mathbf{X}^T\mathbf{X} is invertibleCorrelations, VIF after assembling regressorsYes in principle, verify in the applied notebook
E[ϵt∣Xt]=0E[\epsilon_t \mid \mathbf{X}_t] = 0Errors are mean-zero given the factorsContemporaneous orthogonality supports consistency; finite-sample unbiasedness needs exogeneity conditional on the full designNot directly testable; economic argumentAssumed/model-based
Homoscedasticity of errorsVar(ϵt∣Xt)\text{Var}(\epsilon_t \mid \mathbf{X}_t) is constantClassic OLS standard errorsBreusch-Pagan, ARCH, scale-location plots on residualsNot determined by return diagnostics alone
No autocorrelation of errorsCov(ϵt,ϵs∣X)=0\text{Cov}(\epsilon_t, \epsilon_s \mid \mathbf{X}) = 0 for t≠st \neq sClassic OLS standard errorsDurbin-Watson, Ljung-Box, residual ACFNot determined by return diagnostics alone
Normality of errorsϵt\epsilon_t is GaussianExact finite-sample t/F inferenceJarque-Bera, QQ plot on residualsNot determined by return diagnostics alone
Mixing / weak dependenceSuitable dependence and moments for regressors and regression scoresNewey-West consistency, mixing CLTReturn/factor dependence here; residual dependence after regressionReturn-level evidence is supportive, but residuals must still be checked

6.2 What Holds, What Fails, and What Saves Us

Working interpretation of the diagnostics:

  • ADF and rolling moments provide partial evidence about a stationary return model

  • Weak dependence/mixing remains an assumption requiring more than return ACFs

  • Volatility clustering and fat tails are realistic features of financial data, so textbook i.i.d. Gaussian intuition is too strong

What this notebook does not establish by itself:

  • Whether a particular Fama-French regression has homoscedastic residuals

  • Whether a particular Fama-French regression has serially uncorrelated residuals

  • Whether a particular Fama-French regression has approximately normal residuals

How the pieces fit together:

  • The mixing CLT: gives asymptotic normality of β^\hat{\beta} under weak dependence, without requiring Gaussian errors

  • Newey-West HAC standard errors: estimate long-run variance robustly when residuals are heteroscedastic and/or autocorrelated

  • Residual diagnostics in the applied notebooks: check the ϵi,t\epsilon_{i,t} assumptions on the fitted residuals rather than on raw returns

6.3 From diagnostics to a regression

For valid Fama-French inference, the key workflow is:

  1. Check that the return/factor environment is roughly stationary and weakly dependent

  2. Fit the regression with an economically sensible factor specification

  3. Diagnose the residuals if you want to talk about ϵi,t\epsilon_{i,t}

  4. Use Newey-West rather than relying on classical homoscedastic, no-autocorrelation standard errors

This is why the foundations notebook studies raw return behavior first, while the applied regression notebooks revisit the assumptions on fitted residuals. Those are related questions, but they are not the same question.

Reading forward: The 3-Factor Tutorial and the Practical Investing notebook both run residual-based diagnostics after fitting the regression. Read the time-series evidence here as motivation and background, not as a substitute for checking ϵ^i,t\hat{\epsilon}_{i,t} directly.

                         Condition                                                     Assessment
                         Unit root                       ADF tests above; specification dependent
           Stable moments / mixing             Working assumptions; not established by ACF or ADF
                        Exogeneity     Model assumption; residual orthogonality does not prove it
                         Full rank                                   Check each regression design
Error variance / serial dependence   Check fitted residuals and use suitable covariance estimates
                     Normal errors Needed for classical exact tests, not asymptotic HAC inference

What changes when observations arrive through time?

The examples show why return regressions require more than a cross-sectional formula. Price levels can be non-stationary; returns often provide a more workable object, but their distributions can still change. Weak return autocorrelation can coexist with strong dependence in squared returns. Unit-root tests, residual diagnostics and rolling summaries each examine different features, and none proves every condition required for valid inference.

ToolWhat it helps us investigateWhat it does not establish
ADF testEvidence against a specified unit-root nullFull stationarity, stable higher moments or mixing
Return ACF and Ljung–Box testLinear serial dependence over selected lagsIndependence or market efficiency
Squared-return ACF and ARCH testConditional variance dependenceA complete volatility model
Rolling moments and subsamplesInstability and sensitivity to the observation windowA unique or permanent market regime
HAC covarianceSampling uncertainty under suitable moment and dependence conditionsExogeneity, correct specification or a reliable small-sample approximation

These distinctions connect Chapter 1’s asymptotic arguments to the regressions that follow. Non-normal errors alone need not invalidate asymptotic inference; sufficiently well-behaved moments and dependence still matter. Rolling windows can reveal changing estimates, but they also use fewer observations and produce more sampling noise.

Continue to the Fama–French three-factor model. We will ask what market, size and value exposures explain, then use diagnostics and robust covariance without treating them as proof that the model is correct.

Exercises

Exercise 1: Stationarity on a New Series (Hands-On)

Download daily prices for any stock (e.g., AAPL) using yfinance and compute daily log returns.

  1. Run the ADF test on prices and on log returns. Do the results match what we found for Fama-French factors?

  2. Plot the rolling 60-day mean and standard deviation of log returns. Does the series look approximately stationary?

# Starter code:
import yfinance as yf
prices = load_prices('AAPL').loc['2015-01-01':]  # adjusted close
log_returns = np.log(prices / prices.shift(1)).dropna()

Exercise 2: Interpreting ACF Plots (Conceptual)

Consider three processes:

  • (A) White noise: Xt∼i.i.d. N(0,1)X_t \sim \text{i.i.d.}\ \mathcal{N}(0,1)

  • (B) AR(1): Xt=0.8Xt−1+ϵtX_t = 0.8 X_{t-1} + \epsilon_t

  • (C) Financial returns with GARCH volatility

For each, sketch (or describe) what you expect the ACF of XtX_t and the ACF of Xt2X_t^2 to look like. Then explain why process (C) motivates robust inference, and discuss when HC would suffice even though its return ACF looks similar to (A).

Exercise 3: Effect of Sample Period on ARCH Tests (Hands-On)

  1. Split the Fama-French Mkt-RF data into two sub-periods: 2000–2011 and 2012–latest available.

  2. Run the ARCH test (with 6 lags) on each sub-period separately.

  3. Is volatility clustering stronger in one period than the other? Which period contains the 2008 crisis?

# Starter code:
mkt_early = ff3['Mkt-RF'].loc[:'2011-12']
mkt_late  = ff3['Mkt-RF'].loc['2012-01':]
# Run het_arch(series - series.mean(), nlags=6, ddof=1) in each window

Exercise 4: Mixing Condition in Practice (Discussion)

  1. Why does a finite-sample plot of γ^0+2∑k=1M∣γ^k∣\hat\gamma_0 + 2\sum_{k=1}^{M}|\hat\gamma_k| neither prove summability nor estimate the signed long-run variance? Why is the stationary long-run variance formula inapplicable to a random-walk level?

  2. In your own words, explain why a finite long-run variance is necessary for the Newey-West estimator to be consistent.

  3. If an asset’s returns exhibited a structural break (e.g., a regime change in volatility after 2020), would the mixing condition still hold over the full sample? What practical step could you take?