River
Y CombinatorBacked by Y Combinator
FREE TEMPLATE

Rolling 12 Month Forecast Template

Three documents and five sheets, where the forecast keeps every version of itself and measures which of your own drivers to stop believing.

Free download  ·  No account needed

Rolling 12 Model

[Entity] — roll 18, at 30 September 2026

Eighteen frozen vintages on file. No rebuild since March 2025. Every forward month is printed twice.

Twelve monthsRevenueGross marginOperating incomeOperating margin
Just closed, actual27,938,11240.2%4,438,58215.9%
Ahead, raw driver build34,017,24843.3%7,075,42320.8%
Ahead, bias corrected33,080,48439.6%5,207,54915.7%

The raw build adds five points of operating margin over a year. Nothing in the drivers explains five points. The corrected column lands two tenths of a point below what the business just delivered, and nobody edited a driver to get there.

Month by month, both views

MonthhRaw revenueCorrectedRaw op incomeCorrectedDrivers
Oct 202612,705,9602,701,608552,907547,3222 of 8
Jan 202742,637,0422,592,315432,928346,0467 of 8
Apr 202772,938,9902,840,978674,506494,9877 of 8
Sep 2027123,184,9103,052,016833,089539,0158 of 8

Two of eight drivers get corrected at one month out, because at one month out this model is accurate and there is nothing to correct. All eight get corrected at twelve, where its operating income forecast has averaged 1.58 times what the month delivered.

Page one for this query is one design. A date strip that advances itself, a lookup that drops actuals over the closed month, a driver tab feeding a monthly P and L, and instructions for the refresh routine. The mechanics are correct and several of the guides are genuinely good. Every one of them overwrites last month's forecast at the roll, so not one of them can tell you whether your own forecast has ever been right.

Here the vintage is frozen before actuals arrive, and it is never edited. Ashgrove Technical Services, an illustrative engineering firm of 96 billable staff, has eighteen vintages on file and has not rebuilt since March 2025. Its twelve-month-out revenue forecast has averaged 4.3 percent high, which sounds survivable. Its twelve-month-out operating income forecast has averaged 1.58 times what the month actually delivered, because small optimism on revenue met small optimism on every cost line underneath it, and no single estimate was ever wrong by much.

Every revision carries a class. News is a dated fact that did not exist last month. A re-estimate is the same facts and a different number, and 72 percent of everything this model revised was the second kind. Auditors are told to find bias by comparing prior estimates to what actually happened, and to treat estimates that are individually reasonable and all lean one way as the tell. The annual budget is the fixed-year version of the same job.

What eighteen frozen vintages know that a rebuilt model cannot

The bias by driver and horizon, the news against the re-estimation, one month's whole forecast life, and the out-of-sample backtest.

Driver Bias

Ashgrove Technical Services, Inc. Engineering services, 96 billable staff, 24 closed months to 30 September 2026, 18 vintages held. An illustrative company. Mean signed error, forecast over actual minus one. Positive means forecast high.

Driverh=1h=3h=6h=9h=12
Utilisation0.37%1.74%3.61%5.09%6.15%
Realised bill rate0.03%0.46%1.13%1.88%2.57%
Billable headcount0.18%(0.54%)(1.38%)(2.47%)(3.67%)
Pass-through revenue0.47%0.25%0.09%(0.32%)(0.15%)
Contractor hours(1.51%)(4.55%)(8.20%)(15.65%)(18.05%)
Salary and burden per head0.09%(0.12%)(0.78%)(1.09%)(1.91%)
Non-billable payroll0.10%(0.98%)(2.03%)(2.85%)(4.38%)
Recruiting and other G&A0.39%(1.32%)(4.47%)(7.76%)(10.40%)

Every driver is close to unbiased one month out and every driver with a bias sees it grow with horizon. Pass-through revenue is the exception because it has no bias to grow. Revenue drivers run high at distance, cost drivers run low, and the two point the same way once they reach the bottom line.

What it does to the lines

