CapeTools Generic IR Tree Pricer




Welcome | Documentation format | QuantTools Groups | QuantTools Categories | Licence

Key TAGs | Excel Index | API Index


http://www.QuantTools.com

In total there are 5 functions present within the CapeTools Generic IR Tree Pricer category of functions.


General Description


Functions to price generic interest rate structures under an interest rate tree framework. If your product's payoff does not refer to LIBOR RATES in the past (ie - Asian options) you can use this framework.

Here are some general rules to keep in mind regarding how the payoff grid will be processed :

  1. Rows are time points. As you read down the grid you are moving forward in time.
  2. Columns represent your payoff formulas. You can create as many columns as you like. Columns are there to help you split up your payoff, or for a payoff function within a cell to refer to other cells within the grid.
  3. For the Tree pricer, the pricing starts at the last timestep and prices from left to right.
  4. Formula expressions within a cell cannot refer to formula cells to the right of itself.
  5. Formula expressions within a cell cannot refer to formula cells above itself (past time points).
  6. Given any step within your payoff table, the current step is defined as the fixing date and the next step is the payment date.
  7. No payoff formulas may be present within the very last timestep (used as a holder for the last rate payment date).


If you bear the 7 points in mind, this should aid you in constructing payoff grids.

Below is an example of a payoff table. This deal prices a cap (sum of caplets). The Step column is not required.


StepEventDatePayOff ColPayOff ColPayOff ColPayOff Col
1#21/07/2006#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1) + PVCol(cCol)
2#23/10/2006#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1) + PVCol(cCol)
3#22/01/2007#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1) + PVCol(cCol)
4#23/04/2007#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1) + PVCol(cCol)
5#23/07/2007#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1) + PVCol(cCol)
6#22/10/2007#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1) + PVCol(cCol)
7#21/01/2008#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1) + PVCol(cCol)
8#21/04/2008#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1) + PVCol(cCol)
9#21/07/2008#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1) + PVCol(cCol)
10#21/10/2008#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1) + PVCol(cCol)
11#21/01/2009#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1) + PVCol(cCol)
12#21/04/2009#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1) + PVCol(cCol)
13#21/07/2009#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1) + PVCol(cCol)
14#21/10/2009#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1) + PVCol(cCol)
15#21/01/2010#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1) + PVCol(cCol)
16#21/04/2010#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1) + PVCol(cCol)
17#21/07/2010#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1) + PVCol(cCol)
18#21/10/2010#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1) + PVCol(cCol)
19#21/01/2011#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1) + PVCol(cCol)
20#21/04/2011#Libor(cRow)ZCB(cRow)Caplet(_X, 0.0) * Cvg(cRow) * _NotionalCell(cRow, cCol-1)
21#21/07/2011#




Note the following financial definitions :

.


Financial variables (case sensitive) :



Financial functions (case sensitive) :



Because the the current step is defined as the fixing date and the next step is the payment date, you cannot price a caplet via the following expression [max(Libor(cRow) - strike, dTest)]. Expressions like these only work if the current step is the payment step. However we have provided the correct functions for you to price caplets/floorlets.




Predefined functions (case sensitive) :



Predefined operators :



Predefined operators that can be used within the first parameter of the ite() or iff() function :





Function list.

Copyright (c) 2003-2007 CapeTools - All Rights Reserved.