CapeTools Generic Tree Pricer




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

Key TAGs | Excel Index | API Index


http://www.QuantTools.com

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


General Description


Functions to price generic Equity/FX/Commodity structures under a Binomial Tree framework. If your product's payoff does not refer to asset prices in the past (ie - Asian options) you can use this framework. This framework can also handle bermudan callable structures

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 Binomial Tree pricer, the pricing starts at the final 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).


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

Below is an example of a payoff table. This deal prices an callable structure (The Step column is not required).


StepEventDateRepeat?PayOff ColPayOff ColPayOff ColPayOff ColPayOff Col
1#19/07/2005#FALSEAsset(cRow) + 10pctInterp1D(1,cRow)GridRowSum(cRow, cCol-2, cCol-1)max(Cell(cRow, cCol-1) - _var1, 0.0)max(Cell(cRow, cCol-1), PVCol(cCol))
2#19/01/2006#FALSEAsset(cRow) + 10pctInterp1D(1,cRow)GridRowSum(cRow, cCol-2, cCol-1)max(Cell(cRow, cCol-1) - _var1, 0.0)max(Cell(cRow, cCol-1), PVCol(cCol))
3#19/07/2006#FALSEAsset(cRow) + 10pctInterp1D(1,cRow)GridRowSum(cRow, cCol-2, cCol-1)max(Cell(cRow, cCol-1) - _var1, 0.0)max(Cell(cRow, cCol-1), PVCol(cCol))
4#19/01/2007#FALSEAsset(cRow) + 10pctInterp1D(1,cRow)GridRowSum(cRow, cCol-2, cCol-1)max(Cell(cRow, cCol-1) - _var1, 0.0)max(Cell(cRow, cCol-1), PVCol(cCol))
5#19/07/2007#FALSEAsset(cRow) + 10pctInterp1D(1,cRow)GridRowSum(cRow, cCol-2, cCol-1)max(Cell(cRow, cCol-1) - _var1, 0.0)max(Cell(cRow, cCol-1), PVCol(cCol))
6#19/01/2008#FALSEAsset(cRow) + 10pctInterp1D(1,cRow)GridRowSum(cRow, cCol-2, cCol-1)max(Cell(cRow, cCol-1) - _var1, 0.0)max(Cell(cRow, cCol-1), PVCol(cCol))
7#19/07/2008#FALSEAsset(cRow) + 10pctInterp1D(1,cRow)GridRowSum(cRow, cCol-2, cCol-1)max(Cell(cRow, cCol-1) - _var1, 0.0)max(Cell(cRow, cCol-1), PVCol(cCol))
8#19/01/2009#FALSEAsset(cRow) + 10pctInterp1D(1,cRow)GridRowSum(cRow, cCol-2, cCol-1)max(Cell(cRow, cCol-1) - _var1, 0.0)max(Cell(cRow, cCol-1), PVCol(cCol))
9#19/07/2009#FALSEAsset(cRow) + 10pctInterp1D(1,cRow)GridRowSum(cRow, cCol-2, cCol-1)max(Cell(cRow, cCol-1) - _var1, 0.0)max(Cell(cRow, cCol-1), PVCol(cCol))
10#19/01/2010#FALSEAsset(cRow) + 10pctInterp1D(1,cRow)GridRowSum(cRow, cCol-2, cCol-1)max(Cell(cRow, cCol-1) - _var1, 0.0)max(Cell(cRow, cCol-1), PVCol(cCol))
11#19/07/2010#FALSEAsset(cRow) + 10pctInterp1D(1,cRow)GridRowSum(cRow, cCol-2, cCol-1)max(Cell(cRow, cCol-1) - _var1, 0.0)max(Cell(cRow, cCol-1), PVCol(cCol))
12#19/01/2011#FALSEAsset(cRow) + 10pctInterp1D(1,cRow)GridRowSum(cRow, cCol-2, cCol-1)max(Cell(cRow, cCol-1) - _var1, 0.0)max(Cell(cRow, cCol-1), PVCol(cCol))



The 'Repeat' column indicates that the instruction at the current step will be repeated for all the timesteps between this and the next.

Even though there are only 12 timesteps above, you can instruct the function to insert additional steps between each step.





Financial variables (case sensitive) :



