EWMA Volatility: Formula, Lambda, and GARCH Comparison

EWMA volatility, short for Exponentially Weighted Moving Average volatility, estimates how much an asset’s price is moving by giving recent returns far more weight than older ones. Instead of averaging every observation in a fixed window equally, it applies weights that shrink exponentially the further back you go, so yesterday’s price move influences today’s risk estimate much more than a move from three months ago. One parameter, called lambda, controls how quickly that influence fades, and the whole calculation runs recursively: each day’s variance estimate feeds directly into the next.

The Formula and What It Does

EWMA updates variance one step at a time using this equation:

σ²(t) = λ × σ²(t−1) + (1 − λ) × r²(t−1)

Here σ²(t) is today’s variance estimate, σ²(t−1) is yesterday’s estimate, r²(t−1) is yesterday’s squared return, and λ (lambda) is a decay factor between 0 and 1.1ResearchGate. Recursive Estimation of the Exponentially Weighted Moving Average Model

Lambda balances two things. With λ = 0.94, today’s variance is 94% yesterday’s estimate and 6% the latest squared return. The large component keeps the series stable in quiet markets. The small component lets new information in when a shock hits. Only one parameter governs the entire weighting structure, which is a large part of why the model is used so widely.

The influence of any past observation never literally reaches zero, so the model carries some memory of every data point in the series. In practice, anything beyond a few months contributes almost nothing.

Choosing Lambda

The RiskMetrics Defaults

The RiskMetrics framework, originally published by J.P. Morgan in 1994 and later maintained by MSCI, set the values most practitioners still use: 0.94 for daily returns and 0.97 for monthly returns. These were calibrated across a broad range of asset classes and became standard at most financial institutions. A daily lambda of 0.94 effectively cuts off meaningful contribution at roughly 74 trading days; the monthly 0.97 extends that effective window to about 151 months.2MSCI. RiskMetrics Technical Document – Fourth Edition 1996

Half-Life

A clearer way to feel what lambda is doing is through its half-life, the number of periods it takes an observation’s weight to fall to half. The formula is half-life = −ln(2) / ln(λ). For daily data at λ = 0.94, that works out to about 11 trading days. A large shock loses half its influence on the variance estimate in roughly two weeks. For monthly data at λ = 0.97, the half-life is about 23 months.

Calibrating Lambda to Your Data

The defaults are starting points, not universal truths. A common calibration approach is to minimize the Root Mean Square Error (RMSE) between the model’s forecast and a benchmark measure of realized volatility: test a range of lambda values, compute the RMSE for each, and pick the one with the smallest error.3UNE Business School (University of New England). What Should the Value of Lambda Be in the Exponentially Weighted Moving Average Volatility Model?

Research doing exactly this has found the optimal lambda can land well away from the defaults. One study across equity indices found the RMSE-minimizing lambda for monthly data was closer to 0.70 than the recommended 0.97, suggesting the default assigns too much weight to distant observations for some asset classes.3UNE Business School (University of New England). What Should the Value of Lambda Be in the Exponentially Weighted Moving Average Volatility Model? If accuracy on a specific asset matters more than following convention, calibrate against realized volatility rather than accepting the default.

Running the Calculation

Step 1: Compute Returns

Start with a series of closing prices. Convert each into a log return using ln(P_t / P_{t−1}). Log returns are preferred over simple percentage returns because they are additive over time, which simplifies aggregation across periods. Square each return. Squaring strips the sign so that an up move and a down move of the same size contribute equally to the volatility estimate.

Step 2: Seed the Initial Variance

The recursion needs a starting value. The standard approach is to take the simple variance of the first few weeks or months of returns and use that as σ²(0).3UNE Business School (University of New England). What Should the Value of Lambda Be in the Exponentially Weighted Moving Average Volatility Model? Because exponential decay washes out early observations quickly, the exact seed matters less than you might think; two different starting values will converge to nearly identical estimates after 30 to 50 iterations. A sensible seed still helps avoid distorted readings in the early part of a short series.

Step 3: Apply the Recursion

With the seed and chosen lambda, work through the series day by day. Multiply the previous day’s variance by lambda. Multiply the previous day’s squared return by (1 − lambda). Add the two. That sum is today’s variance. Feed it into tomorrow’s calculation and repeat.

Step 4: Convert to Volatility and Annualize

The recursion produces a daily variance. Take the square root for daily volatility (standard deviation). Most risk reports and option pricing models want annualized volatility, so multiply the daily figure by the square root of 252, the approximate number of trading days in a year. This square-root-of-time rule assumes returns are uncorrelated day to day and variance is roughly constant. It is an approximation, and regulators generally accept it.

Doing It in Python

