Pricing Future Bonds from HJM Simulated Forward Rates
Summary
The document asks how to calculate a bond price at a future simulation time using forward rates produced by the HJM procedure described in Glasserman. It proposes discounting across the remaining grid intervals by summing the simulated forward rates for that future date, then exponentiating the negative sum. The example compares a computed price with one obtained from a yield data matrix and questions why they differ.
The central issue is that simulated forward rates must be interpreted consistently with the model’s time indices and rate conventions before they can be used to construct a future discount curve. The post gives no resolution to the discrepancy and does not establish that the proposed formula or the yield-matrix comparison is correct. Its setup is a question, so implementation details such as drift, volatility, and discretization conventions remain unverified.
Key ideas
- A future bond price can be formed by discounting over the remaining maturities using forward rates observed at the pricing time.
- The proposed discrete formula sums each forward rate multiplied by its accrual interval.
- Forward-rate time and maturity indices must be interpreted consistently when constructing the future curve.
- The example reports a discrepancy between two calculations but does not identify its cause.
Tags
Full text
# Bond pricing with HJM simulation
# Bond pricing with HJM simulation
I'm using Glasserman 3.16 and 3.17 algorithm to price bonds. The algorithms evaluates the forward rates and the discount factor $B(0,t_j)$.
My question is: How can I price bonds in a future time? I want to calculate $B(t_i,t_j)$ bond prices at time $t_i>0$.
My idea was to use the basic discrete bond price formula:
$B(t_i,t_j)=\exp\left(-\sum_{l=i}^{j-1}f(t_i,t_l)(t_{l+1}-t_l)\right)$
while I'm using the forward rates that I calculated from algorithm 3.17. But I'm not sure if it's correct.
For example my time-grid is $0=t_0<t_1=0.25<t_2=0.5<\dots<t_M$. I calculate bond price $B(0.25,0.5)=0.990605$ (which is same as $B(0,0.25)$ evaluated from my initial forward rates), but if I calculate $B(0.25,0.5)$ from my yield data matrix, I get $B(0.25,0.5)=0.9938$ (I assume that at time $0$, $B(0.25,0.5)$ should be close to $B(0,0.25)$ at time $0.25$.)
More details: I have my initial forward rates $f(0,t_1),\dots,f(0,t_M)$
I calculate $f(t_1,t_1)$ with $f(t_1,t_1)\leftarrow f(0,t_1)+\mu(0,t_1)*\sum_{k=1}^{d}\sigma_k(t_0,t_1)*Z_i$, where $Z_i \sim N(0,\sqrt{t_1-t_0})$.
From my bond price formula: $B(t_1,t_2)=\exp\left(-\sum_{l=1}^{1}f(t_1,t_l)(t_{l+1}-t_l)\right)=\exp(-f(t_1,t_1)(t_2-t_1))$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.