Cholesky Application Example

See Also

Application Example: Cholesky Decomposition

This application note is included in the Cholesky Excel® C/C++ Add-In

This note illustrates multiple Cholesky decomposition applications used to simulate multivariate normal distributions.

It is important to note that both Unitized Returns and
Singular Value Decomposition (SVD) can prove much better alternatives when dealing with highly correlated assets, which is often the case with the larger cap indices.


This said Cholesky factorization remains an important milestone in multivariate analysis. Indeed, each methodology has its own limitations in terms of quality of results, memory usage and computational efficiency, especially when dealing with real-time computations. Nevertheless, it is important to understand the underlying concept always remain the same.

Proof of Concept- Validation

If P is a symmetric positive definite matrix C is the Cholesky decomposition of P, and CT is the Transpose of C,

If C is a lower triangular matrix, then P can be decomposed accordingly.

Lower Triangular Cholesky Validation

If C is upper triangular this will become:

Upper Triangular Cholesky Validation

As you can see, the Cholesky decomposition is simply the square root of the matrix P!

You can thus always validate your input by simply multiplying the results by its transpose.

This approach is well documented and works fine as long as the matrix is positive Definite.

1. A Simple Brownian Motion Application:

Let’s say we want to model a Brownian motion across asset classes: interest rates, foreign
exchange rates commodities and equities. In this specific application note, we will consider the simplest movement possible. We indeed assume returns are not serially correlation (i.e. autocorrelation) which is somewhat acceptable when dealing with short timeframes. We also presume the movement can be described in terms of their first two moments.

Mu(IR):a scalar or vector of mean expected returns on interest rate prices.
often computed via returns on zero-coupon bond prices, although par rate prices are often better and smoother especially in the short dated maturities, this also has repercussions, when forward date are close to negative.
Be careful not to confuse price and rate volatility
Mu(Fx):a scalar or vector of mean expected returns on foreign exchange rates.
Mu(Co):a scalar or vector of mean expected returns on commodities prices.
Mu(Eq):a scalar or vector of mean expected returns on equity / index prices.
C:a Cholesky decomposition of the variance-covariance matrix across all assets.
dZ(..):a scalar or vector of normalized random variate.
dt:a small time-step.


Multivariate Risk Factor Cholesky Decomposition

In a multidimensional model incorporating mean expected returns, Mu(…) becomes a vector of expected returns (computed via time-series, estimated via forecasts, etc).

C then becomes a larger lower triangular matrix containing sub-matrices of each asset class.

As stated previously, the Cholesky decomposition of the Variance-Covariance matrix, is merely the square root of the input matrix. Falling back into the single dimensional world, C would the usual standard deviation or volatility of the asset.

Zero-Mean Assumption Simplification:

When dealing with short horizons, a zero-mean is often assumed. Although this assumption does not hold very well beyond the typical one-month horizon it has become standard to the risk management industry when computing absolute VaR.

In the mean-zero framework the model simplifies further:

Cholesky Decomposition In the Mean Zero Framework

In this instance, the Brownian motion is simply the exponential of the normalized random draw multiplied by the coefficient of the Cholesky decomposition matrix.

Multivariate Stochastic Simulationwith

Unitized Normalized Variates

This return can then be used directly to compute densities or multiplied by the previous level in order to obtain a simulated price.

Although simple interest rate schemes might use the aforementioned approach on Zero coupon bond prices directly, sounder approaches might use risk-neutral Forward rates or even better actual Forward measures.

Note: The matrix might actually be sparse. Which is especially important if your diffusion processes must include with structural breakdowns.

2. The Mean Reverting process and long term Forecasting:

The first example of this application note assumed returns on asset prices were not serially correlated. This assumption holds quite well when the simulation horizon is short. I.e. usually under three months. However for longer horizons, autocorrelation can actually be very important.

Advanced application must incorporate autocorrelation in the Brownian motion generation. This is especially true when dealing with long-term simulations where volatility cannot be considered stationary.

If the time series includes positive or negative autocorrelation, the distribution’s volatility cannot be computed by simply applying the square root of time (as this assumes volatility is stationary, which obviously is not correct).

If the time series presents trending (positive correlation, which is typical of Equities or Commodotieis), the true volatility will be under-estimated. This means your Value-At-Risk will be Undervalued.
On the other hand, if the data presents mean reversion, which is often true for interest rate curves with many longer dated vertices, then the volatility will most likely be over-estimated.

Let’s take a mean reverting log-normal process as usually applied to interest rates changes.

d[Log( R )] = A ( b – Log( R ) ) dt + V*C* dZ

A is the diagonal matrix of mean reversion speeds.

b is the vector of long term mean reverting levels.

R is the vector short-term interest rates for each vertex of the term structure.

V is the diagonal Matrix of Variance (vol^2).

C is the Cholesky Decomposition of the variance-covariance matrix.

Z is a vector of independent normal random variables.

Calculation of A and b

The values of A and b are often computed by Regression.
In the standard framework, the elements of A are obtained by estimating the ratio between the instantaneous volatility of the vertex divided by the long term volatility levels (times two, since the log-normal framework assumes b is the log of the long term rate of a given vertex minus one half the long term variance of this vertex.

In practice, this can be seen as the slope between the long and short term volatilities of interest rates, where b stands as the intercept of the long-term rates minus one half of their long term variance).

More advanced implementations use multivariate regression either through SVD or Conjugate or Bi-Conjugate Gradients to compute speeds and levels while other might observe these directly form implied volatility levels inferred from market prices.

Thus, each Rate on each pre-determined vertex of our curve, the new rate at time t+1 will be simulated accordingly:

R(t+1)=Mean Reverting Multivariate Normal Process

3. Copulas: Use Cholesky Inverse to Generate Credit Default Times from Obligor Correlations for Collateralized Debt:

The Cholesky Inverse application is described is covered in the Time-To-Default Add-In section.