Pandas handles EWMA without manual loops. The DataFrame.ewm() method builds an exponentially weighted window, and chaining .std() gives you the exponentially weighted standard deviation.4pandas documentation. pandas.DataFrame.ewm You can specify the decay in several ways:

  • alpha is the smoothing factor directly, equal to (1 − lambda).
  • span sets the window span, with alpha = 2 / (span + 1).
  • halflife uses the half-life in periods, with alpha = 1 − exp(−ln(2) / halflife).
  • com is center of mass, with alpha = 1 / (1 + com).

To match a lambda of 0.94, pass alpha=0.06 or equivalently com=15.67. The adjust parameter defaults to True, which corrects for the weight imbalance during the early periods when fewer observations are available. For most EWMA volatility work, keeping adjust=True produces estimates closer to the theoretical formula during warm-up.4pandas documentation. pandas.DataFrame.ewm

EWMA Compared to GARCH

EWMA is a special case of GARCH(1,1). The GARCH(1,1) variance equation is:

σ²(t) = γ × V_L + α × r²(t−1) + β × σ²(t−1)

where V_L is the long-run average variance and γ, α, and β sum to 1. Set γ to zero, let α = (1 − λ) and β = λ, and you have EWMA.5ResearchGate. Volatility Forecasting – A Comparison of GARCH(1,1) and EWMA Models

Dropping the long-run term has one significant consequence. GARCH(1,1) exhibits mean reversion, pulling variance back toward its long-run level over time. EWMA does not. After a shock, GARCH will gradually bring estimates back toward the historical average, while EWMA simply carries the elevated level forward, decaying it only when calm returns enter the window. That makes EWMA more reactive in the short term but less reliable for longer-horizon forecasts, where volatility tends to revert toward a baseline.6ResearchGate. Volatility Forecasting – A Comparison of GARCH(1,1) and EWMA Models

The practical trade-off is simplicity against flexibility. EWMA has one parameter. GARCH(1,1) has three and requires maximum-likelihood estimation. For daily risk monitoring where speed and transparency matter, EWMA often wins. For multi-step-ahead forecasting or research work where capturing volatility dynamics matters more, GARCH is the stronger tool.

Where EWMA Breaks Down

The model’s simplicity is the source of its blind spots.

The most important one is how EWMA handles extreme returns. Because the formula uses squared returns, a single large move hits the variance estimate hard, and because the model carries memory forward, that impact propagates through many subsequent estimates. Real financial returns have fatter tails than a normal distribution, so large moves happen more often than the model expects. When they occur, the squared-return channel can push the variance estimate upward even if the underlying risk environment has not fundamentally changed.7EconStor. Score Driven Exponentially Weighted Moving Averages and Value-at-Risk Forecasting

The lack of mean reversion creates a separate problem for anyone forecasting more than a few days out. If a crisis hit last month, the EWMA estimate stays elevated, declining only as new calm returns arrive. Nothing in the model pulls it back to normal. For short-horizon daily monitoring this barely matters. For term-structure modeling or capital planning over quarters, it can produce misleading results.

EWMA’s single-parameter design also limits its ability to fit different volatility regimes. Markets often show asymmetry, with volatility rising quickly in a selloff but decaying slowly in recovery. Capturing that pattern requires additional structure, such as an asymmetric GARCH variant, that EWMA cannot accommodate.

How EWMA Is Used in Risk Management

Portfolio Risk and VaR

EWMA scales from single-asset variance to portfolio risk through the covariance matrix. The same exponential weighting applies, but the squared return is replaced by the cross-product of two assets’ returns, producing EWMA covariances alongside EWMA variances on the diagonal.8V-Lab (NYU Stern). EWMA Covariance From that matrix you can derive conditional correlations that update daily, and those inputs feed directly into Value at Risk calculations where portfolio risk depends on how assets move together, not just how volatile each one is.

Bank Capital and Backtesting

Banks that use internal models for market risk capital must meet regulatory standards for their volatility and risk estimates. Under the Basel framework, the Fundamental Review of the Trading Book has shifted the primary risk metric from Value at Risk to Expected Shortfall at the 97.5th percentile with a 10-day base liquidity horizon.9Bank for International Settlements. Basel Framework – MAR33 – Internal Models Approach: Capital Requirements Calculation Whatever the headline metric, the underlying variance and covariance inputs are frequently built on EWMA or similar exponentially weighted structures.

Those models get backtested. Regulators compare predicted losses against actual outcomes over a rolling 250-day window and count exceptions, meaning days when actual losses exceeded the model’s forecast. Too many exceptions push a bank into higher capital multipliers; enough can see the model disallowed.10Bank for International Settlements. Basel Framework – MAR32 – Internal Models Approach: Backtesting and P&L Attribution Test Requirements This is where the limitations have real financial consequences. A model that overreacts to fat-tailed outliers produces variance estimates that are too high and wastes capital. One that underestimates tail risk breaches too often and triggers regulatory penalties. Choosing lambda, and knowing when EWMA is the wrong tool, is not a purely academic exercise.