I would like to ask about swap zero curve calculation algorithm by Bloomberg terminal. This is a plain vanilla CZK interest rate swap, fixing the Prague IBOR. My task is to calculate zero rates from market rates, however I have only managed to get accurate zero rates from 2 years onwards. I tried to bootstrap spot rates from FRAs (CKFR0F1 is FRA 6x12 and CKFR011 is 12x18) with this formula:
$(1+r_{0;t_{0}}\frac{t_{0}}{360})*(1+r_{t_{0};t_{0}+t{u}}\frac{t_{u}}{360})= (1+r_{0;t_{0}+t{u}}\frac{t_{u}+t_{0}}{360})$
Where $r_{0;t_{0}}= 0.0056$, $r_{t_{0};t_{0}+t{u}} = 0.0095$, $t_{0}=182$ and $t_{u}=183$. By solving this equation I get $r_{0;t_{0}+t{u}}=r_{0;1}= 0.007568827$, which is off only by a tiny fraction. I guess the mistake will be in day count conventions, however this is the closest I have come to the correct solution. Can someone explain how the calculation should be done?
I have also attached screenshots of the swap yield curve and cash-flows.
Answer
It looks like you should use a different convention for the zero rates. I tried the following:
$$\left(1+r_{0;t_{0}}\frac{t_{0}}{360}\right) \times \left(1+r_{t_{0};t_{0}+t{u}}\frac{t_{u}}{360}\right) = \left(1+r_{0;t_{0}+t{u}}\right)^{\frac{t_{u}+t_{0}}{360}}$$
Solving with the same input gives $r_{t_{0};t_{0}+t{u}}=0.00756843$, in agreement with Bloomberg.
The right hand side convention kicks in because $(t_u+t_0)/360 > 1~year$. It's a convention used for zero rates, and it looks Bloomberg is using it.
The only source I'm aware of which treats this convention is Brigo and Mercurio:
https://books.google.ie/books?id=C31l_fs-mMkC&lpg=PA57&pg=PA9#v=onepage&q&f=false
No comments:
Post a Comment