What Is Stationarity in Time Series Analysis? A Visual Guide

Stationarity means that the statistical properties of a process that creates a time series are constant over time. This statistical consistency makes predictable distributions and is an assumption of many time series forecasting models.

You’ll learn what stationarity is in a visually intuitive way in this post.

Key Takeaways

  • Stationarity refers to a random process that creates a time series whose mean and distribution are constant through time.
  • Stationarity is important in time series analysis because a predictable distribution enables forecasting.
  • Stationarity is a common assumption of many time series prediction models.
  • Strong stationarity is the most common form of stationarity.

Table of Contents

What Is Stationarity?

In mathematics and statistics, a stationary process is a stochastic process whose unconditional joint probability distribution does not change when shifted in time. Said more simply, for a stationary time series, we can slice up the time series data into equally sized chunks and still get the same probability distribution.

There are multiple types of stationarity, which we’ll cover below. But for now, let’s understand the general concept of stationarity through visual exploration.

Notice the line chart and histogram below. The line chart shows multiple values oscillating around a mean of zero. The histogram, in green, displays the frequency of values in the shape of a normal distribution.

Stationary Time Series Plot

Why Is Stationarity Important?

A stationary process, which is another way to say something that generates a stationary time series, has specific statistical properties enabling predicting a likely outcome.

For instance, in the histogram above, we can see the most likely value is near zero, and as we move away from zero, the values we get are less likely.

We can build a mean reversion trading system to profit from a stationary time series as algorithmic traders. If the price is stretched too far from its normal distribution, we can expect it to revert to the mean.

Most time series in the markets are not stationary. We can attempt to convert a non-stationary stochastic process to a stationary one using methods such as differencing, or we can create a synthetic asset that combines multiple holdings in some way to make a stationary process.

A stochastic process is one where the process has some randomness. It’s the opposite of a deterministic process where the outcome has 100% certainty.

Fun fact: Stochastic derives from stokhazesthai, the Greek word to guess or aim.

Now that we know what a stationary process is, let’s solidify our understanding by looking at a few non-stationary stochastic processes.

Non-Stationary Stochastic Processes

As I mentioned earlier, a non-stationary process is a stochastic process that doesn’t have a consistent mean or distribution across time. This typically comes in the form of trend, volatility, or seasonality.

Let’s explore visually and with code.


Notice the time series below doesn’t have a consistent mean, and its distribution changes through time, making it difficult to predict the next value in its current form.

But each value is just a cumulative sum of the prior values, so there is a predictable trend—more on this in the types of stationarity section.

df2 = pd.DataFrame(index=dti,data=np.random.random(size=periods) * vol).cumsum()
make_plot(df2, "Trending Time Series").show()

Non-Stationary Trending Time Series


The below time series has a consistent mean, but its volatility is increasing. The increase in variance changes the distribution of values through time. Notice while the mean in the distribution is the same, the values are more extreme in the second half of the time series.

df3 = pd.DataFrame(index=dti,
    data=np.random.normal(size=periods) * vol *
        np.logspace(1,5,num=periods, dtype=int))
make_plot(df3, "Volatility Increasing Time Series").show()

Non-Stationary Volatile Time Series


Seasonality refers to a series whose distribution changes predictably through time. An example of this would be Google trends search interest for beach and ski resorts.

Beach vs. Ski Resort Seasonality

We can see that interest in the beach is highest when it’s warm, and ski-goers are searching for resorts when it’s cold. Both follow a predictable, seasonal pattern. We can compare each quarter with last year’s quarter to make things more predictable. Speaking of predictable…

Seasonality is different from cyclicality. Seasonality is predictable, whereas cyclicality is not.

Skipping the code on this one as it’s more complex, and I feel like it doesn’t aid in understanding seasonality.

If interested, check it out on the Analyzing Alpha GitHub Repo.

Non-Stationary Seasonal Time Series

Notice that the distribution changes through time.

This is obvious. If we look at the revenue of a ski resort in the winter months, it’ll be vastly different from its revenue when the sun’s shining.


White noise is a time series with a mean of zero, its volatility is constant, and there’s no correlation between lags – its variables are independent and identically distributed variables.

In other words, it’s random.

If it’s not random, then we can create a better forecasting model by extracting the non-random signal out of the random noise.

We can decompose our time series into components: Signal - the time series data we can potentially predict Noise - the part of the data set that’s unpredictable

$% y(t) = signal_t + noise_t $%

If we can prove that our residuals (signal minus noise) are white noise, we can say our model is great.

df4 = pd.DataFrame(index=dti,
                   data=np.random.normal(size=periods) * vol)
make_plot(df4, "White Noise").show()

Non-Stationary Volatile Time Series

Types of Stationarity

There are multiple types of stationarity. Understanding moments is vital to grasp the various types of stationarity. The goal of this section isn’t to be exhaustive; it’s to give you a basic intuitive understanding of each type of stationarity.

Strong Stationarity

So far, we’ve been discussing strong stationarity. Strong stationarity means that the random value produced has the same probability distribution across time for any event.

Weak Stationarity

Weak stationarity, also known as wide-sense stationarity, has a constant mean (moment one) and the correlation and covariance (moment two) are invariant to time. The higher-order moments change with time.

N-th Order Stationarity

N-th order stationarity means that the process generating the time series has a moment that is invariance to time.

First-order stationarity - Constant mean. Second-order stationarity - Constant variance and is first-order stationarity Third-order stationarity - Constant skew and is second-order stationarity Forth-order stationary - Constant kurtosis and is third-order stationarity

Trend Stationarity

Trend stationarity means that we can remove the trend from an underlying stochastic process creating a stationary process.

Trend Stationary Time Series

Recall the trending time series above. The time series is just a normally distributed random value plus all of the previous values. We can subtract the earlier values from each point to make the time series stationary. In other words, the process is trend stationarity.

Joint Stationarity

Most processes in the markets are not stationary. One way to create stationary processes, as mentioned above, is to combine multiple stochastic processes that cointegrate.

We can use this cointegrating pair to create a synthetic asset in a pairs-trading strategy.

The Bottom Line

Stationarity refers to a random process that has constant statistical properties through time. This matters because it means that the process creates a predictable distribution. Stationarity is a common assumption for many time series models.


Leo Smigel

Based in Pittsburgh, Analyzing Alpha is a blog by Leo Smigel exploring what works in the markets.