Pricing Vasicek Bonds with State Price Deflators
Summary
The document examines how to reconcile zero-coupon bond prices from the Vasicek model under the risk-neutral measure with prices computed using a state price deflator under the real-world measure. It sets out separate short-rate dynamics under the two measures, relates their parameters through an affine market price of risk, and states the deflator stochastic differential equation. The expected discounted payoff under the risk-neutral measure is compared with the expected deflator payoff under the physical measure.
The question reports that simulation using risk-neutral rates matches the affine bond formula, while the attempted physical-measure deflator simulation does not. It also observes an apparent match when the deflator is paired with risk-neutral rates. The excerpt supplies code for an Euler-style simulation but does not include an accepted answer or resolve the discrepancy. Its main value is framing a measure-consistency and simulation-validation problem; implementation details, discretization error, and the correct coupling of Brownian motions remain open.
Key ideas
- A zero-coupon bond price can be expressed as a risk-neutral expected discount factor or as a physical-measure expected state price deflator.
- The Vasicek short-rate parameters differ between the physical and risk-neutral measures through the market price of risk.
- The described simulation matches the affine bond price when rates are simulated under the risk-neutral measure.
- The excerpt leaves unresolved why the attempted physical-measure deflator estimate differs from that price.
Tags
Full text
# State price deflator in the Vasicek model
# State price deflator in the Vasicek model
I am trying to implement a simple bond pricing model using state price deflators in a Vasicek model. I am simulating paths of the processes
$$\mathrm{d}r^{P} =\kappa^{P}(\theta^P - r^P(t))\mathrm{d}t + \sigma\mathrm{d}W(t),$$ $$\mathrm{d}r^{Q} =\kappa^{Q}(\theta^Q - r^Q(t))\mathrm{d}t + \sigma\mathrm{d}W(t),$$
Where I use the relation between the risk neutral $\mathbb{Q}$-measure parameters and the real world $\mathbb{P}$-measure parameters in the Vasicek model given by
$$\kappa^{Q} =\kappa^{P} + \lambda_1 \cdot \sigma$$ $$\theta^Q = \frac{\kappa^P \cdot \theta^P - \lambda_0\cdot\sigma}{\kappa^Q},$$
where the parameters $\lambda_0$ and $\lambda_1$ define the market price of risk in a so called essentially affine model as proposed by Duffie and Kan, such that the market price of risk $\Lambda(t)=\lambda_0 + \lambda_1 \cdot r(t)$. For now, I considered only the case $\lambda_1 = 0$.
The state price deflator $\Pi(t)$ will then be the solution to the following SDE:
$$\frac{\mathrm{d}\Pi(t)}{\Pi(t)} = -r(t)\mathrm{d}t - \Lambda(t)\mathrm{d}W(t)$$
Now, having implemented a simulation loop for these processes, I would like to verify that the theoretical affine model zero coupon bond price
$$P(t,T) = e^{A(T)-B(T)r(t)}$$
coincides with my simulations, eg. I would like to verify that
$$P(0, 10)=E^Q\left[e^{-\int_0^{10}r(t)\mathrm{d}t}\right]=E^P\left[\frac{\Pi(10)}{\Pi(0)}\cdot 1\right]=E^P\left[\Pi(10)\right].$$ I do this by simulating $r$ under the risk neutgral $\mathbb{Q}$-measure for the exponential integral, and this coincides with the theoretical affine model zero coupon bond price $P(0,10)=e^{A(10)-B(10)r(0)}$.
Then, as to my understanding of state price deflators, I would need to use the $r$-process simulated under the real world $\mathbb{P}$-measure in order to calculate the zero coupon bond price using SPD, ie.
$$\frac{\mathrm{d}\Pi(t)}{\Pi(t)} = -r^P(t)\mathrm{d}t - \Lambda(t)\mathrm{d}W(t).$$
This does, unfortunately not yield the same result as discounting the risk-neutral $r$, which in turn yields the theoretical affine model bond price that is I get
$$P(0, 10)=E^Q\left[e^{-\int_0^{10}r(t)\mathrm{d}t}\right]\neq E^P\left[\Pi(10)\right].$$
Instead, I get the correct price using the $r$ process simulated under the $\mathbb{Q}$-measure, ie. using
$$\frac{\mathrm{d}\Pi(t)}{\Pi(t)} = -r^Q(t)\mathrm{d}t - \Lambda(t)\mathrm{d}W(t).$$
My question is: Is it correct that by using state price deflators for pricing, you use real world measure $\mathrm{P}$ for pricing, such that
$$E^Q\left[e^{-\int_0^{10}r(t)\mathrm{d}t}\right]=E^P\left[\Pi(10)\right]$$
At least, this is how I understood the link between risk neutral, real world and pricing kernels. What confuses me is that under my simulations, the equality
$$E^Q\left[e^{-\int_0^{10}r(t)\mathrm{d}t}\right]=E^Q\left[\Pi(10)\right]$$
seems to hold true. Am I doing something wrong? I have provided my code below:
```
for (int i = 1; i < steps; i++)
{
// Simulating vasicek process
double rQ = qRateProcess[i - 1];
double rP = pRateProcess[i - 1];
double dwP = randomGenerator.NextGaussian() * sqrtDt;
double dwQ = randomGenerator.NextGaussian() * sqrtDt;
double dwD = randomGenerator.NextGaussian() * sqrtDt;
double drQ = KappaQ * (ThetaQ - rQ) * dt + Sigma * dwQ; // Risk neutral (Q-measure parameters)
double drP = KappaP * (ThetaP - rP) * dt + Sigma * dwP; // Real world (P-measure parameters)
qRateProcess[i] = rQ + drQ;
pRateProcess[i] = rP + drP;
shortRateIntegral += qRateProcess[i] * dt;
// Simulating deflator with (P-)vasicek interest rate process - should be the right method but is not?
double deflator = deflatorProcess[i - 1];
double dDeflator = -pRateProcess[i] * deflator * dt - deflator * (Lambda + LambdaY * pRateProcess[i]) * dwD;
deflatorProcess[i] = deflator + dDeflator;
}
```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.