Skip to content

Booking curve principal components compress a decade of editions into two numbers

Forecasting methodsUpdated 2026-08-238 min read

In short

Booking curve principal components stack each edition as a vector of daily cumulative shares, subtract the mean curve, and decompose what is left. The first component usually captures how early the campaign ran and the second a late surge, so an edition is described by two scores instead of 180 daily values.

Ten editions of daily registration curves plotted on one chart is a chart nobody reads. Ten lines, most of them roughly S-shaped, some of them higher than others for reasons that turn out to be about show size rather than pacing. Somebody asks which years were early and which were late, and the honest answer from that chart is that you cannot tell.

Booking curve principal components answer the question by finding the two or three ways your editions actually differ from each other, and giving each edition a score on each of them. A decade of history stops being 1,800 daily numbers and becomes twenty.

Stack the editions and subtract the average campaign

Start by removing the thing you already know varies, which is size.

Express every edition as daily cumulative shares of its own final total. Edition 2017 at day 90 held 4,200 of an eventual 9,800, so its value at day 90 is 0.4286. Do that for all 180 days of every edition. You now have ten rows and 180 columns, every entry between 0 and 1, and every row ending at 1.0 on the day registration closes.

Compute the mean curve down the columns. That is the average campaign for this show, and it is a useful object on its own. Subtract it from every row.

What remains is deviation from the average campaign, and it is that matrix the decomposition works on. The first principal component is the single pattern across the 180 days that explains the largest share of the variation between editions. The second explains the largest share of what the first left behind, and is uncorrelated with it.

The mechanics are ordinary. Haensel and Koole apply a singular value decomposition to historical booking profiles in the International Journal of Forecasting in 2011, in a study of hotel reservation data, and they state the purpose plainly as reducing the dimensionality of the forecasting problem. The same three lines of linear algebra apply to a registration file.

What do the first two components usually mean?

They usually have readings you can state in English, which is most of why the method is worth the trouble.

The first component almost always describes overall earliness. Its loading curve is positive across the middle of the campaign and near zero at both ends, because an edition that ran early is above the mean curve everywhere except at the start, where everything is near zero, and at the finish, where everything is 1.0 by construction. An edition with a positive score on it filled its file sooner than the average campaign.

The second component usually picks up the closing weeks. Its loading curve is small for most of the horizon and then swings hard in the last twenty or thirty days, so an edition with a large score on it took an unusual amount of its file in the final fortnight. On shows with a hard early bird deadline you sometimes get a second component that is a step at the deadline instead, which is the same idea reading a different feature.

Look at the variance shares before trusting either reading. If the first component explains 78 per cent of the variation and the second 14 per cent, the two of them carry 92 per cent of everything that distinguishes your editions, and the remaining eight components are noise you should discard. If the first explains 41 per cent and the next three explain 20, 15 and 12, your editions do not share a common shape and the decomposition is telling you that rather than failing.

Fitting the scores from a partial curve

The current edition is halfway through its campaign, so you have part of its row and none of its final total. Both are recoverable.

Write the reconstruction: the share at day d equals the mean curve at day d, plus the first score times the first loading at day d, plus the second score times the second loading at day d. Scale the loadings so the scores have a standard deviation of one across the historical editions, which makes a score of plus one mean one standard deviation earlier than average.

Suppose the mean curve at day 90 is 0.4380, the first loading at day 90 is 0.0290 and the second is minus 0.0110. Today, at 90 days out, the file holds 5,150 registrations.

If the current edition scores zero on both components, its reconstructed share at day 90 is 0.4380 and the implied final is 5,150 over 0.4380, which is 11,758.

If it scores plus one on the first component, the share is 0.4380 plus 0.0290, or 0.4670, and the implied final is 5,150 over 0.4670, which is 11,028. A one standard deviation error in the earliness score moves the answer by 730 registrations, or 6.2 per cent.

That sensitivity is the reason to fit the scores rather than assume them. Take the days you have already observed, express them as shares of some working final, and find the two scores that minimise squared error between the observed partial curve and the reconstruction. The circularity is real and it resolves by iteration: guess a final, fit the scores, recompute the implied final, repeat. Two or three passes is normally enough.

