The following is an algorithm of the methodology to calibrate a reversion speed a and associated volatility parameter ƒ which give rise to the smallest mispricing.
For valuation_date 1 to n a = initial_value While a is in the acceptable interval For expiry 1 to m initialise 1 and 2 get Black_premium for this expiry and valuation date P 1 = HW _option_premium ( 1 ) - Black_premium P 2 = HW_option_premium ( 2 ) - Black_premium While P 1 > 1 * 10 -5 and P 2 > 1 * 10 -5 mid = ( 1 + 2 )/2 P mid = HW_option_premium ( mid ) - Black_premium If P 1 * P mid < 0 Then 2 = mid ElseIf P 2 * P mid < 0 Then 1 = mid End If Loop = mid Next expiry ave = Average( for expiry 1 to m ) ave_mispricing = Average((HW_option_premium ( ave ) - Black_premium)/Black_premium; for expiry 1 to m If ave mispricing < optimal mispricing then a optimal = a update a Loop Next valuation date
For a given value of parameter a , determine the corresponding values of ƒ i for expiry date i = 1, , m . Since a and ƒ are parameters associated with the term structure, specifically the reversion speed and volatility of the short-term interest rate, they tell us what the price of the bond option implies about the characteristics of the short- term interest rate. Ideally, we would like the ƒ i s to be the same for all maturities i = 1, , m . This would imply all maturity bond options are priced consistently by our model of the short-term interest rate. However, in practice these ƒ i s may differ quite substantially. To determine an optimal value of a and corresponding ƒ , take the arithmetic average of ƒ i , i = 1, , m to be the proxy for ƒ . Pricing each bond option using the value of a and corresponding ƒ allows us to determine the degree of mispricing to market- observed option premia. The optimal value of a and corresponding ƒ (calculated using the averaging described above) are determined as those resulting in the smallest mispricing across the bond option maturities.
The methodology used in procedure HW_option_premium to calculate the HW option premium is as described in §13.5. To calculate the strike prices and hence premia of the sub-options comprising the coupon bond options we require A ( T,s i ) where T is the option expiry date and s i is a coupon payment date. From equation (13.17) we require P ( r, 0, s i ), P ( r, 0, T ) and in order to evaluate A ( T,s i ). Since T and s i will not necessarily fall on the available node points, we must interpolate the P ( r, 0, ·) and curves to obtain values for the correct maturity dates.
Given the initial interest rate term structure R ( r, 0, ·), make use of (13.3) to obtain the term structure of P ( r, 0, ·). We then apply the cubic spline interpolation to retrieve discount bond prices for any maturity date.
In order to evaluate , we first calculate ln P ( r, 0, ·) at each node point and then apply Lagrange interpolation to fit quadratic polynomials and hence evaluate derivatives at each node [5] . Applying cubic spline interpolation to these derivative values allows us to retrieve for any maturity date.
The following algorithm describes the methodology to calibrate a volatility parameter ƒ which gives rise to the smallest mispricing. This algorithm is essentially a subset of the previous algorithm since the methodology corresponds to a = 0 and hence only an optimal ƒ needs to be found.
For valuation date 1 to n For expiry 1 to m initialise 1 and 2 get Black_premium for this expiry and valuation date P 1 = HW_option_premium ( 1 ) - Black_premium P 2 =HW_option_premium ( 2 ) - Black_premium While P 1 > 1 * 10 -5 and P 2 > 1 * 10 -5 mid = ( 1 + 2 )/2 P mid = HW_option_premium ( mid ) - Black_premium If P 1 * P mid < 0 Then 2 = mid ElseIf P 2 * P mid < 0 Then 1 = mid End If Loop = mid Next expiry Next valuation date
To determine the strikes of the sub-options and hence their premia we require values of B ( T,s i ) and A ( T,s i ), where T is the option expiry date and s i the coupon payment date.
To determine B ( T,s i ) we must determine [6] B (0, ·) and . Given the initial interest rate term structure R ( r, 0, ·), make use of (13.21) to determine the values of B (0, ·) at all the node points. Applying cubic spline interpolation allows us to retrieve B (0, ·) for any maturity date. To determine , we fit a quadratic Lagrange polynomial at each node point and evaluate its first derivative. Then applying cubic spline interpolation to these derivatives allows us to retrieve for any maturity.
To determine A ( T,s i ) we also require . This is found by applying cubic spline interpolation to and then evaluating this integral. This involves the integral of the square of a cubic polynomial.
[5] This is the methodology described in the final paragraph of §13.4.1.
[6] See equation (13.9).