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=0returns 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 as- mkt_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 by- Var_rt_s(i-1, i), and \(Z\), a random number drawn from \(\mathcal{N}(0, 1)\) a standard normal distribution calculated by- std_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_sizex- step_size. The elements are random numbers drawn from the standard normal distribution.
- t_(i)#
- time index \(t_i\)