Haensel and Koole handle the same problem with a dynamic update, adjusting the forecast of the remaining booking horizon to the observations already in hand using penalised least squares and historical proportion methods, and they report that their procedure accounts for the correlation of bookings both within the booking horizon and between successive instances. The second half of that is the part a portfolio can use, because consecutive editions of a show are correlated in exactly the way consecutive hotel dates are.

Why does two components beat averaging the ten curves?

Because the average curve throws away the only information about which kind of year this one is.

Divide today's count by the mean historical share and you have assumed the current edition is average. That assumption is often fine and it is untestable within the method, because the method has no parameter that could disagree with it. The decomposition gives you two parameters that can disagree with it, and it fits them from data you already have.

The compression matters for a second reason. Forecasting the shape of a 180 day campaign directly means forecasting 180 correlated quantities. Forecasting two scores means forecasting two, and the scores are ordinary numbers you can plot against edition year and look at. If the first score has trended upward across ten editions, your show is drifting later every year, and that is a trend you can extend. Buried in 180 daily curves it was invisible.

What the hotel and demography versions add

The same construction appears in demographic forecasting, which is worth knowing because that literature has been at it longer and on longer series.

Hyndman and Ullah set out a functional data approach to mortality and fertility rates in Computational Statistics and Data Analysis in 2007, generalising the Lee-Carter model. The structure is the one above: smooth each year's age-specific curve, decompose the set of curves into a mean plus a small number of basis functions, then forecast the coefficients on those basis functions as time series. Their method is built to resist anomalous years caused by wars or epidemics, and they test it on French mortality and Australian fertility data.

Two ideas transfer. The first is that the coefficients are the forecasting problem, so all the ordinary time series machinery applies to them and none of it has to apply to the curves. The second is the resistance to outliers, which an event portfolio needs more than a national statistics office does: one edition disrupted by a venue change or a travel ban will dominate a plain decomposition, and a method that downweights it keeps the components describing normal years.

Where this stops

The decomposition needs editions, and editions are the one thing a show produces slowly.

Ten is workable. Five is not, and the failure is quiet. With five editions the first component will explain a large share of the variance because there is very little variance to explain, the second will mostly encode whichever edition was odd, and both will look convincing. Count the editions before you count the days, because the days are not the sample.

The curves also have to be comparable before they are stacked, and two problems break that. Editions with registration windows of different lengths do not have a meaningful day 90 in common, and rescaling or truncating them is O10's subject. Curves that dip because of a deduplication run contribute that dip to the components as though it were structure, so run the stack on smoothed and monotone versions of the curves, which is where the penalty choice in O6 comes in.

The last limit is interpretive discipline. Principal components are directions of variance and they carry no guarantee of meaning. The first component usually reads as earliness, and sometimes it reads as nothing at all, and there is a strong pull toward naming it anyway because a named component is easier to present. If the loading curve does not have an obvious shape, report the variance shares and the reconstruction accuracy and leave it unnamed. A single parametric curve of the kind O4 fits is often the more honest object when the components refuse to mean anything.

Take the last eight closed editions, build the matrix of daily cumulative shares, subtract the column means, and run a singular value decomposition on it. Look only at the variance shares of the first three components. If the first two carry more than 85 per cent between them, you have a show with a stable campaign shape and the rest of the method is worth building, and it belongs with the other forecasting methods you already run against the snapshot history.

Questions people ask about booking curve principal components

What do booking curve principal components measure?
Variation in campaign shape across editions. After every edition is expressed as daily shares of its own final total and the average curve is subtracted, the first component typically measures whether an edition ran early or late overall, and the second typically measures how much of the file arrived in the closing weeks.
How many editions do you need before a decomposition is worth running?
Enough that the components describe structure instead of noise, which in practice means eight or more. With five editions the first component will absorb most of the variance and the second will mostly encode whichever edition was unusual. The components are estimated across editions, so editions are the sample size regardless of how many daily points each contributes.
Does a principal components decomposition give you the final registration number?
No, because working in shares of final removes the level by construction. The decomposition gives you the shape, and you recover the level by dividing the current count by the reconstructed share at the same days-to-open point. A count of 5,150 at day 90 against a reconstructed share of 0.4380 implies about 11,758.

Related reading

All forecasting methods articles