Financial functions (case sensitive) :




Predefined functions (case sensitive) :



Predefined operators :



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


Some possible examples of what is possible now follow (Today = 19/07/2005):

Vanilla Option. (The Step column is not required).


StepEventDateRepeat?PayOff Col
1#19/07/2006#FALSEmax(Asset(cRow) - 10, 0)



Sum of two Vanilla Options (Call and Put). (The Step column is not required).


StepEventDateRepeat?PayOff Col
1#19/07/2006#FALSE100max(Asset(cRow) - Cell(cRow, cCol-1), 0) + PVCol(cCol)
2#19/07/2007#FALSE90max(Cell(cRow, cCol-1) - Asset(cRow), 0)



American Option (Repeat column and PVCol() function are used differently). (The Step column is not required).


StepEventDateRepeat?PayOff Col
1#19/07/2005#TRUEmax(Asset(cRow) - 10, PVCol(cCol))
1#19/07/2006#FALSEmax(Asset(cRow) - 10, PVCol(cCol))



Delayed start American Option (starts at 19/10/2005, today is 19/07/2005). (The Step column is not required).


StepEventDateRepeat?PayOff Col
1#19/10/2005#TRUEmax(Asset(cRow) - 10, PVCol(cCol))
1#19/10/2006#FALSEmax(Asset(cRow) - 10, PVCol(cCol))



Bermudan Option. (The Step column is not required).


StepEventDateRepeat?PayOff Col
1#19/07/2005#FALSEmax(Asset(cRow) - 10, PVCol(cCol))
2#19/01/2006#FALSEmax(Asset(cRow) - 10, PVCol(cCol))
3#19/07/2006#FALSEmax(Asset(cRow) - 10, PVCol(cCol))
4#19/01/2007#FALSEmax(Asset(cRow) - 10, PVCol(cCol))
5#19/07/2007#FALSEmax(Asset(cRow) - 10, PVCol(cCol))
6#19/01/2008#FALSEmax(Asset(cRow) - 10, PVCol(cCol))
7#19/07/2008#FALSEmax(Asset(cRow) - 10, PVCol(cCol))
8#19/01/2009#FALSEmax(Asset(cRow) - 10, PVCol(cCol))
9#19/07/2009#FALSEmax(Asset(cRow) - 10, PVCol(cCol))



Starts as American then becomes Bermudan Option. (The Step column is not required).


StepEventDateRepeat?PayOff Col
1#19/07/2005#TRUEmax(Asset(cRow) - 10, PVCol(cCol))
2#19/01/2006#TRUEmax(Asset(cRow) - 10, PVCol(cCol))
3#19/07/2006#TRUEmax(Asset(cRow) - 10, PVCol(cCol))
4#19/01/2007#TRUEmax(Asset(cRow) - 10, PVCol(cCol))
5#19/07/2007#FALSEmax(Asset(cRow) - 10, PVCol(cCol))
6#19/01/2008#FALSEmax(Asset(cRow) - 10, PVCol(cCol))
7#19/07/2008#FALSEmax(Asset(cRow) - 10, PVCol(cCol))
8#19/01/2009#FALSEmax(Asset(cRow) - 10, PVCol(cCol))
9#19/07/2009#FALSEmax(Asset(cRow) - 10, PVCol(cCol))



Chooser Option. (The Step column is not required).


StepEventDateRepeat?PayOff ColPayOff Col
1#19/07/2005#FALSEmax(PVCol(cCol-1), PVCol(cCol))
2#19/07/2006#FALSEmax(Asset(cRow) - 10, 0)max(10 - Asset(cRow), 0)



Compound Option (european on european). (The Step column is not required).


StepEventDateRepeat?PayOff Col
1#19/07/2006#FALSEmax(8.0 - PVCol(cCol), 0)
2#19/01/2007#FALSEmax(Asset(cRow) - 10, 0)



Compound Option (european on american, delayed by 2 days). (The Step column is not required).


StepEventDateRepeat?PayOff Col
1#19/07/2006#FALSEmax(8.0 - PVCol(cCol), 0)
221/07/2006#TRUEmax(Asset(cRow) - 10, PVCol(cCol))
3#19/07/2008#FALSEmax(Asset(cRow) - 10, 0)







Function list.

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