Blog · Forecast and pipeline · Finance and FP&A teams
The double moving average forecasting method uses two successive rolling averages to estimate a changing level and trend. Build it from an order export, reproduce the spreadsheet formulas, and compare forecasts with actuals and simpler benchmarks.
The double moving average forecasting method uses two successive trailing averages to estimate a level and a linear trend. It can reduce the lag of a simple moving average when business volume is rising or falling steadily. Test forecasts against later actuals before using them to set staffing or purchasing levels.
A simple moving average smooths recent observations but trails a rising series. Averaging those averages again creates another lagged series. The gap between the two supplies a trend estimate that adjusts the forecast forward.
The NIST handbook describes double moving averages for a linear trend: calculate a second moving average using the same window, then derive a slope and intercept from both averages. This is different from centering an average for a historical chart. A forecast must use only observations available at its origin.
The moving average glossary gives the underlying smoothing definition. For ordinary rolling averages and charts, use moving averages in Excel; the distinct step here is the trend adjustment.
Consider an illustrative US service company planning monthly order-handling capacity. Export order ID, accepted date, status, and business unit. Remove duplicates and canceled orders under a consistent policy, then aggregate accepted orders by completed calendar month. Keep returns or reversals separate if they represent a different workload.
Use a continuous monthly calendar. A genuinely empty month can contain zero; a missing export cannot. Reconcile the aggregated order count to the source register before calculating any average. If the current month remains open, leave it outside the completed history.
For this example, January through August 2026 appear below. All averages, trend estimates, and forecasts are displayed to two decimal places; spreadsheet calculations retain full precision. Dashes mean insufficient history, rather than zero.
| Month | Actual orders | First average | Second average | Adjusted level | Monthly trend | Forecast for next month |
|---|---|---|---|---|---|---|
| January | 100 | — | — | — | — | — |
| February | 110 | — | — | — | — | — |
| March | 120 | 110.00 | — | — | — | — |
| April | 130 | 120.00 | — | — | — | — |
| May | 140 | 130.00 | 120.00 | 140.00 | 10.00 | 150.00 |
| June | 150 | 140.00 | 130.00 | 150.00 | 10.00 | 160.00 |
| July | 155 | 148.33 | 139.44 | 157.22 | 8.89 | 166.11 |
| August | 160 | 155.00 | 147.78 | 162.22 | 7.22 | 169.44 |
Use a window of three months for both averages. With actual volume denoted by Y, the first trailing average by M, and its trailing average by S, the calculations are:
M at month t = Average of the latest n actual observations
S at month t = Average of the latest n values of M
Adjusted level a = 2 × M − S
Trend b = 2 × (M − S) / (n − 1)
Forecast h months ahead = a + b × h
The window n must exceed one. Both averages use the same window and end at the same month. The horizon h counts periods after that month.
Put the table headers in row 1 and January in row 2. Columns A through G match the table. These Excel formulas start the calculations:
C4 = AVERAGE(B2:B4)
D6 = AVERAGE(C4:C6)
E6 = 2*C6-D6
F6 = 2*(C6-D6)/(3-1)
G6 = E6+F6
Enter each formula, beginning with =, in its named cell. Fill C4 down through C9; fill D6:G6 down through row 9. The first second-stage average needs the March, April, and May first averages, so the first usable forecast is made at the end of May for June.
For May, the adjusted level is 2 × 130 − 120 = 140 orders. The monthly trend is 2 × (130 − 120) / (3 − 1) = 10 orders. June's forecast is therefore 140 + 10 = 150 orders.
Microsoft's AVERAGE documentation explains that referenced empty cells are ignored while zeros are included. Check completeness separately so a missing month cannot silently shorten a window. Covirage is not affiliated with Microsoft.
Save each forecast before the target month closes. June's forecast uses history through May, July's uses history through June, and August's uses history through July. Recomputing a past forecast with its target month's actual included would invalidate the comparison.
Forecasting: Principles and Practice explains forecast evaluation on test data, distinct from how well a method fits its training history. Compare every method on the same months and horizon.
| Target month | Actual orders | Double average forecast | Simple average forecast | Prior-month forecast |
|---|---|---|---|---|
| June | 150 | 150.00 | 130.00 | 140.00 |
| July | 155 | 160.00 | 140.00 | 150.00 |
| August | 160 | 166.11 | 148.33 | 155.00 |
| Mean absolute error, orders | — | 3.70 | 15.56 | 6.67 |
The simple forecast uses the first trailing average at the origin. The prior-month forecast repeats the last observed actual. On a separate comparison sheet with this table in A1:E4, calculate absolute errors and their average:
F2 = ABS(B2-C2)
G2 = ABS(B2-D2)
H2 = ABS(B2-E2)
Fill down through row 4. Then =AVERAGE(F2:F4) gives the double-average error, with equivalent formulas for G and H. Its absolute errors are 0, 5, and 6.11 orders, giving 3.70 orders using unrounded inputs.
The method wins this small illustration, but the growing overforecast shows it reacting slowly to the slowdown. Three comparisons do not establish dependable performance. Use a longer history and the business workflow for evaluating time-series forecasts before choosing a method or window.
Bring a workbook containing dated forecast versions, their horizons, and completed-period actual orders. Covirage maps the columns, and its tools compute and check the forecast comparisons; the external AI model explains the results with every figure traced to its rows. Create a free Covirage account and bring a sample of your own workbook.
See Covirage for Excel analysis for the supporting file analysis workflow.
No. Double moving averages use fixed windows with equal weights inside each window. Double exponential smoothing updates estimates recursively using smoothing parameters. Both can represent trend, but their calculations and responses to new observations differ. Identify the method before comparing workbook results.
Choose candidate windows that fit the business cadence, then compare their forecasts on historical periods withheld from the calculation. Short windows respond faster and can follow noise. Longer windows smooth more but react slowly to changes. Keep a final evaluation period separate from window selection.
The trend adjustment does not explicitly estimate a seasonal pattern. For seasonal demand, compare it with a same-season benchmark or apply it to a carefully seasonally adjusted series. A trend that looks convincing across a seasonal rise can fail when the season turns.
Averages and estimated trends can produce fractional expected volumes even when actual orders are whole numbers. Keep full precision when testing forecast error. Round only the final operational quantity according to the decision, and record whether staffing or inventory requires rounding upward.