The world’s largest momentum index

Jacob Lindberg
Vinter
Published in
5 min readFeb 16, 2022

The iShares MSCI USA Momentum Factor ETF is the world’s largest momentum ETF. It tracks an MSCI index. Their competitor S&P also offers a momentum index, and they are almost identical. This post contains a description, an explanation, and a commentary on the momentum index. In the end, I mention a few possible ways to vary the index construction.

Description

The weights per asset are calculated as follows.

  1. Get the 6-month and 12-month returns from the daily closing prices. Subtract the risk-free rate.
    r = price(t) / price(t-lag) -1 -riskfree
  2. Calculate the risk-adjusted return by dividing the returns with the volatility of the asset. The volatility is calculated using weekly data for the last three years. There are two groups: 6 and 12 months, calculated separately.
    radj = r / volatility
  3. Convert the risk-adjusted returns to Z-scores by subtracting the group’s mean and dividing by the group’s standard deviation.
    z = [ra — mean(radj)] / stdev(radj)
  4. We have two risk-adjusted returns, one for 6 months and one for 12 months. Thus we also have two Z scores. Take the average. Then cap the value so that it can’t be above plus 3 or below minus 3.
    Zm = mean(two z scores)
    Zc = min(3, max(Zm, -3))
  5. Convert the capped Z-score to a positive number. This is done by adding one if it’s already positive and otherwise taking 1 divided by 1 minus the score.
    Zplus = if(Zc > 0, Zc + 1, 1/(1-Zc)
    For example, if the score is 0.5 take 0.5+1=1.5 but if the score is -2 take 1/(1+2)=1/3.
  6. The momentum score is proportional to the positive capped Z-score.
    Mom = Zplus / sum(Zplus)
  7. Multiply the momentum score with the market capitalization of the asset.
    V = Mom * Marketcap
    The weight per asset is proportional to this value.
    W = V / sum(V)
  8. Cap the weight to some maximum value — say 5% — so that no asset dominates the portfolio. If an asset is capped, the weights are spread proportionally to the other assets.

Explanation

Below is a short explanation and commentary on the steps.

Step 1. The timeframe is 12 months. The current choice is akin to putting one weight on the last 12 months and then double that weight on the last 6 months (I visualize one brick being put on top of a longer brick). It is possible to have other ways to weigh the time periods— e.g. a 25% weight on the last month, a 25% weight on the last quarter, a 25% weight on the last year, and a 25% weight on the last two years. Extending this idea further would bring us to an exponentially weighted average.

Step 2. Using risk-adjusted returns rather than plain returns is sound because we penalize assets with higher volatility. Interestingly, MSCI opts for a time period that is three times longer than the time period for the returns. Another way to increase the number of data points in the estimation of the standard deviation, we could use daily data instead of weekly data.

Step 3. Notice that the number of data points in the mean() calculation is equal to the number of assets.

Step 4. Capping at 3 standard deviations from the mean is interesting, but will be discussed later. Collapsing the two Z scores into one variable is needed because we must produce one weight per asset. It would, however, be possible to weigh them differently e.g. 70% weight on the 6-month return and 30% weight on the 12-month return. (If an exponential weighting is used in step 1, we would not work with two Z scores in steps 1–4.)

Step 5. The weight per asset must be a positive number, but Z scores can be negative, so we need some transformation to make the Z scores non-negative. The function 1/1(1-z) is a suitable choice. For small values of z this is close to adding 1, as proved by the appendix table.

Step 6. We could stop here and weigh assets proportional to the momentum score. This would be a somewhat “more pure” momentum index than the final result, which lets the size of the asset play a part.

Step 7. Multiplying the momentum score Mom with the market capitalization brings an increased weight in large-cap assets. Larger assets are often more liquid, and this might alleviate some of the illiquidity problems momentum investing suffers from. A more direct way to solve that particular problem would be to multiply by the trading volume instead of the market capitalization.

Step 8. Directly controlling the weight with a cap might not be needed since we already implement an indirect restriction via capping the Z score at +3 and -3.

Variations

The choices of the parameters above could have been different. At Vinter, we often tweak these parameters — we test a few different numerical values and then analyze how this affects the index performance and portfolio composition. To quickly illustrate some choices, below is a few variations that could have been used in each step.

Step 1. Use the 1-month and 2-month returns, not 6 and 12. This increases the weight of the recent history — the past is deemed less relevant.

Step 2. Use daily data 6 months back when estimating the volatility, not weekly data 3 years back. The volatility time window is then matched to be three times longer than for the returns.

Step 4. Weigh the first Z score by 70% and the other Z score by 30%, not 50% each. Cap at two standard deviations from the mean, not three, to constrain less.

Step 7. Multiply by the trading volume, not the market capitalization, to let liquidity (not size) impact the weights.

Step 8. Cap the maximum weight at 10%, not 5%, to be less conservative. Or use a floor to impose a minimum weight per asset.

Photo by Sunder Muthukumaran on Unsplash

Appendix

Tabulated values of z and f(z)=1/(1-z) showing that f(z) is approximately equal to z+1 for z close to zero.

z; 1/(1-z)
0; 1
0.01; 1.01
0.02; 1.02
0.1; 1.11
0.2; 1.25
0.15; 1.18
0.25; 1.33

--

--