Intermediate

Forecast vs. budget vs. actual — the three-legged control

13 min

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

MetricWhat it meansWhen it’s produced
BudgetThe expectation. The strategic goal planned 12 months ahead.The previous year, September-November.
ForecastThe anticipation. An estimate of the future (0-90 days) from current pace + historical data.Daily, continuously updated.
ActualReality. 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:

MetricBudget (prior expectation)Forecast (Aug 1)Actual (Aug 31)
Occupancy88%89%92%
ADR132 EUR128 EUR122 EUR
RevPAR116 EUR114 EUR112 EUR
Room revenue288k EUR283k EUR278k 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:

MetricBudgetActualVariance
Occupancy88%92%+4 pp (+4.5%)
ADR132 EUR122 EUR−10 EUR (−7.6%)
RevPAR116 EUR112 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:

MetricForecast (Aug 1)Actual (Aug 31)Forecast error
Occupancy89%92%−3 pp (underestimate)
ADR128 EUR122 EUR+6 EUR (overestimate)
RevPAR114 EUR112 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):

MetricBudgetForecastExpected variance
Occupancy88%89%+1 pp (small beat)
ADR132 EUR128 EUR−4 EUR (shortfall)
RevPAR116 EUR114 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:

MetricBudgetForecast (Aug 15)Expected variance
Occupancy88%91%+3 pp
ADR132 EUR125 EUR−7 EUR
RevPAR116 EUR114 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 metricBudgetActualVariance (B vs. A)Forecast accuracy
Occupancy88%92%+4 pp (+4.5%)Forecast: 89% (3 pp underestimate)
ADR132122−10 EUR (−7.6%)Forecast: 128 EUR (6 EUR overestimate)
RevPAR116112−4 EUR (−3.4%)Forecast: 114 EUR (2 EUR overestimate)
Total room revenue288k278k−10k EUR (−3.5%)Forecast: 283k (5k overestimate)

The takeaways that appear in the report:

  1. The below-budget RevPAR (−3.4%) is rate-driven, not volume-driven — the price strategy needs calibrating.
  2. The forecast read the RevPAR trend well, but the components poorly — the occupancy estimate underperformed, the ADR estimate overperformed.
  3. 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.
Check your understanding

Click an answer — you see immediately whether it is right.

Answer all of them and the lesson counts as complete — and toward your progress.

What are the three legs of the three-legged control?
Budget: 88% / 132 EUR. Actual: 92% / 122 EUR. RevPAR is −4 EUR below budget. Where does the gap come from?
The forecast showed a 3 pp occupancy UNDERestimate and a 6 EUR ADR OVERestimate, yet RevPAR was off by only +2 EUR. What does this mean?
Go deeper
Variance decomposition calculator

Volume effect = (actual − budget occupancy) × budget ADR. Rate effect = (actual − budget ADR) × actual occupancy. The two sum to the RevPAR variance.

Volume effect
+€5.28
Rate effect
−€9.2
Net RevPAR variance
−€3.92
Diagnosis: Rate-driven underperformance — pricing action needed (you sold too cheaply)
Related terms

See the full definitions in the glossary.

Apply it to your own hotel

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?

How Peaqplus helps with this
Further reading
  • 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.
Signal → Decision → Action → Outcome

See Peaqplus on your own data.

In our 45–60 minute walkthrough we run Peaqplus on our live demo environment — a simulated property with data that moves day to day.

No setup fee. No PMS access needed.