Forecast vs. budget vs. actual — the three-legged control
In lesson 25 we built the budget. In lessons 19-20, the forecast. Now comes the third leg: the actual — the realised result. Together the three form a control grid that provides the diagnostic frame for a hotel’s healthy operation.
The three-legged control is not just an after-the-fact report — it is the basis of the monthly and weekly revenue meeting, the starting point for sales/marketing actions, and the source that justifies a budget revision.
The goal of this lesson is for you to understand: what each of the three metrics means individually and together, how we read variances, and what concrete actions a given discrepancy leads to.
The three metrics — a quick recap
| Metric | What it means | When it’s produced |
|---|---|---|
| Budget | The expectation. The strategic goal planned 12 months ahead. | The previous year, September-November. |
| Forecast | The anticipation. An estimate of the future (0-90 days) from current pace + historical data. | Daily, continuously updated. |
| Actual | Reality. The actual, realised occupancy and revenue. | After the period — the next morning, as the PMS updates. |
The three build on each other:
- The budget is a fixed benchmark — it does not change.
- The forecast converges toward the budget (or diverges from it) — it refreshes with every daily pickup.
- The actual is the end result that the other two are compared against.
The three-legged control table
In a mature hotel, every month closes with this control table. Hotel Peaqplus City’s August (high-season) example:
| Metric | Budget (prior expectation) | Forecast (Aug 1) | Actual (Aug 31) |
|---|---|---|---|
| Occupancy | 88% | 89% | 92% |
| ADR | 132 EUR | 128 EUR | 122 EUR |
| RevPAR | 116 EUR | 114 EUR | 112 EUR |
| Room revenue | 288k EUR | 283k EUR | 278k EUR |
Surface reading: RevPAR is −3% behind budget and −2% behind the forecast. The actual is close to the forecast — the forecast did a good job. But against the budget it’s an underperformance. How much is this worth? What does it mean?
Decomposing the variance — volume vs. rate driven
Here is where the control table’s diagnostic power kicks in. The RevPAR gap breaks into two parts:
- Volume-driven variance — occupancy differs from expected.
- Rate-driven variance — ADR differs from expected.
Hotel Peaqplus City’s August example, budget-actual decomposition:
| Metric | Budget | Actual | Variance |
|---|---|---|---|
| Occupancy | 88% | 92% | +4 pp (+4.5%) |
| ADR | 132 EUR | 122 EUR | −10 EUR (−7.6%) |
| RevPAR | 116 EUR | 112 EUR | −4 EUR (−3.4%) |
Now it’s visible: the RevPAR drop is not an occupancy problem — occupancy beat budget by +4 pp. The problem is ADR — −10 EUR below budget. The 4% volume increase and the 7.6% rate decrease combined to produce a −3.4% RevPAR gap.
This is a rate-driven underperformance alongside a volume outperformance. In other words: we sold too many rooms too cheaply.
Calculating the variance
The mathematical formula for the variance decomposition:
- Volume effect = (Actual occupancy − Budget occupancy) × Budget ADR = (0.92 − 0.88) × 132 = +5.28 EUR RevPAR contribution from the occupancy outperformance.
- Rate effect = (Actual ADR − Budget ADR) × Actual occupancy = (122 − 132) × 0.92 = −9.20 EUR RevPAR contribution from the rate decline.
- Total = +5.28 − 9.20 = −3.92 EUR (≈ −4 EUR RevPAR gap).
The two effects point in opposite directions: occupancy helped, pricing hurt. The net = −4 EUR RevPAR.
Interpreting the variance — what does it say?
The variance decomposition generates concrete questions:
Explanations for the volume outperformance
- Why was occupancy higher than we expected?
- Was there an event we didn’t plan for? (E.g. a spontaneous concert.)
- Pace was faster than we expected — a calibration error in the forecast or the budget?
- Was market demand stronger than the compset’s? (See lessons 14 and 32.)
Explanations for the rate underperformance
- Why did we sell at a lower average rate?
- Did we cut prices too aggressively? (See the pricing revisions.)
- Did the segment mix shift toward lower-ADR segments? (Lesson 21’s mix-effect analysis.)
- Did more wholesale / non-refundable / OTA rates go out?
This chain of questions leads to next month’s action plan. The August lesson at Hotel Peaqplus City: pricing was too defensive. In September-October we apply more aggressive BAR positioning, so that the occupancy outperformance combines with a higher ADR.
Forecast vs. actual — measuring forecast accuracy
The budget-actual comparison is the strategic diagnostic. The forecast-actual comparison, by contrast, measures the forecast model’s accuracy:
| Metric | Forecast (Aug 1) | Actual (Aug 31) | Forecast error |
|---|---|---|---|
| Occupancy | 89% | 92% | −3 pp (underestimate) |
| ADR | 128 EUR | 122 EUR | +6 EUR (overestimate) |
| RevPAR | 114 EUR | 112 EUR | +2 EUR (small overestimate) |
The forecast showed a 3 pp occupancy underestimate and a 6 EUR ADR overestimate. The two effects compensated for each other — the RevPAR forecast was off by only +2 EUR.
This is typical: the forecast delivers good RevPAR accuracy through compensation, but the components individually estimate worse. In lesson 19 (Forecasting basics) we saw: the MAPE measure is a rolling 30-90 day number — a single month’s compensation doesn’t say enough.
The forecast-actual analysis is continuous. Hotel Peaqplus City’s forecast model reshapes after August: if the ADR overestimate becomes a pattern — e.g. it overestimates in 3 consecutive months — the model needs to be calibrated downward. The Peaqplus Forecast module does this automatically.
Forecast vs. budget — the direction of travel
The forecast vs. budget comparison shows the forward outlook: where the month is likely to land relative to budget.
Hotel Peaqplus City’s August forecast (made on August 1):
| Metric | Budget | Forecast | Expected variance |
|---|---|---|---|
| Occupancy | 88% | 89% | +1 pp (small beat) |
| ADR | 132 EUR | 128 EUR | −4 EUR (shortfall) |
| RevPAR | 116 EUR | 114 EUR | −2 EUR (−1.7%) |
At this point the weekly revenue meeting produces action plans: how to close the rate gap, how to hold the occupancy beat.
August 15 forecast update:
| Metric | Budget | Forecast (Aug 15) | Expected variance |
|---|---|---|---|
| Occupancy | 88% | 91% | +3 pp |
| ADR | 132 EUR | 125 EUR | −7 EUR |
| RevPAR | 116 EUR | 114 EUR | −2 EUR |
Occupancy accelerated upward, while pricing went further down. The trend confirms the “rate-driven underperformance” pattern.
End-of-August actual: occupancy 92%, ADR 122 EUR, RevPAR 112 EUR. The trend continued.
The three together — the month-end close
Viewed together, the three metrics give the full picture. The typical structure of the monthly GM report:
| Monthly metric | Budget | Actual | Variance (B vs. A) | Forecast accuracy |
|---|---|---|---|---|
| Occupancy | 88% | 92% | +4 pp (+4.5%) | Forecast: 89% (3 pp underestimate) |
| ADR | 132 | 122 | −10 EUR (−7.6%) | Forecast: 128 EUR (6 EUR overestimate) |
| RevPAR | 116 | 112 | −4 EUR (−3.4%) | Forecast: 114 EUR (2 EUR overestimate) |
| Total room revenue | 288k | 278k | −10k EUR (−3.5%) | Forecast: 283k (5k overestimate) |
The takeaways that appear in the report:
- The below-budget RevPAR (−3.4%) is rate-driven, not volume-driven — the price strategy needs calibrating.
- The forecast read the RevPAR trend well, but the components poorly — the occupancy estimate underperformed, the ADR estimate overperformed.
- Action for September: more aggressive BAR positioning. At the pickup-pace level it was already visible that occupancy was running faster than we expected — this can be the basis for higher pricing.
The Peaqplus Budget + Forecast module in the control mindset
Peaqplus handles the three-legged control mindset in an integrated way:
- The Budget module stores the 12-month plan structure.
- The Forecast module refreshes daily.
- The Dashboard module brings all three onto one surface — a monthly, weekly, daily colour-coded grid.
The colour-coding logic:
- Green: forecast or actual above budget.
- Yellow: a −1 to −5% shortfall.
- Red: a >−5% shortfall.
A monthly overview in Peaqplus:
- Jul: forecast green, actual green → all good.
- Aug: forecast yellow (RevPAR −1.7%), actual yellow (−3.4%) → action for September.
- Sep: forecast green, actual green (the September BAR increase paid off).
- Oct: forecast yellow (−2%), actual not yet in.
This “control-panel” overview gives a seconds-long read — after a 2-3 minute scan, a mature RM knows which month is in what state.
The variance decomposition (volume vs. rate driven) is also automatic — Peaqplus computes the two components for every month instantly and shows them in the report.
Key takeaways
- The three-legged control = budget (expectation) + forecast (anticipation) + actual (reality). Together, a diagnostic frame.
- The variance decomposition (volume vs. rate driven) shows where the gap comes from — from occupancy or from pricing.
- A rate-driven underperformance leads to a pricing action; a volume-driven one to a demand or marketing action.
- Measuring forecast-actual calibrates the forecast model’s accuracy — component compensation is common, so analyse it at the pattern level.
- Modern RMS tools (like Peaqplus) show the three metrics on an integrated surface, with colour-coded signalling and automatic variance decomposition.
Click an answer — you see immediately whether it is right.
Answer all of them and the lesson counts as complete — and toward your progress.
Volume effect = (actual − budget occupancy) × budget ADR. Rate effect = (actual − budget ADR) × actual occupancy. The two sum to the RevPAR variance.
A hotel's November: Budget RevPAR 78 EUR (occupancy 65%, ADR 120 EUR), Actual RevPAR 82 EUR (occupancy 62%, ADR 132 EUR). Run the variance decomposition: what are the volume effect and the rate effect, and what does this say about the month? And: a hotel's forecast accuracy over the last 3 months (RevPAR forecast vs. actual): Jul +3 EUR, Aug +4 EUR, Sep +2 EUR — all overestimates. What does this signal about the forecast model, and what action do you take?
- The big hotel chains always ask for the variance decomposition (volume vs. rate driven) in the monthly controller report. An independent hotel RM does this by hand with 4-6 hours of analysis a month — with an RMS tool it is a matter of seconds.