Convolution power (and applications to supply chain)

Convolution power

Home » Resources » Here
By Joannès Vermorel, July 2016

The convolution power is a relatively advanced mathematical operation. In supply chain, convolution power can be used to scale probabilistic demand forecasts up or down. Convolution power offers the possibility to perform linear-like numeric adjustments on probabilistic forecasts. Furthermore, convolution power can be interpreted as the probabilistic counterpart of the linear adjustments performed on "classic" forecasts - i.e. periodic forecasts regressed against the mean or the median.


Probabilistic demand forecasts are particularly suitable for optimizing decisions while taking supply chain risks into account. However, unlike classic forecasts where the demand is expressed as a definite quantity associated with a specific period of time, probabilistic forecasts involve distributions of probabilities.

While distributions provide more insights about the future compared to single-point indicators, distributions are more complex to manipulate. Such manipulations may be required to reflect market evolutions that cannot be inferred from historical data. The convolution power is a mathematical operation that allows to scale a distribution of probabilities in a pseudo-linear fashion.

For example, if a retailer knows that each promotion will bring a 100% increase in sales, then, all it takes to adjust a classic demand forecast - which ignores promotions - is to multiply the original number by 2. In the case of probabilistic forecasts (which also ignores promotions), it's not possible to multiply the distribution by 2 in the naive sense because the sum of the distribution needs to remain equal to 1 and represent the sum of the probabilities.

Formal definition

In mathematics, the convolution power is the $n$-fold iteration of the convolution with itself. Thus, if $x$ is a function $\mathbb{Z} \to \mathbb{R}$ and if $n$ is an non-negative integer, then the convolution power is defined by: $$ x^{*n} = \underbrace{x * x * x * \cdots * x * x}_n,\quad x^{*0}=\delta_0 $$ where $*$ denotes the convolution operation and $δ_0$ is the Dirac delta distribution. The variable $n$ is referred to as the exponent.

If $x$ is the probability density associated with the discrete random variable $X$ with $x(k)=\mathbf{P}[X=k]$, then the convolution power can be interpreted as a sum of random variables: $$ X^{*n} = \underbrace{X' + X' + X' + \cdots + X' + X'}_n $$ where all $X'$ are independent copies of the original random variable $X$.

Fractional exponents

Convolution power, as introduced in the previous section, is defined for non-negative integers used as exponents. However, from a practical perspective, it is desirable to have fractional exponents. For example, if the promotional uplift is only 50%, then, we would seek to apply convolution power with $n=1.5$ instead. Here, we generalize the convolution power to arbitrary positive real numbers to be used as exponents.

For $a$, a non-negative real number, we re-define the convolution power as follows:

$$ x^{*a} = \mathcal{Z}^{-1} \Big\{ \mathcal{Z}\{x\}^a \Big\} $$ where $\mathcal{Z}$ is Z-transform of the discrete distribution $x$, defined as: $$ \mathcal{Z}\{x\} : z \to \sum_{k=-\infty}^{\infty} x[k] z^{-k} $$ and where $\mathcal{Z}\{x\}^a$ is the point-wise power over the Z-transform defined as: $$ \mathcal{Z}\{x\}^a : z \to \left( \sum_{k=-\infty}^{\infty} x[k] z^{-k} \right)^a $$ Finally, $\mathcal{Z}^{-1}$ is the inverse Z-transform $$ \mathcal{Z}^{-1} \{X(z) \}= \frac{1}{2 \pi j} \oint_{C} X(z) z^{n-1} dz $$ with $X(z) = \mathcal{Z}\{x\}(z)$, introduced for the sake of readability, and where $C$ is a counterclockwise closed path encircling the origin.

If $a$ is an integer, then the two definitions given above for the convolution power coincide.

In practice, the inverse Z-transform is not always defined. However, there are ways to generalize the notion of Z-transform inversion - somewhat similar to the notion of matrix pseudo inverse used in linear algebra. Details relating to Z-transform pseudo inverse go beyond of the scope of the present document.

Through this Z-transform pseudo inverse, the convolution power can be defined for all random variables of compact support, and for any non-negative real number used as the exponent.

Envision syntax

Envision, the programming language of Lokad, provides an implementation of the general convolution power. The convolution power is accessible through the ^* operator.
y := poisson(3) ^* 4.2 // fractional exponent
The script above illustrates how a Poisson distribution, obtained through the poisson() function, can be convoluted to the power of 4.2.

For $x$ a function $\mathbb{Z} \to \mathbb{R}$ and $y$ a function $\mathbb{N} \to \mathbb{R}$, we can define the convolution power of $x$ by $y$ with: $$ x^{*y} = \sum_{k=0}^{\infty} y[k] x^{*k} $$ Envision also supports this alternative expression of the convolution power through the ^* operator, as illustrated by the script below.
y := poisson(3) ^* exponential(0.05)
The exponent is an exponential distribution obtained by using the exponential() function.

Use case: aerospace spare parts

Let's consider an airline company that operates a homogeneous fleet of 100 aircraft. The company needs to optimize its inventory of APUs (auxiliary power units) which happen to be an expensive repairable component required by the aircraft. The demand for APUs has been forecast for the horizon of interest as a probabilistic demand forecast $X$.

Now, this company has the opportunity to buy a small competitor operating 5 aircraft that are homogeneous to our company's own fleet. Through this competitor acquisition, the company gains extra aircraft and extra passengers. If we assume that all aircraft are statistically independent in their need for APUs, and if we assume that the competitor's aircraft have similar needs to the ones of the acquiring company, then, the total demand for APUs for the merged entity can be revised as $X^{*\frac{100 + 5}{100}}=X^{*1.05}$.