Technical trend indicators
Last updated 20 October 2026 · Data to September 2026 · Notes on the data · Report a problem
The fourteen moving-average, momentum and volume rules that Neely, Rapach, Tu and Zhou (2014) used to forecast the US equity premium. They are replicated here exactly from the paper’s own files, extended for the S&P 500 from December 1950 to September 2026, and computed for oil, gas, metals and crops from the World Bank’s monthly prices.
The trend uncertainty index is the share of an asset’s rules on a sell signal. For the S&P 500 it moves closely with the VIX.
- Trend uncertainty index
- S&P 500: the paper’s signals to December 2011, public data from January 2012
Sources: Neely, Rapach, Tu and Zhou (2014) to December 2011 and the S&P 500 index from Yahoo Finance afterwards; World Bank Commodity Price Data (the Pink Sheet) for the commodities.
Hover over the chart, or select it and use the arrow keys, to read monthly values.
Show the last 24 months as a table
| Month | S&P 500 trend uncertainty | S&P 500 rules on sell | S&P 500 disagreement | Commodity trend uncertainty | Commodities in an up-trend |
|---|---|---|---|---|---|
| Sep 2026 | 0.43 | 6 of 14 | 0.86 | 0.35 | 11 of 18 |
| Aug 2026 | 0.43 | 6 of 14 | 0.86 | 0.31 | 13 of 18 |
| Jul 2026 | 0.36 | 5 of 14 | 0.71 | 0.31 | 12 of 18 |
| Jun 2026 | 0.14 | 2 of 14 | 0.29 | 0.26 | 11 of 18 |
| May 2026 | 0.07 | 1 of 14 | 0.14 | 0.15 | 15 of 18 |
| Apr 2026 | 0.14 | 2 of 14 | 0.29 | 0.22 | 14 of 18 |
| Mar 2026 | 0.21 | 3 of 14 | 0.43 | 0.24 | 13 of 18 |
| Feb 2026 | 0.00 | 0 of 14 | 0.00 | 0.31 | 13 of 18 |
| Jan 2026 | 0.00 | 0 of 14 | 0.00 | 0.28 | 13 of 18 |
| Dec 2025 | 0.00 | 0 of 14 | 0.00 | 0.37 | 11 of 18 |
| Nov 2025 | 0.00 | 0 of 14 | 0.00 | 0.37 | 11 of 18 |
| Oct 2025 | 0.00 | 0 of 14 | 0.00 | 0.52 | 8 of 18 |
| Sep 2025 | 0.00 | 0 of 14 | 0.00 | 0.53 | 8 of 18 |
| Aug 2025 | 0.00 | 0 of 14 | 0.00 | 0.56 | 6 of 18 |
| Jul 2025 | 0.07 | 1 of 14 | 0.14 | 0.54 | 8 of 18 |
| Jun 2025 | 0.29 | 4 of 14 | 0.57 | 0.57 | 7 of 18 |
| May 2025 | 0.71 | 10 of 14 | 0.57 | 0.57 | 8 of 18 |
| Apr 2025 | 0.79 | 11 of 14 | 0.43 | 0.59 | 6 of 18 |
| Mar 2025 | 0.57 | 8 of 14 | 0.86 | 0.47 | 9 of 18 |
| Feb 2025 | 0.07 | 1 of 14 | 0.14 | 0.57 | 6 of 18 |
| Jan 2025 | 0.00 | 0 of 14 | 0.00 | 0.57 | 7 of 18 |
| Dec 2024 | 0.00 | 0 of 14 | 0.00 | 0.53 | 7 of 18 |
| Nov 2024 | 0.00 | 0 of 14 | 0.00 | 0.50 | 8 of 18 |
| Oct 2024 | 0.00 | 0 of 14 | 0.00 | 0.48 | 9 of 18 |
Download the data and code
- technical_indicators_monthly.csv12,820 rows · 732 KBEvery rule for every asset and month, with the trend uncertainty index, buy share and disagreement.Download signals
- technical_summary_monthly.csv910 months · 163 KBOne row per month: trend uncertainty, buy share and disagreement for each asset, and the commodity averages.Download summary
- update_technical.py23 KBPython script that downloads the prices and rebuilds both files. Needs pandas.Download Python
- update_technical.m21 KBMATLAB script that does the same.Download MATLAB
- replicate_neely.py4 KBChecks the rules against the paper’s replication files, if you have them.Download
The paper’s S&P 500 signals for 1950 to 2011 are written into both scripts; everything later is computed from prices downloaded when the script runs. Python and MATLAB give identical output.
Read the code
Loading the script…The fourteen rules
Each rule gives a buy signal (1) or a sell signal (0) at the end of every month. The S&P 500 uses all fourteen. The commodities use the eight price rules, because there is no public volume series for them.
| Rules | Buy signal when | Used for |
|---|---|---|
| MA(s,l) | the s-month moving average of the price is above the l-month one, for s = 1, 2, 3 and l = 9, 12 | All assets |
| MOM(m) | the price is at least as high as m months earlier, for m = 9, 12 | All assets |
| VOL(s,l) | the s-month moving average of on-balance volume is above the l-month one. On-balance volume adds the month’s volume when the price did not fall and subtracts it when it fell. | S&P 500 |
Three summaries are given for every asset and month:
- Trend uncertainty index,
trend_uncertainty: the share of the asset’s rules on a sell signal, from 0 (every rule on buy) to 1 (every rule on sell). - Share on buy,
buy_share: one minus the index. - Trend disagreement,
disagreement, a secondary series: 1 − |2 × buy_share − 1|, which is 0 when every rule points the same way and 1 when they are split evenly.
Replication
Before extending anything, the indicators were rebuilt from the data file in Neely, Rapach, Tu and Zhou’s replication package with the rules in their code. All 12,468 indicator-months in their results file are reproduced exactly, and so is every bivariate in-sample regression in their Table 2. The table shows the slopes; the t-statistics and R-squared values match to the same precision. replicate_neely.py repeats the check given their two files.
| Next-month log equity premium (%) on | Slope, paper | Slope, here | t-statistic | R² (%) |
|---|---|---|---|---|
| MA(1,9) | 0.667 | 0.667 | 1.78 | 0.54 |
| MA(1,12) | 0.868 | 0.868 | 2.22 | 0.87 |
| MA(2,12) | 0.944 | 0.944 | 2.42 | 1.03 |
| MOM(12) | 0.575 | 0.575 | 1.45 | 0.37 |
| VOL(1,12) | 0.888 | 0.888 | 2.31 | 0.92 |
| VOL(3,12) | 0.849 | 0.849 | 2.25 | 0.85 |
January 1951 to December 2011, White t-statistics, as in the paper. The other eight indicators match equally closely.
The extension then has to use public data. Rebuilt from the S&P 500 index on Yahoo Finance over the paper’s own sample, the eight price rules match the paper in every month and the six volume rules in 99.6% of months. The share of rules on a buy signal has a correlation of 0.9993 with the paper’s, and the majority signal is the same in every month. The S&P 500 series therefore keeps the paper’s values to December 2011 and uses the public data from January 2012.
Assets and sources
| Asset | Price | Signals from | Rules |
|---|---|---|---|
| S&P 500 | Month-end close and average daily volume of the index (Yahoo Finance, ^GSPC); the paper’s own signals to December 2011 | December 1950 | 14 |
| Brent crude oil | World Bank, “Crude oil, Brent”, monthly average | January 1980 | 8 |
| WTI crude oil | World Bank, “Crude oil, WTI”, monthly average | January 1983 | 8 |
| US natural gas | World Bank, “Natural gas, US”, monthly average | January 1977 | 8 |
| Gold | World Bank, “Gold”, monthly average | January 1972 | 8 |
| Silver | World Bank, “Silver”, monthly average | January 1974 | 8 |
| Platinum | World Bank, “Platinum”, monthly average | January 1978 | 8 |
| Copper | World Bank, “Copper”, monthly average | January 1965 | 8 |
| Aluminium | World Bank, “Aluminum”, monthly average | January 1973 | 8 |
| Nickel | World Bank, “Nickel”, monthly average | January 1980 | 8 |
| Zinc | World Bank, “Zinc”, monthly average | January 1961 | 8 |
| Lead | World Bank, “Lead”, monthly average | January 1961 | 8 |
| Tin | World Bank, “Tin”, monthly average | January 1961 | 8 |
| Wheat (US hard red winter) | World Bank, “Wheat, US HRW”, monthly average | January 1972 | 8 |
| Maize | World Bank, “Maize”, monthly average | January 1973 | 8 |
| Soybeans | World Bank, “Soybeans”, monthly average | January 1961 | 8 |
| Coffee (Arabica) | World Bank, “Coffee, Arabica”, monthly average | January 1963 | 8 |
| Cotton (A Index) | World Bank, “Cotton, A Index”, monthly average | January 1968 | 8 |
| Sugar (world) | World Bank, “Sugar, world”, monthly average | January 1987 | 8 |
Each commodity starts in the January after the last year before 1990 in which at least half of its monthly prices were unchanged from the month before, and signals begin once there are twelve months of prices. That leaves out eras of fixed or posted prices, such as gold at $35 an ounce and posted oil prices, where a trend rule has nothing to measure. Iron ore, coal and European gas are left out altogether because their prices were set in annual contracts for decades.
The trend uncertainty index
The trend uncertainty index is the share of an asset’s technical rules on a sell signal. For the stock market it behaves like a measure of uncertainty: falling markets are volatile markets, and the index moves with the VIX. Trend disagreement, the secondary series, was tested as an alternative and does not: it peaks at turning points, when the short rules have changed direction and the long ones have not.
| Correlation with | Realised volatility, same month | Realised volatility, next month | VIX, monthly mean |
|---|---|---|---|
| S&P 500 trend uncertainty index | 0.39 | 0.31 | 0.62 |
| S&P 500 trend disagreement | 0.07 | 0.03 | 0.10 |
S&P 500 realised volatility from daily index returns, December 1950 to September 2026; VIX from 1990. Computed in October 2026.
For commodities the index measures how widely prices are trending down, but it does not track their volatility. Across the eighteen, the average index has a correlation of −0.17 with the average absolute monthly price change, because commodity prices tend to be most volatile in booms rather than slumps. Treat the commodity index as a measure of how many trend rules point down, not of price risk. Commodity disagreement is highest at turning points such as June 2009, March 2002 and August 2011.
Before you use it
- Month-end against monthly average. S&P 500 signals use the month-end close, as in the paper. Commodity signals use the World Bank’s monthly average prices, which are smoother, so their signals change less often than month-end signals would.
- Timing. A signal for month t uses prices up to the end of t, so it can be used to forecast month t+1. The World Bank publishes each month’s averages early in the following month, so commodity signals for t are public a few days into t+1.
- Revisions. The World Bank occasionally revises recent prices, and Yahoo Finance has revised historical S&P 500 volume, which is why the public volume rules match the paper in 99.6% of months rather than all of them.
- Ties. When two moving averages are equal, the rule gives a sell signal, as the original code’s strict comparison does. Repeated prices in the commodity data make this more common than for the S&P 500.
- Data terms. Only the signals are published here, not the prices. The scripts download the S&P 500 index from Yahoo Finance and the commodity prices from the World Bank each time they run.
Why it matters
Neely, Rapach, Tu and Zhou (2014) showed that these simple trend rules forecast the US equity premium over 1951 to 2011 about as well as the standard macroeconomic predictors, and that the two kinds of predictor carry different information: technical indicators pick up the fall in the premium near business-cycle peaks, macroeconomic variables the rise near troughs. Updating the signals, and computing the same rules for oil, metals and crops, lets that evidence be tested on data the paper never saw and on markets it did not cover.
How to cite
If you use the signals, please cite the paper that defined them, and the World Bank for the commodity prices. A reference for this page is included in case it helps.
@article{NeelyRapachTuZhou2014,
author = {Neely, Christopher J. and Rapach, David E. and Tu, Jun and Zhou, Guofu},
title = {Forecasting the equity risk premium: The role of technical indicators},
journal = {Management Science},
volume = {60},
number = {7},
pages = {1772--1791},
year = {2014},
doi = {10.1287/mnsc.2013.1838}
}
@misc{WorldBankPinkSheet,
author = {{World Bank}},
title = {Commodity Price Data (The Pink Sheet), monthly prices},
howpublished = {\url{https://www.worldbank.org/en/research/commodity-markets}},
year = {2026}
}
@misc{PybisTechnical,
author = {Pybis, Sam},
title = {Technical trend indicators for the {S\&P} 500 and 18 commodities, monthly, 1950 to September 2026},
year = {2026},
howpublished = {\url{https://sampybis.co.uk/updated-data/technical.html}},
note = {Updated 20 October 2026}
}Related research
- Can we forecast better in periods of low uncertainty? The role of technical indicators. My paper with Ferrer Fernández, Henry and Stamatogiannis (Journal of Empirical Finance, 2023) uses these 14 indicators and finds they forecast the equity premium in calm markets but not in turbulent ones.
- Essays Exploring Predictive Regressions. My PhD thesis on when stock market returns can be forecast, the starting point for that paper.
More updated datasets: Job openings-to-employment ratio · Large public-company bankruptcies · Oil supply, demand and risk shocks · all. Looking for something else? My guide to data for empirical finance covers more than 80 sources.
Provided as is for research and teaching; not a trading recommendation. Check the original sources before relying on the figures. The scripts are released under the MIT licence and the series built here under CC BY 4.0; the underlying sources keep their own terms and should be cited as above. If a figure looks wrong, please let me know.