Re: Libor Forward Process
Posted by Klaus Spanderen on
URL: http://quantlib.414.s1.nabble.com/Libor-Forward-Process-tp4723p4730.html
Hi Fabio,
in general the starting dates and the day counting etc. is chosen to be
(hopefully;-) "compatible" with the existing cap/floor pricing to ensure
that the LMM cap/floor prices match to the prices of the BlackCapFloorEngine
in blackcapfloorengine.hpp or test-suite/capfloor.cpp
You wrote:
> 1) In the market cap volatility matrices, usually the first quoted cap is
> referred to the rate which fixes today and has accrual start date 2
> business days after today, is it right? If so, in order to have a coherent
> structure for the forward rates to be used in LMM, the first fixing date
> should be today (or the term structure reference date) and the first
> accrual start date 2 business days after.
agree.
> In lfmprocess.cpp (line 49 and following), on the contrary, it seems that
> today is the first accrual start date (the settlement) and the first fixing
> date is 2 days before.
The reference date of the index term structure is the settlement date, which
is usually today+2 business days (line 49, the term structure is assumed to
be spot, meaning today+2 business days, see also e.g. test-suite/
capfloor.cpp, routine setup()). startDate of first fixing date is today (line
50). The first accrual start date is again usually the settlement date (line
69).
> 2) in lfmprocess.cpp, lines 49-70, where the times vector are filled, the
> accrual start and accrual end times are evaluated starting from the
> settlement date, while the fixing times from the startDate, which is n days
> before settlement. Could you please explain why the reference date is not
> the same for all the vectors?
The times vector are intend to be compatible to them in ql/Instrument/
capfloor.cpp (startTimes_, endTimes_ and fixingTimes_) to ensure consistent
pricing. Shortly spoken the accrual times are related to the term structure
therefore they are evaluated using the term structure reference date, which
is the settlement date. The fixing times are used to determ the volatility of
the caplets. Therefore they are evaluated from startDate. (see also
blackcapfloorengine.cpp)
> 3) the day counter used to calculate the times vectors in lfmprocess.cpp
> seems to be the index day counter (see line 44), but, to remain coherent
> with all the other QuantLib instruments, it wouldn\'t be better to use the
> term structure day counter instead?
The initial values of the LMM libor rates are taken from the indexed coupons,
which are using the method indexFixing() from the index object. Therefore the
initial rates are calculated using the day counter of the index (s.
xibor.cpp, line 108). To be consistent and to make Monte Carlo pricing easier
we are IMO better off using the index day counter for the times vectors.
Please notice that accrualStartTimes and accrualEndTimes aren't used
internally by the LiborForwardModelProcess. They are just calculated for
convenience reasons to make life for MC pricing easier, s. test-suite/
libormarketmodelprocess.cpp. (It is safe to use different day counters for
the term structure within the index or for the volatility term structure
within the LfmHullWhitePrameterization etc.)
hope that this helps and please comment on inconsistencies.
cheers
Klaus