Lévy distribution

Jump to: navigation, search
Lévy (unshifted)
Probability density function
Levy distribution PDF
Cumulative distribution function
Levy distribution CDF
Probability density function (pdf)
Cumulative distribution function (cdf)
Mean infinite
Variance infinite
Skewness undefined
Excess kurtosis undefined
Moment-generating function (mgf) undefined
Characteristic function

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 is

where is the scale parameter. The cumulative distribution function is

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

Note that the characteristic function can also be written in the same form used for the Lévy skew alpha-stable distribution with and :

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

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:

which diverges for 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:

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);
               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));
               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;
               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;


Related distributions

  • Relation to Lévy skew alpha-stable distribution: If then
  • Relation to Scale-inverse-chi-square distribution: If then
  • Relation to inverse gamma distribution: If then


References and external links

  • "Information on stable distributions". Unknown parameter |accessyear= ignored (|access-date= suggested) (help); Unknown parameter |accessmonthday= ignored (help) - John P. Nolan's introduction to stable distributions, some papers on stable laws, and a free program to compute stable densities, cumulative distribution functions, quantiles, estimate parameters, etc. See especially An introduction to stable distributions, Chapter 1
  1. "The Lévy distribution as maximizing one's chances of finding a tasty snack". Unknown parameter |accessyear= ignored (|access-date= suggested) (help); Unknown parameter |accessmonthday= ignored (help)