Lineh=1h=3h=6h=9h=12
Revenue0.58%1.51%2.98%3.88%4.32%
Gross profit1.39%5.31%11.30%16.72%19.97%
Operating expense0.21%(1.10%)(2.92%)(4.62%)(6.50%)
Operating income3.44%15.69%33.94%49.59%58.43%

A revenue forecast 4.3 percent high arrives at operating income 58.4 percent high. That is why the annual forecast has been treated as broadly reliable for two years while every operating income commitment made against it was missed. Nobody was wrong about revenue by much. The leverage did the rest.

The offset that hides half of it

Utilisation and rate together, at h=128.87%
Reported revenue optimism, same horizon4.32%
Headcount, under-forecast(3.67%)
Concealed by the offset3.99 pts, or 45%

Utilisation is set from an assumed backlog conversion, the conversion does not arrive, and the response is to hire into the gap. Those hires were never in the plan, so the plan under-counts heads while over-counting how busy each will be. The revenue total looks defensible and both inputs are wrong.

Reforecast Log

Every revision that moved operating income ten thousand dollars, over 18 rolls. News is logged per driver per month. A re-estimate is logged per driver per roll, because re-cutting a curve is one decision rather than twelve.

DriverNewsRe-estimateRe-est shareRolls, same direction
Utilisation376,7491,857,25083%17 of 17
Realised bill rate136,869693,09284%16 of 16
Billable headcount321,668204,76739%11 of 11
Contractor hours334,128145,90630%9 of 9
Salary and burden per head10,824170,93894%11 of 11
Non-billable payroll10,14393,56090%6 of 6
Recruiting and other G&A45,37350,03452%4 of 4
Pass-through revenue00no rows earned0 of 0
Total1,235,7533,215,54772% 

Seventy-two percent of everything this model revised was re-estimation of facts already in hand. Utilisation and realised bill rate carry 79 percent of it between them. Both are entered as judgements about the backlog and the rate card, and both get walked back nearly every month.

Why the floor is stated in operating income

Pass-through revenue earned no log rows in eighteen rolls. In percentage terms it moves as much as anything on the page, and it is recovered at a four percent margin, so it never shifts the bottom line ten thousand dollars. The noisiest driver in the model turns out to be the one least worth writing about, and a floor stated in driver units would never have found that out.

144 rows, out of 1,584 revisions

Driver-month revisions the rolls produced1,584
Earned a log row144
Of those, news70
Of those, re-estimate74
Below the 10,000 floor, not logged282

A log everybody stops reading is a log that stops working. The floor is what keeps 144 rows in front of a reader instead of 1,584.

The whole forecast life of one month

September 2026 · every vintage that ever forecast it

Operating income effects, attributed one revision at a time so the parts sum to the whole with no interaction residual.

VintagehHeadsUtilRateRevenueOp incomeNewsRe-est
Sep 20251293.179.0%188.042,713,574726,622anchor 
Oct 20251193.178.6%186.412,679,895689,611(21,437)(15,574)
Nov 20251093.177.7%186.412,652,712657,6570(31,954)
Dec 2025993.477.5%184.752,632,518611,520(23,352)(22,786)
Feb 2026793.476.6%184.752,607,592575,29827(30,395)
Mar 2026693.575.6%184.272,572,189514,580(23,983)(36,734)
Apr 2026593.574.0%183.772,518,457459,632(19,006)(35,943)
Jun 2026395.074.0%183.362,548,042442,0868,815(10,644)
Aug 2026196.074.0%182.542,562,295432,055(949)(2,020)
Actual096.074.4%182.902,578,167458,867close variance 26,812

Three vintages omitted for space. Every one is in the sheet.

Where the 294,567 went

Operating income at h=12726,622
Operating income at h=1432,055
News, over eleven revisions(91,963)31%
Re-estimation, same facts(202,604)69%
Actual, and the close variance458,86726,812

Utilisation went from 79.0 percent to 74.0 across those eleven revisions and the month delivered 74.4. Nothing arrived to justify most of that path. Somebody looked at the same backlog eleven times and picked a lower number each time, which is a habit rather than an event, and a habit is measurable.

