I'm trying to calculate the delta for bond Call options. I'm using the vasicek model which gives the following solution for a Zero-coupon bond call option:

$Z = N P(t,S) \Phi(d_1) - K P(t,T) \Phi(d_2).$

Differentiating the above equation with respect to the underlying $P(t,S)$ gives the classical delta

$\Delta = N \Phi(d_1).$


$d_1 = \frac{ln \left(\frac{NP(t,S)}{KP(t,T)}\right) + \frac{\sigma_p^2}{2}}{\sigma_p}$ , $d_2 = d_1 - \sigma_p$.

Comparing the analytical delta with the numerical first derivative (with the call formula as input) using a central difference scheme

$ Z' = \frac{Z(r_{i+1})-Z(r_{i-1})}{P(t,S)(r_{i+1})-P(t,S)(r_{i-1})} $

or any other higher-order stencil gives a very different result. For example, while the former approaches 1 as the price of P(t,S) increases the latter doesn't reach 0.7. See the figure below. The X-axis is the price of the bond $P(t,S)$. Here $t<T<S$.

These discrepancies increase whith the Option maturity.

Is there any trick to find numerical deltas for IR derivatives? I faced the same problem with Swaptions.

I think my confusion lies in the underlying.

Bond Call option Delta

Thank you. Allan


2 Answers 2


It appears that you are plotting your analytical delta as a % of the delta of the underlying. This is why the delta converges to 100%

As for the numerical delta, it could be that you are not adjusting for the DV01 of the underlying. This would explain why the numerical delta still increases as the option gets more in the money and why the distortion is larger for longer maturities (larger DV01).


I tried to use the BPV/delta relashionship

$\Delta = \frac{ \frac{\partial Z}{\partial r}-\frac{\partial P(t,T)}{\partial r}\frac{Z}{P(t,T)} } {\frac{\partial P(t,S)}{\partial r}}$

but it doesn't work as well.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.