HullWhite¶
The main Space in the BasicHullWhite
model.
Mathematical notations are defined consistent with those in Brigo and Mercurio (2001, 2nd Ed. 2006)
See also
Damiano Brigo, Fabio Mercurio (2001, 2nd Ed. 2006). Interest Rate Models — Theory and Practice with Smile, Inflation and Credit
- scen_size¶
Number of scenarios. 1000 by default.
- np¶
numpy module.
- step_size¶
Number of time steps. 360 by default.
- time_len¶
Simulation length in years. 30 by default.
- a¶
Parameter \(a\) in the Hull-White stochastic differential equation. 0.1 by default.
- sigma¶
Parameter \(\sigma\) in the Hull-White stochastic differential equation. 0.1 by default.
- seed1¶
Seed number to generate random numbers. 1234 by default. See
std_norm_rand()
.
- seed2¶
Seed for the second random numbers used for
accum_short_rate2()
.
Cells
|
\(A(t_i, t_j)\) in \(P(t_i, t_j)\) |
|
\(B(t_i, t_j)\) in \(P(t_i, t_j)\) |
|
The expected values of \(r(t_i)\) at time 0 for all \(t_i\). |
|
Conditional expected values of \(r(t_j)\) |
|
The price at \(t_i\) of a zero-coupon bond paying off 1 at \(t_j\) |
|
The variance of \(\int_{t_j}^{t_i} r(u)du|\mathcal{F}_{t_i}\) |
|
The variance of \(r(t_i)\) at time 0 for all \(t_i\). |
|
The variance of \(r(t_j)\) conditional on \(\mathcal{F}_{t_i}\) |
Accumulated short rates. |
|
Alternative implementation of accumulated short rates. |
|
|
\(\alpha(t_i)\) |
|
Discount factors |
Discount factor scenarios. |
|
Discount factor means |
|
The means of generated short rates |
|
|
The initial instantaneous forward rate for |
|
The initial price of zero coupon bond |
|
Stochastic short rates at |
Short rate paths. |
|
|
Random numbers from the standard normal distribution. |
|
time index \(t_i\) |
Variance of generated short rates |
- E_rt()[source]¶
The expected values of \(r(t_i)\) at time 0 for all \(t_i\).
Returns, in a numpy array, the expected values of \(r(t_i)\) for all \(t_i\). Calculated as \(E\{r(t_i) | \mathcal{F}_{0}\}\).
See also
- E_rt_s(i, j)[source]¶
Conditional expected values of \(r(t_j)\)
Returns, in a numpy array, \(E\{r(t_j) | \mathcal{F}_{i}\}\), the expected values of \(r(t_j)\) conditional on \(\mathcal{F}_{i}\) for all scenarios. \(E\{r(t) | \mathcal{F}_{s}\}\) is calculated as:
\[r(s)e^{-a(t-s)} + \alpha(t) - \alpha(s)e^{-a(t-s)}\]where \(\alpha(t)\) is calculated by
alpha()
.
- P_t_T(i, j)[source]¶
The price at \(t_i\) of a zero-coupon bond paying off 1 at \(t_j\)
This formula corresponds to \(P(t, T)\) in Brigo and Mercurio, which is defined as:
\[P(t, T)=A(t, T)e^{-B(t, T)r(t)}\]where \(t_i\) and \(t_j\) substitute for \(t\) and \(T\).
See also
A_t_T()
for \(A(t, T)\)B_t_T()
for \(B(t, T)\)short_rate()
for \(r(t)\)Brigo and Mercurio (2001, 2nd Ed. 2006). Interest Rate Models — Theory and Practice with Smile, Inflation and Credit
- V_t_T(i, j)[source]¶
The variance of \(\int_{t_j}^{t_i} r(u)du|\mathcal{F}_{t_i}\)
This formula corresponds to \(V(t, T)\) in Brigo and Mercurio, which is defined as:
\[V(t, T)=\frac{\sigma^2}{a^2}\left[T-t+\frac{2}{a}e^{-a(T-t)}-\frac{1}{2a}e^{-2a(T-t)}-\frac{3}{2a}\right]\]where \(t_i\) and \(t_j\) substitute for \(t\) and \(T\).
- Var_rt()[source]¶
The variance of \(r(t_i)\) at time 0 for all \(t_i\).
Returns, in a numpy array, the variance of \(r(t_i)\) for all \(t_i\). Calculated as \(Var\{r(t_i) | \mathcal{F}_{0}\}\).
See also
- Var_rt_s(i, j)[source]¶
The variance of \(r(t_j)\) conditional on \(\mathcal{F}_{t_i}\)
\(Var\{r(t_{j}) | \mathcal{F}_{t_i}\}\), the variance of \(r(t_j)\) conditional on \(\mathcal{F}_{t_i}\), calculated as:
\[Var\{ r(t) | \mathcal{F}_s \} = \frac{\sigma^2}{2a} (1 - e^{-2a(t-s)})\]
- accum_short_rate(i)[source]¶
Accumulated short rates.
a descrete approximation to the integral \(\int_0^{t_i}r(t)dt\), calculated as \(\sum_{j=1}^{i}r(t_{j-1})(t_j-t_{j-1})\)
See also
- accum_short_rate2(i)[source]¶
Alternative implementation of accumulated short rates.
An alternative approach to simulate \(Y(t_i)=\int_0^{t_i}r(t)dt\) by using the fact that \(Y(t_i)\) follows a normal distribution, and by simulating the joint distribution of \((r(t_i), Y(t_i))\), as suggested in Glasserman (2003).
See also
Paul Glasserman (2003). Monte Carlo Methods in Financial Engineering
- alpha(i)[source]¶
\(\alpha(t_i)\)
Returns, in a numpy array, \(\alpha(t_i)\) for all scenarios. \(\alpha\) appears in the expression of \(E\{r(t) | \mathcal{F}_{s}\}\) and is defined as:
\[\alpha(t) = f^M(0, t) + \frac{\sigma^2} {2a^2}(1-e^{-at})^2\]See also
- disc_factor(i)[source]¶
Discount factors
Returns, in a numpy array, the discount factors for cashflows at \(t_i\) for all scenarios. Defined as:
np.exp(-accum_short_rate(i))
See also
accum_short_rate
- disc_factor_paths()[source]¶
Discount factor scenarios.
Returns, as a 2D numpy array, the simulated discount factors for all scenarios.
See also
- mean_disc_factor()[source]¶
Discount factor means
Returns, as a numpy array, the mean of discount factors of all scenarios for each \(t_i\).
See also
- mean_short_rate()[source]¶
The means of generated short rates
Returns, as a numpy array, the means of short rates of all scenarios for all \(t_i\). This should converge to the theoretical variances calculated by
E_rt()
.See also
- mkt_fwd(i)[source]¶
The initial instantaneous forward rate for
t_(i)
.By default, returns 0.05 for all
i
.
- mkt_zcb(i)[source]¶
The initial price of zero coupon bond
The initial price of the unit zero coupon bond maturing at
t_(i)
.If
i=0
returns 1. Otherwise, defined as:mkt_zcb(i-1) * np.exp(-mkt_fwd(i-1)*dt)
where
dt = t_(i) - t_(i-1)
.
- short_rate(i)[source]¶
Stochastic short rates at
t_(i)
Returns, in a numpy array, simulated stochastic short rates at
t_(i)
for all scenarios.For
i=0
, defined asmkt_fwd(0)
.For
i>0
, defined as \(r(t_i) = E\{r(t_i) | \mathcal{F}_{i-1}\} + \sqrt{Var\{ r(t_i) | \mathcal{F}_{i-1} \}} * Z\),where \(E\{r(t_i) | \mathcal{F}_{i-1}\}\), the expected value of \(r(t_i)\) conditional on \(\mathcal{F}_{i-1}\) is calculated by
E_rt_s(i-1, i)
, \(Var\{ r(t_i) | \mathcal{F}_{i-1} \}\) the variance of \(r(t_i)\) conditional on \(\mathcal{F}_{i-1}\) is calculated byVar_rt_s(i-1, i)
, and \(Z\), a random number drawn from \(\mathcal{N}(0, 1)\) a standard normal distribution calculated bystd_norm_rand()
.See also
- short_rate_paths()[source]¶
Short rate paths.
Returns, as a 2D numpy array, the simulated short rate paths for all scenarios.
See also
- std_norm_rand(seed=1234)[source]¶
Random numbers from the standard normal distribution.
Returns a numpy array shaped
scen_size
xstep_size
. The elements are random numbers drawn from the standard normal distribution.
- t_(i)¶
time index \(t_i\)