Skip to content
All library documents

Generating Correlated Hull–White Short-Rate Paths

Article Quant Q&A · Author: Andrey

Summary

The document explains how to simulate two correlated Hull–White short-rate processes, such as rates for two currencies, using QuantLib. Its suggested construction combines separate Hull–White processes in a stochastic process array and supplies a correlation matrix to specify their dependence.

The combined process can then be passed to a multidimensional path generator, which produces paired paths for the two rates. The example gives a correlation value as an illustration, not as an empirically estimated parameter. It does not discuss calibration, time-varying correlation, model validation, or the limitations of the Hull–White assumptions, so users still need to choose and justify model parameters for their application.

Key ideas

  • Model each short rate with its own Hull–White process.
  • Combine the processes in a stochastic process array and specify their correlation matrix.
  • Use a multidimensional Gaussian path generator to obtain paired rate paths.
  • The example illustrates implementation but does not address calibration or model validation.

Tags

Full text
# Monte-Carlo simulation Hull-White process


# Monte-Carlo simulation Hull-White process












I have one question about Monte-Carlo simulation Hull-White process, maybe you can give me some advice.

I constructed a Hull-White process using Python and QuantLib. Now I want to construct a Hull-White process for two correlated short rates. For example, I want model rates in two correlated currency.

I use `ql.HullWhiteProcess` and `ql.GaussianPathGenerator` for constructing one Hull-White process and path generator. But I can't understand how get two correlated paths.

## Answer by Luigi Ballabio (score 2, accepted)

https://quant.stackexchange.com/a/37904

You can try combining the two processes and a correlation matrix into a single process:

```
p1 = ql.HullWhiteProcess(rf, 0.01, 0.20)
p2 = ql.HullWhiteProcess(rf, 0.005, 0.15)
rho = [[1.0, 0.5],
       [0.5, 1.0]]

P = ql.StochasticProcessArray([p1, p2], rho)
```

at which point you can use the combined process `P` with the `GaussianMultiPathGenerator` class. Each sample will return a pair of paths for the two processes.

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.