In October 1990 Dilip Madan and Eugene Seneta published a return model with no Brownian component in calendar time. Eight years later Madan, Peter Carr and Eric Chang turned it into the option-pricing model in The Variance Gamma Process and Option Pricing.
Variance gamma, or VG, is built by running a Brownian motion on a random gamma clock. The construction produces skew and excess kurtosis with only three parameters, while retaining a closed-form density and characteristic function.
It sits between the finite-activity Merton jump diffusion and more flexible Lévy families. The Carr-Madan FFT turns its characteristic function into a fast vanilla pricer.
Gamma time change
Let be a gamma process normalised by
where the second gamma argument is the scale. Let be an independent Brownian motion and define
Conditional on , is normal with mean and variance . Integrating over the gamma clock gives the VG process.
The clock supplies useful intuition. When exceeds calendar time, the Brownian driver experiences more business time and produces a more dispersed return. When it is small, the return is compressed. The parameter controls variability of this clock because . As , concentrates at and
For positive , mixing normals with different conditional variances creates heavy tails. The drift correlates clock realisations with return direction: negative makes high-activity periods more negative on average and creates left skew. This is more precise than saying that is simply a skew parameter, since it also changes the mean and variance.
It is a Lévy process with stationary independent increments. In calendar time it is pure jump, has infinitely many small jumps on every interval and has finite variation. The Brownian motion in the construction does not leave a continuous Brownian component after gamma subordination.
If time is measured in years, has units of years, has units per year and has units per square root year. is a dimensionless log return.
Characteristic function
Conditioning on gives
This convention places before in the imaginary term. Changing the Fourier sign convention changes that sign too; copying a characteristic function without its convention is a common source of reflected skew.
The conditioning step also supplies an exact simulator for European payoffs. Draw from a gamma distribution with shape and scale , draw an independent standard normal , then set
No calendar-time discretisation is needed. This makes Monte Carlo a useful independent check on Fourier prices, although it converges too slowly to certify tiny out-of-the-money values without variance reduction.
The cumulants are more informative than loose parameter labels:
and
Thus is not the annual standard deviation unless or . Nor do the parameters act independently: changing also changes variance and kurtosis.
Martingale correction
Suppose the three VG parameters are already risk-neutral. Set
Since
the discounted total-return stock is a martingale when
The exponential moment exists only if
This is a real restriction, not something that “always holds” in calibration. The log-price characteristic function is
More generally,
where the quadratic inside brackets is positive. This moment interval matters twice: is needed for the stock martingale, while Carr-Madan damping needs . For the numerical parameters used below, the quadratic roots are and . Thus is safely admissible and positive damping requires . This check should be performed from calibrated parameters for every maturity, not assumed from a default damping value.
Like other exponential Lévy models, VG does not have a unique equivalent martingale measure. An Esscher transform, a minimal-entropy choice or direct risk-neutral calibration can produce different pricing parameters. The martingale correction fixes drift after that choice; it does not choose the measure.
Verified FFT code
The Simpson weights below use zero-based indexing. Their first coefficients are , not .
import numpy as np def vg_cf(u, S0, T, r, q, sigma, nu, theta): base = 1 - theta*nu - 0.5*sigma**2*nu if base <= 0: raise ValueError("The martingale exponential moment does not exist") omega = np.log(base) / nu vg = (1 - 1j*theta*nu*u + 0.5*sigma**2*nu*u**2)**(-T/nu) return np.exp(1j*u*(np.log(S0) + (r - q + omega)*T)) * vg def vg_call_grid(S0, T, r, q, sigma, nu, theta, alpha=1.5, N=4096, eta=0.25): p = alpha + 1 if 1 - theta*nu*p - 0.5*sigma**2*nu*p**2 <= 0: raise ValueError("The damping moment E[S**(alpha+1)] does not exist") dk, j = 2*np.pi/(N*eta), np.arange(N) b, v = 0.5*N*dk, eta*j k = -b + dk*j u = v - 1j*(alpha + 1) psi = (np.exp(-r*T) * vg_cf(u, S0, T, r, q, sigma, nu, theta) / (alpha**2 + alpha - v**2 + 1j*(2*alpha + 1)*v)) weight = (3.0 - (-1.0)**j - (j == 0)) / 3.0 values = np.fft.fft(np.exp(1j*b*v) * psi * eta * weight) calls = np.exp(-alpha*k) * values.real / np.pi return k, calls
The function returns log-strikes. Use, for example, np.interp(np.log(K), k, calls) for an on-grid-range strike, then repeat with other , and admissible values.
With , , , , , and , we obtain
The interpolated VG call is . Black-Scholes at is , while Black-Scholes at the VG process standard deviation is . Fat tails do not mechanically raise every option price; the martingale correction and negative skew redistribute probability.
Calibration and checks
For one maturity, fit to liquid option prices or implied volatilities. Price errors, volatility errors and relative errors are not interchangeable. If fitting prices, normalising by Black-Scholes vega approximates a volatility-space objective; inverse bid-ask variance reflects quote uncertainty.
A single constant parameter triple determines every maturity. Refitting separately at each expiry may improve slices but is no longer one VG Lévy process, because stationary increments have been abandoned. Decide whether the goal is a slice interpolator or a dynamic model before calibrating.
Useful tests include:
- and ;
- the limit , which gives Brownian log returns with drift before martingale correction;
- call bounds, strike monotonicity, convexity and put-call parity;
- agreement between FFT, direct quadrature and the closed-form VG formula in Madan, Carr and Chang;
- stability across transform grids and damping values inside the finite moment strip.
The Black-Scholes model is a useful limiting and numerical benchmark.
Calibration failure modes and practitioner choices
The three parameters are parsimonious but not orthogonal. Near , many combinations produce distributions close to Brownian motion, so can be weakly identified from a narrow strike range. A more negative changes skew, variance and the martingale correction simultaneously. Increasing can offset part of the central curvature created by . Optimisers may therefore find several shallow minima with similar prices.
Use parameter transforms or explicit bounds to enforce , and the exponential-moment condition. A generic positivity constraint on each parameter is wrong because is signed. Reject trial points outside the required moment strip before evaluating complex powers. Letting invalid points return large finite prices can create discontinuous objectives and misleading finite-difference gradients.
Calibration weights should reflect the task. Price-space least squares favours expensive options. Implied-volatility errors become unstable where vega is tiny. Inverse bid-ask variance is defensible when spreads represent observation uncertainty, while vega-normalised price errors approximately target volatility fit in liquid regions. Whatever objective is chosen, report residuals in price, implied volatility and fractions of bid-ask spread.
Term structure is the central modelling decision. A single Lévy triplet across maturities preserves stationary independent increments but often misses the changing equity skew. Independent parameter triples by expiry can fit better, yet they define a collection of marginal distributions rather than one VG process. Before using such slices for path-dependent products, specify an interpolation or time-inhomogeneous process and retest calendar arbitrage. A good static fit does not supply coherent dynamics by itself.
A thorough numerical audit should include:
- gamma draws with empirical mean and variance ;
- simulated moments against the analytic mean and variance;
- the martingale identity ;
- agreement among FFT, direct quadrature and exact-terminal Monte Carlo;
- call bounds, strike monotonicity, convexity and put-call parity;
- stability as , and admissible change;
- convergence to Black-Scholes as , with volatility and drift interpreted after applying .
The limiting test deserves care. As ,
so tends to . The terms cancel. A test that expects a residual stock drift of after martingale correction is testing the wrong limit.
For risk management, inspect parameter profiles and day-to-day stability, not only the final objective value. If jumps while fitted vanillas barely move, tail-sensitive exotic values can still change materially. Stress the moment-strip boundary too. Calibration close to it can make high-order moments and damped transforms unstable even while ordinary call prices appear reasonable.
What VG misses
Independent increments rule out volatility clustering. A large move today does not make a large move tomorrow more likely. Constant parameters also struggle with the joint term structure of index smiles.
VG's infinite activity describes an accumulation of small jumps, while Merton's finite-activity process is a cleaner model of isolated news events. Neither distinction guarantees a better market fit. CGMY adds a fourth parameter for jump activity and separate tail control, but brings further identification risk.
Stochastic clocks can add persistence to a Lévy driver. That improves dynamics at the cost of the three-parameter simplicity that makes VG attractive in the first place.
Frequently Asked Questions
Is variance gamma a pure-jump process?
Yes. It has no continuous Brownian component in calendar time, despite being constructed from a Brownian motion. It has infinite jump activity and finite variation.
What is the variance of a VG return?
For horizon , it is . The parameter alone is not total return volatility when .
Why is omega needed?
has a non-zero exponential moment. The correction offsets it so that the discounted total-return stock is a martingale under the selected pricing measure.
Does VG have a unique risk-neutral measure?
No. The market is incomplete. A measure-change rule or direct option calibration is needed before applying the martingale correction.
How does VG differ from Merton jump diffusion?
Merton combines diffusion with a finite number of Poisson jumps. VG is pure jump with infinitely many small jumps on every interval.
Which papers introduced variance gamma?
Madan and Seneta's 1990 paper introduced the share-return model. Madan, Carr and Chang's 1998 paper developed the three-parameter option-pricing framework. The characteristic function is compact. The measure choice and term structure are not.
Skip the £25k programme - try the alternative
Master's programmes are slow and expensive. Quantt is a self-paced alternative. Start free with a real lesson and interview practice, then unlock 50+ courses and your personalised plan.
Free to start · No credit card required