Volatility is the most common measure of risk, but it comes in several flavors. In a previous article, we showed how to calculate simple historical volatility. In this article, we will improve on simple volatility and discuss the exponentially weighted moving average (EWMA).

Historical vs. Implied Volatility

First, let's put this metric into a bit of perspective. There are two broad approaches: historical and implied (or implicit) volatility. The historical approach assumes that the past is prologue; we measure history in the hope that it is predictive. Implied volatility, on the other hand, ignores history; it solves for the volatility implied by market prices. It hopes that the market knows best and that the market price contains, even if implicitly, a consensus estimate of volatility.

If we focus on just the three historical approaches (on the left above), they have two steps in common:

  1. Calculate the series of periodic returns
  2. Apply a weighting scheme

First, we calculate the periodic return. That's typically a series of daily returns where each return is expressed in continually compounded terms. For each day, we take the natural log of the ratio of stock prices (i.e., the price today divided by price yesterday, and so on).

ui=lnsisi1where:ui=return on day isi=stock price on day isi1=stock price the day before day i\begin{aligned} &u_i = ln\frac{s_i}{s_{i - 1}}\\ &\textbf{where:}\\ &u_i=\text{return on day }i\\ &s_i=\text{stock price on day }i\\ &s_{i - 1}=\text{stock price the day before day }i\\ \end{aligned}ui=lnsi1siwhere:ui=return on day isi=stock price on day isi1=stock price the day before day i

This produces a series of daily returns, from ui to ui-m, depending on how many days (m = days) we are measuring.

That gets us to the second step: This is where the three approaches differ. In the previous article, we showed that under a couple of acceptable simplifications, the simple variance is the average of the squared returns:

variance=σn2=1mΣi=1mun12where:m=number of days measuredn=dayiu=difference of return from the average return\begin{aligned} &\text{variance} = \sigma^2_n = \frac{1}{m} \Sigma^m_{i = 1} u^2_{n - 1} \\ &\textbf{where:}\\ &m=\text{number of days measured}\\ &n=\text{day} i\\ &u=\text{difference of return from the average return}\\ \end{aligned}variance=σn2=m1Σi=1mun12where:m=number of days measuredn=dayiu=difference of return from the average return

Notice that this sums each of the periodic returns, then divides that total by the number of days or observations (m). So, it's really just an average of the squared periodic returns. Put another way, each squared return is given an equal weight. So if alpha (a) is a weighting factor (specifically, a = 1/m), then a simple variance looks something like this:

The EWMA Improves on Simple Variance
The weakness of this approach is that all returns earn the same weight. Yesterday's (very recent) return has no more influence on the variance than last month's return. This problem is fixed by using the exponentially weighted moving average (EWMA), in which more recent returns have greater weight on the variance.

The exponentially weighted moving average (EWMA) introduces lambda, which is called the smoothing parameter. Lambda must be less than one. Under that condition, instead of equal weights, each squared return is weighted by a multiplier as follows:

For example, RiskMetricsTM, a financial risk management company, tends to use a lambda of 0.94, or 94%. In this case, the first (most recent) squared periodic return is weighted by (1-0.94)(.94)0 = 6%. The next squared return is simply a lambda-multiple of the prior weight; in this case 6% multiplied by 94% = 5.64%. And the third prior day's weight equals (1-0.94)(0.94)2 = 5.30%.

That's the meaning of "exponential" in EWMA: each weight is a constant multiplier (i.e. lambda, which must be less than one) of the prior day's weight. This ensures a variance that is weighted or biased toward more recent data. The difference between simply volatility and EWMA for Google is shown below.

Simple volatility effectively weighs each and every periodic return by 0.196% as shown in Column O (we had two years of daily stock price data. That is 509 daily returns and 1/509 = 0.196%). But notice that Column P assigns a weight of 6%, then 5.64%, then 5.3% and so on. That's the only difference between simple variance and EWMA.

Remember: after we sum the entire series (in Column Q) we have the variance, which is the square of the standard deviation. If we want volatility, we need to remember to take the square root of that variance.

What's the difference in daily volatility between the variance and EWMA in Google's case? It's significant: The simple variance gave us a daily volatility of 2.4% but the EWMA gave a daily volatility of only 1.4% (see the spreadsheet for details). Apparently, Google's volatility settled down more recently; therefore, a simple variance might be artificially high.

Today's Variance Is a Function of Prior Day's Variance

You'll notice we needed to compute a long series of exponentially declining weights. We won't do the math here, but one of the best features of the EWMA is that the entire series conveniently reduces to a recursive formula:

σn2(ewma)=λσn2+(1λ)un12where:λ=the degree of weighting decreaseσ2=value at time period nu2=value of EWMA at time period n\begin{aligned} &\sigma^2_n (ewma) = \lambda \sigma^2_{n} + (1 - \lambda) u^2_{n - 1} \\ &\textbf{where:}\\ &\lambda=\text{the degree of weighting decrease}\\ &\sigma^2=\text{value at time period }n\\ &u^2=\text{value of EWMA at time period }n\\ \end{aligned}σn2(ewma)=λσn2+(1λ)un12where:λ=the degree of weighting decreaseσ2=value at time period nu2=value of EWMA at time period n

Recursive means that today's variance references (i.e. is a function of the prior day's variance). You can find this formula in the spreadsheet also, and it produces the exact same result as the longhand calculation! It says: today's variance (under EWMA) equals yesterday's variance (weighted by lambda) plus yesterday's squared return (weighed by one minus lambda). Notice how we are just adding two terms together: yesterday's weighted variance and yesterdays' weighted, squared return.

Even so, lambda is our smoothing parameter. A higher lambda (e.g., like RiskMetric's 94%) indicates slower decay in the series – in relative terms, we are going to have more data points in the series and they are going to "fall off" more slowly. On the other hand, if we reduce the lambda, we indicate higher decay: the weights fall off more quickly and, as a direct result of the rapid decay, fewer data points are used. (In the spreadsheet, lambda is an input, so you can experiment with its sensitivity).


Volatility is the instantaneous standard deviation of a stock and the most common risk metric. It is also the square root of variance. We can measure variance historically or implicitly (implied volatility). When measuring historically, the easiest method is a simple variance. But the weakness with simple variance is all returns get the same weight. So we face a classic trade-off: we always want more data but the more data we have the more our calculation is diluted by distant (less relevant) data. The exponentially weighted moving average (EWMA) improves on simple variance by assigning weights to the periodic returns. By doing this, we can both use a large sample size but also give greater weight to more recent returns.