Page: 1 | Go to End | |
Author | Topic:CIR calibrating using cap matrix | 1028 Views |
12 May 2013 at 1:35pm
Hello everyone,
I have few questions regarding the use of Fairmat to calibrate a one-factor CIR model.
Matteo and Ricardo (who already both kindly answered to a lot of questions I asked) gave me this link to understand the way the datas must but input:
http://fairmat.com/documentation/usermanual/index.html?n=download/mediawiki/index.php/Interest_rate_market_data_xml.htm
I understand where I must input these datas: Caps' black volatilities, strikes, tenor, maturity
But what about the ZRmarket: vector with zero coupon rates (to be used as continuously compounded rates, so that the price of the zero coupon bond maturing at time T is given by exp(-ZRMarket(T)*T)
I'm still confused about what I should put as a vector. I think I have all the relevant datas: ZCrates of the eonia, the euribor 3m, euribor 6m (I took them from reuters)..
So that the r(0) can be determined, what are exactly the calculations ? Are there only based on this vector ? I know that Fairmat calculate it but I'd like to know the process for academic purposes.
Thank you very much.
Michael
13 May 2013 at 10:58am
Hi Michael,
1) the "interest rate market data" xml file is an aggregate to collect many different information regarding interest rate.
We included different kind of rates like cash rates, FRA rates, swap rates and also a vector describing the whole zero rate curve: ZRMarket.
This choice has been done because the zero coupon rates are not given directly by the market but are calculated from market data and this calculation can be done in several ways. So if someone wants to use his particular calculation and his particular zero coupon rates he can do that input his data in ZRMarket vector.
In Fairmat the zero coupon curve is supposed to give zero coupon price through the formula
P(0,t) = exp( -ZeroCouponRate(t) * t )
for all maturities (another convention is to use two different formulas to connect zero coupon rates and bond prices distinguishing the case t <= 1 and t > 1 but we preferred to use a single expression for the whole curve).
Because of this convention we have that in Fairmat cash rates (like libor or euribor) are not equal zero coupon rates to be used in the ZRMarket vector. The two kind of rates are connected by formula
1 + t * CashRate(t) = exp( ZeroCouponRate( t ) * t)
so that if you have CashRate and want to calculate ZeroCouponRate you obtain them as
ZeroCouponRate(t) = ln( 1 + t * CashRate(t) ) / t
2) In CIR calibration the ZRMatket vector is used for two purposes.
From one side it is used to calculate the starting point of the CIR process. This is done by linearly extrapolating the ZRMarket vector at t = 0.
On the other side it is also used to calculate cap market prices from cap volatilities using Black model formulas. (Remember that calibration is done minimizing the distance between cap market prices and cap prices calculated within the CIR model, so we have to calculate the former before performing the optimization).
Because of this second use of the ZRMarket vector it is important that you specify it in a range of maturities that covers all the cap maturities you use to calibrate.
14 May 2013 at 12:17pm
Hi enrico,
So I should gather all the other datas: FRA, SWAP
And then, calculate the zero rate curve from this information ?
What if I already have the ZCrate ? The bank where I work provides throught their internal system, ZCrate of the curve I want:
I have the ZCrate for EONIA , Euribor 3m and Euribor 6m
Is it "OK" if I just set the ZCrate of the EONIA for instance ?
Once again, Thank you very much !
You really help me to understand things clearly
Michael
15 May 2013 at 11:52am
To be clear: Cash, FRA, swap rates in the interest rate market data xml are not used by CIR calibration.
To make calibration properly work you only have to enter in the ZRMarket vector a valid zero rate curve, it could be the one calculated from cash, FRA, swap rate, it could be the one derived from EONIA swap rates, whichever you want.
The crucial point is that its maturities has to cover all cap matrix maturities.
I'm not sure about what data you have at disposal. If you have Eonia, Euribor 1-12 month data you can calculate the zero rate values (transforming euribor rate in continuously compounded rate as I wrote in the previous post) only up to maturity 1 year. But it seems to me that you was calibrating using cap volatilities up to 5 year maturities. If that's the case you have to set ZRMarket vector in a way that it describes the zero rate curve up to at least 6 year maturity (you have to exceed cap maturities to permit the calculation of forward rates between 5 and 6 year).
When you say "Is it "OK" if I just set the ZCrate of the EONIA for instance ?" are you asking if you can use only the EONIA rate instead of inserting a curve, or a constant curve with value equal to EONIA? If that is the question the answer is no. It's really important you insert a curve that describes different rates for different maturities so that during calibration cap prices are correctly calculated.
Enrico
1028 Views | ||
Go to Top |
Currently Online: There is nobody online.
Welcome to our latest member: User4b15