The Backshift Operator

Time-series algebra is littered with lagged terms: x_{t-1}, x_{t-2}, differences like x_t - x_{t-1}, sums of them stretching back years. Writing all those subscripts by hand is not just tedious — it hides the structure. The backshift operator (also called the lag operator) is a single piece of notation that turns those tangled subscripts into ordinary algebra. Once you have it, an autoregression, a difference, and a seasonal filter all become polynomials you can multiply, factor and cancel like numbers.

The whole idea is one definition. The operator B takes a series and shifts it one step into the past:

B\,x_t = x_{t-1}.

That is all B does — reach back one tick. Apply it twice and you reach back two, and in general

B^{k}\,x_t = x_{t-k}.

By convention B^{0} = 1 is the "do nothing" operator (1\cdot x_t = x_t). Some authors write L for "lag" instead of B for "backshift" — same operator, different letter.

Treat B like a number

The quiet miracle is that B obeys all the ordinary rules of algebra. It is a linear operator, so it distributes over sums and pulls out constants:

B\,(a\,x_t + b\,y_t) = a\,x_{t-1} + b\,y_{t-1}.

Powers of B add the way exponents should — B^{i}B^{j} = B^{\,i+j} — and different powers commute, because shifting back 2 then 3 is the same as shifting back 3 then 2. So any expression built from B is just a polynomial in B, and you may add, multiply and factor those polynomials exactly as if B were a variable like z. This is the licence that makes the whole ARMA machinery run.

Seeing the shift

Applying B geometrically means sliding the whole series one tick to the right: the value that used to sit at time t-1 now lines up under time t. Below, the solid line is x_t and the dashed line is its backshifted copy B x_t. They have the same shape — one is just the other, delayed by one step.

Reading a lagged model is now reading a delay: every extra power of B nudges a copy one more step to the right.

Differencing, in one symbol

The operation you already know from differencing — subtracting each value from the next — is just 1 - B. We give it its own symbol, the difference operator \nabla:

\nabla x_t = (1 - B)\,x_t = x_t - x_{t-1}.

Differencing twice is \nabla^2 = (1-B)^2 = 1 - 2B + B^2, which expands to x_t - 2x_{t-1} + x_{t-2} — the polynomial algebra doing the bookkeeping for you. A seasonal difference of period s (e.g. s=12 for monthly data) reaches back a whole season:

\nabla_s x_t = (1 - B^{s})\,x_t = x_t - x_{t-s}.

Trend removal, seasonal removal, and their combinations are now just products of these factors — a fact the seasonal ARIMA models lean on completely.

Writing whole models compactly

Here is the payoff. An autoregression on p lags,

x_t = \phi_1 x_{t-1} + \dots + \phi_p x_{t-p} + \varepsilon_t,

collects all its lag terms into one polynomial. Move them to the left and factor out x_t:

(1 - \phi_1 B - \dots - \phi_p B^{p})\,x_t = \varepsilon_t \quad\Longleftrightarrow\quad \phi(B)\,x_t = \varepsilon_t.

The bracket is the AR polynomial \phi(B). A moving-average model does the same on the noise side with an MA polynomial \theta(B) = 1 + \theta_1 B + \dots + \theta_q B^{q}, and the general ARMA model is the elegant one-liner

\phi(B)\,x_t = \theta(B)\,\varepsilon_t.

Whole families of models now live in two short polynomials. And because they are polynomials, you can factor them: the roots of \phi(z)=0 and \theta(z)=0 decide whether a model is well-behaved — the subject of causality and invertibility.

Worked example

Expand (1 - B)(1 + B)\,x_t. Multiply the polynomials just as you would numbers: (1-B)(1+B) = 1 - B^2 (the cross terms +B and -B cancel). Apply it:

(1 - B^2)\,x_t = x_t - x_{t-2}.

So differencing "up then down" collapses to a single lag-2 difference — a fact you would have sweated over in raw subscripts, delivered instantly by the algebra.

A second one: (1 - 0.5\,B)\,x_t. This is the AR(1) polynomial with \phi = 0.5. Distribute:

(1 - 0.5\,B)\,x_t = x_t - 0.5\,x_{t-1}.

Setting that equal to \varepsilon_t recovers x_t = 0.5\,x_{t-1} + \varepsilon_t — the familiar autoregressive model, now packaged as a single factor 1 - 0.5B.

The most common slip is to read 1 - B as ordinary arithmetic — as if you were subtracting the number 1, or subtracting B as a scalar. It is neither. The 1 is the identity operator (leave the series alone) and B is the shift operator (send it back one step). So (1-B)x_t means "the series minus its own one-step-delayed copy," x_t - x_{t-1} — not x_t - 1 and not x_t - B. Every symbol in a backshift expression is an operator acting on the series; the constants multiply the identity operator. Keep that straight and the algebra is safe.

Yes — and it is where the magic hides. Take AR(1): (1 - \phi B)x_t = \varepsilon_t. Formally "divide": x_t = (1-\phi B)^{-1}\varepsilon_t. If |\phi| < 1 we can expand that inverse as a geometric series in the operator, (1-\phi B)^{-1} = 1 + \phi B + \phi^2 B^2 + \dots, giving x_t = \varepsilon_t + \phi\varepsilon_{t-1} + \phi^2 \varepsilon_{t-2} + \cdots — an infinite moving average of past shocks. The convergence of that series is exactly the condition for the model to make sense, and it is why the roots of the polynomial matter. Treating B like a number, cautiously, unlocks the linear-process representation of nearly every stationary series.