Which drivers earn a correction

At six months out, using every closed month. A correction needs at least six observations and an error sign that repeats in at least two thirds of them.

DriverMean signedMean absoluteSign repeatsCorrection
Utilisation3.61%3.61%100%applied
Realised bill rate1.13%1.13%100%applied
Salary and burden per head(0.78%)0.78%100%applied
Non-billable payroll(2.03%)2.03%100%applied
Contractor hours(8.20%)8.25%92%applied
Recruiting and other G&A(4.47%)5.17%92%applied
Billable headcount(1.38%)1.43%75%applied
Pass-through revenue0.09%1.96%58%withheld

Pass-through misses by 1.96 percent and gets corrected by nothing. Salary per head misses by 0.78 percent and does. The inversion is the whole rule. Absolute error tells you how wide the range is. Only a repeated sign tells you the number is wrong in a direction you can fix, and correcting a driver that misses both ways makes the forecast worse.

Observations available, by horizon

h=1h=3h=6h=8h=10h=12
1715121086

The far end of the horizon carries the largest correction on the thinnest evidence, which is the standing weakness of this method and the reason the six-observation floor exists. A twelve-month-out correction is not the same claim as a three-month-out one and should not be presented as if it were.

Does removing the bias help

Out of sample. For each closed month in turn, each driver's bias was estimated using only the months that had already closed at that point, the correction applied, and the result scored against actual. Live for six months at a six-month horizon.

TargetRaw revenueCorrectedActualRaw errorCorrected error
Apr 20262,502,5532,429,5592,410,7033.81%0.78%
May 20262,369,4112,297,1722,335,5581.45%(1.64%)
Jun 20262,522,8572,450,1962,431,0053.78%0.79%
Jul 20262,693,6152,614,8992,582,6514.30%1.25%
Aug 20262,410,4122,336,7262,313,7954.18%0.99%
Sep 20262,572,1892,491,2682,578,167(0.23%)(3.37%)
 RawCorrected
Revenue, mean signed error2.88%(0.20%)
Revenue, mean absolute error2.96%1.47%
Operating income, mean signed32.83%0.82%
Operating income, mean absolute32.83%7.73%

Revenue absolute error fell 50 percent and operating income absolute error fell 76 percent, with no driver estimate changed by anybody. The only thing removed was the bias the frozen vintages had already measured.

The month it made worse

September 2026 was 0.23 percent under-forecast raw and 3.37 percent under-forecast corrected, because September delivered 74.4 percent utilisation against a forecast 75.6 and correcting a downward miss made it worse. Six months is a small sample and the correction will sometimes hurt. It is on the page because a backtest that shows only the months it worked is not a backtest.

What the record says to change

Not the model's conservatism. A conservative model has the same problem in the other direction and no way to know it. Change what utilisation and realised bill rate are set from, so both are built from the backlog and the renewal calendar at the vintage date with conversion taken from the company's own trailing record. Then put the reactive backfills in the plan, sized from actual attrition of 3.4 percent rather than the assumed 6.

What's in the pack

01

Rolling 12 Model sheet

The twelve months just closed beside the twelve ahead, on the same lines and at the same margins. Every forward month appears twice, raw and bias corrected, with the count of drivers corrected in each. An optimistic forecast becomes visible without an argument.

02

Vintage Grid sheet

Every frozen version of the forecast, so any closed month can be read as each vintage saw it against what it turned out to be. This is the sheet a rebuilt model cannot have, and everything else here is derived from it.

03

Driver Bias sheet

Signed error, absolute error and sign consistency for every driver at every horizon, with the correction either applied or withheld and the reason named. Withheld reads as too few observations or a sign that does not repeat, never as a blank.

04

Reforecast Log sheet

One row per revision that moved operating income ten thousand dollars. News is per driver per month. A re-estimate is per driver per roll with the months it touched, because re-cutting a curve is one decision rather than twelve.

05

Driver Inputs sheet

