1Your daily history
One row per night with the rooms you sold. Rooms available and room revenue are optional. Export it from your PMS (property management system) as CSV. Two years gives the best result; eight weeks is the minimum.
Columns: date, rooms_sold, rooms_available, room_revenue. Names can differ (for example "Stay date" or "Occ rooms"). Dates like 2025-07-01, 07/01/2025, 1/7/2025 or 1-Jul-2025 all work. Missing nights are filled in for you.
2Forecast settings
How far ahead to look and a few facts about your hotel.
Forecast
History, forecast and range
Rooms sold per night. The shaded band is the 80% range: on 8 nights out of 10 the real figure should land inside it. The dashed line is the backtest: what the method would have forecast for the last 8 weeks.
Weekday pattern
How busy each night of the week is compared with an average night (100%), learned from your last 52 weeks.
How accurate is it?
Month by month
Forecast nights in each month, compared with the same nights last year.
4Day by day, with rooms on the books
Optional: type or paste the rooms already reserved for each night (OTB, rooms on the books). The forecast then blends your model with real bookings, leaning more on bookings as the night gets closer. Paste a column from Excel into the first box to fill many nights at once.
| Night | Model forecast | 80% range | On the books | Final forecast | Occupancy | Last year |
|---|
How it's calculated
Cleaning. Rows are sorted, repeated dates are combined, rooms sold are capped at rooms available, and missing nights are filled with the same weekday a week earlier (or the average of the nights either side). The page tells you how many were filled.
Model (with at least 60 weeks of history). A multiplicative seasonal model you can check by hand:
forecast = last year's level for the same week × growth vs last year × weekday index × holiday lift
- Last year's level: the 7-night average of rooms sold around the same weekday 52 weeks earlier (same-period-last-year seasonality, so summer peaks and quiet winters come through).
- Growth vs last year: each night's 7-night average divided by last year's, smoothed with Holt's method (a smoothed level and trend, α 0.15, β 0.05) over the last 26 weeks. The trend is damped (0.95 a day) so it flattens out rather than running away.
- Weekday index: rooms sold divided by the 7-night average, averaged by weekday over the last 52 weeks (holiday nights left out).
- Holiday lift: the average extra demand on Ontario long-weekend Sundays (Family Day, Easter, Victoria Day, Civic Holiday, Labour Day, Thanksgiving), June 30 and New Year's Eve, learned from your history.
Shorter history. With less than 60 weeks there is no last year to copy, so the forecast is the damped Holt level and trend of the 7-night average times the weekday index. The page says when this happens; expect it to miss seasonal turns.
Range and accuracy. The method is re-run from up to 8 past starting points using only the data available at that time, and its forecasts are compared with what actually happened. The 10th and 90th percentiles of those errors, grouped by how far ahead (1 to 14, 15 to 30, 31 to 60, 61 to 90 days), give the 80% range. MAPE (mean absolute percentage error) is the average size of the miss as a percentage of actual rooms sold, measured on the last 8 weeks.
Rooms on the books. A typical booking curve says what share of final rooms is usually booked by a given number of days out (your 30-day setting, rising to 100% on the night). OTB ÷ that share gives a bookings-based estimate. The final forecast is share × bookings estimate + (1 − share) × model, never below OTB and never above rooms available.
Limits. The model cannot know about new events, renovations, big group blocks or a pandemic unless they show up in the data or in your OTB. It forecasts rooms, not price. Your data stays in this browser; nothing is uploaded anywhere.