# Lévy distribution

 Parameters Probability density functionLevy distribution PDF Cumulative distribution functionLevy distribution CDF $c > 0\,$ $x \in [0, \infty)$ $\sqrt{\frac{c}{2\pi {{{cdf}}} {{{mean}}} {{{median}}} {{{mode}}} {{{variance}}} {{{skewness}}} {{{kurtosis}}} {{{entropy}}} {{{mgf}}} {{{char}}} ~ \frac{e^{-c/2x}}{x^{3/2}}$|

 cdf        =$\textrm{erfc}\left(\sqrt{c/2x}\right)$|
mean       =infinite|
median     =$c/2(\textrm{erf}^{-1}(1/2))^2\,$|
mode       =$\frac{c}{3}$|
variance   =infinite|
skewness   =undefined|
kurtosis   =undefined|
entropy    =$\frac{1+3\gamma+\ln(16\pi c^2)}{2}$|
mgf        =undefined|
char       =$e^{-\sqrt{-2ict}}$|


}} In probability theory and statistics, the Lévy distribution, named after Paul Pierre Lévy, is one of the few distributions that are stable and that have probability density functions that are analytically expressible. The others are the normal distribution and the Cauchy distribution. All three are special cases of the Lévy skew alpha-stable distribution, which does not generally have an analytically expressible probability density. In spectroscopy this distribution, with frequency as the dependent variable, is known as a Van der Waals profile.

The probability density function of the Lévy distribution over the domain $x\ge 0$ is

$f(x;c)=\sqrt{\frac{c}{2\pi}}~~\frac{e^{-c/2x}}{x^{3/2}}$

where $c$ is the scale parameter. The cumulative distribution function is

$F(x;c)=\textrm{erfc}\left(\sqrt{c/2x}\right)$

where $\textrm{erfc}(z)$ is the complementary error function. A shift parameter $\mu$ may be included by replacing each occurrence of $x$ in the above equations with $x-\mu$. This will simply have the effect of shifting the curve to the right by an amount $\mu$, and changing the support to the interval [$\mu$, $\infty$). The characteristic function of the Lévy distribution (including a shift $\mu$) is given by

$\varphi(t;c)=e^{i\mu t-\sqrt{-2ict}}.$

Note that the characteristic function can also be written in the same form used for the Lévy skew alpha-stable distribution with $\alpha=1/2$ and $\beta=1$:

$\varphi(t;c)=e^{i\mu t-|ct|^{1/2}~(1-i~\textrm{sign}(t))}.$

The nth moment of the unshifted Lévy distribution is formally defined by:

$m_n\ \stackrel{\mathrm{def}}{=}\ \sqrt{\frac{c}{2\pi}}\int_0^\infty \frac{e^{-c/2x}\,x^n}{x^{3/2}}\,dx$

which diverges for all n > 0 so that the moments of the Lévy distribution do not exist. The moment generating function is formally defined by:

$M(t;c)\ \stackrel{\mathrm{def}}{=}\ \sqrt{\frac{c}{2\pi}}\int_0^\infty \frac{e^{-c/2x+tx}}{x^{3/2}}\,dx$

which diverges for $t>0$ and is therefore not defined in an interval around zero, so that the moment generating function is not defined per se. In the wings of the distribution, the PDF exhibits heavy tail behavior falling off as:

$\lim_{x\rightarrow \infty}f(x;c) =\sqrt{\frac{c}{2\pi}}~\frac{1}{x^{3/2}}.$

This is illustrated in the diagram below, in which the PDF's for various values of c are plotted on a log-log scale.

File:Levy0 LdistributionPDF.png
Probability density function for the Lévy distribution

## Computational Expression of Levy

Levy is of growing interest to the financial modelling community, due to its emperical similarity to the returns of securities. Unlike the gaussian case (alpha =2), lower alpha values show distributions with high kurtosis (fat tails and sharp peaks).

A good paper on the subject of computational simulation is:

Fast, accurate algorithm for numerical simulation of Levy stable stochastic processes. Physical review E, vol 49:5. May 1994. Mantegna, RN.

this paper gives an algo for alpha = 0.3 to 1.99

A C# implementation looks like:

<source lang="c">

   public class LevyDistribution
{
RandomNumberGen rng = new RandomNumberGen();    //uniform in the space [0,1]
public double levySkewDistribution(double c, double alpha, double beta)
{
if (alpha <= 0 || alpha > 2)
{
throw new ApplicationException("alpha is outside allowed boundaries");
}
if (beta <= -1 || beta >= 1)
{
throw new ApplicationException("beta is outside allowed boundaries");
}
if (c <= 0)
{
throw new ApplicationException("scale, c, is outside allowed boundaries");
}
double V, W, X;
if (beta == 0)                              /* symmetric case */
{
return levyDistribution(c, alpha);
}
V = System.Math.PI * (rng.ran2() - 0.5);
do
{
W = -1.0 * System.Math.Log(rng.ran2());
}
while (W == 0);
if (alpha == 1)
{
X = ((0.5 * System.Math.PI + beta * V) * System.Math.Tan(V) - beta * System.Math.Log(0.5 * System.Math.PI * W * System.Math.Cos(V) / (0.5 * System.Math.PI + beta * V))) / 0.5 * System.Math.PI;
return c * (X + beta * 0.5 * System.Math.Log(c) / (0.5 * System.Math.PI));
}
else
{
double t = beta * System.Math.Tan(0.5*System.Math.PI * alpha);
double B = System.Math.Atan(t) / alpha;
double S = System.Math.Pow(1 + t * t, 1 / (2 * alpha));
X = S * System.Math.Sin(alpha * (V + B)) / System.Math.Pow(System.Math.Cos(V), 1 / alpha) * System.Math.Pow(System.Math.Cos(V - alpha * (V + B)) / W, (1 - alpha) / alpha);
return c * X;
}
}
private double levyDistribution(double c, double alpha)
{
double u, v, t, s;
u = System.Math.PI * (rng.ran2() - 0.5);       //subtract 0.5 so its symmetrical around 0
if (alpha == 1)               /* cauchy case */
{
t = System.Math.Tan(u);
return c * t;
}
do
{
v = -1.0 * System.Math.Log(rng.ran2());       //select a random exponential of form: p(x) dx = exp(-x/mu) dx/mu
}
while (v == 0);
if (alpha == 2)             /* gaussian case */
{
t = 2 * System.Math.Sin(u) * System.Math.Sqrt(v);
return c * t;
}
/* general case */
t = System.Math.Sin(alpha * u) / System.Math.Pow(System.Math.Cos(u), 1 / alpha);
s = System.Math.Pow(System.Math.Cos((1 - alpha) * u) / v, (1 - alpha) / alpha);
return c * t * s;
}


</source>