Six to ten drivers, each measured somewhere outside the forecast, with the source named per month and volumes split from prices. Cost the new roles in the headcount plan before the headcount driver reaches this sheet.

06

Space rule

The model rolls and is never rebuilt, the vintage freezes before actuals arrive, every revision over the floor takes a class, and a correction is earned rather than applied. It governs every prompt and document here.

07

Reforecast Memo

The monthly record: the closed month against what the last vintage said, the revisions that cleared the floor, the news and re-estimation split in dollars, both forward views, and which corrections were withheld. Written for whoever reads it in a year.

08

Forecast Change Note

One entry per logged revision with the artefact behind it. The test for news is whether the document would exist if nobody had been reforecasting, which is what stops a re-estimate being filed as a fact.

09

Forecast Accuracy Review

The quarterly track record. Bias by driver and by horizon, what it does to each line, the offsetting pair that makes a wrong total look defensible, the credibility test, and the out-of-sample backtest with the months it made worse.

10

Four prompts, in dependency order

Roll the month, classify every revision, measure the bias, publish both views. The first freezes the current view before touching an actual, which is the step the whole mechanism depends on and the easiest one to get out of order.

How to use it

  1. 1

    Download the files, or open the pack

    Three Word documents and five CSV sheets, with no account. Or open the pack in River and hand it eighteen to twenty-four months of monthly ledger actuals plus the operational history underneath them: headcount, hours, units, backlog, whatever the business runs on.

  2. 2

    Fix the driver list before building anything

    Six to ten drivers, each measured outside the forecast and each answerable by somebody. Split every volume from its price. This list cannot change later without ending the record for the lines it touches, so it is worth an argument now. See the month end close for where the actuals come from.

  3. 3

    Freeze first, every single month

    The current forward twelve months gets copied into the Vintage Grid before any actual is pulled in and before any driver is touched. A vintage frozen after the roll is already contaminated, and the whole method rests on this one step being in the right order.

  4. 4

    Classify the revisions while the reasons are still known

    News needs a dated artefact. Everything else is a re-estimate. Do it the same week, because a revision classified three months later becomes a re-estimate by default when nobody can find the fact any more, and the log stops meaning anything.

Frequently asked questions

Is this template free?

Yes. Three Word documents and five CSV sheets, no account, no card, no trial. Edit with AI exists for anyone who would rather hand over a ledger than fit a driver set and maintain a vintage grid by hand. The rest of the library is in free templates.

How is this different from any other rolling forecast template?

It keeps the old forecasts. Every template on page one overwrites last month's numbers when it rolls, which means none of them can tell you whether your forecast has ever been right. Freezing the vintage costs nothing and is the only thing that makes a track record possible.

What actually counts as news rather than a re-estimate?

A dated artefact that did not exist at the last vintage: an executed change order, a resignation letter, a permit notice, a signed rate card. The test is whether the document would exist if nobody had been reforecasting. A weaker looking pipeline is a judgement, not a fact.

How long before the bias measurement says anything?

Six closed months at a given horizon, so the near end starts working within two quarters and the twelve-month-out correction takes a year. Old board decks and prior models count as vintages, though, so loading them can collapse that wait considerably.

Is correcting the forecast for its own bias not just double counting?

It would be if the correction were applied by default. It is only applied where the error sign has repeated in two thirds of at least six observations, and the backtest is run out of sample, using only months that had already closed. Where it does not help, it gets retired.

Does this replace the decision to reforecast the year?

No, and they answer different questions. Reforecast triggers decide whether a month's miss warrants rebuilding the plan. This maintains a forward twelve months that is never rebuilt, and measures how much to believe it. A month can matter to one and not the other.

Who explains the gap between the last forward month and the actual?

Not this space. That is close variance and it belongs to the close, where flux commentary handles it. This pack owns the path from the far horizon down to the last forward month. For weekly cash the horizon is different again, and that is the thirteen week forecast.

Give the forecast a track record

Download the blank pack as Word and CSV files, or open this exact pack in River and let it set the drivers, freeze the first vintage and start the log that makes everything after it measurable.

Edit with AI