SlideShare a Scribd company logo
Luc_Faucheux_2020
NUMERICAL METHODS IN TREES
1
Luc_Faucheux_2020
Recombining Binomial trees
2
ยจ Fast, memory efficient, numerically stable and well understood (number of nodes ~ N^2)
ยจ Can be used to run Monte Carlo simulations on the trees
ยจ Arbitrage is respected ONLY on average on a slice
Luc_Faucheux_2020
Recombining Binomial trees
ยจ Cropping
ยจ Mean reversion
ยจ Storing curve in memory versus recalculating on the fly (storing discounts versus calling
exp())
ยจ Single volatility models for callable as an example
3
Luc_Faucheux_2020
Non-recombining binomial tree
ยจ Respect arbitrage free at EVERY node in the tree
ยจ Simplest to implement
ยจ Very close to Monte Carlo simulations
ยจ Very expensive in CPU and memory (number of nodes ~ 2^N)
4
Luc_Faucheux_2020
Monte Carlo simulation
ยจ Bundling
ยจ Regression
ยจ Choice of regression factors
ยจ Numerically noisy (accuracy ~ N^(-1/2))
ยจ Very CPU intensive
ยจ But very intuitive, very flexible, and as we saw in the Skew module, you can run a Monte
Carlo on a simpler model, or on an entire portfolio once you have created a portfolio map
5
Luc_Faucheux_2020
6
The life of a forward rate
Luc_Faucheux_2020
The glorious life of a valiant forward
ยจ f(t,t1,t2) is the forward rate between the time t1 and t2 on the curve observed at time t
ยจ t, t1 and t2 are by convention in absolute
ยจ f(t,t1,t2) evolves from (t) to (t+1) into f(t+1,t1,t2) with instantaneous volatility ๐œŽ(๐‘ก, ๐‘ก!, ๐‘ก")
ยจ f(t,t1,t2) โ€œdiesโ€ as the anchor overnight rate on the curve observed at time t2
ยจ โ€œRolling forwardโ€ convention as opposed to โ€œconstant forwardโ€
7
f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12)
f(1,1,2) f(1,6,7)
f(2,2,3) f(2,6,7)
f(3,3,4) f(3,6,7)
f(4,4,5) f(4,6,7)
f(5,5,6) f(5,6,7)
f(6,6,7)
f(7,7,8)
f(8,8,9)
f(9,9,10)
f(10,10,11)
f(11,11,12)
f(12,12,13)
Luc_Faucheux_2020
The glorious life of a valiant forward
ยจ Each line can be viewed as the new curve at time t
ยจ Today (t=0) curve is defined by the successive forwards f(0,0,1), f(0,1,2)โ€ฆ..
ยจ At time t the curve will then be defined by the successive forwards f(t,t,t+1), f(t,t+1,t+2),โ€ฆ
ยจ Similar to our HJM spreadsheet but sliding down the curve back one every time
8
f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12)
f(1,1,2) f(1,6,7)
f(2,2,3) f(2,6,7)
f(3,3,4) f(3,6,7)
f(4,4,5) f(4,6,7)
f(5,5,6) f(5,6,7)
f(6,6,7)
f(7,7,8)
f(8,8,9)
f(9,9,10)
f(10,10,11)
f(11,11,12)
f(12,12,13)
Luc_Faucheux_2020
The glorious life of a valiant forward
ยจ In practice, ๐œŽ ๐‘ก, ๐‘ก!, ๐‘ก" tends to 0 when (t=t1), and has a maximum in the โ€œbellyโ€ of the
curve
ยจ In reality, ๐œŽ ๐‘ก, ๐‘ก!, ๐‘ก" is also dependent on the actual forward f(t,t1,t2) as well as previous
instantaneous volatilities (GARCH for example) and previous forwards
ยจ A common assumption is for the volatility ๐œŽ ๐‘ก, ๐‘ก!, ๐‘ก" to be stationary for the same class of
forwards. A class of forward is defined as all forwards of equal maturity T: (t2-t1=T)
ยจ ๐œŽ ๐‘ก, ๐‘ก!, ๐‘ก" = '๐œŽ ๐‘ก! โˆ’ ๐‘ก
9
f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12)
f(1,1,2) f(1,6,7) f(1,11,12)
f(2,2,3) f(2,6,7) f(2,11,12)
f(3,3,4) f(3,6,7) f(3,11,12)
f(4,4,5) f(4,6,7) f(4,11,12)
f(5,5,6) f(5,6,7) f(5,11,12)
f(6,6,7) f(6,11,12)
f(7,7,8) f(7,11,12)
f(8,8,9) f(8,11,12)
f(9,9,10) f(9,11,12)
f(10,10,11) f(10,11,12)
f(11,11,12)
f(12,12,13)
Luc_Faucheux_2020
Regular Eurodollar options or caplet
ยจ Average variance for the forward over the life, option expires at the same time that the
forward
ยจ ๐œŽ". ๐‘ก! = โˆซ#$%
#$#!
๐œŽ" ๐‘ก, ๐‘ก!, ๐‘ก" . ๐‘‘๐‘ก = โˆซ#$%
#$#!
'๐œŽ" ๐‘ก! โˆ’ ๐‘ก . ๐‘‘๐‘ก
ยจ Pricing different option for different strikes K, and expressing those option prices in a
common model (say Lognormal or Normal) will return the skew and smile expressed within
that model
10
f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12)
f(1,1,2) f(1,11,12)
f(2,2,3) f(2,11,12)
f(3,3,4) f(3,11,12)
f(4,4,5) f(4,11,12)
f(5,5,6) f(5,11,12)
f(6,6,7) f(6,11,12)
f(7,7,8) f(7,11,12)
f(8,8,9) f(8,11,12)
f(9,9,10) f(9,11,12)
f(10,10,11) f(10,11,12)
f(11,11,12)
f(12,12,13)
Luc_Faucheux_2020
Mid-curve Eurodollar options or forward caplets
ยจ Average variance for the forward over the option, option expires BEFORE the forward at a
time Texp
ยจ ๐œŽ". ๐‘ก&'( = โˆซ#$%
#$#"#$
๐œŽ" ๐‘ก, ๐‘ก!, ๐‘ก" . ๐‘‘๐‘ก = โˆซ#$%
#$#"#$
'๐œŽ" ๐‘ก! โˆ’ ๐‘ก . ๐‘‘๐‘ก
ยจ Pricing different option for different strikes K, and expressing those option prices in a
common model (say Lognormal or Normal) will return the skew and smile expressed within
that model
11
f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12)
f(1,1,2) f(1,11,12)
f(2,2,3) f(2,11,12)
f(3,3,4) f(3,11,12)
f(4,4,5) f(4,11,12)
f(5,5,6) f(5,11,12)
f(6,6,7) f(6,11,12)
f(7,7,8) Texpiry f(7,11,12)
f(8,8,9)
f(9,9,10)
f(10,10,11)
f(11,11,12)
f(12,12,13)
Luc_Faucheux_2020
A swap is a weighted basket of forwards
ยจ Consider a swap with swap rate R (at-the-money swap rate)
โ€“ Nfloat periods on the Float side with forecasted forward f(i)
โ€“ indexed by i, with
โ€“ daycount fraction DCF(i),
โ€“ discount D(i)
โ€“ Notional N(i)
โ€“ Nfixed periods on the Fixed side,
โ€“ indexed by j, with
โ€“ daycount fraction DCF(j),
โ€“ discount D(j)
โ€“ Notional N(j)
!
!
๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘– = !
"
๐ท๐ถ๐น ๐‘— . ๐ท ๐‘— . ๐‘ ๐‘— . ๐‘…
12
Luc_Faucheux_2020
A swap rate is a weighted basket of forward rates
ยจ At-the-money swap rate equation: โˆ‘) ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘– = โˆ‘* ๐ท๐ถ๐น ๐‘— . ๐ท ๐‘— . ๐‘ ๐‘— . ๐‘…
ยจ Above equation is valid at all times before the swap start, forwards and discount factors
being calculated on the then current discount curve the usual way, if the period I on the
float side starts at time ts(i) and ends at time te(i), and the forward is โ€œalignedโ€ with the
period (no swap in arrears or CMS like)
ยจ ๐‘…(๐‘ก) = โˆ‘) ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘ก, ๐‘ก๐‘  ๐‘– , ๐‘ก๐‘’(๐‘–) /[โˆ‘* ๐ท๐ถ๐น ๐‘— . ๐ท ๐‘— . ๐‘ ๐‘— ]
ยจ โ€œfrozen numeraireโ€ approximation, expand above equation in first order in forward rates but
keeping the discount factors constant
ยจ ๐‘‘๐‘…(๐‘ก) = โˆ‘) ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– . ๐‘ ๐‘– . ๐‘‘๐‘“ ๐‘ก, ๐‘ก๐‘  ๐‘– , ๐‘ก๐‘’(๐‘–) /[โˆ‘* ๐ท๐ถ๐น ๐‘— . ๐ท ๐‘— . ๐‘ ๐‘— ]
ยจ Taking the square of the above yields the instantaneous volatility of the swap rate
ยจ ฮ›+
" . ๐‘‘๐‘ก =< ๐‘‘๐‘…" >=
โˆ‘)! โˆ‘)" ๐ท๐ถ๐น ๐‘–1 . ๐ท ๐‘–1 . ๐‘ ๐‘–1 . ๐ท๐ถ๐น ๐‘–2 . ๐ท ๐‘–2 . ๐‘ ๐‘–2 . < ๐‘‘๐‘“ ๐‘–1 . ๐‘‘๐‘“ ๐‘–2 > /
[โˆ‘*! โˆ‘*" ๐ท๐ถ๐น ๐‘—1 . ๐ท ๐‘—1 . ๐‘ ๐‘—1 ๐ท๐ถ๐น ๐‘—2 . ๐ท ๐‘—2 . ๐‘ ๐‘—2 ]
13
Luc_Faucheux_2020
A swap rate is a weighted basket of forward rates
ยจ instantaneous volatility of the swap rate
ยจ ฮ›+
"
. ๐‘‘๐‘ก =< ๐‘‘๐‘…" >=
โˆ‘)! โˆ‘)" ๐ท๐ถ๐น ๐‘–1 . ๐ท ๐‘–1 . ๐‘ ๐‘–1 . ๐ท๐ถ๐น ๐‘–2 . ๐ท ๐‘–2 . ๐‘ ๐‘–2 . < ๐‘‘๐‘“ ๐‘–1 . ๐‘‘๐‘“ ๐‘–2 > /
[โˆ‘*! โˆ‘*" ๐ท๐ถ๐น ๐‘—1 . ๐ท ๐‘—1 . ๐‘ ๐‘—1 ๐ท๐ถ๐น ๐‘—2 . ๐ท ๐‘—2 . ๐‘ ๐‘—2 ]
ยจ Where ๐‘‘๐‘“ ๐‘–1 = ๐‘‘๐‘“ ๐‘ก, ๐‘ก๐‘  ๐‘–1 , ๐‘ก๐‘’(๐‘–1) and ๐‘‘๐‘“ ๐‘–2 = ๐‘‘๐‘“ ๐‘ก, ๐‘ก๐‘  ๐‘–2 , ๐‘ก๐‘’(๐‘–2)
ยจ In abbreviated notation
ยจ < ๐‘‘๐‘“ ๐‘–1 . ๐‘‘๐‘“ ๐‘–2 >= ๐œŽ ๐‘–1 . ๐œŽ ๐‘–2 . ๐œŒ ๐‘–1, ๐‘–2 . ๐‘‘๐‘ก
ยจ So to calculate the instantaneous volatility of the swap rate you need the instantaneous
volatility of each forward BUT ALSO the instantaneous correlation matrix between the
forward constituting the weighted basket.
14
Luc_Faucheux_2020
A swap evolving to the first set
ยจ Example above : a 5x12 swap evolving on the volatility surface up until the first set
15
f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12)
f(1,1,2) f(1,5,6) f(1,6,7) f(1,7,8) f(1,8,9) f(1,9,10) f(1,10,11) f(1,11,12)
f(2,2,3) f(2,5,6) f(2,6,7) f(2,7,8) f(2,8,9) f(2,9,10) f(2,10,11) f(2,11,12)
f(3,3,4) f(3,5,6) f(3,6,7) f(3,7,8) f(3,8,9) f(3,9,10) f(3,10,11) f(3,11,12)
f(4,4,5) f(4,5,6) f(4,6,7) f(4,7,8) f(4,8,9) f(4,9,10) f(4,10,11) f(4,11,12)
f(5,5,6) f(5,6,7) f(5,7,8) f(5,8,9) f(5,9,10) f(5,10,11) f(5,11,12)
f(6,6,7)
f(7,7,8)
f(8,8,9)
f(9,9,10)
f(10,10,11)
f(11,11,12)
f(12,12,13)
Luc_Faucheux_2020
A swap evolving to maturity
ยจ Example above : a 5x12 swap evolving on the volatility surface up until maturity
16
f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12)
f(1,1,2) f(1,5,6) f(1,6,7) f(1,7,8) f(1,8,9) f(1,9,10) f(1,10,11) f(1,11,12)
f(2,2,3) f(2,5,6) f(2,6,7) f(2,7,8) f(2,8,9) f(2,9,10) f(2,10,11) f(2,11,12)
f(3,3,4) f(3,5,6) f(3,6,7) f(3,7,8) f(3,8,9) f(3,9,10) f(3,10,11) f(3,11,12)
f(4,4,5) f(4,5,6) f(4,6,7) f(4,7,8) f(4,8,9) f(4,9,10) f(4,10,11) f(4,11,12)
f(5,5,6) f(5,6,7) f(5,7,8) f(5,8,9) f(5,9,10) f(5,10,11) f(5,11,12)
f(6,6,7) f(6,7,8) f(6,8,9) f(6,9,10) f(6,10,11) f(6,11,12)
f(7,7,8) f(7,8,9) f(7,9,10) f(7,10,11) f(7,11,12)
f(8,8,9) f(8,9,10) f(8,10,11) f(8,11,12)
f(9,9,10) f(9,10,11) f(9,11,12)
f(10,10,11) f(10,11,12)
f(11,11,12)
f(12,12,13)
Luc_Faucheux_2020
A swaption is a mid-curve on the basket of forwards
ยจ Example above : a โ€œ5y7yโ€ swaption, or a 5y option on a 7y swap, equating the year to the
time units
ยจ Option expires at time t5, underlying is a swap starting at time t5 and ending at time t12
ยจ Note that only the first forward gets to experience the โ€œwhole lifeโ€ volatility, all the other
forwards essentially will experience the โ€œmid-curveโ€ or truncated volatility up to the
swaption expiry
17
f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12)
f(1,1,2) f(1,5,6) f(1,6,7) f(1,7,8) f(1,8,9) f(1,9,10) f(1,10,11) f(1,11,12)
f(2,2,3) f(2,5,6) f(2,6,7) f(2,7,8) f(2,8,9) f(2,9,10) f(2,10,11) f(2,11,12)
f(3,3,4) f(3,5,6) f(3,6,7) f(3,7,8) f(3,8,9) f(3,9,10) f(3,10,11) f(3,11,12)
f(4,4,5) f(4,5,6) f(4,6,7) f(4,7,8) f(4,8,9) f(4,9,10) f(4,10,11) f(4,11,12)
f(5,5,6) f(5,6,7) f(5,7,8) f(5,8,9) f(5,9,10) f(5,10,11) f(5,11,12)
f(6,6,7)
f(7,7,8)
f(8,8,9)
f(9,9,10)
f(10,10,11)
f(11,11,12)
f(12,12,13)
Luc_Faucheux_2020
Market practice assumption
ยจ Volatility is assumed to be stationary: ๐œŽ ๐‘ก, ๐‘ก!, ๐‘ก" = '๐œŽ ๐‘ก! โˆ’ ๐‘ก , ๐‘ก"
ยจ Correlation is also stationary: ๐œŒ ๐‘–1, ๐‘–2 = ๐œŒ( ๐‘ก๐‘ (๐‘–1) โˆ’ ๐‘ก๐‘ (๐‘–2) )
ยจ Parametrization of the volatility and correlation (Ribbonato, ..)
ยจ ๐œŒ ๐‘–1, ๐‘–2 = ๐œŒ ๐‘ก๐‘  ๐‘–1 โˆ’ ๐‘ก๐‘  ๐‘–2 = ๐ฟ, + 1 โˆ’ ๐ฟ, . exp{
-|#/ )! -#/ )" |
0%
}
โ€“ ๐ฟ# is the long term (asymptotic) level of correlation
โ€“ ๐‘‡# is the characteristic time scale (half-life) for the correlation to decrease from 100%
perpendicular to the diagonal
18
Luc_Faucheux_2020
Correlation matrices โ€“ 100% correlation
19
f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12)
f(0,0,1) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100%
f(0,1,2) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100%
f(0,2,3) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100%
f(0,3,4) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100%
f(0,4,5) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100%
f(0,5,6) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100%
f(0,6,7) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100%
f(0,7,8) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100%
f(0,8,9) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100%
f(0,9,10) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100%
f(0,10,11) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100%
f(0,11,12) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100%
rho_inf 100%
TC 4
Luc_Faucheux_2020
Correlation matrices โ€“ 0% correlation
20
f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12)
f(0,0,1) 100% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0%
f(0,1,2) 0% 100% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0%
f(0,2,3) 0% 0% 100% 0% 0% 0% 0% 0% 0% 0% 0% 0%
f(0,3,4) 0% 0% 0% 100% 0% 0% 0% 0% 0% 0% 0% 0%
f(0,4,5) 0% 0% 0% 0% 100% 0% 0% 0% 0% 0% 0% 0%
f(0,5,6) 0% 0% 0% 0% 0% 100% 0% 0% 0% 0% 0% 0%
f(0,6,7) 0% 0% 0% 0% 0% 0% 100% 0% 0% 0% 0% 0%
f(0,7,8) 0% 0% 0% 0% 0% 0% 0% 100% 0% 0% 0% 0%
f(0,8,9) 0% 0% 0% 0% 0% 0% 0% 0% 100% 0% 0% 0%
f(0,9,10) 0% 0% 0% 0% 0% 0% 0% 0% 0% 100% 0% 0%
f(0,10,11) 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 100% 0%
f(0,11,12) 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 100%
rho_inf 0%
TC 0.1
Luc_Faucheux_2020
Correlation matrices โ€“ market correlation
21
f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12)
f(0,0,1) 100% 88% 77% 69% 61% 55% 49% 45% 41% 38% 35% 33%
f(0,1,2) 88% 100% 88% 77% 69% 61% 55% 49% 45% 41% 38% 35%
f(0,2,3) 77% 88% 100% 88% 77% 69% 61% 55% 49% 45% 41% 38%
f(0,3,4) 69% 77% 88% 100% 88% 77% 69% 61% 55% 49% 45% 41%
f(0,4,5) 61% 69% 77% 88% 100% 88% 77% 69% 61% 55% 49% 45%
f(0,5,6) 55% 61% 69% 77% 88% 100% 88% 77% 69% 61% 55% 49%
f(0,6,7) 49% 55% 61% 69% 77% 88% 100% 88% 77% 69% 61% 55%
f(0,7,8) 45% 49% 55% 61% 69% 77% 88% 100% 88% 77% 69% 61%
f(0,8,9) 41% 45% 49% 55% 61% 69% 77% 88% 100% 88% 77% 69%
f(0,9,10) 38% 41% 45% 49% 55% 61% 69% 77% 88% 100% 88% 77%
f(0,10,11) 35% 38% 41% 45% 49% 55% 61% 69% 77% 88% 100% 88%
f(0,11,12) 33% 35% 38% 41% 45% 49% 55% 61% 69% 77% 88% 100%
rho_inf 20%
TC 6
Luc_Faucheux_2020
Parametrization of the volatility
ยจ Usually assume a bell shape, with a maximum and a long term asymptote, with simple
analytical expression in order to integrate easily, and have numerically stable calibration
(sensitivity of the parameters to the market input are well behaved)
ยจ We choose the following
โ€“ .๐œŽ 0 = .๐œŽ$%&
โ€“ .๐œŽ โˆž = .๐œŽ'
โ€“ .๐œŽ ๐‘‡$() = .๐œŽ$()
โ€“ If ๐‘ก < ๐‘‡$(), we use .๐œŽ*
๐‘ก = .๐œŽ$%&
*
+ .๐œŽ$()
*
โˆ’ .๐œŽ$%&
*
โˆ— (
+
,!"#
)
โ€“ If ๐‘ก >= ๐‘‡$(), we use .๐œŽ*
๐‘ก = .๐œŽ$()
*
+ .๐œŽ'
*
โˆ’ .๐œŽ$()
*
โˆ— [1 โˆ’ exp
- +-,!"#
,$
]
22
Luc_Faucheux_2020
Volatility โ€“ case 1
23
TMAX 2
SIG(MIN) 5%
SIG(MAX) 20%
SIG(INFINITY) 5%
T(INFINITY) 2
Luc_Faucheux_2020
Volatility โ€“ case 2
24
TMAX 2
SIG(MIN) 5%
SIG(MAX) 20%
SIG(INFINITY) 30%
T(INFINITY) 2
Luc_Faucheux_2020
Volatility โ€“ case 3
25
TMAX 2
SIG(MIN) 30%
SIG(MAX) 20%
SIG(INFINITY) 5%
T(INFINITY) 2
Luc_Faucheux_2020
Volatility โ€“ case 4
26
TMAX 1
SIG(MIN) 0%
SIG(MAX) 20%
SIG(INFINITY) 0%
T(INFINITY) 0
Luc_Faucheux_2020
Calibration of the parameters to the market
27
Luc_Faucheux_2020
Perfect correlation guess (100%)
28
Luc_Faucheux_2020
Perfect decorrelation (0% except on diagonal)
29
Luc_Faucheux_2020
Flows and Market participants on the Swaption Grid
30
Lots of overlapping information
Luc_Faucheux_2020
One swaption
ยจ A t5-t12 swaption evolving on the forward volatility surface
31
f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12)
f(1,1,2) f(1,5,6) f(1,6,7) f(1,7,8) f(1,8,9) f(1,9,10) f(1,10,11) f(1,11,12)
f(2,2,3) f(2,5,6) f(2,6,7) f(2,7,8) f(2,8,9) f(2,9,10) f(2,10,11) f(2,11,12)
f(3,3,4) f(3,5,6) f(3,6,7) f(3,7,8) f(3,8,9) f(3,9,10) f(3,10,11) f(3,11,12)
f(4,4,5) f(4,5,6) f(4,6,7) f(4,7,8) f(4,8,9) f(4,9,10) f(4,10,11) f(4,11,12)
f(5,5,6) f(5,6,7) f(5,7,8) f(5,8,9) f(5,9,10) f(5,10,11) f(5,11,12)
f(6,6,7)
f(7,7,8)
f(8,8,9)
f(9,9,10)
f(10,10,11)
f(11,11,12)
f(12,12,13)
Luc_Faucheux_2020
A caplet and two distinct swaptions on the grid
ยจ A t5-t12 swaption (orange)
ยจ A t7 caplet (mauve)
ยจ A t9-t12 swaption (dark orange)
ยจ On the typical swaption grid, the t5-t12 and the t9-t12 are different distinct points with no
overlap
ยจ The caplet is also one point. Even though those 3 structures pan overlapping areas of the
forward volatility surface of different sizes, they all get condensed to one point on the
swaption grid
32
f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12)
f(1,1,2) f(1,5,6) f(1,6,7) f(1,7,8) f(1,8,9) f(1,9,10) f(1,10,11) f(1,11,12)
f(2,2,3) f(2,5,6) f(2,6,7) f(2,7,8) f(2,8,9) f(2,9,10) f(2,10,11) f(2,11,12)
f(3,3,4) f(3,5,6) f(3,6,7) f(3,7,8) f(3,8,9) f(3,9,10) f(3,10,11) f(3,11,12)
f(4,4,5) f(4,5,6) f(4,6,7) f(4,7,8) f(4,8,9) f(4,9,10) f(4,10,11) f(4,11,12)
f(5,5,6) f(5,6,7) f(5,7,8) f(5,8,9) f(5,9,10) f(5,10,11) f(5,11,12)
f(6,6,7) f(6,7,8) f(6,9,10) f(6,10,11) f(6,11,12)
f(7,7,8) f(7,9,10) f(7,10,11) f(7,11,12)
f(8,8,9) f(8,9,10) f(8,10,11) f(8,11,12)
f(9,9,10) f(9,10,11) f(9,11,12)
f(10,10,11)
f(11,11,12)
f(12,12,13)
Luc_Faucheux_2020
You have priced too much, and not enough
ยจ The options market is incredibly hard to calibrate
ยจ Some points have lots of overlapping market info
ยจ Large gaps in between, requiring either
โ€“ Interpolation on the market inputs (on the grid) with very little theoretical justification
โ€“ Interpolation on the model parameters, running the risk of being โ€œoff marketโ€
33
Luc_Faucheux_2020
34
An example of tree: BDT
Black Derman Toy
Luc_Faucheux_2020
35
Building the tree
Luc_Faucheux_2020
An illustrated example : Black Derman Toy
ยจ Work through a tree implementation of the BDT model (short rate model)
ยจ Most widely used model when modeling fixed income securities
ยจ Illustrate some of the relevant issues around numerical implementation
ยจ Work through some of the math to illustrate some pitfalls when switching from:
โ€“ The numerical tree implementation
โ€“ To the dynamics (Stochastic Differential Equation or SDE)
โ€“ To the PDE for the PDF (Partial Differential Equation for the Probability Density Function)
โ€“ To the grid implementation
36
Luc_Faucheux_2020
The BDT model tree implementation
37
t0
t1
t2
t3
t4
(0,0)
(1,0)
(1,1)
(2,0)
(2,1)
(2,2)
(3,0)
(3,1)
(3,2)
(3,3)
(4,0)
(4,1)
(4,2)
(4,3)
(4,4)
Luc_Faucheux_2020
The BDT model tree implementation
38
tk tk+1
X(k,i)
X(k+1,i+1)
X(k+1,i)
ยจ We index the stochastic variable ๐‘‹(๐‘˜, ๐‘–), where ๐‘˜ is the period index and ๐‘– is the position
index
ยจ We choose a time step to be ๐›ฟ๐‘ก = ๐œ
ยจ At first we assume this time step to be constant
ยจ The spacing for a given period is ๐‘‹ ๐‘˜, ๐‘– + 1 โˆ’ ๐‘‹ ๐‘˜, ๐‘– = ๐›ฟ๐‘‹ for all index ๐‘–
ยจ For a given period, all nodes in the tree are equally spaced
ยจ We start with the assumption that the spacing ๐›ฟ๐‘‹ is a constant
Luc_Faucheux_2020
Building a BDT tree I
ยจ For sake of simplicity, we go back to time spacing of unit 1, and neglect any holidays and
daycount fraction details like we did in the curve module
ยจ We have the forward yield curve as input ๐‘“(๐‘ก1, ๐‘ก1-!)
ยจ We can compute the spot discount factors and the forward discount factors
ยจ Forward discount ๐‘‘1 = ๐‘‘(๐‘ก1) which here we chose to be ๐‘‘ ๐‘ก1 =
!
!23(#&,#&'!)
ยจ The spot discount curve is such that ๐ท 0 = 1, ๐‘‘% = ๐‘‘ 0 = 1
and ๐ท ๐‘ก12! = ๐ท ๐‘ก1 . ๐‘‘(๐‘ก12!)
39
0-1 1-2 2-3 3-4 4-5 5-6 6-7
Y0_fwd 1 1.5 2 2.5 3 3.25 3.5
D0_spot 0.990099 0.975467 0.95634 0.933015 0.90584 0.877327 0.847658
D0_fwd 0.990099 0.985222 0.980392 0.97561 0.970874 0.968523 0.966184
VOL_spot 0.2 0.3 0.3 0.4 0.5 0.7
STDEV 0.08 0.36 0.54 1.28 2.5 5.88
Luc_Faucheux_2020
Building a BDT tree II
ยจ Forward discount ๐‘‘1 = ๐‘‘(๐‘ก1) which here we chose to be ๐‘‘ ๐‘ก1 =
!
!23(#&,#&'!)
ยจ Note that this is more a choice on how we define the forward yield curve.
ยจ As we kept repeating in the curve module, the only thing that matters are the discount
factors. Yields are not unique and depend on conventions, holidays, daycount fraction and
assumptions to compute them. Discount factors ARE unique
ยจ We also have as input to the models the volatility curve for the variable we are using the
build the BDT tree. In our case we will use the forward.
ยจ Note that you could use another variable
ยจ The goal is to calibrate the model inputs to the market on observable prices
ยจ So if you build the tree on a given variable, you will get a different value for the volatility
inputs after calibration but you will recover the market prices
40
Luc_Faucheux_2020
Building a BDT tree III
41
0-1 1-2 2-3 3-4 4-5 5-6 6-7
Y0_fwd 1 1.5 2 2.5 3 3.25 3.5
D0_spot 0.990099 0.975467 0.95634 0.933015 0.90584 0.877327 0.847658
D0_fwd 0.990099 0.985222 0.980392 0.97561 0.970874 0.968523 0.966184
VOL_spot 0.2 0.3 0.3 0.4 0.5 0.7
STDEV 0.08 0.36 0.54 1.28 2.5 5.88
ยจ In our case we chose the forward to be lognormally distributed, and so this volatility will be
the annualized lognormal yield volatility in % per year
ยจ Again, the point is that because there are going to be so many assumptions and numerical
computations that will be different for each implementation of a tree, you cannot really
compare the model inputs between two models, just like you cannot really compare a
normal volatility to a lognormal one
ยจ The only thing you can compare are the prices produced by the model
Luc_Faucheux_2020
Building a BDT tree IV
ยจ We create a grid of forward yields ๐‘‹(๐‘˜, ๐‘–)
ยจ We chose for the โ€œbottomโ€ value ๐‘‹ ๐‘˜, 0 =
3(#&,#&'!)
(!2
((&)
+
)^(1)
, where ๐‘‰(๐‘˜) is the volatility input
ยจ The idea is to start with a distribution of forwards centered around the input one ๐‘“(๐‘ก1, ๐‘ก1-!)
and with a standard deviation that will be close to the volatility input
ยจ Each successive value for a given period going up the nodes in the tree is given by
ยจ ๐‘‹ ๐‘˜, ๐‘– + 1 = ๐‘‹ ๐‘˜, ๐‘– . [1 + ๐‘‰ ๐‘˜ ]1
42
Y_fwd 1 1.498501 1.994013 2.488784 2.97612 3.209678 3.427392
1.501499 2.005996 2.51125 3.024024 3.290726 3.573885
2.01805 2.533919 3.072699 3.373821 3.72664
2.556793 3.122158 3.459014 3.885924
3.172413 3.546359 4.052015
3.635909 4.225206
4.405799
Luc_Faucheux_2020
Building a BDT tree V
ยจ Note that the goal is to start with a โ€reasonableโ€ state for the tree
ยจ The calibration process will automatically adjust to the solution we need
ยจ Note that the BDT model is somewhat different from the other models out there
ยจ BDT does NOT start with an equation, BDT essentially starts from a numerical
implementation and just โ€œlet the calibration takes care of thingsโ€
ยจ This makes the underlying dynamics a somewhat complicated beast to express in the usual
SDE and PDE
ยจ We will show in a simple case how to do this, if only to point out the pitfalls and the gaps
between the SDE world and the discrete numerical implementation world
43
Luc_Faucheux_2020
Building a BDT tree VI
ยจ This pragmatic approach (again does not sound smart at first because you are just using
Excel, you are not writing complicated equations), turns out to be the smart one in the end.
ยจ This is also what makes BDT (and the tweaks like BK,..) one of the most commonly used
model in Finance, it is intuitive, it is robust, it is fast
ยจ Note that BDT also has drawbacks, the calibration process can be at time unstable, and
because of the discrete nature of it, it is also numerically โ€œnoisyโ€. For computing the Greeks
using a BDT, depending on the payoff of the option that you are pricing, you will get โ€œjumpsโ€
in value when you are crossing a node in your valuation
ยจ Note that the number of nodes in the BDT tree increases linearly with the number of time
steps for a given period, and thus the total number of nodes scales as the square of the
number of time steps, making reducing the noise by increasing the number of nodes and
times steps a computationally expensive proposition
44
Luc_Faucheux_2020
Building a BDT tree VII
ยจ From each forward ๐‘‹(๐‘˜, ๐‘–) at each node we compute the Discount factor
ยจ ๐‘‘ ๐‘˜, ๐‘– = 1/(1 + ๐‘‹ ๐‘˜, ๐‘– )
ยจ We now have built a tree where at each node we have the forward and the discount factor
45
D_fwd 0.990099 0.985236 0.98045 0.975717 0.971099 0.968901 0.966862
0.985207 0.980335 0.975503 0.970647 0.968141 0.965494
0.980219 0.975287 0.970189 0.967363 0.964072
0.975069 0.969724 0.966566 0.962594
0.969251 0.965751 0.961058
0.964917 0.959461
0.957801
Luc_Faucheux_2020
Building a BDT tree VIII
ยจ We also attach to each node the usual binomial probability in order to recover the Gaussian
distribution
ยจ The probability at each node is the probability to end up at that given node
ยจ We assume here for simplicity equal probability for โ€œupโ€ and โ€œdownโ€ to be 0.5
ยจ Note that there are tons of numerical schemes out there to change the probabilities and
thus affect the drift inside the tree, but this does not change the fundamentals of the model
ยจ Note also that now that we have a tree, sometimes Monte-Carlo simulation are run โ€œon the
treeโ€ in order ot price path-dependent structures
46
PROBA 1 0.5 0.25 0.125 0.0625 0.03125 0.015625
0.5 0.5 0.375 0.25 0.15625 0.09375
0.25 0.375 0.375 0.3125 0.234375
0.125 0.25 0.3125 0.3125
0.0625 0.15625 0.234375
0.03125 0.09375
0.015625
Luc_Faucheux_2020
47
Calibrating the tree
Luc_Faucheux_2020
Calibrating a BDT tree I
ยจ We now have built this tree, but we need to calibrate it to market
ยจ This is usually a multi step process usually performed in a sequential manner (but not
always)
ยจ The first step is usually ensuring that we recover the discount curve, this will ensure that we
will be pricing bonds and swaps and zero coupon bonds to market
ยจ This is where the numerical implementation of a solver for example, is crucial, in particular
for the stability of the solution
48
Luc_Faucheux_2020
Calibrating a BDT tree II
ยจ We calculate the expectation for the discount (remember that it should be probability
weighted)
ยจ This is obviously not equal to our input discount curve
ยจ We need to โ€œshiftโ€ the forwards in order to solve for the discount
49
Luc_Faucheux_2020
Calibrating a BDT tree III
50
K 0.999899 1.000063 0.997004 0.99103 0.976221 0.950988 0.899574
NEW_Y 0.999899 1.498596 1.98804 2.466459 2.90535 3.052366 3.083193
1.501593 1.999986 2.488724 2.952115 3.129442 3.214975
2.012004 2.51119 2.999633 3.208465 3.352389
2.533859 3.047916 3.289482 3.495676
3.096976 3.372546 3.645088
3.457707 3.800886
3.963343
NEW_D 0.9901 0.985235 0.980507 0.975929 0.971767 0.97038 0.97009
0.985206 0.980392 0.975717 0.971325 0.969655 0.968852
0.980277 0.975503 0.970877 0.968913 0.967564
0.975288 0.970422 0.968153 0.966224
0.969961 0.967375 0.964831
0.966579 0.963383
0.961877
E(D) 0.9901 0.985221 0.980392 0.97561 0.970874 0.968524 0.966184
D_0_fwd 0.990099 0.985222 0.980392 0.97561 0.970874 0.968523 0.966184
distance 1.000001 0.999999 1 1 1 1.000001 1
Luc_Faucheux_2020
Calibrating a BDT tree IV
ยจ This is where we get into the wonderful world of numerical solvers
ยจ Note that we are โ€œbootstrappingโ€ the factors along the tree
ยจ So a little error at one level needs to be corrected at the next level, potentially creating
instabilities
51
Luc_Faucheux_2020
52
Pricing in the tree
Luc_Faucheux_2020
Pricing a caplet
ยจ Payoff = MAX(Forward-Strike, 0)
53
Luc_Faucheux_2020
Pricing a caplet - II
ยจ The cash flows are then discounted back inside the tree accumulating the cash flows
54
Luc_Faucheux_2020
Pricing a cap
ยจ From each forward ๐‘‹(๐‘˜, ๐‘–) at each node we compute the discount factor
ยจ ๐‘‘ ๐‘˜, ๐‘– = 1/(1 + ๐‘‹ ๐‘˜, ๐‘– ), (assuming the usual convention of unity for daycount fraction)
ยจ At each node the payoff is ๐ถ๐‘Ž๐‘ ๐‘˜, ๐‘– = ๐‘€๐ด๐‘‹(๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐พ, 0)
ยจ The discounting back is given by:
ยจ ๐ถ๐‘Ž๐‘ ๐‘˜, ๐‘– =
!
"
. ๐‘‘ ๐‘˜, ๐‘– . ๐ถ๐‘Ž๐‘ ๐‘˜ + 1, ๐‘– + 1 + ๐ถ๐‘Ž๐‘ ๐‘˜ + 1, ๐‘– + ๐‘€๐ด๐‘‹ ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐พ, 0 . ๐‘‘
ยจ If the cap is paid at the end of the period, ๐‘‘ = ๐‘‘(๐‘˜, ๐‘–) otherwise ๐‘‘ = 1
55
tk tk+1
X(k,i)
X(k+1,i+1)
X(k+1,i)
Luc_Faucheux_2020
Pricing a swap in BDT
ยจ In the โ€swapโ€ world you do not need to build a tree, you only need a discount curve and use
simple formulas like SUMPRODUCT
56
Luc_Faucheux_2020
Pricing a swap in BDT - II
ยจ We saw this when looking at the convexity
ยจ This is because the right way (the right measure) to look at cashflows is the discount curve.
ยจ A swap fixed leg is the sum of fixed payment times discount factors
ยจ Same for the Float leg (a little more complicated)
ยจ But in fact a swap PV is a linear sum of discount factors
ยจ As such it exhibits ZERO convexity against the discount curve
ยจ And so to price a swap you do not need a volatility curve, nor an option model, but if you
are pricing a derivatives on a swap (like a swaption), you better make sure that your option
model does recover the same price for the underlier
ยจ This sounds obvious, but you would be surprised how many options models out there are
not repricing the underlier correctly
ยจ Letโ€™s look back at the โ€œyield curveโ€ (zero vol) swap valuation
57
Luc_Faucheux_2020
A swap is a weighted basket of forwards: AT-THE-MONEY
ยจ Consider a swap with swap rate R (at-the-money swap rate)
โ€“ Nfloat periods on the Float side with forecasted forward f(i)
โ€“ indexed by i, with
โ€“ daycount fraction DCF(i),
โ€“ discount D(i)
โ€“ Notional N(i)
โ€“ Nfixed periods on the Fixed side,
โ€“ indexed by j, with
โ€“ daycount fraction DCF(j),
โ€“ discount D(j)
โ€“ Notional N(j)
๐‘ƒ๐‘‰ ๐น๐ฟ๐‘‚๐ด๐‘‡ = )
,
๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘– = )
-
๐ท๐ถ๐น ๐‘— . ๐ท ๐‘— . ๐‘ ๐‘— . ๐‘… = ๐‘ƒ๐‘‰(๐น๐ผ๐‘‹๐ธ๐ท)
58
Luc_Faucheux_2020
Standard Swap periods
ยจ On the fixed side, coupon payment at the end of the period
โ€“ Period start date (psj)
โ€“ Adjusted period start date (psj_adj)
โ€“ Period end date (pej)
โ€“ Adjusted period end date (pej_adj)
โ€“ Payment date (pmj)
โ€“ PV of a period ๐‘ƒ๐‘‰ ๐‘— = ๐ท๐ถ๐น ๐‘— . ๐ท ๐‘— . ๐‘ ๐‘— . ๐‘… = ๐ท๐ถ๐น ๐‘๐‘ ๐‘—./-, ๐‘๐‘’๐‘—_๐‘Ž๐‘‘๐‘— . ๐ท ๐‘๐‘š- . ๐‘ ๐‘— . ๐‘…
ยจ On the float side, floating rate sets at the beginning of the period, and pays at the end (Libor in advance or
standard Libor swap, as opposed to Libor in arrears)
โ€“ PV of a period (swaplet) ๐‘ƒ๐‘‰ ๐‘– = ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘–
โ€“ ๐ท๐ถ๐น ๐‘– = ๐ท๐ถ๐น ๐‘๐‘ ๐‘–./-, ๐‘๐‘’๐‘–./- and ๐ท ๐‘– = ๐ท(๐‘๐‘š๐‘–)
โ€“ ๐ท ๐‘๐‘’๐‘– = ๐ท ๐‘๐‘ ๐‘– โˆ—
0
01234 56,,58, .:(,)
or
โ€“ ๐ท๐ถ๐น ๐‘๐‘’๐‘–, ๐‘๐‘ ๐‘– . ๐‘“ ๐‘– = [1 โˆ’
2 58,
2 56,
]
59
Luc_Faucheux_2020
Zero coupon bonds on todayโ€™s curve with zero volatility
ยจ Zero-coupon bonds ๐‘ƒ ๐‘ก0, ๐‘ก; = ๐ท ๐‘ก0, ๐‘ก; = โ„๐ท(๐‘ก;) ๐ท(๐‘ก0)
ยจ โ€œ๐‘ƒ ๐‘ก0, ๐‘ก; is the price at time ๐‘ก0of a zero-coupon bond maturing at time ๐‘ก;โ€
ยจ โ€œ๐‘ƒ ๐‘ก0, ๐‘ก; is the price at time ๐‘ก0of a risk-free zero-coupon bond with principal $1 maturing at time ๐‘ก;โ€
ยจ IT SHOULD REALLY SAY : โ€œUsing todayโ€™s discount curve at time ๐‘ก<, ๐‘ƒ ๐‘ก0, ๐‘ก; is the price of a risk-free zero-
coupon bond with principal $1 maturing at time ๐‘ก;, and the value of that price has been forward
discounted to time ๐‘ก0, again using todayโ€™s discount curveโ€
ยจ People love the zero coupon bonds, in many cases they make those the stochastic drivers of the rates
model (HJM for example)
60
Luc_Faucheux_2020
Expected Values in a non deterministic world
ยจ Simply compounded spot interest rate: ๐ฟ(๐‘ก0, ๐‘ก;)
ยจ ๐ฟ ๐‘ก0, ๐‘ก; =
0=>(?!,?")
/@: ?!,?" .>(?!,?")
or more simply ๐‘ƒ ๐‘ก0, ๐‘ก; =
0
01/@: ?!,?" .A(?!,?")
ยจ Related to how to roll the curve forward at zero volatility,
ยจ Method 2
โ€“ Compute the discount factors curve
โ€“ Divide all discount factors by the overnight d(t0,t1)=d(t1)
โ€“ Use new discount factor curve starting at t1
ยจ So at zero volatility, when t goes from t0 to t1, the price of a zero discount bonds ๐‘ƒ ๐‘ก0, ๐‘ก; is unchanged:
๐‘ƒ ๐‘ก@, ๐‘ก0, ๐‘ก; = ๐‘ƒ 0, ๐‘ก0, ๐‘ก; where ๐‘ก@ is the โ€œcurveโ€ time in the future.
ยจ NOW, if the volatility is non zero, ๐‘ƒ 1, ๐‘ก0, ๐‘ก; โ‰  ๐‘ƒ 0, ๐‘ก0, ๐‘ก;
ยจ It is only true ON AVERAGE < ๐‘ƒ 1, ๐‘ก0, ๐‘ก; >= ๐‘ƒ 0, ๐‘ก0, ๐‘ก; or EXP ๐‘ƒ 1, ๐‘ก0, ๐‘ก; = ๐‘ƒ 0, ๐‘ก0, ๐‘ก; where EXP is
the Expected value (average).
ยจ This is called the rolling numeraire or โ€œbank accountโ€ numeraire: if you deposit ๐‘ƒ 0,0, ๐‘ก; today to get $1
at time t2, ON AVERAGE you should also be able to invest ๐‘ƒ 0,0, ๐‘ก; until time t1, then deposit it until
time t2 and still get $1
61
Luc_Faucheux_2020
Fixed Leg of a swap
ยจ A fixed leg of a swap is a series of fixed cash flows.
ยจ Now matter how the curve moves, ON AVERAGE the price of zero coupon bonds is conserved
ยจ < ๐‘ƒ ๐‘ก@, ๐‘ก0, ๐‘ก; > = ๐‘ƒ 0, ๐‘ก0, ๐‘ก; and ๐‘ƒ ๐‘ก@, ๐‘ก0, ๐‘ก; =
2(?#,?")
2(?#,?!)
ยจ In particular when t2=t1+1, ๐‘ƒ ๐‘ก@, ๐‘ก0, ๐‘ก0 + 1 =
2(?#,?!10)
2(?#,?!)
= ๐‘‘(๐‘ก@, ๐‘ก0)
ยจ So < ๐‘ƒ ๐‘ก@, ๐‘ก0, ๐‘ก0 + 1 > = <
2 ?#,?!10
2 ?#,?!
> = < ๐‘‘(๐‘ก@, ๐‘ก0)> = ๐‘ƒ 0, ๐‘ก0, ๐‘ก0 + 1 = ๐‘‘(0, ๐‘ก0)
ยจ Also by recurrence < ๐ท 1, ๐‘ก0 > โˆ— ๐‘‘ 0,1 = ๐ท(0, ๐‘ก0) at time t=0
ยจ At time t=1, ๐‘‘ 1,2 is fixed and has zero volatility (will drop when t goes from 1 to 2)
ยจ So < ๐ท 2, ๐‘ก0 > โˆ— ๐‘‘ 1,2 = ๐ท(1, ๐‘ก0) at time t=1
ยจ So at every point in the future, if you invest then a unit of currency and โ€rollโ€ it forward (bank
numeraire), the expected gain is todayโ€™s gain if you had entered into the same contract.
ยจ Still another way to say, if you invest one unit of currency for a given length of time t, it is equivalent to
investing overnight and rolling the proceeds everyday (the arbitrage free framework does not take credit
into consideration)
62
Luc_Faucheux_2020
Floating leg of a swap
ยจ A floating swaplet pays ๐ท๐ถ๐น ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘– and its PV is ๐‘ƒ๐‘‰ ๐‘– = ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘–
ยจ Where ๐ท๐ถ๐น ๐‘๐‘’๐‘–, ๐‘๐‘ ๐‘– . ๐‘“ ๐‘– = [1 โˆ’
2 58,
2 56,
]
ยจ We know from the fixed rate leg that < ๐ท ๐‘– >= ๐ท ๐‘– , but what about < ๐ท ๐‘– . ๐‘“ ๐‘– > ?
ยจ Note, to be exact < ๐ท ๐‘– >= ๐ท ๐‘– should really read โˆ?#BC?$
๐ธ๐‘‹๐‘ƒ{๐‘ก@, ๐‘‘(๐‘ก@, ๐‘ก@ + 1)}, where
๐ธ๐‘‹๐‘ƒ ๐‘ก@, ๐‘‘ ๐‘ก@, ๐‘ก@ + 1 is the expected value of the overnight discount between the time (tc) and (tc+1),
observed up until time tc (because it drops off the curve after tc, and before tc, no matter where you
observe it, its expected value is equal to todayโ€™s value)
ยจ ๐ธ๐‘‹๐‘ƒ ๐‘ก@, ๐‘‘ ๐‘ก@, ๐‘ก@ + 1 = ๐ธ๐‘‹๐‘ƒ ๐‘ก < ๐‘ก@, ๐‘‘ ๐‘ก@, ๐‘ก@ + 1 = ๐‘‘(๐‘ก@ + 1)
ยจ Back to < ๐ท ๐‘– . ๐‘“ ๐‘– > , there is a little trick
63
Luc_Faucheux_2020
Floating leg of a swap
ยจ Because the forward f(i) sets at the beginning of the period, once we reach the period start, everything
is known about the payment, and it becomes a fixed cashflow.
ยจ ๐‘ƒ๐‘‰ ๐‘– = ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘– = ๐ท๐ถ๐น ๐‘– . ๐‘ ๐‘– . ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘– . ๐ธ๐‘‹๐‘ƒ{๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘–, ๐‘๐‘’๐‘– . ๐‘“ ๐‘– }
ยจ ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘– = ๐ท(๐‘๐‘ ๐‘–)
ยจ ๐ท๐ถ๐น ๐‘– . ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘–, ๐‘๐‘’๐‘– . ๐‘“ ๐‘– = ๐ธ๐‘‹๐‘ƒ{๐‘๐‘ ๐‘–,
234(,)
01234 , .:(,)
. ๐‘“ ๐‘– }
ยจ Now, magic trick,
D
01D
=
D10=0
01D
=
01D=0
01D
= 1 โˆ’
0
01D
ยจ So, ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–,
234 ,
01234 , .: ,
. ๐‘“ ๐‘– = ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, 1 โˆ’
0
01234 , .: ,
= ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, 1 โˆ’ ๐‘ƒ ๐‘๐‘ ๐‘–, ๐‘๐‘ ๐‘–, ๐‘๐‘’๐‘–
ยจ And because the price of zero coupon bond is respected:
ยจ ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–,
234 ,
01234 , .: ,
. ๐‘“ ๐‘– = 1 โˆ’ ๐‘ƒ 0, ๐‘๐‘ ๐‘–, ๐‘๐‘’๐‘– = 1 โˆ’
0
01234 , .: ,
=
234 ,
01234 , .: ,
. ๐‘“ ๐‘–
64
Luc_Faucheux_2020
Quick summary
ยจ In the rolling numeraire measure,
โ€“ PV of fixed cashflows are conserved (Expected value of a fixed cashflow as the curve evolves in a stochastic manner
over time will converge to the fixed amount at the payment date)
โ€“ Price of zero coupon bonds are conserved
โ€“ Price of bonds are conserved (the price of a bond will change over time, but ON AVERAGE the price you should be
willing to pay for this bond is the price you can compute today using todayโ€™s curve, because the price of a bond
exhibits no convexity with respect to the discount curve changing, AS LONG as the discount curve changes in a manner
that respect the Arbitrage free condition, that is that a contract where you invest X today to get Y at time T, is the same
(equivalent, on average), as any contract where you invest X today, get the proceeds at some point in time in the
future, then reinvest them until T.)
โ€“ This is either painfully obvious or really deep, depending on how you look at it
โ€“ The arbitrage free assumption does NOT know about credit
โ€“ The arbitrage free assumption does NOT know about individual utility function (also called time-indifferent, it assumes
that market participants are indifferent about receiving X today versus Y at time T, where the ratio Y/X is the price of
today zero coupon bond maturing at time T, and that price will be conserved over time)
โ€“ The Floating leg of a swap ALSO exhibit zero convexity against the discount factor curve, because it can be expressed as
a linear function of discount factors, thanks to the amazing trick x=x+1-1
โ€“ It is surprising that of ALL the possible structures we could come up with a swap, there is almost zero probability that
we would not need a volatility curve, and yet 99.9% of the swaps being traded are such that they are NOT convex in
terms of the discount factors. Note that this breaks down once you have stochastic funding (forecasting and
discounting on different curves
ยจ Other markets (equity, commodities,..) do NOT have such a strong underlying constraint that needs to be
respected.. In HJM for example, we will show that respecting the arbitrage enforces zero possible choice
for the drift, once the volatility is known, everything else is.
65
Luc_Faucheux_2020
Pricing a swap in BDT - III
66
Luc_Faucheux_2020
Pricing a swap in BDT - IV
ยจ NOTE : swaps payments are "in arrears" at the end of the period, and so you have to
discount for that period
ยจ index is set "in advance" and paid "in arrears"
ยจ If you were dealing with a swap where the payment is set at the same time as the payment,
value would be different
ยจ in fact it would exhibit convexity ("in arrears" swap)
ยจ you would need a BDT tree or an option model in order to value it
ยจ But numerically quite easy to do, you just do not discount for that period
67
Luc_Faucheux_2020
Pricing a swap in BDT - V
68
Luc_Faucheux_2020
Pricing a swap in BDT - VI
ยจ We recover the same swap rate
ยจ Please note that we are really discounting cash flows, never a rate or a yield
ยจ Note that in practice to โ€take into accountโ€ all the numerical imprecisions and the many
steps, the solver is sometimes done on the Swap Rate (Market observable)
ยจ The Swap Rate is really only the value of the Fixed coupon so that the discounted value of all
fixed payments is equal to the discounted value of all the floating payments
ยจ Note that if we had priced the swap โ€œin arrearsโ€ we would get a different swap rate than the
one computed from the yield curve (even taking into account the timing difference)
ยจ The difference between those two rates is the convexity adjustment
ยจ In the SUMPRODUCT formula (deterministic world, or zero volatility), we just need to offset
the discounts by one period. Float fixes at the beginning of the period and pays at the
beginning, fixed also pays at the beginning of the period. This timing difference between the
fixing of the float and the payment is what creates the convexity.
ยจ Because we cannot do the little trick:
'
!2'
=
'2!-!
!2'
=
!2'-!
!2'
= 1 โˆ’
!
!2'
69
Luc_Faucheux_2020
Pricing a swap in BDT - VI-b
ยจ Another way is also to parametrize the shifts in order to allow for some tolerance, and
globally minimize for the Market observables (Swap rates), and be careful over the overlap
of swap durations
ยจ This is sometimes done in practice in order to โ€œcorrectโ€ for a number of numerical
imprecisions along the way (missing holidays, imperfect daycount fraction, small residuals in
the minimization steps,..)
70
Luc_Faucheux_2020
Legs of a swap in arrears
ยจ A fixed leg of a swap is a series of fixed cash flows that pays
ยจ ๐ท๐ถ๐น ๐‘– . ๐‘ ๐‘– . ๐‘†๐‘…
ยจ And its PV is:
ยจ ๐ท๐ถ๐น ๐‘– . ๐‘ ๐‘– . ๐‘†๐‘…. ๐ท(๐‘– โˆ’ 1)
ยจ A floating swaplet โ€œin arrearsโ€ pays:
ยจ ๐ท๐ถ๐น ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘–
ยจ and its PV is:
ยจ ๐‘ƒ๐‘‰ ๐‘– = ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– โˆ’ 1 . ๐‘ ๐‘– . ๐‘“ ๐‘–
ยจ Where ๐ท๐ถ๐น ๐‘๐‘’๐‘–, ๐‘๐‘ ๐‘– . ๐‘“ ๐‘– = [1 โˆ’
2 58,
2 56,
]
71
Luc_Faucheux_2020
Floating leg of a regular swap
ยจ Because the forward f(i) sets at the beginning of the period, once we reach the period start, everything
is known about the payment, and it becomes a fixed cashflow.
ยจ ๐‘ƒ๐‘‰ ๐‘– = ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘– = ๐ท๐ถ๐น ๐‘– . ๐‘ ๐‘– . ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘– . ๐ธ๐‘‹๐‘ƒ{๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘–, ๐‘๐‘’๐‘– . ๐‘“ ๐‘– }
ยจ ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘– = ๐ท(๐‘๐‘ ๐‘–)
ยจ ๐ท๐ถ๐น ๐‘– . ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘–, ๐‘๐‘’๐‘– . ๐‘“ ๐‘– = ๐ธ๐‘‹๐‘ƒ{๐‘๐‘ ๐‘–,
234(,)
01234 , .:(,)
. ๐‘“ ๐‘– }
ยจ Now, magic trick,
D
01D
=
D10=0
01D
=
01D=0
01D
= 1 โˆ’
0
01D
ยจ So, ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–,
234 ,
01234 , .: ,
. ๐‘“ ๐‘– = ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, 1 โˆ’
0
01234 , .: ,
= ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, 1 โˆ’ ๐‘ƒ ๐‘๐‘ ๐‘–, ๐‘๐‘ ๐‘–, ๐‘๐‘’๐‘–
ยจ And because the price of zero coupon bond is respected:
ยจ ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–,
234 ,
01234 , .: ,
. ๐‘“ ๐‘– = 1 โˆ’ ๐‘ƒ 0, ๐‘๐‘ ๐‘–, ๐‘๐‘’๐‘– = 1 โˆ’
0
01234 , .: ,
=
234 ,
01234 , .: ,
. ๐‘“ ๐‘–
72
Luc_Faucheux_2020
Floating leg of an โ€œin arrearsโ€ swap
ยจ Because the forward f(i) sets at the beginning of the period, once we reach the period start, everything
is known about the payment, and it becomes a fixed cashflow.
ยจ ๐‘ƒ๐‘‰ ๐‘– = ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– โˆ’ 1 . ๐‘ ๐‘– . ๐‘“ ๐‘– = ๐ท๐ถ๐น ๐‘– . ๐‘ ๐‘– . ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘– . ๐ธ๐‘‹๐‘ƒ{๐‘๐‘ ๐‘–, 1. ๐‘“ ๐‘– }
ยจ ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘– = ๐ท(๐‘๐‘ ๐‘–)
ยจ ๐ท๐ถ๐น ๐‘– . ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, 1. ๐‘“ ๐‘– = ๐ธ๐‘‹๐‘ƒ{๐‘๐‘ ๐‘–, ๐ท๐ถ๐น ๐‘– . ๐‘“ ๐‘– }
ยจ Where ๐ท๐ถ๐น ๐‘๐‘’๐‘–, ๐‘๐‘ ๐‘– . ๐‘“ ๐‘– = [1 โˆ’
2 58,
2 56,
]
ยจ Now, magic trick,
D
01D
=
D10=0
01D
=
01D=0
01D
= 1 โˆ’
0
01D
, but that gets us nowhere
ยจ So, ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, ๐ท๐ถ๐น ๐‘– . ๐‘“ ๐‘– = ๐ธ๐‘‹๐‘ƒ 1 โˆ’
2 58,
2 56,
ยจ This has not only a timing difference but a ratio, and we all know that ๐ธ๐‘‹๐‘ƒ
0
D
<> 1/๐ธ๐‘‹๐‘ƒ(๐‘ฅ)
ยจ This can be done through the Taylor expansion (or also Jensen inequality)
ยจ This is the famous Swap in arrears convexity trade of May 1995 (story time)
73
Luc_Faucheux_2020
Pricing a swaption
74
Luc_Faucheux_2020
Pricing a swaption - II
ยจ Careful that the only thing you should discount are cashflows, not rates
ยจ You could look at the rates but then at each node you would need to weigh by the actual
duration of that swap on that node to express it back into a cash flow
ยจ Note that the Blackโ€™77 model assumes a single duration for all nodes, and so putting in the
same input volatility in your BDT model and the Blackโ€™77 model will NOT recover the same
option price
ยจ The average of a product is not the product of the averages (or integrals)
ยจ If you want to calibrate BDT to the implied volatilities from Black77 (or match the option
prices that you see in the market), you would need to input a different volatilities.
ยจ Just because it is called the same thing (volatility) and has the same units does not mean
that you can equate the two
75
Luc_Faucheux_2020
Pricing a callable
ยจ We can now even price a callable swap
ยจ This is the main reason to build a tree, as opposed to closed form models
ยจ Note also that once you have the tree calibrated, it is very flexible in terms of any payoff of
structure that you want to price
ยจ A closed form solution would be hard to modify
ยจ In practice, the most important step is the calibration step. Think about the yield curve
moving in real time every seconds, the volatility curve moving maybe on a time scale of
minutes, and so you need to build a calibration routine that can be done quickly and still be
stable
ยจ Sometimes tree models are calibrated carefully overnight and kept constant during the day,
and trading desks adjust the price based on an estimate of the Greeks and the market
moves
76
Luc_Faucheux_2020
Pricing a callable - II
77
Luc_Faucheux_2020
Pricing a callable - III
ยจ Specific callable swap in the example is a 5y3ync1
ยจ Swap starts in 5year
ยจ Swap ends in 8 years
ยจ Call option at par (no fees either way) at year 6 and year 7
78
Luc_Faucheux_2020
Pricing a callable swap -IV
ยจ From each forward ๐‘‹(๐‘˜, ๐‘–) at each node we compute the discount factor
ยจ ๐‘‘ ๐‘˜, ๐‘– = 1/(1 + ๐‘‹ ๐‘˜, ๐‘– ), (assuming the usual convention of unity for daycount fraction)
ยจ At each node the payoff of the regular swap is SWAP ๐‘˜, ๐‘– = ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐พ . ๐‘‘(๐‘˜, ๐‘–)
ยจ The discounting back is given by:
ยจ SWAP ๐‘˜, ๐‘– =
!
"
. ๐‘‘ ๐‘˜, ๐‘– . SWAP ๐‘˜ + 1, ๐‘– + 1 + SWAP ๐‘˜ + 1, ๐‘– + ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐พ . ๐‘‘(๐‘˜, ๐‘–)
79
tk tk+1
X(k,i)
X(k+1,i+1)
X(k+1,i)
Luc_Faucheux_2020
Pricing a callable swap -V
ยจ At each node the payoff of the regular swap is SWAP ๐‘˜, ๐‘– = ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐พ . ๐‘‘(๐‘˜, ๐‘–)
ยจ The discounting back is given by:
ยจ SWAP ๐‘˜, ๐‘– =
!
"
. ๐‘‘ ๐‘˜, ๐‘– . SWAP ๐‘˜ + 1, ๐‘– + 1 + SWAP ๐‘˜ + 1, ๐‘– + ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐พ . ๐‘‘(๐‘˜, ๐‘–)
ยจ IF on an option node, the new payoff then becomes ๐‘€๐ด๐‘‹(SWAP ๐‘˜, ๐‘– , 0)
ยจ You can easily add a fee to cancel (>0 or <0), for example if there is a fee to cancel expressed
as paid over the cancel period, the payoff becomes: ๐‘€๐ด๐‘‹(SWAP ๐‘˜, ๐‘– , โˆ’fee)
80
tk tk+1
X(k,i)
X(k+1,i+1)
X(k+1,i)
Luc_Faucheux_2020
Pricing a callable swap -VI
81
Luc_Faucheux_2020
Pricing a callable swap -VII
ยจ Because of the optionality, the payer of a fixed rate callable swap is willing to pay an above
market rate (higher than the swap rate) to pay for the option
ยจ We can use again a numerical solver (GoalSeek in Excel)
ยจ Note: a great numerical solver is hard to find, and is used all the times in Finance
ยจ Solve for 0 PV on the regular swap -> SR = 3.414 in our example
ยจ Solve for 0 PV on the fixed callable ->SR = 3.448 in our example
ยจ The callable swap offers a pick-up of 3.5 basis point running above the Swap rate
ยจ The more optionality, the higher the pick-up
ยจ The higher the volatility, the more valuable the option, the higher the pick-up
ยจ If you calibrate your model to European swaptions, do you recover the price of callables
observed in the market ? The answer is no (for many reasons, see the Structured ppt), but
people try to adjust for that by introducing mean reversion in the BDT tree. Letโ€™s see what
that means and how that works.
82
Luc_Faucheux_2020
Pricing a callable swap -VIII
ยจ Most of the times in practice, trading desks will keep an adjustment grids between the
European and the Callable and adjust the volatility curve by that adjustment to price a
callable.
ยจ This is quite unsatisfactory for a lot of reason
ยจ It is not consistent
ยจ Where do you hedge the callable? On the shifted grid or the original one?
ยจ The adjustment creates a PL difference, do you hold that as a reserve, do you release it?
ยจ The PL difference will show some market directionality. Do you hedge that market
directionality?
ยจ If you hedge a Callable with European options, do you price and hedge those Europeans on
the shifted grid or the original one?
ยจ Different callables at different coupon will have different adjustments
83
Luc_Faucheux_2020
Pricing a callable swap -IX
ยจ We have now all the building blocks of a full-fledged Fixed-Income front-to-back
infrastructure
ยจ To do the risk management, bump the yield curve and the vol curve and reprice all the
trades AFTER recalibrating the BDT tree
ยจ You can price pretty much any payoff that you want that is a function of the variables in the
tree
ยจ You can also do a โ€œMonte-Carlo on the treeโ€ for path-dependent options, you are just going
forward in the tree, as opposed to discounting backwards
84
Luc_Faucheux_2020
Pricing a capped floater
ยจ Break-even is we can pay MIN(Libor+100,2.562) against receiving Libor
85
Luc_Faucheux_2020
Pricing an inverse floater
ยจ Break-even is we pay MAX(4.95-Libor,0) against receiving Libor
86
Luc_Faucheux_2020
87
A look at the dynamics of the BDT
Luc_Faucheux_2020
The BDT dynamics I
ยจ The following question comes up:
ยจ You have built something that reprices market observables
ยจ Congratulations but what dynamics did you use ?
ยจ When we use Black-Sholes, we can write the SDE for the underlier, and the PDE
ยจ Can we do the same thing for BDT ?
ยจ Answer is sort of yes unless you do numerical things to the BDT tree that are too drastic
ยจ We are now giving some insights on this dynamics, if only to point out the difficulties in
bridging the gap between the equations and the discrete numerical implementation of
those
88
Luc_Faucheux_2020
The BDT dynamics II
89
t0
t1
t2
t3
t4
(0,0)
(1,0)
(1,1)
(2,0)
(2,1)
(2,2)
(3,0)
(3,1)
(3,2)
(3,3)
(4,0)
(4,1)
(4,2)
(4,3)
(4,4)
Luc_Faucheux_2020
The BDT dynamics III
ยจ We assume for now constant time step, constant spacing between nodes in the y axis
90
Luc_Faucheux_2020
The BDT dynamics IV
91
tk tk+1
X(k,i)
X(k+1,i+1)
X(k+1,i)
ยจ We index the stochastic variable ๐‘‹(๐‘˜, ๐‘–), where ๐‘˜ is the period index and ๐‘– is the position
index
ยจ We choose a time step to be ๐›ฟ๐‘ก = ๐œ
ยจ At first we assume this time step to be constant
ยจ The spacing for a given period is ๐‘‹ ๐‘˜, ๐‘– + 1 โˆ’ ๐‘‹ ๐‘˜, ๐‘– = ๐›ฟ๐‘‹ for all index ๐‘–
ยจ For a given period, all nodes in the tree are equally spaced
ยจ We start with the assumption that the spacing ๐›ฟ๐‘‹ is a constant
Luc_Faucheux_2020
The BDT dynamics V
ยจ To the first order with no drift
ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– = ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐›ฟ๐‘‹/2
ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 = ๐‘‹ ๐‘˜, ๐‘– + ๐›ฟ๐‘‹/2
ยจ Probabilities ฮ  ๐‘˜, ๐‘– to be at the node ๐‘˜, ๐‘–
ยจ Using (1/2) probabilities up and down
ยจ ฮ  ๐‘˜ + 1, ๐‘– =
!
"
ฮ  ๐‘˜, ๐‘– โˆ’ 1 + ฮ  ๐‘˜, ๐‘–
ยจ This is also referred to as the master equation.
ยจ Easier to work in the ฮ  ๐‘ก, ๐‘‹ space to avoid the drift of the (๐‘–) indices (zero drift means that
the middle for ๐‘‹ would be the starting point but that is roughly the node (๐‘˜, ๐‘– =
1
"
)
ยจ ALWAYS pay attention to the boundary conditions (borders), so for example
ยจ ฮ  ๐‘˜, ๐‘– = 0 IF ๐‘– > ๐‘˜ OR (๐‘– < 0)
92
Luc_Faucheux_2020
The BDT dynamics VI
ยจ < โˆ†๐‘‹ > =
!
"
. ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 + ๐‘‹ ๐‘˜ + 1, ๐‘– = ๐‘‹(๐‘˜, ๐‘–)
ยจ So no drift in this simple example
ยจ When writing ๐‘‘๐‘‹ = ๐œ‡. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š, we would have ๐œ‡ = 0
ยจ < โˆ†๐‘‹"> =
!
"
. (๐‘‹ ๐‘˜ + 1, ๐‘– + 1 โˆ’ ๐‘‹ ๐‘˜, ๐‘– )^(2) + (๐‘‹ ๐‘˜ + 1, ๐‘– โˆ’ ๐‘‹ ๐‘˜, ๐‘– )^(2)
ยจ < โˆ†๐‘‹"> =
!
"
. (๐›ฟ๐‘‹/2)" + (๐›ฟ๐‘‹/2)" =
89+
:
ยจ When writing ๐‘‘๐‘‹ = ๐œ‡. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š, we would have (๐œŽ". ๐›ฟ๐‘ก) =
89+
:
93
X(k,i)
X(k+1,i+1)
X(k+1,i)
๐›ฟ๐‘‹/2
๐›ฟ๐‘‹/2
Luc_Faucheux_2020
The BDT dynamics VII
ยจ (๐œŽ". ๐›ฟ๐‘ก) =
89+
:
ยจ Again we see the scaling argument that if we want ๐œŽto be well defined (does not go to 0,
does not go to infinity), as we are reducing the size of the time step and the spacing in order
to reach the continuous limit from the discrete implementation, we need
ยจ
89+
:8#
โ†’ ๐œŽ" = ๐‘๐‘œ๐‘›๐‘ ๐‘ก๐‘Ž๐‘›๐‘ก when ๐›ฟ๐‘‹ โ†’ 0 and ๐›ฟ๐‘ก โ†’ 0
ยจ So the discrete tree implemented converges to the continuous dynamics described by the
SDE (Stochastic Differential Equation): ๐‘‘๐‘‹ = ๐œ‡. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š
ยจ With ๐œ‡ = 0
ยจ And ๐œŽ = lim(
89+
:8#
)
94
Luc_Faucheux_2020
The BDT dynamics VIII
ยจ From the SDE ๐‘‘๐‘‹ = ๐œ‡. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š we should be able to recover the PDE for the PDF
ยจ
;< (9,#)
;#
= โˆ’
;
;9
๐œ‡. ฮ  ๐‘‹, ๐‘ก โˆ’
;
;9
=+
"
. ฮ  ๐‘‹, ๐‘ก =
=+
"
.
;+< (9,#)
;9+
ยจ
;< (9,#)
;#
=
=+
"
.
;+< (9,#)
;9+
ยจ Letโ€™s rederive this directly from the tree and the master equation
ยจ ฮ  ๐‘˜ + 1, ๐‘– =
!
"
ฮ  ๐‘˜, ๐‘– โˆ’ 1 + ฮ  ๐‘˜, ๐‘–
ยจ Or more importantly
ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) =
!
"
ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–)
95
Luc_Faucheux_2020
The BDT dynamics IX
ยจ We have ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) =
!
"
ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–)
ยจ With:
ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– = ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐›ฟ๐‘‹/2
ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 = ๐‘‹ ๐‘˜, ๐‘– + ๐›ฟ๐‘‹/2
ยจ Taylor expanding in time and space the master equation around ๐‘‹(๐‘˜ + 1, ๐‘–) which is the
middle point (easier because we will perform symmetric calculations)
96
X(k,i)
X(k+1,i)
X(k,i-1)
๐›ฟ๐‘‹/2
๐›ฟ๐‘‹/2
Luc_Faucheux_2020
The BDT dynamics X
ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) =
!
"
ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–)
ยจ With
ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– = ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐›ฟ๐‘‹/2
ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 = ๐‘‹ ๐‘˜, ๐‘– + ๐›ฟ๐‘‹/2
ยจ Or
ยจ ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 = ๐‘‹ ๐‘˜ + 1, ๐‘– โˆ’ ๐›ฟ๐‘‹/2
ยจ ๐‘‹ ๐‘˜, ๐‘– = ๐‘‹ ๐‘˜ + 1, ๐‘– + ๐›ฟ๐‘‹/2
ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) = ฮ  ๐‘ก + ๐›ฟ๐‘ก, ๐‘‹(๐‘˜ + 1, ๐‘–) = ฮ  ๐‘ก, ๐‘‹(๐‘˜ + 1, ๐‘–) +
;< #,9(12!,))
;#
. ๐›ฟ๐‘ก + ๐’ช(๐›ฟ๐‘ก")
97
Luc_Faucheux_2020
The BDT dynamics XI
ยจ ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 = ๐‘‹ ๐‘˜ + 1, ๐‘– โˆ’ ๐›ฟ๐‘‹/2
ยจ ๐‘‹ ๐‘˜, ๐‘– = ๐‘‹ ๐‘˜ + 1, ๐‘– + ๐›ฟ๐‘‹/2
ยจ ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) = ฮ  ๐‘ก, ๐‘‹ ๐‘˜ + 1, ๐‘– โˆ’ ๐›ฟ๐‘‹/2
ยจ ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) = ฮ  ๐‘ก, ๐‘‹ ๐‘˜ + 1, ๐‘– ) โˆ’ (๐›ฟ๐‘‹/2 .
;< #,9(12!,))
;9
+
!
"
.
89+
:
.
;+< #,9(12!,))
;9+ + ๐’ช(๐›ฟ๐‘‹>)
ยจ AND
ยจ ฮ  ๐‘‹(๐‘˜, ๐‘–) = ฮ  ๐‘ก, ๐‘‹ ๐‘˜ + 1, ๐‘– + ๐›ฟ๐‘‹/2
ยจ ฮ  ๐‘‹(๐‘˜, ๐‘–) = ฮ  ๐‘ก, ๐‘‹ ๐‘˜ + 1, ๐‘– ) + (๐›ฟ๐‘‹/2 .
;< #,9(12!,))
;9
+
!
"
.
89+
:
.
;+< #,9(12!,))
;9+ + ๐’ช(๐›ฟ๐‘‹>)
ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) =
!
"
ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–)
98
Luc_Faucheux_2020
The BDT dynamics XII
ยจ
!
"
ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–) = ฮ  ๐‘ก, ๐‘‹(๐‘˜ + 1, ๐‘–) +
!
"
.
89+
:
.
;+< #,9(12!,))
;9+ + ๐’ช(๐›ฟ๐‘‹>)
ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) = ฮ  ๐‘ก, ๐‘‹(๐‘˜ + 1, ๐‘–) +
;< #,9(12!,))
;#
. ๐›ฟ๐‘ก + ๐’ช(๐›ฟ๐‘ก")
ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) =
!
"
ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–)
ยจ Yields:
ยจ
;< #,9(12!,))
;#
. ๐›ฟ๐‘ก =
!
"
.
89+
:
.
;+< #,9(12!,))
;9+
ยจ Defining the volatility as (๐œŽ". ๐›ฟ๐‘ก) =
89+
:
ยจ
;<
;#
=
=+
"
.
;+<
;9+
ยจ We recover the usual diffusion equation.
99
Luc_Faucheux_2020
100
The BDT mean reversion
Luc_Faucheux_2020
The BDT mean reversion I
ยจ Everything we did so far assumed constant time step and spacing between nodes.
ยจ We keep a constant time step
ยจ Because of the algorithm construction of the BDT, there is a constant shift (up or down) in
order to match the discount curve.
ยจ This is just a drift on top of the diffusive process.
ยจ More subtle is the mean reversion effect. Mean reversion is a crucial concept in finance. It
indicates that things have a tendency when diffusing away from the equilibrium to โ€revert
back to the meanโ€ or mean revert, hence the term โ€œmean reversionโ€
ยจ What is the intuition for it in the BDT model?
ยจ Essentially at a given time indexed by k, there are k nodes. The spacing between the nodes
is given by the volatility input. What happens when this spacing is not time-dependent?
Meaning its value change from (k) to (k+1). We could end up in a situation like this one:
101
Luc_Faucheux_2020
The BDT mean reversion II
ยจ Decreasing volatility input from (k) to (k+1). The tree gets compressed. Positive mean
reversion (usual one)
ยจ Note: in this case it is obvious that a BDT binomial model breaks the arbitrage locally, even
though one average over the time slices the arbitrage is still respected
ยจ The further away from the center the greater the pull-back : typical of mean reversion
102
Luc_Faucheux_2020
The BDT mean reversion III
ยจ Increasing volatility input from (k) to (k+1). The tree explodes. Negative mean reversion
(unusual one)
ยจ Note: in this case it is obvious that a BDT binomial model breaks the arbitrage locally, even
though one average over the time slices the arbitrage is still respected
ยจ The further away from the center the greater the push-out : typical of negative mean
reversion
103
Luc_Faucheux_2020
The BDT mean reversion IV
ยจ It should not come as a surprise, because in some ways, in BDT for a given โ€œspliceโ€ at a given
point in time k, you just put k nodes equally spaced and then you just shift those up and
down in order to recover the average discount factor, and then you connect those dots back
to the previous time slice
ยจ Local versus average arbitrage free
ยจ BDT is said to be arbitrage free because when discounting back on the tree you recover the
price of todayโ€™s discount curve. Note that it is only ON AVERAGE that the arbitrage is being
respected. When there is mean reversion, locally at any point in the BDT tree the โ€localโ€
arbitrage is NOT being respected, and so the local dynamics of BDT (if we can figure it outโ€
will NOT be arbitrage free (only in very limited case for example constant volatility).
ยจ Another way to say it is that if you build a BDT tree out of any node in an existing BDT tree,
this will NOT be a BDT tree, and will not respect arbitrage
ยจ Letโ€™s try to estimate how this impacts the dynamic equation.
104
Luc_Faucheux_2020
The BDT mean reversion V
ยจ For k large enough the tree is centered around ๐‘‹ ๐‘˜,
1
"
= ๐‘‹?(๐‘˜) for middle
ยจ For each node ๐‘‹ ๐‘˜, ๐‘– = ๐‘‹? ๐‘˜ + ๐‘– โˆ’
1
"
. ๐›ฟ๐‘‹(๐‘˜)
ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– = ๐‘‹? ๐‘˜ + 1 + ๐‘– โˆ’
12!
"
. ๐›ฟ๐‘‹(๐‘˜ + 1)
ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 = ๐‘‹? ๐‘˜ + 1 + ๐‘– + 1 โˆ’
12!
"
. ๐›ฟ๐‘‹(๐‘˜ + 1)
105
X(k,i)
X(k+1,i+1)
X(k+1,i)
๐›ฟ๐‘‹(๐‘˜ + 1)
Luc_Faucheux_2020
The BDT mean reversion VI
ยจ Setting the drift of the overall tree to 0, ๐‘‹? ๐‘˜ + 1 = ๐‘‹? ๐‘˜
ยจ Note that we can always add a drift later constant for all nodes, we are trying to isolate the
effect of the changing spacing between two time slices
ยจ ๐‘‹ ๐‘˜, ๐‘– = ๐‘‹? ๐‘˜ + ๐‘– โˆ’
1
"
. ๐›ฟ๐‘‹(๐‘˜)
ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– = ๐‘‹? ๐‘˜ + 1 + ๐‘– โˆ’
12!
"
. ๐›ฟ๐‘‹(๐‘˜ + 1)
ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 = ๐‘‹? ๐‘˜ + 1 + ๐‘– + 1 โˆ’
12!
"
. ๐›ฟ๐‘‹(๐‘˜ + 1)
ยจ ๐›ฟ๐‘‹ ๐‘˜ + 1 = ๐›ฟ๐‘‹ ๐‘˜ +
;89 #
;#
. ๐›ฟ๐‘ก + ๐’ช(๐›ฟ๐‘ก")
ยจ < โˆ†๐‘‹ > =
!
"
. ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 + ๐‘‹ ๐‘˜ + 1, ๐‘–
106
Luc_Faucheux_2020
The BDT mean reversion VII
ยจ < ๐‘‹ > =
!
"
. ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 + ๐‘‹ ๐‘˜ + 1, ๐‘–
ยจ < ๐‘‹ > =
!
"
. ๐‘‹? ๐‘˜ + 1 + ๐‘– + 1 โˆ’
12!
"
. ๐›ฟ๐‘‹(๐‘˜ + 1) +
!
"
. ๐‘‹? ๐‘˜ + 1 + ๐‘– โˆ’
12!
"
. ๐›ฟ๐‘‹(๐‘˜ + 1)
ยจ < ๐‘‹ > = ๐‘‹? ๐‘˜ + 1 +
!
"
. { ๐‘– + 1 โˆ’
12!
"
+ (๐‘– โˆ’
12!
"
)}. ๐›ฟ๐‘‹(๐‘˜ + 1)
ยจ < ๐‘‹ > = ๐‘‹? ๐‘˜ + 1 + ๐‘– โˆ’
1
"
. ๐›ฟ๐‘‹(๐‘˜ + 1)
ยจ ๐‘‹ ๐‘˜, ๐‘– = ๐‘‹? ๐‘˜ + ๐‘– โˆ’
1
"
. ๐›ฟ๐‘‹(๐‘˜)
ยจ ๐‘‹? ๐‘˜ + 1 = ๐‘‹? ๐‘˜
ยจ < ๐‘‹ > = ๐‘‹? ๐‘˜ + ๐‘– โˆ’
1
"
. ๐›ฟ๐‘‹ ๐‘˜ + ๐‘– โˆ’
1
"
.
;89 #
;#
. ๐›ฟ๐‘ก
ยจ < ๐‘‹ > = ๐‘‹(๐‘˜, ๐‘–) + ๐‘– โˆ’
1
"
.
;89 #
;#
. ๐›ฟ๐‘ก
107
Luc_Faucheux_2020
The BDT mean reversion VIII
ยจ Locally there is a drift term equal to ๐‘– โˆ’
1
"
.
;89 #
;#
. ๐›ฟ๐‘ก
ยจ In the middle where ๐‘– =
1
"
, this drift term is nul
ยจ The farther we get away from the center, the greater this drift term (not equal for all nodes)
ยจ The greater the derivative of the spacing with respect to time
;89 #
;#
the greater the drift
ยจ < ๐‘‹ > = ๐‘‹(๐‘˜, ๐‘–) + ๐‘– โˆ’
1
"
.
;89 #
;#
. ๐›ฟ๐‘ก
ยจ < โˆ†๐‘‹ > = ๐‘– โˆ’
1
"
.
;89 #
;#
. ๐›ฟ๐‘ก
ยจ ๐‘‹ ๐‘˜, ๐‘– = ๐‘‹? ๐‘˜ + ๐‘– โˆ’
1
"
. ๐›ฟ๐‘‹(๐‘˜)
ยจ So we have < โˆ†๐‘‹ > = (
9 1,) -9E(1)
89 #
).
;89 #
;#
. ๐›ฟ๐‘ก
108
Luc_Faucheux_2020
The BDT mean reversion IX
ยจ < โˆ†๐‘‹ > =
9 1,) -9E 1
89 #
.
;89 #
;#
. ๐›ฟ๐‘ก = ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐‘‹? ๐‘˜ .
!
89 #
.
;89 #
;#
. ๐›ฟ๐‘ก
ยจ For convenience sake, either we set ๐‘‹? ๐‘˜ = 0, or we define ๐‘Œ ๐‘˜, ๐‘– = ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐‘‹? ๐‘˜
and work in the tree in ๐‘Œ.
ยจ If we set ๐‘‹? ๐‘˜ = 0
ยจ < โˆ†๐‘‹ > =
9 1,)
89 #
.
;89 #
;#
. ๐›ฟ๐‘ก = ๐‘‹ ๐‘˜, ๐‘– .
!
89 #
.
;89 #
;#
. ๐›ฟ๐‘ก
ยจ So when writing ๐‘‘๐‘‹ = ๐œ‡. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š we would have
ยจ ๐œ‡ = ๐‘‹.
!
89 #
.
;89 #
;#
ยจ We had previously (๐œŽ". ๐›ฟ๐‘ก) =
89+
:
, so looks like ๐œ‡ = ๐‘‹.
!
=
.
;=
;#
, where ๐œŽ = ๐œŽ(๐‘ก)
ยจ So looks like ๐‘‘๐‘‹ = ๐‘‹.
=@
=
. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š
109
Luc_Faucheux_2020
The BDT mean reversion X
ยจ We still need to check that the ๐œŽ term in front of the Brownian driver is still the correct one
that we obtain in the case of constant ๐œŽ
ยจ To do that we need to estimate:
ยจ < โˆ†๐‘‹"> =
!
"
. (๐‘‹ ๐‘˜ + 1, ๐‘– + 1 โˆ’ < ๐‘‹ >)^(2) + (๐‘‹ ๐‘˜ + 1, ๐‘– โˆ’ < ๐‘‹ >)^(2)
ยจ Where < ๐‘‹ > is the mid point between ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 and ๐‘‹ ๐‘˜ + 1, ๐‘–
ยจ < ๐‘‹ > =
!
"
. ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 + ๐‘‹ ๐‘˜ + 1, ๐‘–
ยจ And so < โˆ†๐‘‹"> =
!
:
. {(๐‘‹ ๐‘˜ + 1, ๐‘– + 1 โˆ’ ๐‘‹ ๐‘˜ + 1, ๐‘– }"=
!
:
. {(๐›ฟ๐‘‹ ๐‘˜ + 1 }"
ยจ This is the same as before (the intuition is that the drift does not pollute the volatility,
because the drift is of order 1 in time, and so any drift when computing the second moment
will appear as a term of order 2 in time, which will be neglected when compared to the
stochastic term, which is only of order 1 in time
110
Luc_Faucheux_2020
The BDT mean reversion XI
ยจ The numerical implementation of the BDT tree, by equally spacing k nodes at time k, and
then forcing those nodes to connect in a recombining binomial manner, โ€œartificiallyโ€ creates
a mean reversion drift
ยจ The BDT dynamics is ๐‘‘๐‘‹ = ๐‘‹.
=@
=
. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š
ยจ At constant volatility, the drift term disappear
ยจ I can bet some large amount of money that if we had started from the actual dynamics and
being asked to build a tree that follows it we would have struggled quite a lot
ยจ We went through this derivation to illustrate the potential pitfalls of going in between
numerical tree implementation and continuous dynamics
ยจ Note that usually BDT are built with a short term rate in lognormal space, ๐‘‹ = ln(๐‘Ÿ)
ยจ The dynamics then become ๐‘‘(ln ๐‘Ÿ ) = ln(๐‘Ÿ).
=@
=
. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š
ยจ Note that the meaning of ๐œŽ is now different, it is now the lognormal volatility
111
Luc_Faucheux_2020
The BDT mean reversion XII
ยจ Note that as usual following the Ito convention (Ito lemma) in Ito calculus
ยจ ๐‘‘ ln(๐‘Ÿ) = ( โ„๐‘‘๐‘Ÿ ๐‘Ÿ) โˆ’ ( โ„๐œŽ" 2). ๐‘‘๐‘ก
ยจ Letโ€™s go back to ๐‘‘๐‘‹ = ๐‘‹.
=@
=
. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š
ยจ Also normal models are much more in favor now that rates have proven that they can go
negative.
ยจ The associated PDE for the PDF is given by
ยจ
;< (9,#)
;#
= โˆ’
;
;9
๐œ‡. ฮ  ๐‘‹, ๐‘ก โˆ’
;
;9
=+
"
. ฮ  ๐‘‹, ๐‘ก
ยจ
;< (9,#)
;#
= โˆ’
;
;9
๐‘‹.
=@
=
. ฮ  ๐‘‹, ๐‘ก โˆ’
;
;9
=+
"
. ฮ  ๐‘‹, ๐‘ก
ยจ Note that ๐œŽ is a function of the time t and not the stochastic variable, so we are safe from
any Ito versus Stratonovitch controversy for now
112
Luc_Faucheux_2020
The BDT mean reversion XIII
ยจ In the most general case with added drift (the multiplicative factors K that we used in the
Excel implementation of the BDT)
ยจ ๐‘‘๐‘‹ = {๐พ ๐‘ก + ๐‘‹.
=F #
= #
}. ๐‘‘๐‘ก + ๐œŽ(๐‘ก). ๐‘‘๐‘Š
ยจ We can also split the drift term in order to make obvious the reversion to the mean ๐‘‹A(๐‘ก)
ยจ ๐‘‘๐‘‹ = {๐พ ๐‘ก + (๐‘‹ โˆ’ ๐‘‹A ๐‘ก ).
=F #
= #
}. ๐‘‘๐‘ก + ๐œŽ(๐‘ก). ๐‘‘๐‘Š
ยจ Or going into Lognormal space
ยจ ๐‘‘(ln ๐‘Ÿ ) = {๐พ ๐‘ก + (ln(๐‘Ÿ) โˆ’ ln(๐‘ŸA ๐‘ก )).
=F #
= #
}. ๐‘‘๐‘ก + ๐œŽ(๐‘ก). ๐‘‘๐‘Š
ยจ The usual textbook description of the BDT dynamics just goes with
ยจ ๐‘‘ ln ๐‘Ÿ = {๐œƒ ๐‘ก + ln(๐‘Ÿ).
=F
=
}. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š
ยจ With the drift ๐œƒ ๐‘ก taking care of the arbitrage free constraint to recover the discounts
113
Luc_Faucheux_2020
The BDT mean reversion XIV
ยจ Always be careful when dealing with numerical implementation of SDE
ยจ In the example above, when having constant volatility, the dynamics is the one sometimes
called the Ho-Lee:
ยจ ๐‘‘๐‘‹ = ๐พ ๐‘ก . ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š
ยจ If ๐‘‹ is the short-rate, we have ๐พ ๐‘ก =
;3(%,#)
;#
+ ๐œŽ". ๐‘ก
ยจ Where ๐‘“(0, ๐‘ก) is the initial forward rate curve
ยจ When ๐œŽ becomes a function of time ๐œŽ(๐‘ก), we would be tempted to keep the tree that we
built for Ho-Lee and just change the spacing at each time step in order to fit the volatility.
ยจ What we showed is that doing this โ€œblindlyโ€ introduces mean reversion and changes the
dynamics (SDE) to:
ยจ ๐‘‘๐‘‹ = {๐พ ๐‘ก + ๐‘‹.
=F #
= #
}. ๐‘‘๐‘ก + ๐œŽ(๐‘ก). ๐‘‘๐‘Š
114
Luc_Faucheux_2020
115
Some notes on probabilities and drift
inside the tree
Luc_Faucheux_2020
A quick aside on probabilities
ยจ Probability to go up ๐‘ƒB, probability to go down ๐‘ƒC, with ๐‘ƒB + ๐‘ƒC = 1
ยจ If both probability are equal to 1/2
ยจ < โˆ†๐‘‹ > =
!
"
. ๐‘‹ +
89
"
+ ๐‘‹ โˆ’ ๐›ฟ๐‘‹/2 โˆ’ ๐‘‹ = 0
ยจ < โˆ†๐‘‹"> =
!
"
. (
89
"
)^(2) + (
89
"
)^(2) = (
89+
:
)
116
X
X + ๐›ฟ๐‘‹/2
X - ๐›ฟ๐‘‹/2
๐›ฟ๐‘‹/2
๐›ฟ๐‘‹/2
๐‘ƒ!
๐‘ƒ"
๐›ฟ๐‘ก
Luc_Faucheux_2020
A quick aside on probabilities II
ยจ < โˆ†๐‘‹ > = 0
ยจ < โˆ†๐‘‹"> = (
89+
:
)
ยจ We match the process ๐‘‘๐‘‹ = 0. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š
ยจ ๐œŽ". ๐›ฟ๐‘ก = (
89+
:
)
ยจ ๐›ฟ๐‘‹ = 2๐œŽ. ๐›ฟ๐‘ก
117
Luc_Faucheux_2020
Adding drift the easy way (?)
ยจ We keep the probabilities equal to (1/2)
ยจ The only difference is the addition of the drift term
118
X
๐‘ƒ!
๐‘ƒ"
๐›ฟ๐‘ก
๐‘‹ โˆ’
#$
%
+ ๐‘Ž. ๐›ฟ๐‘ก
๐‘‹ +
#$
%
+ ๐‘Ž. ๐›ฟ๐‘ก
Luc_Faucheux_2020
Adding drift the easy way (?) II
ยจ < โˆ†๐‘‹ > =
!
"
. ๐‘‹ +
89
"
+ ๐‘Ž. ๐›ฟ๐‘ก + ๐‘‹ โˆ’
89
"
+ ๐‘Ž. ๐›ฟ๐‘ก โˆ’ ๐‘‹ = ๐‘Ž. ๐›ฟ๐‘ก
ยจ < โˆ†๐‘‹"> =
!
"
. (
89
"
+ ๐‘Ž. ๐›ฟ๐‘ก)^(2) + (โˆ’
89
"
+ ๐‘Ž. ๐›ฟ๐‘ก)^(2)
ยจ < โˆ†๐‘‹"> = (๐‘Ž. ๐›ฟ๐‘ก)"+(
89+
:
)
ยจ We only keep the terms in order 1 in ๐›ฟ๐‘ก (small time steps limit)
ยจ < โˆ†๐‘‹"> = (
89+
:
)
ยจ Note that locally, < โˆ†๐‘‹"> =
!
"
. (
89
"
)^(2) + (
89
"
)^(2) = (
89+
:
) exactly
ยจ We match the process ๐‘‘๐‘‹ = ๐‘Ž. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š
119
Luc_Faucheux_2020
Changing the drift by changing the probabilities I
ยจ We do not change the values in the space axis (the values for X have been picked already)
ยจ We change the probabilities ๐‘ƒB and ๐‘ƒC
ยจ This is quite common when building trees, as the node spacing has already been calibrated.
ยจ This actually is a little more tricky to deal with (in particular when you change the
probabilities, do you still recover a Gaussian for example? This is linked to the Girsanov
theorem, just to tell you that this is not as simple as it seems)
120
X
X + ๐›ฟ๐‘‹/2
X - ๐›ฟ๐‘‹/2
๐›ฟ๐‘‹/2
๐›ฟ๐‘‹/2
๐‘ƒ!
๐‘ƒ"
๐›ฟ๐‘ก
Luc_Faucheux_2020
Changing the drift by changing the probabilities II
ยจ We define the probabilities ๐‘ƒB =
!
"
+ ๐œ€ and ๐‘ƒC =
!
"
โˆ’ ๐œ€
ยจ < โˆ†๐‘‹ > =
!
"
+ ๐œ€ . ๐‘‹ +
89
"
} +
!
"
โˆ’ ๐œ€ . {๐‘‹ โˆ’
89
"
โˆ’ ๐‘‹ = ๐œ€. ๐›ฟ๐‘‹
ยจ Now, ๐›ฟ๐‘‹ scales as ๐›ฟ๐‘ก!/", so we know that right off the bat, in order for the drift term to be
linear in time (in order to model ๐‘‘๐‘‹ = ๐‘Ž. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š), we are going to need to have that
number ๐œ€ to scale something like {๐‘Ž. (๐›ฟ๐‘ก)!/"}
ยจ < โˆ†๐‘‹"> =
!
"
+ ๐œ€ .
89
"
"
+
!
"
โˆ’ ๐œ€ .
89
"
"
ยจ < โˆ†๐‘‹"> =
!
"
+ ๐œ€ .
89
"
"
+
!
"
โˆ’ ๐œ€ .
89
"
"
ยจ < โˆ†๐‘‹"> =
89+
:
(1 + 2. ๐œ€")
121
Luc_Faucheux_2020
Changing the drift by changing the probabilities III
ยจ < โˆ†๐‘‹ > = ๐œ€. ๐›ฟ๐‘‹ = ๐‘Ž. ๐›ฟ๐‘ก
ยจ < โˆ†๐‘‹"> =
89+
:
1 + 2. ๐œ€" = ๐œŽ". ๐›ฟ๐‘ก
ยจ So ๐œ€ =
E.8#
89
and ๐›ฟ๐‘‹ = 2๐œŽ. ๐›ฟ๐‘ก!/" so we can also write ๐œ€ =
E
"=
๐›ฟ๐‘ก!/"
ยจ So changing the probability does not affect the variance in the limit of small time steps
(continuous limit).
ยจ Not as straightforward as shifting the values in space and keeping the probabilities equal to
(1/2)
ยจ Changing the probabilities to affect the drift is NOT trivial (in particular we have to convince
ourselves that we did not change the shape of the distribution, just the first moment)
ยจ Girsanov theorem, Radon-Nikodym derivative if you want to use big words
122
Luc_Faucheux_2020
Changing the drift by changing the probabilities IV
ยจ So we match the process: ๐‘‘๐‘‹ = ๐‘Ž. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š
ยจ ๐›ฟ๐‘‹ = 2๐œŽ. ๐›ฟ๐‘ก!/"
ยจ ๐œ€ =
E
"=
๐›ฟ๐‘ก!/"
ยจ WAIT A MINUTE you should say, ๐œ€ is only a number, not a complicated formula:
ยจ ๐œ€ =
E
"=
๐›ฟ๐‘ก!/"
ยจ ๐‘Ž is a drift and so scales as [
9
#
]
ยจ ๐œŽ is a volatility and so scales as [
9
#!/+], or easier ๐œŽ". [๐‘ก]scales as [๐‘‹"]
ยจ SO.. ๐œ€ scales as [
9
#
].
#
!
+
9
. [๐‘ก!/"] which is dimensionless and a number indeed !!
123
Luc_Faucheux_2020
124
Some tricks we can play in BDT trees
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree
ยจ Market practice is to do the following:
โ€“ Build the tree (if needed to save memory, build also some โ€œghost nodesโ€)
โ€“ Start with a given spacing in rates
โ€“ Adjust the multiplication factor to match the discount curve
โ€“ Adjust the spacing in order to match at-the-money caplet prices (this take into account the
numerical noise aspect, and also the bias in the BDT discounting, which needs to be taken into
account by adjusting the vol)
โ€“ Recalibrate the multiplication factors to match the discount curve
โ€“ Iterate a couple of times if needed
โ€“ NOW comes the kicker: you will NOT recover the price of at-the-money European swaptions,
NOR will you recover the price of callable options (Formosa), there are a lot of reasons why
โ€“ The most used โ€œtrickโ€ is to add another mean reversion in the BDT tree on top of the โ€œnaturalโ€
mean reversion : {
.%
.
}
125
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree-b
ยจ This is in practice a very important point:
ยจ Models do get calibrated to a finite subset of instruments.
ยจ For reasons that we went over in the Structured Powerpoint, a simple model will NEVER be
able to capture the right price (and as a result risk and hedges) for caps and callables, or
European swaptions
ยจ A true model that should capture the callable prices should be able to incorporate the
correlation between the curve steepness as stochastic driver, and the first factor in the
volatility surface
ยจ Such a model is quite a task to build (no one in the market currently has one)
ยจ But as we also showed in the Skew Powerpoint, it is quite legit to use a simpler model, run it
through a hedging scenario and capture the residual as the difference in pricing
ยจ So you could say, why even bother with mean reversion? Take your model as is, and then
run it through your scenario hedging
126
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree-c
ยจ The answer to that is, yes you could do that, and that would be fine
ยจ Introducing mean reversion to the current model brings it closer to the market price.
ยจ So it might not be the actual dynamics, but at least you are starting closer to where you
want to end, so any Taylor expansion / approximation will be smaller and more justified
ยจ Also, even though we are a big proponent of the Scenario hedging, this is a class after all, so
playing with the mean reversion is a nice way to introduce some of the concepts around tree
pricing
127
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree II
ยจ Letโ€™s go through the derivation of that โ€œtrickโ€ (not the only one but a rather popular one)
ยจ More to illustrate the tree dynamics, and how a change in the algorithm affects the
underlying dynamics, and how one needs to be careful about the small details
ยจ In textbooks, sometimes you read that you need a trinomial tree in order to have an extra
degree of freedom in order to accommodate mean reversion.
ยจ I have never fully understood why that is the case, and what a trinomial tree has that a two-
step binomial tree cannot exhibit
ยจ We will also present a trinomial tree implementation as it is a neat example of something
crucial when dealing with trees (or sometimes trees on a grid) : stability analysis and
constraints on the discrete parameters
128
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree III
ยจ ๐‘‹ ๐‘˜, ๐‘– = ๐‘‹? ๐‘˜ + ๐‘– โˆ’
1
"
. ๐›ฟ๐‘‹(๐‘˜)
ยจ ๐‘‹ ๐‘˜,
1
"
= ๐‘‹?(๐‘˜)
ยจ Once the volatility structure ๐›ฟ๐‘‹(๐‘˜) is given, there is no choice on the mean reversion
parameter that is given by {
=F
=
}
ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) =
!
"
ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–)
129
X(k,i)
X(k+1,i+1)
X(k+1,i)
๐›ฟ๐‘‹/2
๐›ฟ๐‘‹/2
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree IV
ยจ ฮ  ๐‘‹(๐‘˜, ๐‘–) follows the binomial distribution, in the continuous limit we recover the Gaussian
distribution and the diffusion equation.
ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) =
!
"
ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–)
ยจ ฮ  ๐‘‹(๐‘˜, ๐‘–) = 2-1. )
1 =
!
"& .
1!
)! 1-) !
ยจ ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) = 2-1. )-!
1 =
!
"& .
1!
()-!)! 1-)2! !
ยจ We have : )-!
1 + )
1 = )
12!
ยจ So by recurrence we also have ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) = 2-12!. )
12! =
!
"&H! .
(12!)!
)! 12!-) !
130
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree V
ยจ One introduces mean reversion in an algorithmic fashion in the following way:
ยจ Usual tree:
ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘– with probability ๐‘ƒC = 1/2
ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 with probability ๐‘ƒB = 1/2
ยจ We introduce ๐œ‡ (note that a time dependent ๐œ‡(๐‘ก) is completely analogous, but for sake of
simplicity we will drop the time dependence for now
ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘– with probability ๐‘ƒC =
!
"
. (1 โˆ’ ๐œ‡)
ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 with probability ๐‘ƒB =
!
"
. (1 โˆ’ ๐œ‡)
ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘— with probability ๐‘ƒ 1,) โ†’(12!,*) = ๐œ‡. ฮ  ๐‘‹(๐‘˜ + 1, ๐‘—)
131
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree VI
ยจ The functional ๐‘ƒ 1,) โ†’(12!,*) = ๐œ‡. ฮ  ๐‘‹(๐‘˜ + 1, ๐‘—) is chosen so that the probabilities on the
tree are intact
ยจ We do not change the variance, nor the shape of the distribution for a given time section in
the BDT tree
ยจ We only change the probability of jumping from one node back to another across time
sections
ยจ This will work either when jumping forward in time in the BDT tree (when computing things
like Asian options that are path dependent, or for example the Arrow-Debreu prices of
securities), but also when jumping backward in the BDT tree, when discounting back
American options or pricing callable options.
132
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree VI-a
ยจ Note that we do not lose any probability density
ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘– with probability ๐‘ƒC =
!
"
. (1 โˆ’ ๐œ‡)
ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 with probability ๐‘ƒB =
!
"
. (1 โˆ’ ๐œ‡)
ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘— with probability ๐‘ƒ 1,) โ†’(12!,*) = ๐œ‡. ฮ  ๐‘‹(๐‘˜ + 1, ๐‘—)
ยจ So out of the node ๐‘‹ ๐‘˜, ๐‘– we will transfer to the next time slice ๐‘˜ + 1 a total:
ยจ ๐‘ƒ =
!
"
. 1 โˆ’ ๐œ‡ +
!
"
. 1 โˆ’ ๐œ‡ + ๐œ‡. โˆ‘*$%
*$12!
ฮ  ๐‘‹ ๐‘˜ + 1, ๐‘—
ยจ And since โˆ‘*$%
*$12!
ฮ  ๐‘‹ ๐‘˜ + 1, ๐‘— = 1 we have ๐‘ƒ = 1 = 100%
ยจ So 100% of the probability density in the node ๐‘‹ ๐‘˜, ๐‘– gets transferred to the next time slice,
we are not losing any probability density (note that we assumed that the sum of the next
tree level probabilities add up to one, so a little self consistent)
133
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree VII
ยจ The old master equation was: ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) =
!
"
ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–)
ยจ The new master equation is a little more complicated at first:
ยจ So just to be rigorous, we will note ฮ โ€ฒ ๐‘‹(๐‘˜ + 1, ๐‘–) the new probability distribution
ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) is the baseline or the ๐œ‡ = 0 solution
ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) is the usual binomial distribution
ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) = 2-12!. )
12! =
!
"&H! .
(12!)!
)! 12!-) !
134
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree VII-b
ยจ The	new	Master	Equation	now	becomes:
ยจ ฮ โ€ฒ ๐‘‹(๐‘˜ + 1, ๐‘–) =
!
"
1 โˆ’ ๐œ‡ . ฮ โ€ฒ ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 + ฮ โ€ฒ ๐‘‹(๐‘˜, ๐‘–) + ๐œ‡. โˆ‘* ฮ โ€ฒ ๐‘‹ ๐‘˜, ๐‘— . ฮ โ€ฒ(
)
๐‘‹(๐‘˜ +
1, ๐‘–)
ยจ We can use a recurrence argument here:
ยจ ฮ @ ๐‘‹ 0,0 = ฮ  ๐‘‹ 0,0 = 1
ยจ ฮ @ ๐‘‹ 1,0 =
!
"
1 โˆ’ ๐œ‡ . ฮ  ๐‘‹ 0,0 + ๐œ‡. ฮ  ๐‘‹(1,0) =
!
"
1 โˆ’ ๐œ‡ . 1 + ๐œ‡.
!
"
=
!
"
= ฮ  ๐‘‹ 1,0
ยจ ฮ @ ๐‘‹ 1,1 =
!
"
1 โˆ’ ๐œ‡ . ฮ  ๐‘‹ 0,0 + ๐œ‡. ฮ  ๐‘‹(1,1) =
!
"
1 โˆ’ ๐œ‡ . 1 + ๐œ‡.
!
"
=
!
"
= ฮ  ๐‘‹ 1,1
135
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree VII-c
ยจ We now go from ๐‘˜ โ†’ (๐‘˜ + 1)
ยจ We assume that ฮ @ ๐‘‹ ๐‘˜, ๐‘— = ฮ  ๐‘‹(๐‘˜, ๐‘—)
ยจ The master equation is
ยจ ฮ โ€ฒ ๐‘‹(๐‘˜ + 1, ๐‘–) =
!-I
"
ฮ โ€ฒ ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 + ฮ โ€ฒ ๐‘‹(๐‘˜, ๐‘–) + ๐œ‡ โˆ‘* ฮ โ€ฒ ๐‘‹ ๐‘˜, ๐‘— ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–)
ยจ ฮ โ€ฒ ๐‘‹(๐‘˜ + 1, ๐‘–) =
!-I
"
ฮ  ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 + ฮ  ๐‘‹(๐‘˜, ๐‘–) + ๐œ‡ โˆ‘* ฮ  ๐‘‹ ๐‘˜, ๐‘— ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–)
ยจ Since โˆ‘* ฮ  ๐‘‹(๐‘˜, ๐‘—) = 1
ยจ ฮ @ ๐‘‹ ๐‘˜ + 1, ๐‘– =
!-I
"
. ฮ  ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 + ฮ  ๐‘‹ ๐‘˜, ๐‘– + ๐œ‡. ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–)
136
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree VII-d
ยจ ฮ @ ๐‘‹ ๐‘˜ + 1, ๐‘– =
!-I
"
. ฮ  ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 + ฮ  ๐‘‹ ๐‘˜, ๐‘– + ๐œ‡. ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–)
ยจ Now note that if ฮ @ ๐‘‹ ๐‘˜ + 1, ๐‘– = ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–)
ยจ The Master Equation now would become
ยจ Or: ฮ โ€ฒ ๐‘‹ ๐‘˜ + 1, ๐‘– . (1 โˆ’ ๐œ‡) =
!
"
1 โˆ’ ๐œ‡ . ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–)
ยจ Dividing both sides by the 1 โˆ’ ๐œ‡ term we get:
ยจ ฮ @ ๐‘‹ ๐‘˜ + 1, ๐‘– =
!
"
ฮ  ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 + ฮ  ๐‘‹ ๐‘˜, ๐‘– = ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–)
ยจ This is the same master equation, so probabilities are conserved, and the distribution is also
conserved !! In particular, we also have : โˆ‘*$%
*$12!
ฮ  ๐‘‹ ๐‘˜ + 1, ๐‘— = 1
137
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree VII-e
ยจ Without guessing so much:
ยจ ฮ @ ๐‘‹ ๐‘˜ + 1, ๐‘– =
!-I
"
. ฮ  ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 + ฮ  ๐‘‹ ๐‘˜, ๐‘– + ๐œ‡. ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–)
ยจ And the binomial Master Equation ensures that
ยจ
!-I
"
. ฮ  ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 + ฮ  ๐‘‹ ๐‘˜, ๐‘– = 1 โˆ’ ๐œ‡ . ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–)
ยจ And so :
ยจ ฮ @ ๐‘‹ ๐‘˜ + 1, ๐‘– = 1 โˆ’ ๐œ‡ . ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) + ๐œ‡. ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) = ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–)
ยจ Sounds pretty obvious, but our little trick did not change the probability distribution, and so
it will not affect the price of caplets, and swaps, or any derivatives that can be discounted
without any path dependency
ยจ Swaptions and callables will change in pricing as it will have to be discounted back along the
tree (say it another way, some of the State Prices will be affected)
138
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree VIII
ยจ So numerically we can observe that this will change the price of callable and swaptions
ยจ Will it affect the price of caplets?
ยจ Can we write down the new dynamics for the BDT with this new parameter?
ยจ Can we even write an equation for the continuous process (SDE) ?
ยจ Letโ€™s do the same exercise we did in order to get the new dynamics (if we can)
139
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree IX
ยจ For k large enough the tree is centered around ๐‘‹ ๐‘˜,
1
"
= ๐‘‹?(๐‘˜) for middle
ยจ For each node ๐‘‹ ๐‘˜, ๐‘– = ๐‘‹? ๐‘˜ + ๐‘– โˆ’
1
"
. ๐›ฟ๐‘‹(๐‘˜)
ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– = ๐‘‹? ๐‘˜ + 1 + ๐‘– โˆ’
12!
"
. ๐›ฟ๐‘‹(๐‘˜ + 1)
ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 = ๐‘‹? ๐‘˜ + 1 + ๐‘– + 1 โˆ’
12!
"
. ๐›ฟ๐‘‹(๐‘˜ + 1)
140
X(k,i)
X(k+1,i+1)
X(k+1,i)
๐›ฟ๐‘‹(๐‘˜ + 1)
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree X
ยจ The big difference is that NOW the probabilities have changed to :
ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘– with probability ๐‘ƒC =
!
"
. (1 โˆ’ ๐œ‡)
ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 with probability ๐‘ƒB =
!
"
. (1 โˆ’ ๐œ‡)
ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘— with probability ๐‘ƒ 1,) โ†’(12!,*) = ๐œ‡. ฮ  ๐‘‹(๐‘˜ + 1, ๐‘—)
ยจ Where before we had :
ยจ < ๐‘‹ > =< ๐‘‹12!|๐‘‹(๐‘˜, ๐‘–) > =
!
"
. ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 + ๐‘‹ ๐‘˜ + 1, ๐‘–
ยจ We now have to sum over all the possible nodes in the tree at time (๐‘˜ + 1)
ยจ < ๐‘‹12!|๐‘‹(๐‘˜, ๐‘–) > = โˆ‘*$%
*$12!
๐‘‹ ๐‘˜ + 1, ๐‘— . ๐‘ƒ 1,) โ†’(12!,*)
141
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree XI
ยจ We can make things easier for us and work in the limit of (๐œ‡ โ†’ 0)
ยจ We know that when (๐œ‡ = 0) we have:
ยจ < โˆ†๐‘‹(๐œ‡ = 0) > =
9 1,) -9E 1
89 #
.
;89 #
;#
. ๐›ฟ๐‘ก = ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐‘‹? ๐‘˜ .
!
89 #
.
;89 #
;#
. ๐›ฟ๐‘ก
ยจ For convenience sake, either we set ๐‘‹? ๐‘˜ = 0, or we define ๐‘Œ ๐‘˜, ๐‘– = ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐‘‹? ๐‘˜
and work in the tree in ๐‘Œ.
ยจ If we set ๐‘‹? ๐‘˜ = 0 (we can always add a constant tree drift after)
ยจ < โˆ†๐‘‹(๐œ‡ = 0) > =
9 1,)
89 #
.
;89 #
;#
. ๐›ฟ๐‘ก = ๐‘‹ ๐‘˜, ๐‘– .
!
89 #
.
;89 #
;#
. ๐›ฟ๐‘ก
142
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree XII
ยจ In the limit of small ๐œ‡:
ยจ < โˆ†๐‘‹ > =< ๐‘‹12!|๐‘‹(๐‘˜, ๐‘–) > โˆ’ ๐‘‹(๐‘˜, ๐‘–)
ยจ < ๐‘‹ > =< ๐‘‹ ๐œ‡ = 0 >. 1 โˆ’ ๐œ‡ + ๐œ‡. โˆ‘*$%
*$12!
๐‘‹ ๐‘˜ + 1, ๐‘— . ฮ  ๐‘‹(๐‘˜ + 1, ๐‘—)
ยจ < โˆ†๐‘‹ > = < โˆ†๐‘‹ ๐œ‡ = 0 >. 1 โˆ’ ๐œ‡ + ๐œ‡. ๐›ฟ < โˆ†๐‘‹ >
ยจ With ๐›ฟ < โˆ†๐‘‹ > = โˆ‘*$%
*$12!
{๐‘‹ ๐‘˜ + 1, ๐‘— โˆ’ ๐‘‹ ๐‘˜, ๐‘– }. ฮ  ๐‘‹(๐‘˜ + 1, ๐‘—)
ยจ Or again :
ยจ ๐›ฟ < โˆ†๐‘‹ > = [โˆ‘*$%
*$12!
๐‘‹ ๐‘˜ + 1, ๐‘— . ฮ  ๐‘‹ ๐‘˜ + 1, ๐‘— โˆ’ ๐‘‹ ๐‘˜, ๐‘– ]
ยจ Since: โˆ‘*$%
*$12!
๐‘‹ ๐‘˜, ๐‘– . ฮ  ๐‘‹ ๐‘˜ + 1, ๐‘— = ๐‘‹ ๐‘˜, ๐‘– . โˆ‘*$%
*$12!
ฮ  ๐‘‹ ๐‘˜ + 1, ๐‘— = ๐‘‹ ๐‘˜, ๐‘–
143
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree XIII
ยจ We now have:
ยจ < โˆ†๐‘‹ > = < โˆ†๐‘‹ ๐œ‡ = 0 >. 1 โˆ’ ๐œ‡ + ๐œ‡. ๐›ฟ < โˆ†๐‘‹ >
ยจ ๐›ฟ < โˆ†๐‘‹ > = [โˆ‘*$%
*$12!
๐‘‹ ๐‘˜ + 1, ๐‘— . ฮ  ๐‘‹ ๐‘˜ + 1, ๐‘— โˆ’ ๐‘‹ ๐‘˜, ๐‘– ]
ยจ ๐›ฟ < โˆ†๐‘‹ > = [๐‘‹?(๐‘˜ + 1) โˆ’ ๐‘‹ ๐‘˜, ๐‘– ]
ยจ Remember that:
ยจ ๐‘‹? ๐‘˜ + 1 = โˆ‘*$%
*$12!
๐‘‹ ๐‘˜ + 1, ๐‘— . ฮ  ๐‘‹ ๐‘˜ + 1, ๐‘—
ยจ In the limit of a dense tree ๐‘‹? ๐‘˜ = ๐‘‹(๐‘˜,
1
"
)
ยจ And for each node ๐‘‹ ๐‘˜, ๐‘– = ๐‘‹? ๐‘˜ + ๐‘– โˆ’
1
"
. ๐›ฟ๐‘‹(๐‘˜)
144
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree XIV
ยจ < โˆ†๐‘‹ > = < โˆ†๐‘‹ ๐œ‡ = 0 >. 1 โˆ’ ๐œ‡ + ๐œ‡. [๐‘‹?(๐‘˜ + 1) โˆ’ ๐‘‹ ๐‘˜, ๐‘– ]
ยจ Again we take the liberty of setting ๐‘‹? ๐‘˜ + 1 = ๐‘‹? ๐‘˜ = 0
ยจ (as we can always impose a constant drift later)
ยจ And so : < โˆ†๐‘‹ > = ๐‘‹ ๐‘˜, ๐‘– .
!
89 #
.
;89 #
;#
. ๐›ฟ๐‘ก. 1 โˆ’ ๐œ‡ โˆ’ ๐œ‡. ๐‘‹ ๐‘˜, ๐‘–
ยจ This looks almost like what we are after
ยจ We need to check that the units are correct and consistent between the two terms, in
particular we look to be missing a ๐›ฟ๐‘ก factor in the second term
ยจ Also we worked in the limit (๐œ‡ โ†’ 0) but we know that the BDT construction is algorithmic in
nature, so we are missing the cross-terms and higher order terms, we will need to be
conscious of that
ยจ On the other hand we are trying to get the SDE, which is continuous limit, and not that
helpful, because we are using BDT anyways, and not looking for closed form solutions
145
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree XV
ยจ < โˆ†๐‘‹ > = ๐‘‹ ๐‘˜, ๐‘– .
!
89 #
.
;89 #
;#
. ๐›ฟ๐‘ก. 1 โˆ’ ๐œ‡ โˆ’ ๐œ‡. ๐‘‹ ๐‘˜, ๐‘–
ยจ We have (๐œŽ". ๐›ฟ๐‘ก) =
89+
:
, so
!
89 #
.
;89 #
;#
=
!
=
.
;=
;#
=
=@
=
ยจ For ๐œ‡ = 0 , the BDT dynamics is ๐‘‘๐‘‹ = ๐‘‹.
=@
=
. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š
ยจ In the continuous limit the binomial distribution ฮ  ๐‘‹(๐‘˜, ๐‘–) = 2-1. )
1 =
!
"& .
1!
)! 1-) !
converges to the Gaussian โ„Ž ๐‘‹, ๐‘ก =
!
"J=+#
. exp(
-9+
"=+#
)
146
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree XVI
ยจ We still need to calculate the standard deviation
ยจ We could say the following: our trick did not change the probability distribution and it did
not change the spacing.
ยจ And so the variance of the distribution for a given โ€œsliceโ€ (all nodes at the same time) has
not changed
ยจ This is not completely correct
ยจ Because for the dynamics what we care about is the LOCAL variance (for the process)
ยจ This is quite an important and sometimes concept in trees implementation , where people
sometimes get confused between local and average concept
ยจ For example a BDT tree respects the arbitrage free constraints ON AVERAGE (averaging over
a slice)
ยจ But the BDT tree will NOT respect the arbitrage free constraints locally (as a matter of fact
the very existence of mean reversion in the SDE proves it)
147
Luc_Faucheux_2020
Adding some more mean reversion to the BDT tree XVII
ยจ Why is the binomial distribution converging to a Gaussian
ยจ Taylor expansion of the Master equation (Bachelier thesis)
ยจ Stirling approximation (Bachelier thesis once again)
148
Luc_Faucheux_2020
149
An example of stability in the tree
Luc_Faucheux_2020
Trinomial trees โ€“ an example of stability constraint I
ยจ Again, not quite sure why that is so different from a two-step binomial, by cutting the time
step by half (remember that ๐›ฟ๐‘‹ = 2๐œŽ. ๐›ฟ๐‘ก)
150
X(k,i)
X(k+1,i+1)
X(k+1,i-1)
๐›ฟ๐‘‹/2
๐›ฟ๐‘‹/2
X(k+1,i)
X(k,i)
X(k+2,i+1)
X(k+2,i-1)
๐›ฟ๐‘‹/2
X(k+2,i)
๐›ฟ๐‘‹/2
Luc_Faucheux_2020
Trinomial trees โ€“ an example of stability constraint II
ยจ We saw in the binomial that in order to match the process ๐‘‘๐‘‹ = 0. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š
ยจ ๐œŽ". ๐›ฟ๐‘ก = (
89+
:
)
ยจ ๐›ฟ๐‘‹ = 2๐œŽ. ๐›ฟ๐‘ก
ยจ So we just have to be a little careful, if we divide the time steps in half, we should only adjust
the space step (vertical distance or spacing between nodes) by the square root of it.
ยจ And now adding mean reversion in that binomial tree is also a little tricky
ยจ But again, barring the fact that trinomial trees are maybe easier to use (and also easier to
put on a grid from the usual PDE numerical methods like Explicit / Implicit / Crank-
Nicholson), I am still not convinced that trinomial trees present a true qualitative difference
from binomial trees.
ยจ But again I have been known to be wrong before, and would love to be challenged on that
issue
151
Luc_Faucheux_2020
Trinomial trees โ€“ an example of stability constraint III
ยจ We are going to model the process ๐‘‘๐‘‹ = ๐›ผ. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š
ยจ We will then extend to something like ๐›ผ = ๐›ผ ๐‘‹, ๐‘ก = ๐œƒ ๐‘ก โˆ’ ๐‘˜ ๐‘ก . ๐‘‹ with mean reversion
ยจ The trinomial trees usually are โ€œon a gridโ€, meaning that the spacing is kept constant and the
probabilities are adjusted to reflect the drift, the mean reversion if any, and the volatility
ยจ This is useful as the same grid can be used for the PDE solving (implicit and explicit, Crank-
Nicholson,..) for the diffusion equation
152
X(k,i)
X(k+1,i+1)
X(k+1,i-1)
๐›ฟ๐‘‹/2
๐›ฟ๐‘‹/2
X(k+1,i)
๐‘ƒ&
๐‘ƒ'
๐‘ƒ(
๐›ฟ๐‘ก
Luc_Faucheux_2020
Trinomial trees โ€“ an example of stability constraint IV
ยจ We have the 3 unknowns ๐‘ƒK, ๐‘ƒA, ๐‘ƒL
ยจ We have the 3 equations :
ยจ ๐‘ƒK + ๐‘ƒA + ๐‘ƒL = 1
ยจ < โˆ†๐‘‹ > = ๐‘ƒK. โˆ’
89
"
+ ๐‘ƒA. 0 + ๐‘ƒL. (
89
"
) = ๐›ผ. ๐›ฟ๐‘ก
ยจ < โˆ†๐‘‹"> = ๐‘ƒK.
89
"
"
+ ๐‘ƒA. 0 + ๐‘ƒL.
89
"
"
= (๐›ผ. ๐›ฟ๐‘ก)"+๐œŽ". ๐›ฟ๐‘ก
ยจ We have 3 equations, we have 3 unknowns, we have a fighting chance
153
Luc_Faucheux_2020
Trinomial trees โ€“ an example of stability constraint V
ยจ ๐‘ƒK + ๐‘ƒA + ๐‘ƒL = 1
ยจ < โˆ†๐‘‹ > = (๐‘ƒL โˆ’ ๐‘ƒK).
89
"
= ๐›ผ. ๐›ฟ๐‘ก
ยจ < โˆ†๐‘‹"> = (๐‘ƒL + ๐‘ƒK).
89
"
"
= (๐›ผ. ๐›ฟ๐‘ก)"+๐œŽ". ๐›ฟ๐‘ก
ยจ Or again :
ยจ ๐‘ƒK + ๐‘ƒA + ๐‘ƒL = 1
ยจ (๐‘ƒL โˆ’ ๐‘ƒK) =
"M.8#
89
ยจ (๐‘ƒL + ๐‘ƒK) = {(๐›ผ. ๐›ฟ๐‘ก)"+๐œŽ". ๐›ฟ๐‘ก}.
89
"
-"
154
Luc_Faucheux_2020
Trinomial trees โ€“ an example of stability constraint VI
ยจ The solution is then:
ยจ ๐‘ƒA = 1 โˆ’ {(๐›ผ. ๐›ฟ๐‘ก)"+๐œŽ". ๐›ฟ๐‘ก}.
89
"
-"
ยจ ๐‘ƒL =
!
"
. [
"M.8#
89
+ {(๐›ผ. ๐›ฟ๐‘ก)"+๐œŽ". ๐›ฟ๐‘ก}.
89
"
-"
]
ยจ ๐‘ƒK =
!
"
. [โˆ’
"M.8#
89
+ {(๐›ผ. ๐›ฟ๐‘ก)"+๐œŽ". ๐›ฟ๐‘ก}.
89
"
-"
]
ยจ Note that it would seem sensible that all probabilities should be in [0,1]
ยจ A negative probability in the tree is not necessarily a sign that something is wrong, but it is a
constraint that we would like to enforce (related to stability analysis)
155
Luc_Faucheux_2020
Trinomial trees โ€“ an example of stability constraint VII
ยจ In the simple case where ๐›ผ = 0
ยจ ๐‘ƒA = 1 โˆ’ ๐œŽ". ๐›ฟ๐‘ก.
89
"
-"
ยจ ๐‘ƒL =
!
"
. ๐œŽ". ๐›ฟ๐‘ก.
89
"
-"
= ๐‘ƒK
ยจ ๐‘ƒK =
!
"
. ๐œŽ". ๐›ฟ๐‘ก.
89
"
-"
= ๐‘ƒL
ยจ And we have: ๐‘ƒA > 0 implies 1 โˆ’ ๐œŽ". ๐›ฟ๐‘ก.
89
"
-"
> 0 or ๐›ฟ๐‘‹ > 2๐œŽ ๐›ฟ๐‘ก
ยจ So if we chose a spacing in ๐›ฟ๐‘‹ smaller than (2๐œŽ ๐›ฟ๐‘ก) we will create a negative probability for
the middle jump ๐‘ƒA (meaning the phase spacing is too small, and so the probabilities will
push for more on the wings and will deplete the center in order to still verify the variance or
second moment
156
Luc_Faucheux_2020
Trinomial trees โ€“ an example of stability constraint VIII
ยจ Note that this does not mean that the probability density at the node ๐‘‹(๐‘˜ + 1, ๐‘–) will be
negative, but it will be depleted relative to the wings ๐‘‹(๐‘˜ + 1, ๐‘– + 1) and ๐‘‹(๐‘˜ + 1, ๐‘– โˆ’ 1)
ยจ If the spacing is really too small we can run into
ยจ ๐‘ƒL =
!
"
. ๐œŽ". ๐›ฟ๐‘ก.
89
"
-"
= ๐‘ƒK > 1 when ๐›ฟ๐‘‹ < ๐œŽ 2๐›ฟ๐‘ก
ยจ Again, mathematically there is nothing wrong there yet, it is just a little weird to have
negative jump probabilities. Also a little hard to see what happens with more than one level
ยจ But one can see how that effect will propagate along the tree and create a situation where
only the 2 nodes on the wings have infinite positive probability and every other nodes in
between will have negative infinite probability. This will also violate the added constraint
that the probability distribution has to follow the heat equation and converges to a
Gaussian.
ยจ This is essentially what stability analysis is all about : the propagation of small errors, does
that grow exponentially and diverges or is it โ€œunder controlโ€ ?
157

More Related Content

Similar to Lf 2020 trees

Lf 2021 rates_viii_a
Lf 2021 rates_viii_aLf 2021 rates_viii_a
Lf 2021 rates_viii_a
luc faucheux
ย 
The Ring programming language version 1.9 book - Part 69 of 210
The Ring programming language version 1.9 book - Part 69 of 210The Ring programming language version 1.9 book - Part 69 of 210
The Ring programming language version 1.9 book - Part 69 of 210
Mahmoud Samir Fayed
ย 
Measurement of reliability parameters for a power
Measurement of reliability parameters for a powerMeasurement of reliability parameters for a power
Measurement of reliability parameters for a power
eSAT Publishing House
ย 
The Ring programming language version 1.5.3 book - Part 69 of 184
The Ring programming language version 1.5.3 book - Part 69 of 184The Ring programming language version 1.5.3 book - Part 69 of 184
The Ring programming language version 1.5.3 book - Part 69 of 184
Mahmoud Samir Fayed
ย 
The Ring programming language version 1.8 book - Part 66 of 202
The Ring programming language version 1.8 book - Part 66 of 202The Ring programming language version 1.8 book - Part 66 of 202
The Ring programming language version 1.8 book - Part 66 of 202
Mahmoud Samir Fayed
ย 
TAoCP 7.7.7.2 Satisfiability ใฎ่ผช่ชญ
TAoCP 7.7.7.2 Satisfiability ใฎ่ผช่ชญTAoCP 7.7.7.2 Satisfiability ใฎ่ผช่ชญ
TAoCP 7.7.7.2 Satisfiability ใฎ่ผช่ชญ
Kotaro Okazaki
ย 
The Art of Computer Programming volume 4 fascicle 6 7.7.7.2 p.47-76
The Art of Computer Programming volume 4 fascicle 6 7.7.7.2 p.47-76 The Art of Computer Programming volume 4 fascicle 6 7.7.7.2 p.47-76
The Art of Computer Programming volume 4 fascicle 6 7.7.7.2 p.47-76
Kotaro Okazaki
ย 
Mesh Processing Course : Multiresolution
Mesh Processing Course : MultiresolutionMesh Processing Course : Multiresolution
Mesh Processing Course : Multiresolution
Gabriel Peyrรฉ
ย 
The Ring programming language version 1.6 book - Part 61 of 189
The Ring programming language version 1.6 book - Part 61 of 189The Ring programming language version 1.6 book - Part 61 of 189
The Ring programming language version 1.6 book - Part 61 of 189
Mahmoud Samir Fayed
ย 
Valeri Labunets - Fast multiparametric wavelet transforms and packets for ima...
Valeri Labunets - Fast multiparametric wavelet transforms and packets for ima...Valeri Labunets - Fast multiparametric wavelet transforms and packets for ima...
Valeri Labunets - Fast multiparametric wavelet transforms and packets for ima...
AIST
ย 
Biosight: Quantitative Methods for Policy Analysis: Stochastic Dynamic Progra...
Biosight: Quantitative Methods for Policy Analysis: Stochastic Dynamic Progra...Biosight: Quantitative Methods for Policy Analysis: Stochastic Dynamic Progra...
Biosight: Quantitative Methods for Policy Analysis: Stochastic Dynamic Progra...
IFPRI-EPTD
ย 
Smoothed Particle Galerkin Method Formulation.pdf
Smoothed Particle Galerkin Method Formulation.pdfSmoothed Particle Galerkin Method Formulation.pdf
Smoothed Particle Galerkin Method Formulation.pdf
keansheng
ย 
Strong convergence of an algorithm about strongly quasi nonexpansive mappings
Strong convergence of an algorithm about strongly quasi nonexpansive mappingsStrong convergence of an algorithm about strongly quasi nonexpansive mappings
Strong convergence of an algorithm about strongly quasi nonexpansive mappings
Alexander Decker
ย 
ู…ู„ุฒู…ุฉ ุงู„ุฑูŠุงุถูŠุงุช ู„ู„ุตู ุงู„ุณุงุฏุณ ุงู„ุชุทุจูŠู‚ูŠ ุงู„ูุตู„ ุงู„ุงูˆู„ ุงู„ุงุนุฏุงุฏ ุงู„ู…ุฑูƒุจุฉ 2022
 ู…ู„ุฒู…ุฉ ุงู„ุฑูŠุงุถูŠุงุช ู„ู„ุตู ุงู„ุณุงุฏุณ ุงู„ุชุทุจูŠู‚ูŠ ุงู„ูุตู„ ุงู„ุงูˆู„ ุงู„ุงุนุฏุงุฏ ุงู„ู…ุฑูƒุจุฉ 2022 ู…ู„ุฒู…ุฉ ุงู„ุฑูŠุงุถูŠุงุช ู„ู„ุตู ุงู„ุณุงุฏุณ ุงู„ุชุทุจูŠู‚ูŠ ุงู„ูุตู„ ุงู„ุงูˆู„ ุงู„ุงุนุฏุงุฏ ุงู„ู…ุฑูƒุจุฉ 2022
ู…ู„ุฒู…ุฉ ุงู„ุฑูŠุงุถูŠุงุช ู„ู„ุตู ุงู„ุณุงุฏุณ ุงู„ุชุทุจูŠู‚ูŠ ุงู„ูุตู„ ุงู„ุงูˆู„ ุงู„ุงุนุฏุงุฏ ุงู„ู…ุฑูƒุจุฉ 2022
anasKhalaf4
ย 
Algorithm Design and Complexity - Course 12
Algorithm Design and Complexity - Course 12Algorithm Design and Complexity - Course 12
Algorithm Design and Complexity - Course 12Traian Rebedea
ย 
STRUCTURAL DYNAMICS MULTI DEGREE OF FREEDOM SYSTEMS EQUATION OF MOTION
STRUCTURAL DYNAMICS MULTI DEGREE OF FREEDOM SYSTEMS EQUATION OF MOTIONSTRUCTURAL DYNAMICS MULTI DEGREE OF FREEDOM SYSTEMS EQUATION OF MOTION
STRUCTURAL DYNAMICS MULTI DEGREE OF FREEDOM SYSTEMS EQUATION OF MOTION
tekalign24
ย 
STRUCTURAL DYNAMICS MULTI DEGREE OF FREEDOM SYSTEMS EQUATION OF MOTION
STRUCTURAL DYNAMICS MULTI DEGREE OF FREEDOM SYSTEMS EQUATION OF MOTIONSTRUCTURAL DYNAMICS MULTI DEGREE OF FREEDOM SYSTEMS EQUATION OF MOTION
STRUCTURAL DYNAMICS MULTI DEGREE OF FREEDOM SYSTEMS EQUATION OF MOTION
tekalign24
ย 
Vine shortest example
Vine shortest exampleVine shortest example
Vine shortest example
Hanyang University
ย 
Geohydrology ii (3)
Geohydrology ii (3)Geohydrology ii (3)
Geohydrology ii (3)
Amro Elfeki
ย 
ู…ู„ุฒู…ุฉ ุงู„ุฑูŠุงุถูŠุงุช ู„ู„ุตู ุงู„ุณุงุฏุณ ุงู„ุงุญูŠุงุฆูŠ ุงู„ูุตู„ ุงู„ุงูˆู„
ู…ู„ุฒู…ุฉ ุงู„ุฑูŠุงุถูŠุงุช ู„ู„ุตู ุงู„ุณุงุฏุณ ุงู„ุงุญูŠุงุฆูŠ ุงู„ูุตู„ ุงู„ุงูˆู„ู…ู„ุฒู…ุฉ ุงู„ุฑูŠุงุถูŠุงุช ู„ู„ุตู ุงู„ุณุงุฏุณ ุงู„ุงุญูŠุงุฆูŠ ุงู„ูุตู„ ุงู„ุงูˆู„
ู…ู„ุฒู…ุฉ ุงู„ุฑูŠุงุถูŠุงุช ู„ู„ุตู ุงู„ุณุงุฏุณ ุงู„ุงุญูŠุงุฆูŠ ุงู„ูุตู„ ุงู„ุงูˆู„
anasKhalaf4
ย 

Similar to Lf 2020 trees (20)

Lf 2021 rates_viii_a
Lf 2021 rates_viii_aLf 2021 rates_viii_a
Lf 2021 rates_viii_a
ย 
The Ring programming language version 1.9 book - Part 69 of 210
The Ring programming language version 1.9 book - Part 69 of 210The Ring programming language version 1.9 book - Part 69 of 210
The Ring programming language version 1.9 book - Part 69 of 210
ย 
Measurement of reliability parameters for a power
Measurement of reliability parameters for a powerMeasurement of reliability parameters for a power
Measurement of reliability parameters for a power
ย 
The Ring programming language version 1.5.3 book - Part 69 of 184
The Ring programming language version 1.5.3 book - Part 69 of 184The Ring programming language version 1.5.3 book - Part 69 of 184
The Ring programming language version 1.5.3 book - Part 69 of 184
ย 
The Ring programming language version 1.8 book - Part 66 of 202
The Ring programming language version 1.8 book - Part 66 of 202The Ring programming language version 1.8 book - Part 66 of 202
The Ring programming language version 1.8 book - Part 66 of 202
ย 
TAoCP 7.7.7.2 Satisfiability ใฎ่ผช่ชญ
TAoCP 7.7.7.2 Satisfiability ใฎ่ผช่ชญTAoCP 7.7.7.2 Satisfiability ใฎ่ผช่ชญ
TAoCP 7.7.7.2 Satisfiability ใฎ่ผช่ชญ
ย 
The Art of Computer Programming volume 4 fascicle 6 7.7.7.2 p.47-76
The Art of Computer Programming volume 4 fascicle 6 7.7.7.2 p.47-76 The Art of Computer Programming volume 4 fascicle 6 7.7.7.2 p.47-76
The Art of Computer Programming volume 4 fascicle 6 7.7.7.2 p.47-76
ย 
Mesh Processing Course : Multiresolution
Mesh Processing Course : MultiresolutionMesh Processing Course : Multiresolution
Mesh Processing Course : Multiresolution
ย 
The Ring programming language version 1.6 book - Part 61 of 189
The Ring programming language version 1.6 book - Part 61 of 189The Ring programming language version 1.6 book - Part 61 of 189
The Ring programming language version 1.6 book - Part 61 of 189
ย 
Valeri Labunets - Fast multiparametric wavelet transforms and packets for ima...
Valeri Labunets - Fast multiparametric wavelet transforms and packets for ima...Valeri Labunets - Fast multiparametric wavelet transforms and packets for ima...
Valeri Labunets - Fast multiparametric wavelet transforms and packets for ima...
ย 
Biosight: Quantitative Methods for Policy Analysis: Stochastic Dynamic Progra...
Biosight: Quantitative Methods for Policy Analysis: Stochastic Dynamic Progra...Biosight: Quantitative Methods for Policy Analysis: Stochastic Dynamic Progra...
Biosight: Quantitative Methods for Policy Analysis: Stochastic Dynamic Progra...
ย 
Smoothed Particle Galerkin Method Formulation.pdf
Smoothed Particle Galerkin Method Formulation.pdfSmoothed Particle Galerkin Method Formulation.pdf
Smoothed Particle Galerkin Method Formulation.pdf
ย 
Strong convergence of an algorithm about strongly quasi nonexpansive mappings
Strong convergence of an algorithm about strongly quasi nonexpansive mappingsStrong convergence of an algorithm about strongly quasi nonexpansive mappings
Strong convergence of an algorithm about strongly quasi nonexpansive mappings
ย 
ู…ู„ุฒู…ุฉ ุงู„ุฑูŠุงุถูŠุงุช ู„ู„ุตู ุงู„ุณุงุฏุณ ุงู„ุชุทุจูŠู‚ูŠ ุงู„ูุตู„ ุงู„ุงูˆู„ ุงู„ุงุนุฏุงุฏ ุงู„ู…ุฑูƒุจุฉ 2022
 ู…ู„ุฒู…ุฉ ุงู„ุฑูŠุงุถูŠุงุช ู„ู„ุตู ุงู„ุณุงุฏุณ ุงู„ุชุทุจูŠู‚ูŠ ุงู„ูุตู„ ุงู„ุงูˆู„ ุงู„ุงุนุฏุงุฏ ุงู„ู…ุฑูƒุจุฉ 2022 ู…ู„ุฒู…ุฉ ุงู„ุฑูŠุงุถูŠุงุช ู„ู„ุตู ุงู„ุณุงุฏุณ ุงู„ุชุทุจูŠู‚ูŠ ุงู„ูุตู„ ุงู„ุงูˆู„ ุงู„ุงุนุฏุงุฏ ุงู„ู…ุฑูƒุจุฉ 2022
ู…ู„ุฒู…ุฉ ุงู„ุฑูŠุงุถูŠุงุช ู„ู„ุตู ุงู„ุณุงุฏุณ ุงู„ุชุทุจูŠู‚ูŠ ุงู„ูุตู„ ุงู„ุงูˆู„ ุงู„ุงุนุฏุงุฏ ุงู„ู…ุฑูƒุจุฉ 2022
ย 
Algorithm Design and Complexity - Course 12
Algorithm Design and Complexity - Course 12Algorithm Design and Complexity - Course 12
Algorithm Design and Complexity - Course 12
ย 
STRUCTURAL DYNAMICS MULTI DEGREE OF FREEDOM SYSTEMS EQUATION OF MOTION
STRUCTURAL DYNAMICS MULTI DEGREE OF FREEDOM SYSTEMS EQUATION OF MOTIONSTRUCTURAL DYNAMICS MULTI DEGREE OF FREEDOM SYSTEMS EQUATION OF MOTION
STRUCTURAL DYNAMICS MULTI DEGREE OF FREEDOM SYSTEMS EQUATION OF MOTION
ย 
STRUCTURAL DYNAMICS MULTI DEGREE OF FREEDOM SYSTEMS EQUATION OF MOTION
STRUCTURAL DYNAMICS MULTI DEGREE OF FREEDOM SYSTEMS EQUATION OF MOTIONSTRUCTURAL DYNAMICS MULTI DEGREE OF FREEDOM SYSTEMS EQUATION OF MOTION
STRUCTURAL DYNAMICS MULTI DEGREE OF FREEDOM SYSTEMS EQUATION OF MOTION
ย 
Vine shortest example
Vine shortest exampleVine shortest example
Vine shortest example
ย 
Geohydrology ii (3)
Geohydrology ii (3)Geohydrology ii (3)
Geohydrology ii (3)
ย 
ู…ู„ุฒู…ุฉ ุงู„ุฑูŠุงุถูŠุงุช ู„ู„ุตู ุงู„ุณุงุฏุณ ุงู„ุงุญูŠุงุฆูŠ ุงู„ูุตู„ ุงู„ุงูˆู„
ู…ู„ุฒู…ุฉ ุงู„ุฑูŠุงุถูŠุงุช ู„ู„ุตู ุงู„ุณุงุฏุณ ุงู„ุงุญูŠุงุฆูŠ ุงู„ูุตู„ ุงู„ุงูˆู„ู…ู„ุฒู…ุฉ ุงู„ุฑูŠุงุถูŠุงุช ู„ู„ุตู ุงู„ุณุงุฏุณ ุงู„ุงุญูŠุงุฆูŠ ุงู„ูุตู„ ุงู„ุงูˆู„
ู…ู„ุฒู…ุฉ ุงู„ุฑูŠุงุถูŠุงุช ู„ู„ุตู ุงู„ุณุงุฏุณ ุงู„ุงุญูŠุงุฆูŠ ุงู„ูุตู„ ุงู„ุงูˆู„
ย 

More from luc faucheux

Marcel_Faucheux_Taquin.pdf
Marcel_Faucheux_Taquin.pdfMarcel_Faucheux_Taquin.pdf
Marcel_Faucheux_Taquin.pdf
luc faucheux
ย 
Selection_Brownian_Particles.pdf
Selection_Brownian_Particles.pdfSelection_Brownian_Particles.pdf
Selection_Brownian_Particles.pdf
luc faucheux
ย 
Binary_Potential.pdf
Binary_Potential.pdfBinary_Potential.pdf
Binary_Potential.pdf
luc faucheux
ย 
Periodic_Forcing.pdf
Periodic_Forcing.pdfPeriodic_Forcing.pdf
Periodic_Forcing.pdf
luc faucheux
ย 
ConfinedBrownian MotionPhysRevE.49.5158.pdf
ConfinedBrownian MotionPhysRevE.49.5158.pdfConfinedBrownian MotionPhysRevE.49.5158.pdf
ConfinedBrownian MotionPhysRevE.49.5158.pdf
luc faucheux
ย 
Optical_Thermal_Ratchet.pdf
Optical_Thermal_Ratchet.pdfOptical_Thermal_Ratchet.pdf
Optical_Thermal_Ratchet.pdf
luc faucheux
ย 
Lf 2021 stochastic_calculus_ito-iii-a
Lf 2021 stochastic_calculus_ito-iii-aLf 2021 stochastic_calculus_ito-iii-a
Lf 2021 stochastic_calculus_ito-iii-a
luc faucheux
ย 
Lf 2021 risk_management_101
Lf 2021 risk_management_101Lf 2021 risk_management_101
Lf 2021 risk_management_101
luc faucheux
ย 
Lf 2021 risk_management_101
Lf 2021 risk_management_101Lf 2021 risk_management_101
Lf 2021 risk_management_101
luc faucheux
ย 
Lf 2021 rates_viii
Lf 2021 rates_viiiLf 2021 rates_viii
Lf 2021 rates_viii
luc faucheux
ย 
Lf 2021 rates_vi
Lf 2021 rates_viLf 2021 rates_vi
Lf 2021 rates_vi
luc faucheux
ย 
Lf 2021 rates_v_b2
Lf 2021 rates_v_b2Lf 2021 rates_v_b2
Lf 2021 rates_v_b2
luc faucheux
ย 
Lf 2021 rates_v_a
Lf 2021 rates_v_aLf 2021 rates_v_a
Lf 2021 rates_v_a
luc faucheux
ย 
Lf 2020 rates_iii
Lf 2020 rates_iiiLf 2020 rates_iii
Lf 2020 rates_iii
luc faucheux
ย 
Lf 2020 rates_i
Lf 2020 rates_iLf 2020 rates_i
Lf 2020 rates_i
luc faucheux
ย 
Lf 2020 stochastic_calculus_ito-i
Lf 2020 stochastic_calculus_ito-iLf 2020 stochastic_calculus_ito-i
Lf 2020 stochastic_calculus_ito-i
luc faucheux
ย 
Lf 2020 structured
Lf 2020 structuredLf 2020 structured
Lf 2020 structured
luc faucheux
ย 
Lf 2020 options
Lf 2020 optionsLf 2020 options
Lf 2020 options
luc faucheux
ย 
Lf 2020 skew
Lf 2020 skewLf 2020 skew
Lf 2020 skew
luc faucheux
ย 
Lf 2020 bachelier
Lf 2020 bachelierLf 2020 bachelier
Lf 2020 bachelier
luc faucheux
ย 

More from luc faucheux (20)

Marcel_Faucheux_Taquin.pdf
Marcel_Faucheux_Taquin.pdfMarcel_Faucheux_Taquin.pdf
Marcel_Faucheux_Taquin.pdf
ย 
Selection_Brownian_Particles.pdf
Selection_Brownian_Particles.pdfSelection_Brownian_Particles.pdf
Selection_Brownian_Particles.pdf
ย 
Binary_Potential.pdf
Binary_Potential.pdfBinary_Potential.pdf
Binary_Potential.pdf
ย 
Periodic_Forcing.pdf
Periodic_Forcing.pdfPeriodic_Forcing.pdf
Periodic_Forcing.pdf
ย 
ConfinedBrownian MotionPhysRevE.49.5158.pdf
ConfinedBrownian MotionPhysRevE.49.5158.pdfConfinedBrownian MotionPhysRevE.49.5158.pdf
ConfinedBrownian MotionPhysRevE.49.5158.pdf
ย 
Optical_Thermal_Ratchet.pdf
Optical_Thermal_Ratchet.pdfOptical_Thermal_Ratchet.pdf
Optical_Thermal_Ratchet.pdf
ย 
Lf 2021 stochastic_calculus_ito-iii-a
Lf 2021 stochastic_calculus_ito-iii-aLf 2021 stochastic_calculus_ito-iii-a
Lf 2021 stochastic_calculus_ito-iii-a
ย 
Lf 2021 risk_management_101
Lf 2021 risk_management_101Lf 2021 risk_management_101
Lf 2021 risk_management_101
ย 
Lf 2021 risk_management_101
Lf 2021 risk_management_101Lf 2021 risk_management_101
Lf 2021 risk_management_101
ย 
Lf 2021 rates_viii
Lf 2021 rates_viiiLf 2021 rates_viii
Lf 2021 rates_viii
ย 
Lf 2021 rates_vi
Lf 2021 rates_viLf 2021 rates_vi
Lf 2021 rates_vi
ย 
Lf 2021 rates_v_b2
Lf 2021 rates_v_b2Lf 2021 rates_v_b2
Lf 2021 rates_v_b2
ย 
Lf 2021 rates_v_a
Lf 2021 rates_v_aLf 2021 rates_v_a
Lf 2021 rates_v_a
ย 
Lf 2020 rates_iii
Lf 2020 rates_iiiLf 2020 rates_iii
Lf 2020 rates_iii
ย 
Lf 2020 rates_i
Lf 2020 rates_iLf 2020 rates_i
Lf 2020 rates_i
ย 
Lf 2020 stochastic_calculus_ito-i
Lf 2020 stochastic_calculus_ito-iLf 2020 stochastic_calculus_ito-i
Lf 2020 stochastic_calculus_ito-i
ย 
Lf 2020 structured
Lf 2020 structuredLf 2020 structured
Lf 2020 structured
ย 
Lf 2020 options
Lf 2020 optionsLf 2020 options
Lf 2020 options
ย 
Lf 2020 skew
Lf 2020 skewLf 2020 skew
Lf 2020 skew
ย 
Lf 2020 bachelier
Lf 2020 bachelierLf 2020 bachelier
Lf 2020 bachelier
ย 

Recently uploaded

Summary of financial results for 1Q2024
Summary of financial  results for 1Q2024Summary of financial  results for 1Q2024
Summary of financial results for 1Q2024
InterCars
ย 
Poonawalla Fincorp and IndusInd Bank Introduce New Co-Branded Credit Card
Poonawalla Fincorp and IndusInd Bank Introduce New Co-Branded Credit CardPoonawalla Fincorp and IndusInd Bank Introduce New Co-Branded Credit Card
Poonawalla Fincorp and IndusInd Bank Introduce New Co-Branded Credit Card
nickysharmasucks
ย 
how to sell pi coins in South Korea profitably.
how to sell pi coins in South Korea profitably.how to sell pi coins in South Korea profitably.
how to sell pi coins in South Korea profitably.
DOT TECH
ย 
The European Unemployment Puzzle: implications from population aging
The European Unemployment Puzzle: implications from population agingThe European Unemployment Puzzle: implications from population aging
The European Unemployment Puzzle: implications from population aging
GRAPE
ย 
Introduction to Indian Financial System ()
Introduction to Indian Financial System ()Introduction to Indian Financial System ()
Introduction to Indian Financial System ()
Avanish Goel
ย 
Commercial Bank Economic Capsule - May 2024
Commercial Bank Economic Capsule - May 2024Commercial Bank Economic Capsule - May 2024
Commercial Bank Economic Capsule - May 2024
Commercial Bank of Ceylon PLC
ย 
what is the future of Pi Network currency.
what is the future of Pi Network currency.what is the future of Pi Network currency.
what is the future of Pi Network currency.
DOT TECH
ย 
what is the best method to sell pi coins in 2024
what is the best method to sell pi coins in 2024what is the best method to sell pi coins in 2024
what is the best method to sell pi coins in 2024
DOT TECH
ย 
NO1 Uk Divorce problem uk all amil baba in karachi,lahore,pakistan talaq ka m...
NO1 Uk Divorce problem uk all amil baba in karachi,lahore,pakistan talaq ka m...NO1 Uk Divorce problem uk all amil baba in karachi,lahore,pakistan talaq ka m...
NO1 Uk Divorce problem uk all amil baba in karachi,lahore,pakistan talaq ka m...
Amil Baba Dawood bangali
ย 
how can i use my minded pi coins I need some funds.
how can i use my minded pi coins I need some funds.how can i use my minded pi coins I need some funds.
how can i use my minded pi coins I need some funds.
DOT TECH
ย 
Which Crypto to Buy Today for Short-Term in May-June 2024.pdf
Which Crypto to Buy Today for Short-Term in May-June 2024.pdfWhich Crypto to Buy Today for Short-Term in May-June 2024.pdf
Which Crypto to Buy Today for Short-Term in May-June 2024.pdf
Kezex (KZX)
ย 
ไธ€ๆฏ”ไธ€ๅŽŸ็‰ˆBirminghamๆฏ•ไธš่ฏไผฏๆ˜Ž็ฟฐๅคงๅญฆ|ๅญฆ้™ขๆฏ•ไธš่ฏๆˆ็ปฉๅ•ๅฆ‚ไฝ•ๅŠž็†
ไธ€ๆฏ”ไธ€ๅŽŸ็‰ˆBirminghamๆฏ•ไธš่ฏไผฏๆ˜Ž็ฟฐๅคงๅญฆ|ๅญฆ้™ขๆฏ•ไธš่ฏๆˆ็ปฉๅ•ๅฆ‚ไฝ•ๅŠž็†ไธ€ๆฏ”ไธ€ๅŽŸ็‰ˆBirminghamๆฏ•ไธš่ฏไผฏๆ˜Ž็ฟฐๅคงๅญฆ|ๅญฆ้™ขๆฏ•ไธš่ฏๆˆ็ปฉๅ•ๅฆ‚ไฝ•ๅŠž็†
ไธ€ๆฏ”ไธ€ๅŽŸ็‰ˆBirminghamๆฏ•ไธš่ฏไผฏๆ˜Ž็ฟฐๅคงๅญฆ|ๅญฆ้™ขๆฏ•ไธš่ฏๆˆ็ปฉๅ•ๅฆ‚ไฝ•ๅŠž็†
betoozp
ย 
Greek trade a pillar of dynamic economic growth - European Business Review
Greek trade a pillar of dynamic economic growth - European Business ReviewGreek trade a pillar of dynamic economic growth - European Business Review
Greek trade a pillar of dynamic economic growth - European Business Review
Antonis Zairis
ย 
how to sell pi coins at high rate quickly.
how to sell pi coins at high rate quickly.how to sell pi coins at high rate quickly.
how to sell pi coins at high rate quickly.
DOT TECH
ย 
how can I sell my pi coins for cash in a pi APP
how can I sell my pi coins for cash in a pi APPhow can I sell my pi coins for cash in a pi APP
how can I sell my pi coins for cash in a pi APP
DOT TECH
ย 
MERCHANTBANKING-PDF complete picture.pdf
MERCHANTBANKING-PDF complete picture.pdfMERCHANTBANKING-PDF complete picture.pdf
MERCHANTBANKING-PDF complete picture.pdf
Sudarshan Dakuru
ย 
655264371-checkpoint-science-past-papers-april-2023.pdf
655264371-checkpoint-science-past-papers-april-2023.pdf655264371-checkpoint-science-past-papers-april-2023.pdf
655264371-checkpoint-science-past-papers-april-2023.pdf
morearsh02
ย 
how to swap pi coins to foreign currency withdrawable.
how to swap pi coins to foreign currency withdrawable.how to swap pi coins to foreign currency withdrawable.
how to swap pi coins to foreign currency withdrawable.
DOT TECH
ย 
US Economic Outlook - Being Decided - M Capital Group August 2021.pdf
US Economic Outlook - Being Decided - M Capital Group August 2021.pdfUS Economic Outlook - Being Decided - M Capital Group August 2021.pdf
US Economic Outlook - Being Decided - M Capital Group August 2021.pdf
pchutichetpong
ย 
The new type of smart, sustainable entrepreneurship and the next day | Europe...
The new type of smart, sustainable entrepreneurship and the next day | Europe...The new type of smart, sustainable entrepreneurship and the next day | Europe...
The new type of smart, sustainable entrepreneurship and the next day | Europe...
Antonis Zairis
ย 

Recently uploaded (20)

Summary of financial results for 1Q2024
Summary of financial  results for 1Q2024Summary of financial  results for 1Q2024
Summary of financial results for 1Q2024
ย 
Poonawalla Fincorp and IndusInd Bank Introduce New Co-Branded Credit Card
Poonawalla Fincorp and IndusInd Bank Introduce New Co-Branded Credit CardPoonawalla Fincorp and IndusInd Bank Introduce New Co-Branded Credit Card
Poonawalla Fincorp and IndusInd Bank Introduce New Co-Branded Credit Card
ย 
how to sell pi coins in South Korea profitably.
how to sell pi coins in South Korea profitably.how to sell pi coins in South Korea profitably.
how to sell pi coins in South Korea profitably.
ย 
The European Unemployment Puzzle: implications from population aging
The European Unemployment Puzzle: implications from population agingThe European Unemployment Puzzle: implications from population aging
The European Unemployment Puzzle: implications from population aging
ย 
Introduction to Indian Financial System ()
Introduction to Indian Financial System ()Introduction to Indian Financial System ()
Introduction to Indian Financial System ()
ย 
Commercial Bank Economic Capsule - May 2024
Commercial Bank Economic Capsule - May 2024Commercial Bank Economic Capsule - May 2024
Commercial Bank Economic Capsule - May 2024
ย 
what is the future of Pi Network currency.
what is the future of Pi Network currency.what is the future of Pi Network currency.
what is the future of Pi Network currency.
ย 
what is the best method to sell pi coins in 2024
what is the best method to sell pi coins in 2024what is the best method to sell pi coins in 2024
what is the best method to sell pi coins in 2024
ย 
NO1 Uk Divorce problem uk all amil baba in karachi,lahore,pakistan talaq ka m...
NO1 Uk Divorce problem uk all amil baba in karachi,lahore,pakistan talaq ka m...NO1 Uk Divorce problem uk all amil baba in karachi,lahore,pakistan talaq ka m...
NO1 Uk Divorce problem uk all amil baba in karachi,lahore,pakistan talaq ka m...
ย 
how can i use my minded pi coins I need some funds.
how can i use my minded pi coins I need some funds.how can i use my minded pi coins I need some funds.
how can i use my minded pi coins I need some funds.
ย 
Which Crypto to Buy Today for Short-Term in May-June 2024.pdf
Which Crypto to Buy Today for Short-Term in May-June 2024.pdfWhich Crypto to Buy Today for Short-Term in May-June 2024.pdf
Which Crypto to Buy Today for Short-Term in May-June 2024.pdf
ย 
ไธ€ๆฏ”ไธ€ๅŽŸ็‰ˆBirminghamๆฏ•ไธš่ฏไผฏๆ˜Ž็ฟฐๅคงๅญฆ|ๅญฆ้™ขๆฏ•ไธš่ฏๆˆ็ปฉๅ•ๅฆ‚ไฝ•ๅŠž็†
ไธ€ๆฏ”ไธ€ๅŽŸ็‰ˆBirminghamๆฏ•ไธš่ฏไผฏๆ˜Ž็ฟฐๅคงๅญฆ|ๅญฆ้™ขๆฏ•ไธš่ฏๆˆ็ปฉๅ•ๅฆ‚ไฝ•ๅŠž็†ไธ€ๆฏ”ไธ€ๅŽŸ็‰ˆBirminghamๆฏ•ไธš่ฏไผฏๆ˜Ž็ฟฐๅคงๅญฆ|ๅญฆ้™ขๆฏ•ไธš่ฏๆˆ็ปฉๅ•ๅฆ‚ไฝ•ๅŠž็†
ไธ€ๆฏ”ไธ€ๅŽŸ็‰ˆBirminghamๆฏ•ไธš่ฏไผฏๆ˜Ž็ฟฐๅคงๅญฆ|ๅญฆ้™ขๆฏ•ไธš่ฏๆˆ็ปฉๅ•ๅฆ‚ไฝ•ๅŠž็†
ย 
Greek trade a pillar of dynamic economic growth - European Business Review
Greek trade a pillar of dynamic economic growth - European Business ReviewGreek trade a pillar of dynamic economic growth - European Business Review
Greek trade a pillar of dynamic economic growth - European Business Review
ย 
how to sell pi coins at high rate quickly.
how to sell pi coins at high rate quickly.how to sell pi coins at high rate quickly.
how to sell pi coins at high rate quickly.
ย 
how can I sell my pi coins for cash in a pi APP
how can I sell my pi coins for cash in a pi APPhow can I sell my pi coins for cash in a pi APP
how can I sell my pi coins for cash in a pi APP
ย 
MERCHANTBANKING-PDF complete picture.pdf
MERCHANTBANKING-PDF complete picture.pdfMERCHANTBANKING-PDF complete picture.pdf
MERCHANTBANKING-PDF complete picture.pdf
ย 
655264371-checkpoint-science-past-papers-april-2023.pdf
655264371-checkpoint-science-past-papers-april-2023.pdf655264371-checkpoint-science-past-papers-april-2023.pdf
655264371-checkpoint-science-past-papers-april-2023.pdf
ย 
how to swap pi coins to foreign currency withdrawable.
how to swap pi coins to foreign currency withdrawable.how to swap pi coins to foreign currency withdrawable.
how to swap pi coins to foreign currency withdrawable.
ย 
US Economic Outlook - Being Decided - M Capital Group August 2021.pdf
US Economic Outlook - Being Decided - M Capital Group August 2021.pdfUS Economic Outlook - Being Decided - M Capital Group August 2021.pdf
US Economic Outlook - Being Decided - M Capital Group August 2021.pdf
ย 
The new type of smart, sustainable entrepreneurship and the next day | Europe...
The new type of smart, sustainable entrepreneurship and the next day | Europe...The new type of smart, sustainable entrepreneurship and the next day | Europe...
The new type of smart, sustainable entrepreneurship and the next day | Europe...
ย 

Lf 2020 trees

  • 2. Luc_Faucheux_2020 Recombining Binomial trees 2 ยจ Fast, memory efficient, numerically stable and well understood (number of nodes ~ N^2) ยจ Can be used to run Monte Carlo simulations on the trees ยจ Arbitrage is respected ONLY on average on a slice
  • 3. Luc_Faucheux_2020 Recombining Binomial trees ยจ Cropping ยจ Mean reversion ยจ Storing curve in memory versus recalculating on the fly (storing discounts versus calling exp()) ยจ Single volatility models for callable as an example 3
  • 4. Luc_Faucheux_2020 Non-recombining binomial tree ยจ Respect arbitrage free at EVERY node in the tree ยจ Simplest to implement ยจ Very close to Monte Carlo simulations ยจ Very expensive in CPU and memory (number of nodes ~ 2^N) 4
  • 5. Luc_Faucheux_2020 Monte Carlo simulation ยจ Bundling ยจ Regression ยจ Choice of regression factors ยจ Numerically noisy (accuracy ~ N^(-1/2)) ยจ Very CPU intensive ยจ But very intuitive, very flexible, and as we saw in the Skew module, you can run a Monte Carlo on a simpler model, or on an entire portfolio once you have created a portfolio map 5
  • 7. Luc_Faucheux_2020 The glorious life of a valiant forward ยจ f(t,t1,t2) is the forward rate between the time t1 and t2 on the curve observed at time t ยจ t, t1 and t2 are by convention in absolute ยจ f(t,t1,t2) evolves from (t) to (t+1) into f(t+1,t1,t2) with instantaneous volatility ๐œŽ(๐‘ก, ๐‘ก!, ๐‘ก") ยจ f(t,t1,t2) โ€œdiesโ€ as the anchor overnight rate on the curve observed at time t2 ยจ โ€œRolling forwardโ€ convention as opposed to โ€œconstant forwardโ€ 7 f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12) f(1,1,2) f(1,6,7) f(2,2,3) f(2,6,7) f(3,3,4) f(3,6,7) f(4,4,5) f(4,6,7) f(5,5,6) f(5,6,7) f(6,6,7) f(7,7,8) f(8,8,9) f(9,9,10) f(10,10,11) f(11,11,12) f(12,12,13)
  • 8. Luc_Faucheux_2020 The glorious life of a valiant forward ยจ Each line can be viewed as the new curve at time t ยจ Today (t=0) curve is defined by the successive forwards f(0,0,1), f(0,1,2)โ€ฆ.. ยจ At time t the curve will then be defined by the successive forwards f(t,t,t+1), f(t,t+1,t+2),โ€ฆ ยจ Similar to our HJM spreadsheet but sliding down the curve back one every time 8 f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12) f(1,1,2) f(1,6,7) f(2,2,3) f(2,6,7) f(3,3,4) f(3,6,7) f(4,4,5) f(4,6,7) f(5,5,6) f(5,6,7) f(6,6,7) f(7,7,8) f(8,8,9) f(9,9,10) f(10,10,11) f(11,11,12) f(12,12,13)
  • 9. Luc_Faucheux_2020 The glorious life of a valiant forward ยจ In practice, ๐œŽ ๐‘ก, ๐‘ก!, ๐‘ก" tends to 0 when (t=t1), and has a maximum in the โ€œbellyโ€ of the curve ยจ In reality, ๐œŽ ๐‘ก, ๐‘ก!, ๐‘ก" is also dependent on the actual forward f(t,t1,t2) as well as previous instantaneous volatilities (GARCH for example) and previous forwards ยจ A common assumption is for the volatility ๐œŽ ๐‘ก, ๐‘ก!, ๐‘ก" to be stationary for the same class of forwards. A class of forward is defined as all forwards of equal maturity T: (t2-t1=T) ยจ ๐œŽ ๐‘ก, ๐‘ก!, ๐‘ก" = '๐œŽ ๐‘ก! โˆ’ ๐‘ก 9 f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12) f(1,1,2) f(1,6,7) f(1,11,12) f(2,2,3) f(2,6,7) f(2,11,12) f(3,3,4) f(3,6,7) f(3,11,12) f(4,4,5) f(4,6,7) f(4,11,12) f(5,5,6) f(5,6,7) f(5,11,12) f(6,6,7) f(6,11,12) f(7,7,8) f(7,11,12) f(8,8,9) f(8,11,12) f(9,9,10) f(9,11,12) f(10,10,11) f(10,11,12) f(11,11,12) f(12,12,13)
  • 10. Luc_Faucheux_2020 Regular Eurodollar options or caplet ยจ Average variance for the forward over the life, option expires at the same time that the forward ยจ ๐œŽ". ๐‘ก! = โˆซ#$% #$#! ๐œŽ" ๐‘ก, ๐‘ก!, ๐‘ก" . ๐‘‘๐‘ก = โˆซ#$% #$#! '๐œŽ" ๐‘ก! โˆ’ ๐‘ก . ๐‘‘๐‘ก ยจ Pricing different option for different strikes K, and expressing those option prices in a common model (say Lognormal or Normal) will return the skew and smile expressed within that model 10 f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12) f(1,1,2) f(1,11,12) f(2,2,3) f(2,11,12) f(3,3,4) f(3,11,12) f(4,4,5) f(4,11,12) f(5,5,6) f(5,11,12) f(6,6,7) f(6,11,12) f(7,7,8) f(7,11,12) f(8,8,9) f(8,11,12) f(9,9,10) f(9,11,12) f(10,10,11) f(10,11,12) f(11,11,12) f(12,12,13)
  • 11. Luc_Faucheux_2020 Mid-curve Eurodollar options or forward caplets ยจ Average variance for the forward over the option, option expires BEFORE the forward at a time Texp ยจ ๐œŽ". ๐‘ก&'( = โˆซ#$% #$#"#$ ๐œŽ" ๐‘ก, ๐‘ก!, ๐‘ก" . ๐‘‘๐‘ก = โˆซ#$% #$#"#$ '๐œŽ" ๐‘ก! โˆ’ ๐‘ก . ๐‘‘๐‘ก ยจ Pricing different option for different strikes K, and expressing those option prices in a common model (say Lognormal or Normal) will return the skew and smile expressed within that model 11 f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12) f(1,1,2) f(1,11,12) f(2,2,3) f(2,11,12) f(3,3,4) f(3,11,12) f(4,4,5) f(4,11,12) f(5,5,6) f(5,11,12) f(6,6,7) f(6,11,12) f(7,7,8) Texpiry f(7,11,12) f(8,8,9) f(9,9,10) f(10,10,11) f(11,11,12) f(12,12,13)
  • 12. Luc_Faucheux_2020 A swap is a weighted basket of forwards ยจ Consider a swap with swap rate R (at-the-money swap rate) โ€“ Nfloat periods on the Float side with forecasted forward f(i) โ€“ indexed by i, with โ€“ daycount fraction DCF(i), โ€“ discount D(i) โ€“ Notional N(i) โ€“ Nfixed periods on the Fixed side, โ€“ indexed by j, with โ€“ daycount fraction DCF(j), โ€“ discount D(j) โ€“ Notional N(j) ! ! ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘– = ! " ๐ท๐ถ๐น ๐‘— . ๐ท ๐‘— . ๐‘ ๐‘— . ๐‘… 12
  • 13. Luc_Faucheux_2020 A swap rate is a weighted basket of forward rates ยจ At-the-money swap rate equation: โˆ‘) ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘– = โˆ‘* ๐ท๐ถ๐น ๐‘— . ๐ท ๐‘— . ๐‘ ๐‘— . ๐‘… ยจ Above equation is valid at all times before the swap start, forwards and discount factors being calculated on the then current discount curve the usual way, if the period I on the float side starts at time ts(i) and ends at time te(i), and the forward is โ€œalignedโ€ with the period (no swap in arrears or CMS like) ยจ ๐‘…(๐‘ก) = โˆ‘) ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘ก, ๐‘ก๐‘  ๐‘– , ๐‘ก๐‘’(๐‘–) /[โˆ‘* ๐ท๐ถ๐น ๐‘— . ๐ท ๐‘— . ๐‘ ๐‘— ] ยจ โ€œfrozen numeraireโ€ approximation, expand above equation in first order in forward rates but keeping the discount factors constant ยจ ๐‘‘๐‘…(๐‘ก) = โˆ‘) ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– . ๐‘ ๐‘– . ๐‘‘๐‘“ ๐‘ก, ๐‘ก๐‘  ๐‘– , ๐‘ก๐‘’(๐‘–) /[โˆ‘* ๐ท๐ถ๐น ๐‘— . ๐ท ๐‘— . ๐‘ ๐‘— ] ยจ Taking the square of the above yields the instantaneous volatility of the swap rate ยจ ฮ›+ " . ๐‘‘๐‘ก =< ๐‘‘๐‘…" >= โˆ‘)! โˆ‘)" ๐ท๐ถ๐น ๐‘–1 . ๐ท ๐‘–1 . ๐‘ ๐‘–1 . ๐ท๐ถ๐น ๐‘–2 . ๐ท ๐‘–2 . ๐‘ ๐‘–2 . < ๐‘‘๐‘“ ๐‘–1 . ๐‘‘๐‘“ ๐‘–2 > / [โˆ‘*! โˆ‘*" ๐ท๐ถ๐น ๐‘—1 . ๐ท ๐‘—1 . ๐‘ ๐‘—1 ๐ท๐ถ๐น ๐‘—2 . ๐ท ๐‘—2 . ๐‘ ๐‘—2 ] 13
  • 14. Luc_Faucheux_2020 A swap rate is a weighted basket of forward rates ยจ instantaneous volatility of the swap rate ยจ ฮ›+ " . ๐‘‘๐‘ก =< ๐‘‘๐‘…" >= โˆ‘)! โˆ‘)" ๐ท๐ถ๐น ๐‘–1 . ๐ท ๐‘–1 . ๐‘ ๐‘–1 . ๐ท๐ถ๐น ๐‘–2 . ๐ท ๐‘–2 . ๐‘ ๐‘–2 . < ๐‘‘๐‘“ ๐‘–1 . ๐‘‘๐‘“ ๐‘–2 > / [โˆ‘*! โˆ‘*" ๐ท๐ถ๐น ๐‘—1 . ๐ท ๐‘—1 . ๐‘ ๐‘—1 ๐ท๐ถ๐น ๐‘—2 . ๐ท ๐‘—2 . ๐‘ ๐‘—2 ] ยจ Where ๐‘‘๐‘“ ๐‘–1 = ๐‘‘๐‘“ ๐‘ก, ๐‘ก๐‘  ๐‘–1 , ๐‘ก๐‘’(๐‘–1) and ๐‘‘๐‘“ ๐‘–2 = ๐‘‘๐‘“ ๐‘ก, ๐‘ก๐‘  ๐‘–2 , ๐‘ก๐‘’(๐‘–2) ยจ In abbreviated notation ยจ < ๐‘‘๐‘“ ๐‘–1 . ๐‘‘๐‘“ ๐‘–2 >= ๐œŽ ๐‘–1 . ๐œŽ ๐‘–2 . ๐œŒ ๐‘–1, ๐‘–2 . ๐‘‘๐‘ก ยจ So to calculate the instantaneous volatility of the swap rate you need the instantaneous volatility of each forward BUT ALSO the instantaneous correlation matrix between the forward constituting the weighted basket. 14
  • 15. Luc_Faucheux_2020 A swap evolving to the first set ยจ Example above : a 5x12 swap evolving on the volatility surface up until the first set 15 f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12) f(1,1,2) f(1,5,6) f(1,6,7) f(1,7,8) f(1,8,9) f(1,9,10) f(1,10,11) f(1,11,12) f(2,2,3) f(2,5,6) f(2,6,7) f(2,7,8) f(2,8,9) f(2,9,10) f(2,10,11) f(2,11,12) f(3,3,4) f(3,5,6) f(3,6,7) f(3,7,8) f(3,8,9) f(3,9,10) f(3,10,11) f(3,11,12) f(4,4,5) f(4,5,6) f(4,6,7) f(4,7,8) f(4,8,9) f(4,9,10) f(4,10,11) f(4,11,12) f(5,5,6) f(5,6,7) f(5,7,8) f(5,8,9) f(5,9,10) f(5,10,11) f(5,11,12) f(6,6,7) f(7,7,8) f(8,8,9) f(9,9,10) f(10,10,11) f(11,11,12) f(12,12,13)
  • 16. Luc_Faucheux_2020 A swap evolving to maturity ยจ Example above : a 5x12 swap evolving on the volatility surface up until maturity 16 f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12) f(1,1,2) f(1,5,6) f(1,6,7) f(1,7,8) f(1,8,9) f(1,9,10) f(1,10,11) f(1,11,12) f(2,2,3) f(2,5,6) f(2,6,7) f(2,7,8) f(2,8,9) f(2,9,10) f(2,10,11) f(2,11,12) f(3,3,4) f(3,5,6) f(3,6,7) f(3,7,8) f(3,8,9) f(3,9,10) f(3,10,11) f(3,11,12) f(4,4,5) f(4,5,6) f(4,6,7) f(4,7,8) f(4,8,9) f(4,9,10) f(4,10,11) f(4,11,12) f(5,5,6) f(5,6,7) f(5,7,8) f(5,8,9) f(5,9,10) f(5,10,11) f(5,11,12) f(6,6,7) f(6,7,8) f(6,8,9) f(6,9,10) f(6,10,11) f(6,11,12) f(7,7,8) f(7,8,9) f(7,9,10) f(7,10,11) f(7,11,12) f(8,8,9) f(8,9,10) f(8,10,11) f(8,11,12) f(9,9,10) f(9,10,11) f(9,11,12) f(10,10,11) f(10,11,12) f(11,11,12) f(12,12,13)
  • 17. Luc_Faucheux_2020 A swaption is a mid-curve on the basket of forwards ยจ Example above : a โ€œ5y7yโ€ swaption, or a 5y option on a 7y swap, equating the year to the time units ยจ Option expires at time t5, underlying is a swap starting at time t5 and ending at time t12 ยจ Note that only the first forward gets to experience the โ€œwhole lifeโ€ volatility, all the other forwards essentially will experience the โ€œmid-curveโ€ or truncated volatility up to the swaption expiry 17 f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12) f(1,1,2) f(1,5,6) f(1,6,7) f(1,7,8) f(1,8,9) f(1,9,10) f(1,10,11) f(1,11,12) f(2,2,3) f(2,5,6) f(2,6,7) f(2,7,8) f(2,8,9) f(2,9,10) f(2,10,11) f(2,11,12) f(3,3,4) f(3,5,6) f(3,6,7) f(3,7,8) f(3,8,9) f(3,9,10) f(3,10,11) f(3,11,12) f(4,4,5) f(4,5,6) f(4,6,7) f(4,7,8) f(4,8,9) f(4,9,10) f(4,10,11) f(4,11,12) f(5,5,6) f(5,6,7) f(5,7,8) f(5,8,9) f(5,9,10) f(5,10,11) f(5,11,12) f(6,6,7) f(7,7,8) f(8,8,9) f(9,9,10) f(10,10,11) f(11,11,12) f(12,12,13)
  • 18. Luc_Faucheux_2020 Market practice assumption ยจ Volatility is assumed to be stationary: ๐œŽ ๐‘ก, ๐‘ก!, ๐‘ก" = '๐œŽ ๐‘ก! โˆ’ ๐‘ก , ๐‘ก" ยจ Correlation is also stationary: ๐œŒ ๐‘–1, ๐‘–2 = ๐œŒ( ๐‘ก๐‘ (๐‘–1) โˆ’ ๐‘ก๐‘ (๐‘–2) ) ยจ Parametrization of the volatility and correlation (Ribbonato, ..) ยจ ๐œŒ ๐‘–1, ๐‘–2 = ๐œŒ ๐‘ก๐‘  ๐‘–1 โˆ’ ๐‘ก๐‘  ๐‘–2 = ๐ฟ, + 1 โˆ’ ๐ฟ, . exp{ -|#/ )! -#/ )" | 0% } โ€“ ๐ฟ# is the long term (asymptotic) level of correlation โ€“ ๐‘‡# is the characteristic time scale (half-life) for the correlation to decrease from 100% perpendicular to the diagonal 18
  • 19. Luc_Faucheux_2020 Correlation matrices โ€“ 100% correlation 19 f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12) f(0,0,1) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% f(0,1,2) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% f(0,2,3) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% f(0,3,4) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% f(0,4,5) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% f(0,5,6) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% f(0,6,7) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% f(0,7,8) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% f(0,8,9) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% f(0,9,10) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% f(0,10,11) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% f(0,11,12) 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% rho_inf 100% TC 4
  • 20. Luc_Faucheux_2020 Correlation matrices โ€“ 0% correlation 20 f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12) f(0,0,1) 100% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% f(0,1,2) 0% 100% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% f(0,2,3) 0% 0% 100% 0% 0% 0% 0% 0% 0% 0% 0% 0% f(0,3,4) 0% 0% 0% 100% 0% 0% 0% 0% 0% 0% 0% 0% f(0,4,5) 0% 0% 0% 0% 100% 0% 0% 0% 0% 0% 0% 0% f(0,5,6) 0% 0% 0% 0% 0% 100% 0% 0% 0% 0% 0% 0% f(0,6,7) 0% 0% 0% 0% 0% 0% 100% 0% 0% 0% 0% 0% f(0,7,8) 0% 0% 0% 0% 0% 0% 0% 100% 0% 0% 0% 0% f(0,8,9) 0% 0% 0% 0% 0% 0% 0% 0% 100% 0% 0% 0% f(0,9,10) 0% 0% 0% 0% 0% 0% 0% 0% 0% 100% 0% 0% f(0,10,11) 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 100% 0% f(0,11,12) 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 100% rho_inf 0% TC 0.1
  • 21. Luc_Faucheux_2020 Correlation matrices โ€“ market correlation 21 f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12) f(0,0,1) 100% 88% 77% 69% 61% 55% 49% 45% 41% 38% 35% 33% f(0,1,2) 88% 100% 88% 77% 69% 61% 55% 49% 45% 41% 38% 35% f(0,2,3) 77% 88% 100% 88% 77% 69% 61% 55% 49% 45% 41% 38% f(0,3,4) 69% 77% 88% 100% 88% 77% 69% 61% 55% 49% 45% 41% f(0,4,5) 61% 69% 77% 88% 100% 88% 77% 69% 61% 55% 49% 45% f(0,5,6) 55% 61% 69% 77% 88% 100% 88% 77% 69% 61% 55% 49% f(0,6,7) 49% 55% 61% 69% 77% 88% 100% 88% 77% 69% 61% 55% f(0,7,8) 45% 49% 55% 61% 69% 77% 88% 100% 88% 77% 69% 61% f(0,8,9) 41% 45% 49% 55% 61% 69% 77% 88% 100% 88% 77% 69% f(0,9,10) 38% 41% 45% 49% 55% 61% 69% 77% 88% 100% 88% 77% f(0,10,11) 35% 38% 41% 45% 49% 55% 61% 69% 77% 88% 100% 88% f(0,11,12) 33% 35% 38% 41% 45% 49% 55% 61% 69% 77% 88% 100% rho_inf 20% TC 6
  • 22. Luc_Faucheux_2020 Parametrization of the volatility ยจ Usually assume a bell shape, with a maximum and a long term asymptote, with simple analytical expression in order to integrate easily, and have numerically stable calibration (sensitivity of the parameters to the market input are well behaved) ยจ We choose the following โ€“ .๐œŽ 0 = .๐œŽ$%& โ€“ .๐œŽ โˆž = .๐œŽ' โ€“ .๐œŽ ๐‘‡$() = .๐œŽ$() โ€“ If ๐‘ก < ๐‘‡$(), we use .๐œŽ* ๐‘ก = .๐œŽ$%& * + .๐œŽ$() * โˆ’ .๐œŽ$%& * โˆ— ( + ,!"# ) โ€“ If ๐‘ก >= ๐‘‡$(), we use .๐œŽ* ๐‘ก = .๐œŽ$() * + .๐œŽ' * โˆ’ .๐œŽ$() * โˆ— [1 โˆ’ exp - +-,!"# ,$ ] 22
  • 23. Luc_Faucheux_2020 Volatility โ€“ case 1 23 TMAX 2 SIG(MIN) 5% SIG(MAX) 20% SIG(INFINITY) 5% T(INFINITY) 2
  • 24. Luc_Faucheux_2020 Volatility โ€“ case 2 24 TMAX 2 SIG(MIN) 5% SIG(MAX) 20% SIG(INFINITY) 30% T(INFINITY) 2
  • 25. Luc_Faucheux_2020 Volatility โ€“ case 3 25 TMAX 2 SIG(MIN) 30% SIG(MAX) 20% SIG(INFINITY) 5% T(INFINITY) 2
  • 26. Luc_Faucheux_2020 Volatility โ€“ case 4 26 TMAX 1 SIG(MIN) 0% SIG(MAX) 20% SIG(INFINITY) 0% T(INFINITY) 0
  • 27. Luc_Faucheux_2020 Calibration of the parameters to the market 27
  • 30. Luc_Faucheux_2020 Flows and Market participants on the Swaption Grid 30 Lots of overlapping information
  • 31. Luc_Faucheux_2020 One swaption ยจ A t5-t12 swaption evolving on the forward volatility surface 31 f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12) f(1,1,2) f(1,5,6) f(1,6,7) f(1,7,8) f(1,8,9) f(1,9,10) f(1,10,11) f(1,11,12) f(2,2,3) f(2,5,6) f(2,6,7) f(2,7,8) f(2,8,9) f(2,9,10) f(2,10,11) f(2,11,12) f(3,3,4) f(3,5,6) f(3,6,7) f(3,7,8) f(3,8,9) f(3,9,10) f(3,10,11) f(3,11,12) f(4,4,5) f(4,5,6) f(4,6,7) f(4,7,8) f(4,8,9) f(4,9,10) f(4,10,11) f(4,11,12) f(5,5,6) f(5,6,7) f(5,7,8) f(5,8,9) f(5,9,10) f(5,10,11) f(5,11,12) f(6,6,7) f(7,7,8) f(8,8,9) f(9,9,10) f(10,10,11) f(11,11,12) f(12,12,13)
  • 32. Luc_Faucheux_2020 A caplet and two distinct swaptions on the grid ยจ A t5-t12 swaption (orange) ยจ A t7 caplet (mauve) ยจ A t9-t12 swaption (dark orange) ยจ On the typical swaption grid, the t5-t12 and the t9-t12 are different distinct points with no overlap ยจ The caplet is also one point. Even though those 3 structures pan overlapping areas of the forward volatility surface of different sizes, they all get condensed to one point on the swaption grid 32 f(0,0,1) f(0,1,2) f(0,2,3) f(0,3,4) f(0,4,5) f(0,5,6) f(0,6,7) f(0,7,8) f(0,8,9) f(0,9,10) f(0,10,11) f(0,11,12) f(1,1,2) f(1,5,6) f(1,6,7) f(1,7,8) f(1,8,9) f(1,9,10) f(1,10,11) f(1,11,12) f(2,2,3) f(2,5,6) f(2,6,7) f(2,7,8) f(2,8,9) f(2,9,10) f(2,10,11) f(2,11,12) f(3,3,4) f(3,5,6) f(3,6,7) f(3,7,8) f(3,8,9) f(3,9,10) f(3,10,11) f(3,11,12) f(4,4,5) f(4,5,6) f(4,6,7) f(4,7,8) f(4,8,9) f(4,9,10) f(4,10,11) f(4,11,12) f(5,5,6) f(5,6,7) f(5,7,8) f(5,8,9) f(5,9,10) f(5,10,11) f(5,11,12) f(6,6,7) f(6,7,8) f(6,9,10) f(6,10,11) f(6,11,12) f(7,7,8) f(7,9,10) f(7,10,11) f(7,11,12) f(8,8,9) f(8,9,10) f(8,10,11) f(8,11,12) f(9,9,10) f(9,10,11) f(9,11,12) f(10,10,11) f(11,11,12) f(12,12,13)
  • 33. Luc_Faucheux_2020 You have priced too much, and not enough ยจ The options market is incredibly hard to calibrate ยจ Some points have lots of overlapping market info ยจ Large gaps in between, requiring either โ€“ Interpolation on the market inputs (on the grid) with very little theoretical justification โ€“ Interpolation on the model parameters, running the risk of being โ€œoff marketโ€ 33
  • 34. Luc_Faucheux_2020 34 An example of tree: BDT Black Derman Toy
  • 36. Luc_Faucheux_2020 An illustrated example : Black Derman Toy ยจ Work through a tree implementation of the BDT model (short rate model) ยจ Most widely used model when modeling fixed income securities ยจ Illustrate some of the relevant issues around numerical implementation ยจ Work through some of the math to illustrate some pitfalls when switching from: โ€“ The numerical tree implementation โ€“ To the dynamics (Stochastic Differential Equation or SDE) โ€“ To the PDE for the PDF (Partial Differential Equation for the Probability Density Function) โ€“ To the grid implementation 36
  • 37. Luc_Faucheux_2020 The BDT model tree implementation 37 t0 t1 t2 t3 t4 (0,0) (1,0) (1,1) (2,0) (2,1) (2,2) (3,0) (3,1) (3,2) (3,3) (4,0) (4,1) (4,2) (4,3) (4,4)
  • 38. Luc_Faucheux_2020 The BDT model tree implementation 38 tk tk+1 X(k,i) X(k+1,i+1) X(k+1,i) ยจ We index the stochastic variable ๐‘‹(๐‘˜, ๐‘–), where ๐‘˜ is the period index and ๐‘– is the position index ยจ We choose a time step to be ๐›ฟ๐‘ก = ๐œ ยจ At first we assume this time step to be constant ยจ The spacing for a given period is ๐‘‹ ๐‘˜, ๐‘– + 1 โˆ’ ๐‘‹ ๐‘˜, ๐‘– = ๐›ฟ๐‘‹ for all index ๐‘– ยจ For a given period, all nodes in the tree are equally spaced ยจ We start with the assumption that the spacing ๐›ฟ๐‘‹ is a constant
  • 39. Luc_Faucheux_2020 Building a BDT tree I ยจ For sake of simplicity, we go back to time spacing of unit 1, and neglect any holidays and daycount fraction details like we did in the curve module ยจ We have the forward yield curve as input ๐‘“(๐‘ก1, ๐‘ก1-!) ยจ We can compute the spot discount factors and the forward discount factors ยจ Forward discount ๐‘‘1 = ๐‘‘(๐‘ก1) which here we chose to be ๐‘‘ ๐‘ก1 = ! !23(#&,#&'!) ยจ The spot discount curve is such that ๐ท 0 = 1, ๐‘‘% = ๐‘‘ 0 = 1 and ๐ท ๐‘ก12! = ๐ท ๐‘ก1 . ๐‘‘(๐‘ก12!) 39 0-1 1-2 2-3 3-4 4-5 5-6 6-7 Y0_fwd 1 1.5 2 2.5 3 3.25 3.5 D0_spot 0.990099 0.975467 0.95634 0.933015 0.90584 0.877327 0.847658 D0_fwd 0.990099 0.985222 0.980392 0.97561 0.970874 0.968523 0.966184 VOL_spot 0.2 0.3 0.3 0.4 0.5 0.7 STDEV 0.08 0.36 0.54 1.28 2.5 5.88
  • 40. Luc_Faucheux_2020 Building a BDT tree II ยจ Forward discount ๐‘‘1 = ๐‘‘(๐‘ก1) which here we chose to be ๐‘‘ ๐‘ก1 = ! !23(#&,#&'!) ยจ Note that this is more a choice on how we define the forward yield curve. ยจ As we kept repeating in the curve module, the only thing that matters are the discount factors. Yields are not unique and depend on conventions, holidays, daycount fraction and assumptions to compute them. Discount factors ARE unique ยจ We also have as input to the models the volatility curve for the variable we are using the build the BDT tree. In our case we will use the forward. ยจ Note that you could use another variable ยจ The goal is to calibrate the model inputs to the market on observable prices ยจ So if you build the tree on a given variable, you will get a different value for the volatility inputs after calibration but you will recover the market prices 40
  • 41. Luc_Faucheux_2020 Building a BDT tree III 41 0-1 1-2 2-3 3-4 4-5 5-6 6-7 Y0_fwd 1 1.5 2 2.5 3 3.25 3.5 D0_spot 0.990099 0.975467 0.95634 0.933015 0.90584 0.877327 0.847658 D0_fwd 0.990099 0.985222 0.980392 0.97561 0.970874 0.968523 0.966184 VOL_spot 0.2 0.3 0.3 0.4 0.5 0.7 STDEV 0.08 0.36 0.54 1.28 2.5 5.88 ยจ In our case we chose the forward to be lognormally distributed, and so this volatility will be the annualized lognormal yield volatility in % per year ยจ Again, the point is that because there are going to be so many assumptions and numerical computations that will be different for each implementation of a tree, you cannot really compare the model inputs between two models, just like you cannot really compare a normal volatility to a lognormal one ยจ The only thing you can compare are the prices produced by the model
  • 42. Luc_Faucheux_2020 Building a BDT tree IV ยจ We create a grid of forward yields ๐‘‹(๐‘˜, ๐‘–) ยจ We chose for the โ€œbottomโ€ value ๐‘‹ ๐‘˜, 0 = 3(#&,#&'!) (!2 ((&) + )^(1) , where ๐‘‰(๐‘˜) is the volatility input ยจ The idea is to start with a distribution of forwards centered around the input one ๐‘“(๐‘ก1, ๐‘ก1-!) and with a standard deviation that will be close to the volatility input ยจ Each successive value for a given period going up the nodes in the tree is given by ยจ ๐‘‹ ๐‘˜, ๐‘– + 1 = ๐‘‹ ๐‘˜, ๐‘– . [1 + ๐‘‰ ๐‘˜ ]1 42 Y_fwd 1 1.498501 1.994013 2.488784 2.97612 3.209678 3.427392 1.501499 2.005996 2.51125 3.024024 3.290726 3.573885 2.01805 2.533919 3.072699 3.373821 3.72664 2.556793 3.122158 3.459014 3.885924 3.172413 3.546359 4.052015 3.635909 4.225206 4.405799
  • 43. Luc_Faucheux_2020 Building a BDT tree V ยจ Note that the goal is to start with a โ€reasonableโ€ state for the tree ยจ The calibration process will automatically adjust to the solution we need ยจ Note that the BDT model is somewhat different from the other models out there ยจ BDT does NOT start with an equation, BDT essentially starts from a numerical implementation and just โ€œlet the calibration takes care of thingsโ€ ยจ This makes the underlying dynamics a somewhat complicated beast to express in the usual SDE and PDE ยจ We will show in a simple case how to do this, if only to point out the pitfalls and the gaps between the SDE world and the discrete numerical implementation world 43
  • 44. Luc_Faucheux_2020 Building a BDT tree VI ยจ This pragmatic approach (again does not sound smart at first because you are just using Excel, you are not writing complicated equations), turns out to be the smart one in the end. ยจ This is also what makes BDT (and the tweaks like BK,..) one of the most commonly used model in Finance, it is intuitive, it is robust, it is fast ยจ Note that BDT also has drawbacks, the calibration process can be at time unstable, and because of the discrete nature of it, it is also numerically โ€œnoisyโ€. For computing the Greeks using a BDT, depending on the payoff of the option that you are pricing, you will get โ€œjumpsโ€ in value when you are crossing a node in your valuation ยจ Note that the number of nodes in the BDT tree increases linearly with the number of time steps for a given period, and thus the total number of nodes scales as the square of the number of time steps, making reducing the noise by increasing the number of nodes and times steps a computationally expensive proposition 44
  • 45. Luc_Faucheux_2020 Building a BDT tree VII ยจ From each forward ๐‘‹(๐‘˜, ๐‘–) at each node we compute the Discount factor ยจ ๐‘‘ ๐‘˜, ๐‘– = 1/(1 + ๐‘‹ ๐‘˜, ๐‘– ) ยจ We now have built a tree where at each node we have the forward and the discount factor 45 D_fwd 0.990099 0.985236 0.98045 0.975717 0.971099 0.968901 0.966862 0.985207 0.980335 0.975503 0.970647 0.968141 0.965494 0.980219 0.975287 0.970189 0.967363 0.964072 0.975069 0.969724 0.966566 0.962594 0.969251 0.965751 0.961058 0.964917 0.959461 0.957801
  • 46. Luc_Faucheux_2020 Building a BDT tree VIII ยจ We also attach to each node the usual binomial probability in order to recover the Gaussian distribution ยจ The probability at each node is the probability to end up at that given node ยจ We assume here for simplicity equal probability for โ€œupโ€ and โ€œdownโ€ to be 0.5 ยจ Note that there are tons of numerical schemes out there to change the probabilities and thus affect the drift inside the tree, but this does not change the fundamentals of the model ยจ Note also that now that we have a tree, sometimes Monte-Carlo simulation are run โ€œon the treeโ€ in order ot price path-dependent structures 46 PROBA 1 0.5 0.25 0.125 0.0625 0.03125 0.015625 0.5 0.5 0.375 0.25 0.15625 0.09375 0.25 0.375 0.375 0.3125 0.234375 0.125 0.25 0.3125 0.3125 0.0625 0.15625 0.234375 0.03125 0.09375 0.015625
  • 48. Luc_Faucheux_2020 Calibrating a BDT tree I ยจ We now have built this tree, but we need to calibrate it to market ยจ This is usually a multi step process usually performed in a sequential manner (but not always) ยจ The first step is usually ensuring that we recover the discount curve, this will ensure that we will be pricing bonds and swaps and zero coupon bonds to market ยจ This is where the numerical implementation of a solver for example, is crucial, in particular for the stability of the solution 48
  • 49. Luc_Faucheux_2020 Calibrating a BDT tree II ยจ We calculate the expectation for the discount (remember that it should be probability weighted) ยจ This is obviously not equal to our input discount curve ยจ We need to โ€œshiftโ€ the forwards in order to solve for the discount 49
  • 50. Luc_Faucheux_2020 Calibrating a BDT tree III 50 K 0.999899 1.000063 0.997004 0.99103 0.976221 0.950988 0.899574 NEW_Y 0.999899 1.498596 1.98804 2.466459 2.90535 3.052366 3.083193 1.501593 1.999986 2.488724 2.952115 3.129442 3.214975 2.012004 2.51119 2.999633 3.208465 3.352389 2.533859 3.047916 3.289482 3.495676 3.096976 3.372546 3.645088 3.457707 3.800886 3.963343 NEW_D 0.9901 0.985235 0.980507 0.975929 0.971767 0.97038 0.97009 0.985206 0.980392 0.975717 0.971325 0.969655 0.968852 0.980277 0.975503 0.970877 0.968913 0.967564 0.975288 0.970422 0.968153 0.966224 0.969961 0.967375 0.964831 0.966579 0.963383 0.961877 E(D) 0.9901 0.985221 0.980392 0.97561 0.970874 0.968524 0.966184 D_0_fwd 0.990099 0.985222 0.980392 0.97561 0.970874 0.968523 0.966184 distance 1.000001 0.999999 1 1 1 1.000001 1
  • 51. Luc_Faucheux_2020 Calibrating a BDT tree IV ยจ This is where we get into the wonderful world of numerical solvers ยจ Note that we are โ€œbootstrappingโ€ the factors along the tree ยจ So a little error at one level needs to be corrected at the next level, potentially creating instabilities 51
  • 53. Luc_Faucheux_2020 Pricing a caplet ยจ Payoff = MAX(Forward-Strike, 0) 53
  • 54. Luc_Faucheux_2020 Pricing a caplet - II ยจ The cash flows are then discounted back inside the tree accumulating the cash flows 54
  • 55. Luc_Faucheux_2020 Pricing a cap ยจ From each forward ๐‘‹(๐‘˜, ๐‘–) at each node we compute the discount factor ยจ ๐‘‘ ๐‘˜, ๐‘– = 1/(1 + ๐‘‹ ๐‘˜, ๐‘– ), (assuming the usual convention of unity for daycount fraction) ยจ At each node the payoff is ๐ถ๐‘Ž๐‘ ๐‘˜, ๐‘– = ๐‘€๐ด๐‘‹(๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐พ, 0) ยจ The discounting back is given by: ยจ ๐ถ๐‘Ž๐‘ ๐‘˜, ๐‘– = ! " . ๐‘‘ ๐‘˜, ๐‘– . ๐ถ๐‘Ž๐‘ ๐‘˜ + 1, ๐‘– + 1 + ๐ถ๐‘Ž๐‘ ๐‘˜ + 1, ๐‘– + ๐‘€๐ด๐‘‹ ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐พ, 0 . ๐‘‘ ยจ If the cap is paid at the end of the period, ๐‘‘ = ๐‘‘(๐‘˜, ๐‘–) otherwise ๐‘‘ = 1 55 tk tk+1 X(k,i) X(k+1,i+1) X(k+1,i)
  • 56. Luc_Faucheux_2020 Pricing a swap in BDT ยจ In the โ€swapโ€ world you do not need to build a tree, you only need a discount curve and use simple formulas like SUMPRODUCT 56
  • 57. Luc_Faucheux_2020 Pricing a swap in BDT - II ยจ We saw this when looking at the convexity ยจ This is because the right way (the right measure) to look at cashflows is the discount curve. ยจ A swap fixed leg is the sum of fixed payment times discount factors ยจ Same for the Float leg (a little more complicated) ยจ But in fact a swap PV is a linear sum of discount factors ยจ As such it exhibits ZERO convexity against the discount curve ยจ And so to price a swap you do not need a volatility curve, nor an option model, but if you are pricing a derivatives on a swap (like a swaption), you better make sure that your option model does recover the same price for the underlier ยจ This sounds obvious, but you would be surprised how many options models out there are not repricing the underlier correctly ยจ Letโ€™s look back at the โ€œyield curveโ€ (zero vol) swap valuation 57
  • 58. Luc_Faucheux_2020 A swap is a weighted basket of forwards: AT-THE-MONEY ยจ Consider a swap with swap rate R (at-the-money swap rate) โ€“ Nfloat periods on the Float side with forecasted forward f(i) โ€“ indexed by i, with โ€“ daycount fraction DCF(i), โ€“ discount D(i) โ€“ Notional N(i) โ€“ Nfixed periods on the Fixed side, โ€“ indexed by j, with โ€“ daycount fraction DCF(j), โ€“ discount D(j) โ€“ Notional N(j) ๐‘ƒ๐‘‰ ๐น๐ฟ๐‘‚๐ด๐‘‡ = ) , ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘– = ) - ๐ท๐ถ๐น ๐‘— . ๐ท ๐‘— . ๐‘ ๐‘— . ๐‘… = ๐‘ƒ๐‘‰(๐น๐ผ๐‘‹๐ธ๐ท) 58
  • 59. Luc_Faucheux_2020 Standard Swap periods ยจ On the fixed side, coupon payment at the end of the period โ€“ Period start date (psj) โ€“ Adjusted period start date (psj_adj) โ€“ Period end date (pej) โ€“ Adjusted period end date (pej_adj) โ€“ Payment date (pmj) โ€“ PV of a period ๐‘ƒ๐‘‰ ๐‘— = ๐ท๐ถ๐น ๐‘— . ๐ท ๐‘— . ๐‘ ๐‘— . ๐‘… = ๐ท๐ถ๐น ๐‘๐‘ ๐‘—./-, ๐‘๐‘’๐‘—_๐‘Ž๐‘‘๐‘— . ๐ท ๐‘๐‘š- . ๐‘ ๐‘— . ๐‘… ยจ On the float side, floating rate sets at the beginning of the period, and pays at the end (Libor in advance or standard Libor swap, as opposed to Libor in arrears) โ€“ PV of a period (swaplet) ๐‘ƒ๐‘‰ ๐‘– = ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘– โ€“ ๐ท๐ถ๐น ๐‘– = ๐ท๐ถ๐น ๐‘๐‘ ๐‘–./-, ๐‘๐‘’๐‘–./- and ๐ท ๐‘– = ๐ท(๐‘๐‘š๐‘–) โ€“ ๐ท ๐‘๐‘’๐‘– = ๐ท ๐‘๐‘ ๐‘– โˆ— 0 01234 56,,58, .:(,) or โ€“ ๐ท๐ถ๐น ๐‘๐‘’๐‘–, ๐‘๐‘ ๐‘– . ๐‘“ ๐‘– = [1 โˆ’ 2 58, 2 56, ] 59
  • 60. Luc_Faucheux_2020 Zero coupon bonds on todayโ€™s curve with zero volatility ยจ Zero-coupon bonds ๐‘ƒ ๐‘ก0, ๐‘ก; = ๐ท ๐‘ก0, ๐‘ก; = โ„๐ท(๐‘ก;) ๐ท(๐‘ก0) ยจ โ€œ๐‘ƒ ๐‘ก0, ๐‘ก; is the price at time ๐‘ก0of a zero-coupon bond maturing at time ๐‘ก;โ€ ยจ โ€œ๐‘ƒ ๐‘ก0, ๐‘ก; is the price at time ๐‘ก0of a risk-free zero-coupon bond with principal $1 maturing at time ๐‘ก;โ€ ยจ IT SHOULD REALLY SAY : โ€œUsing todayโ€™s discount curve at time ๐‘ก<, ๐‘ƒ ๐‘ก0, ๐‘ก; is the price of a risk-free zero- coupon bond with principal $1 maturing at time ๐‘ก;, and the value of that price has been forward discounted to time ๐‘ก0, again using todayโ€™s discount curveโ€ ยจ People love the zero coupon bonds, in many cases they make those the stochastic drivers of the rates model (HJM for example) 60
  • 61. Luc_Faucheux_2020 Expected Values in a non deterministic world ยจ Simply compounded spot interest rate: ๐ฟ(๐‘ก0, ๐‘ก;) ยจ ๐ฟ ๐‘ก0, ๐‘ก; = 0=>(?!,?") /@: ?!,?" .>(?!,?") or more simply ๐‘ƒ ๐‘ก0, ๐‘ก; = 0 01/@: ?!,?" .A(?!,?") ยจ Related to how to roll the curve forward at zero volatility, ยจ Method 2 โ€“ Compute the discount factors curve โ€“ Divide all discount factors by the overnight d(t0,t1)=d(t1) โ€“ Use new discount factor curve starting at t1 ยจ So at zero volatility, when t goes from t0 to t1, the price of a zero discount bonds ๐‘ƒ ๐‘ก0, ๐‘ก; is unchanged: ๐‘ƒ ๐‘ก@, ๐‘ก0, ๐‘ก; = ๐‘ƒ 0, ๐‘ก0, ๐‘ก; where ๐‘ก@ is the โ€œcurveโ€ time in the future. ยจ NOW, if the volatility is non zero, ๐‘ƒ 1, ๐‘ก0, ๐‘ก; โ‰  ๐‘ƒ 0, ๐‘ก0, ๐‘ก; ยจ It is only true ON AVERAGE < ๐‘ƒ 1, ๐‘ก0, ๐‘ก; >= ๐‘ƒ 0, ๐‘ก0, ๐‘ก; or EXP ๐‘ƒ 1, ๐‘ก0, ๐‘ก; = ๐‘ƒ 0, ๐‘ก0, ๐‘ก; where EXP is the Expected value (average). ยจ This is called the rolling numeraire or โ€œbank accountโ€ numeraire: if you deposit ๐‘ƒ 0,0, ๐‘ก; today to get $1 at time t2, ON AVERAGE you should also be able to invest ๐‘ƒ 0,0, ๐‘ก; until time t1, then deposit it until time t2 and still get $1 61
  • 62. Luc_Faucheux_2020 Fixed Leg of a swap ยจ A fixed leg of a swap is a series of fixed cash flows. ยจ Now matter how the curve moves, ON AVERAGE the price of zero coupon bonds is conserved ยจ < ๐‘ƒ ๐‘ก@, ๐‘ก0, ๐‘ก; > = ๐‘ƒ 0, ๐‘ก0, ๐‘ก; and ๐‘ƒ ๐‘ก@, ๐‘ก0, ๐‘ก; = 2(?#,?") 2(?#,?!) ยจ In particular when t2=t1+1, ๐‘ƒ ๐‘ก@, ๐‘ก0, ๐‘ก0 + 1 = 2(?#,?!10) 2(?#,?!) = ๐‘‘(๐‘ก@, ๐‘ก0) ยจ So < ๐‘ƒ ๐‘ก@, ๐‘ก0, ๐‘ก0 + 1 > = < 2 ?#,?!10 2 ?#,?! > = < ๐‘‘(๐‘ก@, ๐‘ก0)> = ๐‘ƒ 0, ๐‘ก0, ๐‘ก0 + 1 = ๐‘‘(0, ๐‘ก0) ยจ Also by recurrence < ๐ท 1, ๐‘ก0 > โˆ— ๐‘‘ 0,1 = ๐ท(0, ๐‘ก0) at time t=0 ยจ At time t=1, ๐‘‘ 1,2 is fixed and has zero volatility (will drop when t goes from 1 to 2) ยจ So < ๐ท 2, ๐‘ก0 > โˆ— ๐‘‘ 1,2 = ๐ท(1, ๐‘ก0) at time t=1 ยจ So at every point in the future, if you invest then a unit of currency and โ€rollโ€ it forward (bank numeraire), the expected gain is todayโ€™s gain if you had entered into the same contract. ยจ Still another way to say, if you invest one unit of currency for a given length of time t, it is equivalent to investing overnight and rolling the proceeds everyday (the arbitrage free framework does not take credit into consideration) 62
  • 63. Luc_Faucheux_2020 Floating leg of a swap ยจ A floating swaplet pays ๐ท๐ถ๐น ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘– and its PV is ๐‘ƒ๐‘‰ ๐‘– = ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘– ยจ Where ๐ท๐ถ๐น ๐‘๐‘’๐‘–, ๐‘๐‘ ๐‘– . ๐‘“ ๐‘– = [1 โˆ’ 2 58, 2 56, ] ยจ We know from the fixed rate leg that < ๐ท ๐‘– >= ๐ท ๐‘– , but what about < ๐ท ๐‘– . ๐‘“ ๐‘– > ? ยจ Note, to be exact < ๐ท ๐‘– >= ๐ท ๐‘– should really read โˆ?#BC?$ ๐ธ๐‘‹๐‘ƒ{๐‘ก@, ๐‘‘(๐‘ก@, ๐‘ก@ + 1)}, where ๐ธ๐‘‹๐‘ƒ ๐‘ก@, ๐‘‘ ๐‘ก@, ๐‘ก@ + 1 is the expected value of the overnight discount between the time (tc) and (tc+1), observed up until time tc (because it drops off the curve after tc, and before tc, no matter where you observe it, its expected value is equal to todayโ€™s value) ยจ ๐ธ๐‘‹๐‘ƒ ๐‘ก@, ๐‘‘ ๐‘ก@, ๐‘ก@ + 1 = ๐ธ๐‘‹๐‘ƒ ๐‘ก < ๐‘ก@, ๐‘‘ ๐‘ก@, ๐‘ก@ + 1 = ๐‘‘(๐‘ก@ + 1) ยจ Back to < ๐ท ๐‘– . ๐‘“ ๐‘– > , there is a little trick 63
  • 64. Luc_Faucheux_2020 Floating leg of a swap ยจ Because the forward f(i) sets at the beginning of the period, once we reach the period start, everything is known about the payment, and it becomes a fixed cashflow. ยจ ๐‘ƒ๐‘‰ ๐‘– = ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘– = ๐ท๐ถ๐น ๐‘– . ๐‘ ๐‘– . ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘– . ๐ธ๐‘‹๐‘ƒ{๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘–, ๐‘๐‘’๐‘– . ๐‘“ ๐‘– } ยจ ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘– = ๐ท(๐‘๐‘ ๐‘–) ยจ ๐ท๐ถ๐น ๐‘– . ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘–, ๐‘๐‘’๐‘– . ๐‘“ ๐‘– = ๐ธ๐‘‹๐‘ƒ{๐‘๐‘ ๐‘–, 234(,) 01234 , .:(,) . ๐‘“ ๐‘– } ยจ Now, magic trick, D 01D = D10=0 01D = 01D=0 01D = 1 โˆ’ 0 01D ยจ So, ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, 234 , 01234 , .: , . ๐‘“ ๐‘– = ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, 1 โˆ’ 0 01234 , .: , = ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, 1 โˆ’ ๐‘ƒ ๐‘๐‘ ๐‘–, ๐‘๐‘ ๐‘–, ๐‘๐‘’๐‘– ยจ And because the price of zero coupon bond is respected: ยจ ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, 234 , 01234 , .: , . ๐‘“ ๐‘– = 1 โˆ’ ๐‘ƒ 0, ๐‘๐‘ ๐‘–, ๐‘๐‘’๐‘– = 1 โˆ’ 0 01234 , .: , = 234 , 01234 , .: , . ๐‘“ ๐‘– 64
  • 65. Luc_Faucheux_2020 Quick summary ยจ In the rolling numeraire measure, โ€“ PV of fixed cashflows are conserved (Expected value of a fixed cashflow as the curve evolves in a stochastic manner over time will converge to the fixed amount at the payment date) โ€“ Price of zero coupon bonds are conserved โ€“ Price of bonds are conserved (the price of a bond will change over time, but ON AVERAGE the price you should be willing to pay for this bond is the price you can compute today using todayโ€™s curve, because the price of a bond exhibits no convexity with respect to the discount curve changing, AS LONG as the discount curve changes in a manner that respect the Arbitrage free condition, that is that a contract where you invest X today to get Y at time T, is the same (equivalent, on average), as any contract where you invest X today, get the proceeds at some point in time in the future, then reinvest them until T.) โ€“ This is either painfully obvious or really deep, depending on how you look at it โ€“ The arbitrage free assumption does NOT know about credit โ€“ The arbitrage free assumption does NOT know about individual utility function (also called time-indifferent, it assumes that market participants are indifferent about receiving X today versus Y at time T, where the ratio Y/X is the price of today zero coupon bond maturing at time T, and that price will be conserved over time) โ€“ The Floating leg of a swap ALSO exhibit zero convexity against the discount factor curve, because it can be expressed as a linear function of discount factors, thanks to the amazing trick x=x+1-1 โ€“ It is surprising that of ALL the possible structures we could come up with a swap, there is almost zero probability that we would not need a volatility curve, and yet 99.9% of the swaps being traded are such that they are NOT convex in terms of the discount factors. Note that this breaks down once you have stochastic funding (forecasting and discounting on different curves ยจ Other markets (equity, commodities,..) do NOT have such a strong underlying constraint that needs to be respected.. In HJM for example, we will show that respecting the arbitrage enforces zero possible choice for the drift, once the volatility is known, everything else is. 65
  • 67. Luc_Faucheux_2020 Pricing a swap in BDT - IV ยจ NOTE : swaps payments are "in arrears" at the end of the period, and so you have to discount for that period ยจ index is set "in advance" and paid "in arrears" ยจ If you were dealing with a swap where the payment is set at the same time as the payment, value would be different ยจ in fact it would exhibit convexity ("in arrears" swap) ยจ you would need a BDT tree or an option model in order to value it ยจ But numerically quite easy to do, you just do not discount for that period 67
  • 69. Luc_Faucheux_2020 Pricing a swap in BDT - VI ยจ We recover the same swap rate ยจ Please note that we are really discounting cash flows, never a rate or a yield ยจ Note that in practice to โ€take into accountโ€ all the numerical imprecisions and the many steps, the solver is sometimes done on the Swap Rate (Market observable) ยจ The Swap Rate is really only the value of the Fixed coupon so that the discounted value of all fixed payments is equal to the discounted value of all the floating payments ยจ Note that if we had priced the swap โ€œin arrearsโ€ we would get a different swap rate than the one computed from the yield curve (even taking into account the timing difference) ยจ The difference between those two rates is the convexity adjustment ยจ In the SUMPRODUCT formula (deterministic world, or zero volatility), we just need to offset the discounts by one period. Float fixes at the beginning of the period and pays at the beginning, fixed also pays at the beginning of the period. This timing difference between the fixing of the float and the payment is what creates the convexity. ยจ Because we cannot do the little trick: ' !2' = '2!-! !2' = !2'-! !2' = 1 โˆ’ ! !2' 69
  • 70. Luc_Faucheux_2020 Pricing a swap in BDT - VI-b ยจ Another way is also to parametrize the shifts in order to allow for some tolerance, and globally minimize for the Market observables (Swap rates), and be careful over the overlap of swap durations ยจ This is sometimes done in practice in order to โ€œcorrectโ€ for a number of numerical imprecisions along the way (missing holidays, imperfect daycount fraction, small residuals in the minimization steps,..) 70
  • 71. Luc_Faucheux_2020 Legs of a swap in arrears ยจ A fixed leg of a swap is a series of fixed cash flows that pays ยจ ๐ท๐ถ๐น ๐‘– . ๐‘ ๐‘– . ๐‘†๐‘… ยจ And its PV is: ยจ ๐ท๐ถ๐น ๐‘– . ๐‘ ๐‘– . ๐‘†๐‘…. ๐ท(๐‘– โˆ’ 1) ยจ A floating swaplet โ€œin arrearsโ€ pays: ยจ ๐ท๐ถ๐น ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘– ยจ and its PV is: ยจ ๐‘ƒ๐‘‰ ๐‘– = ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– โˆ’ 1 . ๐‘ ๐‘– . ๐‘“ ๐‘– ยจ Where ๐ท๐ถ๐น ๐‘๐‘’๐‘–, ๐‘๐‘ ๐‘– . ๐‘“ ๐‘– = [1 โˆ’ 2 58, 2 56, ] 71
  • 72. Luc_Faucheux_2020 Floating leg of a regular swap ยจ Because the forward f(i) sets at the beginning of the period, once we reach the period start, everything is known about the payment, and it becomes a fixed cashflow. ยจ ๐‘ƒ๐‘‰ ๐‘– = ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– . ๐‘ ๐‘– . ๐‘“ ๐‘– = ๐ท๐ถ๐น ๐‘– . ๐‘ ๐‘– . ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘– . ๐ธ๐‘‹๐‘ƒ{๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘–, ๐‘๐‘’๐‘– . ๐‘“ ๐‘– } ยจ ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘– = ๐ท(๐‘๐‘ ๐‘–) ยจ ๐ท๐ถ๐น ๐‘– . ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘–, ๐‘๐‘’๐‘– . ๐‘“ ๐‘– = ๐ธ๐‘‹๐‘ƒ{๐‘๐‘ ๐‘–, 234(,) 01234 , .:(,) . ๐‘“ ๐‘– } ยจ Now, magic trick, D 01D = D10=0 01D = 01D=0 01D = 1 โˆ’ 0 01D ยจ So, ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, 234 , 01234 , .: , . ๐‘“ ๐‘– = ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, 1 โˆ’ 0 01234 , .: , = ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, 1 โˆ’ ๐‘ƒ ๐‘๐‘ ๐‘–, ๐‘๐‘ ๐‘–, ๐‘๐‘’๐‘– ยจ And because the price of zero coupon bond is respected: ยจ ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, 234 , 01234 , .: , . ๐‘“ ๐‘– = 1 โˆ’ ๐‘ƒ 0, ๐‘๐‘ ๐‘–, ๐‘๐‘’๐‘– = 1 โˆ’ 0 01234 , .: , = 234 , 01234 , .: , . ๐‘“ ๐‘– 72
  • 73. Luc_Faucheux_2020 Floating leg of an โ€œin arrearsโ€ swap ยจ Because the forward f(i) sets at the beginning of the period, once we reach the period start, everything is known about the payment, and it becomes a fixed cashflow. ยจ ๐‘ƒ๐‘‰ ๐‘– = ๐ท๐ถ๐น ๐‘– . ๐ท ๐‘– โˆ’ 1 . ๐‘ ๐‘– . ๐‘“ ๐‘– = ๐ท๐ถ๐น ๐‘– . ๐‘ ๐‘– . ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘– . ๐ธ๐‘‹๐‘ƒ{๐‘๐‘ ๐‘–, 1. ๐‘“ ๐‘– } ยจ ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, ๐ท ๐‘๐‘ ๐‘– = ๐ท(๐‘๐‘ ๐‘–) ยจ ๐ท๐ถ๐น ๐‘– . ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, 1. ๐‘“ ๐‘– = ๐ธ๐‘‹๐‘ƒ{๐‘๐‘ ๐‘–, ๐ท๐ถ๐น ๐‘– . ๐‘“ ๐‘– } ยจ Where ๐ท๐ถ๐น ๐‘๐‘’๐‘–, ๐‘๐‘ ๐‘– . ๐‘“ ๐‘– = [1 โˆ’ 2 58, 2 56, ] ยจ Now, magic trick, D 01D = D10=0 01D = 01D=0 01D = 1 โˆ’ 0 01D , but that gets us nowhere ยจ So, ๐ธ๐‘‹๐‘ƒ ๐‘๐‘ ๐‘–, ๐ท๐ถ๐น ๐‘– . ๐‘“ ๐‘– = ๐ธ๐‘‹๐‘ƒ 1 โˆ’ 2 58, 2 56, ยจ This has not only a timing difference but a ratio, and we all know that ๐ธ๐‘‹๐‘ƒ 0 D <> 1/๐ธ๐‘‹๐‘ƒ(๐‘ฅ) ยจ This can be done through the Taylor expansion (or also Jensen inequality) ยจ This is the famous Swap in arrears convexity trade of May 1995 (story time) 73
  • 75. Luc_Faucheux_2020 Pricing a swaption - II ยจ Careful that the only thing you should discount are cashflows, not rates ยจ You could look at the rates but then at each node you would need to weigh by the actual duration of that swap on that node to express it back into a cash flow ยจ Note that the Blackโ€™77 model assumes a single duration for all nodes, and so putting in the same input volatility in your BDT model and the Blackโ€™77 model will NOT recover the same option price ยจ The average of a product is not the product of the averages (or integrals) ยจ If you want to calibrate BDT to the implied volatilities from Black77 (or match the option prices that you see in the market), you would need to input a different volatilities. ยจ Just because it is called the same thing (volatility) and has the same units does not mean that you can equate the two 75
  • 76. Luc_Faucheux_2020 Pricing a callable ยจ We can now even price a callable swap ยจ This is the main reason to build a tree, as opposed to closed form models ยจ Note also that once you have the tree calibrated, it is very flexible in terms of any payoff of structure that you want to price ยจ A closed form solution would be hard to modify ยจ In practice, the most important step is the calibration step. Think about the yield curve moving in real time every seconds, the volatility curve moving maybe on a time scale of minutes, and so you need to build a calibration routine that can be done quickly and still be stable ยจ Sometimes tree models are calibrated carefully overnight and kept constant during the day, and trading desks adjust the price based on an estimate of the Greeks and the market moves 76
  • 78. Luc_Faucheux_2020 Pricing a callable - III ยจ Specific callable swap in the example is a 5y3ync1 ยจ Swap starts in 5year ยจ Swap ends in 8 years ยจ Call option at par (no fees either way) at year 6 and year 7 78
  • 79. Luc_Faucheux_2020 Pricing a callable swap -IV ยจ From each forward ๐‘‹(๐‘˜, ๐‘–) at each node we compute the discount factor ยจ ๐‘‘ ๐‘˜, ๐‘– = 1/(1 + ๐‘‹ ๐‘˜, ๐‘– ), (assuming the usual convention of unity for daycount fraction) ยจ At each node the payoff of the regular swap is SWAP ๐‘˜, ๐‘– = ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐พ . ๐‘‘(๐‘˜, ๐‘–) ยจ The discounting back is given by: ยจ SWAP ๐‘˜, ๐‘– = ! " . ๐‘‘ ๐‘˜, ๐‘– . SWAP ๐‘˜ + 1, ๐‘– + 1 + SWAP ๐‘˜ + 1, ๐‘– + ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐พ . ๐‘‘(๐‘˜, ๐‘–) 79 tk tk+1 X(k,i) X(k+1,i+1) X(k+1,i)
  • 80. Luc_Faucheux_2020 Pricing a callable swap -V ยจ At each node the payoff of the regular swap is SWAP ๐‘˜, ๐‘– = ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐พ . ๐‘‘(๐‘˜, ๐‘–) ยจ The discounting back is given by: ยจ SWAP ๐‘˜, ๐‘– = ! " . ๐‘‘ ๐‘˜, ๐‘– . SWAP ๐‘˜ + 1, ๐‘– + 1 + SWAP ๐‘˜ + 1, ๐‘– + ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐พ . ๐‘‘(๐‘˜, ๐‘–) ยจ IF on an option node, the new payoff then becomes ๐‘€๐ด๐‘‹(SWAP ๐‘˜, ๐‘– , 0) ยจ You can easily add a fee to cancel (>0 or <0), for example if there is a fee to cancel expressed as paid over the cancel period, the payoff becomes: ๐‘€๐ด๐‘‹(SWAP ๐‘˜, ๐‘– , โˆ’fee) 80 tk tk+1 X(k,i) X(k+1,i+1) X(k+1,i)
  • 82. Luc_Faucheux_2020 Pricing a callable swap -VII ยจ Because of the optionality, the payer of a fixed rate callable swap is willing to pay an above market rate (higher than the swap rate) to pay for the option ยจ We can use again a numerical solver (GoalSeek in Excel) ยจ Note: a great numerical solver is hard to find, and is used all the times in Finance ยจ Solve for 0 PV on the regular swap -> SR = 3.414 in our example ยจ Solve for 0 PV on the fixed callable ->SR = 3.448 in our example ยจ The callable swap offers a pick-up of 3.5 basis point running above the Swap rate ยจ The more optionality, the higher the pick-up ยจ The higher the volatility, the more valuable the option, the higher the pick-up ยจ If you calibrate your model to European swaptions, do you recover the price of callables observed in the market ? The answer is no (for many reasons, see the Structured ppt), but people try to adjust for that by introducing mean reversion in the BDT tree. Letโ€™s see what that means and how that works. 82
  • 83. Luc_Faucheux_2020 Pricing a callable swap -VIII ยจ Most of the times in practice, trading desks will keep an adjustment grids between the European and the Callable and adjust the volatility curve by that adjustment to price a callable. ยจ This is quite unsatisfactory for a lot of reason ยจ It is not consistent ยจ Where do you hedge the callable? On the shifted grid or the original one? ยจ The adjustment creates a PL difference, do you hold that as a reserve, do you release it? ยจ The PL difference will show some market directionality. Do you hedge that market directionality? ยจ If you hedge a Callable with European options, do you price and hedge those Europeans on the shifted grid or the original one? ยจ Different callables at different coupon will have different adjustments 83
  • 84. Luc_Faucheux_2020 Pricing a callable swap -IX ยจ We have now all the building blocks of a full-fledged Fixed-Income front-to-back infrastructure ยจ To do the risk management, bump the yield curve and the vol curve and reprice all the trades AFTER recalibrating the BDT tree ยจ You can price pretty much any payoff that you want that is a function of the variables in the tree ยจ You can also do a โ€œMonte-Carlo on the treeโ€ for path-dependent options, you are just going forward in the tree, as opposed to discounting backwards 84
  • 85. Luc_Faucheux_2020 Pricing a capped floater ยจ Break-even is we can pay MIN(Libor+100,2.562) against receiving Libor 85
  • 86. Luc_Faucheux_2020 Pricing an inverse floater ยจ Break-even is we pay MAX(4.95-Libor,0) against receiving Libor 86
  • 87. Luc_Faucheux_2020 87 A look at the dynamics of the BDT
  • 88. Luc_Faucheux_2020 The BDT dynamics I ยจ The following question comes up: ยจ You have built something that reprices market observables ยจ Congratulations but what dynamics did you use ? ยจ When we use Black-Sholes, we can write the SDE for the underlier, and the PDE ยจ Can we do the same thing for BDT ? ยจ Answer is sort of yes unless you do numerical things to the BDT tree that are too drastic ยจ We are now giving some insights on this dynamics, if only to point out the difficulties in bridging the gap between the equations and the discrete numerical implementation of those 88
  • 89. Luc_Faucheux_2020 The BDT dynamics II 89 t0 t1 t2 t3 t4 (0,0) (1,0) (1,1) (2,0) (2,1) (2,2) (3,0) (3,1) (3,2) (3,3) (4,0) (4,1) (4,2) (4,3) (4,4)
  • 90. Luc_Faucheux_2020 The BDT dynamics III ยจ We assume for now constant time step, constant spacing between nodes in the y axis 90
  • 91. Luc_Faucheux_2020 The BDT dynamics IV 91 tk tk+1 X(k,i) X(k+1,i+1) X(k+1,i) ยจ We index the stochastic variable ๐‘‹(๐‘˜, ๐‘–), where ๐‘˜ is the period index and ๐‘– is the position index ยจ We choose a time step to be ๐›ฟ๐‘ก = ๐œ ยจ At first we assume this time step to be constant ยจ The spacing for a given period is ๐‘‹ ๐‘˜, ๐‘– + 1 โˆ’ ๐‘‹ ๐‘˜, ๐‘– = ๐›ฟ๐‘‹ for all index ๐‘– ยจ For a given period, all nodes in the tree are equally spaced ยจ We start with the assumption that the spacing ๐›ฟ๐‘‹ is a constant
  • 92. Luc_Faucheux_2020 The BDT dynamics V ยจ To the first order with no drift ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– = ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐›ฟ๐‘‹/2 ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 = ๐‘‹ ๐‘˜, ๐‘– + ๐›ฟ๐‘‹/2 ยจ Probabilities ฮ  ๐‘˜, ๐‘– to be at the node ๐‘˜, ๐‘– ยจ Using (1/2) probabilities up and down ยจ ฮ  ๐‘˜ + 1, ๐‘– = ! " ฮ  ๐‘˜, ๐‘– โˆ’ 1 + ฮ  ๐‘˜, ๐‘– ยจ This is also referred to as the master equation. ยจ Easier to work in the ฮ  ๐‘ก, ๐‘‹ space to avoid the drift of the (๐‘–) indices (zero drift means that the middle for ๐‘‹ would be the starting point but that is roughly the node (๐‘˜, ๐‘– = 1 " ) ยจ ALWAYS pay attention to the boundary conditions (borders), so for example ยจ ฮ  ๐‘˜, ๐‘– = 0 IF ๐‘– > ๐‘˜ OR (๐‘– < 0) 92
  • 93. Luc_Faucheux_2020 The BDT dynamics VI ยจ < โˆ†๐‘‹ > = ! " . ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 + ๐‘‹ ๐‘˜ + 1, ๐‘– = ๐‘‹(๐‘˜, ๐‘–) ยจ So no drift in this simple example ยจ When writing ๐‘‘๐‘‹ = ๐œ‡. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š, we would have ๐œ‡ = 0 ยจ < โˆ†๐‘‹"> = ! " . (๐‘‹ ๐‘˜ + 1, ๐‘– + 1 โˆ’ ๐‘‹ ๐‘˜, ๐‘– )^(2) + (๐‘‹ ๐‘˜ + 1, ๐‘– โˆ’ ๐‘‹ ๐‘˜, ๐‘– )^(2) ยจ < โˆ†๐‘‹"> = ! " . (๐›ฟ๐‘‹/2)" + (๐›ฟ๐‘‹/2)" = 89+ : ยจ When writing ๐‘‘๐‘‹ = ๐œ‡. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š, we would have (๐œŽ". ๐›ฟ๐‘ก) = 89+ : 93 X(k,i) X(k+1,i+1) X(k+1,i) ๐›ฟ๐‘‹/2 ๐›ฟ๐‘‹/2
  • 94. Luc_Faucheux_2020 The BDT dynamics VII ยจ (๐œŽ". ๐›ฟ๐‘ก) = 89+ : ยจ Again we see the scaling argument that if we want ๐œŽto be well defined (does not go to 0, does not go to infinity), as we are reducing the size of the time step and the spacing in order to reach the continuous limit from the discrete implementation, we need ยจ 89+ :8# โ†’ ๐œŽ" = ๐‘๐‘œ๐‘›๐‘ ๐‘ก๐‘Ž๐‘›๐‘ก when ๐›ฟ๐‘‹ โ†’ 0 and ๐›ฟ๐‘ก โ†’ 0 ยจ So the discrete tree implemented converges to the continuous dynamics described by the SDE (Stochastic Differential Equation): ๐‘‘๐‘‹ = ๐œ‡. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š ยจ With ๐œ‡ = 0 ยจ And ๐œŽ = lim( 89+ :8# ) 94
  • 95. Luc_Faucheux_2020 The BDT dynamics VIII ยจ From the SDE ๐‘‘๐‘‹ = ๐œ‡. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š we should be able to recover the PDE for the PDF ยจ ;< (9,#) ;# = โˆ’ ; ;9 ๐œ‡. ฮ  ๐‘‹, ๐‘ก โˆ’ ; ;9 =+ " . ฮ  ๐‘‹, ๐‘ก = =+ " . ;+< (9,#) ;9+ ยจ ;< (9,#) ;# = =+ " . ;+< (9,#) ;9+ ยจ Letโ€™s rederive this directly from the tree and the master equation ยจ ฮ  ๐‘˜ + 1, ๐‘– = ! " ฮ  ๐‘˜, ๐‘– โˆ’ 1 + ฮ  ๐‘˜, ๐‘– ยจ Or more importantly ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) = ! " ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–) 95
  • 96. Luc_Faucheux_2020 The BDT dynamics IX ยจ We have ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) = ! " ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–) ยจ With: ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– = ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐›ฟ๐‘‹/2 ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 = ๐‘‹ ๐‘˜, ๐‘– + ๐›ฟ๐‘‹/2 ยจ Taylor expanding in time and space the master equation around ๐‘‹(๐‘˜ + 1, ๐‘–) which is the middle point (easier because we will perform symmetric calculations) 96 X(k,i) X(k+1,i) X(k,i-1) ๐›ฟ๐‘‹/2 ๐›ฟ๐‘‹/2
  • 97. Luc_Faucheux_2020 The BDT dynamics X ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) = ! " ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–) ยจ With ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– = ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐›ฟ๐‘‹/2 ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 = ๐‘‹ ๐‘˜, ๐‘– + ๐›ฟ๐‘‹/2 ยจ Or ยจ ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 = ๐‘‹ ๐‘˜ + 1, ๐‘– โˆ’ ๐›ฟ๐‘‹/2 ยจ ๐‘‹ ๐‘˜, ๐‘– = ๐‘‹ ๐‘˜ + 1, ๐‘– + ๐›ฟ๐‘‹/2 ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) = ฮ  ๐‘ก + ๐›ฟ๐‘ก, ๐‘‹(๐‘˜ + 1, ๐‘–) = ฮ  ๐‘ก, ๐‘‹(๐‘˜ + 1, ๐‘–) + ;< #,9(12!,)) ;# . ๐›ฟ๐‘ก + ๐’ช(๐›ฟ๐‘ก") 97
  • 98. Luc_Faucheux_2020 The BDT dynamics XI ยจ ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 = ๐‘‹ ๐‘˜ + 1, ๐‘– โˆ’ ๐›ฟ๐‘‹/2 ยจ ๐‘‹ ๐‘˜, ๐‘– = ๐‘‹ ๐‘˜ + 1, ๐‘– + ๐›ฟ๐‘‹/2 ยจ ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) = ฮ  ๐‘ก, ๐‘‹ ๐‘˜ + 1, ๐‘– โˆ’ ๐›ฟ๐‘‹/2 ยจ ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) = ฮ  ๐‘ก, ๐‘‹ ๐‘˜ + 1, ๐‘– ) โˆ’ (๐›ฟ๐‘‹/2 . ;< #,9(12!,)) ;9 + ! " . 89+ : . ;+< #,9(12!,)) ;9+ + ๐’ช(๐›ฟ๐‘‹>) ยจ AND ยจ ฮ  ๐‘‹(๐‘˜, ๐‘–) = ฮ  ๐‘ก, ๐‘‹ ๐‘˜ + 1, ๐‘– + ๐›ฟ๐‘‹/2 ยจ ฮ  ๐‘‹(๐‘˜, ๐‘–) = ฮ  ๐‘ก, ๐‘‹ ๐‘˜ + 1, ๐‘– ) + (๐›ฟ๐‘‹/2 . ;< #,9(12!,)) ;9 + ! " . 89+ : . ;+< #,9(12!,)) ;9+ + ๐’ช(๐›ฟ๐‘‹>) ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) = ! " ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–) 98
  • 99. Luc_Faucheux_2020 The BDT dynamics XII ยจ ! " ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–) = ฮ  ๐‘ก, ๐‘‹(๐‘˜ + 1, ๐‘–) + ! " . 89+ : . ;+< #,9(12!,)) ;9+ + ๐’ช(๐›ฟ๐‘‹>) ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) = ฮ  ๐‘ก, ๐‘‹(๐‘˜ + 1, ๐‘–) + ;< #,9(12!,)) ;# . ๐›ฟ๐‘ก + ๐’ช(๐›ฟ๐‘ก") ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) = ! " ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–) ยจ Yields: ยจ ;< #,9(12!,)) ;# . ๐›ฟ๐‘ก = ! " . 89+ : . ;+< #,9(12!,)) ;9+ ยจ Defining the volatility as (๐œŽ". ๐›ฟ๐‘ก) = 89+ : ยจ ;< ;# = =+ " . ;+< ;9+ ยจ We recover the usual diffusion equation. 99
  • 101. Luc_Faucheux_2020 The BDT mean reversion I ยจ Everything we did so far assumed constant time step and spacing between nodes. ยจ We keep a constant time step ยจ Because of the algorithm construction of the BDT, there is a constant shift (up or down) in order to match the discount curve. ยจ This is just a drift on top of the diffusive process. ยจ More subtle is the mean reversion effect. Mean reversion is a crucial concept in finance. It indicates that things have a tendency when diffusing away from the equilibrium to โ€revert back to the meanโ€ or mean revert, hence the term โ€œmean reversionโ€ ยจ What is the intuition for it in the BDT model? ยจ Essentially at a given time indexed by k, there are k nodes. The spacing between the nodes is given by the volatility input. What happens when this spacing is not time-dependent? Meaning its value change from (k) to (k+1). We could end up in a situation like this one: 101
  • 102. Luc_Faucheux_2020 The BDT mean reversion II ยจ Decreasing volatility input from (k) to (k+1). The tree gets compressed. Positive mean reversion (usual one) ยจ Note: in this case it is obvious that a BDT binomial model breaks the arbitrage locally, even though one average over the time slices the arbitrage is still respected ยจ The further away from the center the greater the pull-back : typical of mean reversion 102
  • 103. Luc_Faucheux_2020 The BDT mean reversion III ยจ Increasing volatility input from (k) to (k+1). The tree explodes. Negative mean reversion (unusual one) ยจ Note: in this case it is obvious that a BDT binomial model breaks the arbitrage locally, even though one average over the time slices the arbitrage is still respected ยจ The further away from the center the greater the push-out : typical of negative mean reversion 103
  • 104. Luc_Faucheux_2020 The BDT mean reversion IV ยจ It should not come as a surprise, because in some ways, in BDT for a given โ€œspliceโ€ at a given point in time k, you just put k nodes equally spaced and then you just shift those up and down in order to recover the average discount factor, and then you connect those dots back to the previous time slice ยจ Local versus average arbitrage free ยจ BDT is said to be arbitrage free because when discounting back on the tree you recover the price of todayโ€™s discount curve. Note that it is only ON AVERAGE that the arbitrage is being respected. When there is mean reversion, locally at any point in the BDT tree the โ€localโ€ arbitrage is NOT being respected, and so the local dynamics of BDT (if we can figure it outโ€ will NOT be arbitrage free (only in very limited case for example constant volatility). ยจ Another way to say it is that if you build a BDT tree out of any node in an existing BDT tree, this will NOT be a BDT tree, and will not respect arbitrage ยจ Letโ€™s try to estimate how this impacts the dynamic equation. 104
  • 105. Luc_Faucheux_2020 The BDT mean reversion V ยจ For k large enough the tree is centered around ๐‘‹ ๐‘˜, 1 " = ๐‘‹?(๐‘˜) for middle ยจ For each node ๐‘‹ ๐‘˜, ๐‘– = ๐‘‹? ๐‘˜ + ๐‘– โˆ’ 1 " . ๐›ฟ๐‘‹(๐‘˜) ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– = ๐‘‹? ๐‘˜ + 1 + ๐‘– โˆ’ 12! " . ๐›ฟ๐‘‹(๐‘˜ + 1) ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 = ๐‘‹? ๐‘˜ + 1 + ๐‘– + 1 โˆ’ 12! " . ๐›ฟ๐‘‹(๐‘˜ + 1) 105 X(k,i) X(k+1,i+1) X(k+1,i) ๐›ฟ๐‘‹(๐‘˜ + 1)
  • 106. Luc_Faucheux_2020 The BDT mean reversion VI ยจ Setting the drift of the overall tree to 0, ๐‘‹? ๐‘˜ + 1 = ๐‘‹? ๐‘˜ ยจ Note that we can always add a drift later constant for all nodes, we are trying to isolate the effect of the changing spacing between two time slices ยจ ๐‘‹ ๐‘˜, ๐‘– = ๐‘‹? ๐‘˜ + ๐‘– โˆ’ 1 " . ๐›ฟ๐‘‹(๐‘˜) ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– = ๐‘‹? ๐‘˜ + 1 + ๐‘– โˆ’ 12! " . ๐›ฟ๐‘‹(๐‘˜ + 1) ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 = ๐‘‹? ๐‘˜ + 1 + ๐‘– + 1 โˆ’ 12! " . ๐›ฟ๐‘‹(๐‘˜ + 1) ยจ ๐›ฟ๐‘‹ ๐‘˜ + 1 = ๐›ฟ๐‘‹ ๐‘˜ + ;89 # ;# . ๐›ฟ๐‘ก + ๐’ช(๐›ฟ๐‘ก") ยจ < โˆ†๐‘‹ > = ! " . ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 + ๐‘‹ ๐‘˜ + 1, ๐‘– 106
  • 107. Luc_Faucheux_2020 The BDT mean reversion VII ยจ < ๐‘‹ > = ! " . ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 + ๐‘‹ ๐‘˜ + 1, ๐‘– ยจ < ๐‘‹ > = ! " . ๐‘‹? ๐‘˜ + 1 + ๐‘– + 1 โˆ’ 12! " . ๐›ฟ๐‘‹(๐‘˜ + 1) + ! " . ๐‘‹? ๐‘˜ + 1 + ๐‘– โˆ’ 12! " . ๐›ฟ๐‘‹(๐‘˜ + 1) ยจ < ๐‘‹ > = ๐‘‹? ๐‘˜ + 1 + ! " . { ๐‘– + 1 โˆ’ 12! " + (๐‘– โˆ’ 12! " )}. ๐›ฟ๐‘‹(๐‘˜ + 1) ยจ < ๐‘‹ > = ๐‘‹? ๐‘˜ + 1 + ๐‘– โˆ’ 1 " . ๐›ฟ๐‘‹(๐‘˜ + 1) ยจ ๐‘‹ ๐‘˜, ๐‘– = ๐‘‹? ๐‘˜ + ๐‘– โˆ’ 1 " . ๐›ฟ๐‘‹(๐‘˜) ยจ ๐‘‹? ๐‘˜ + 1 = ๐‘‹? ๐‘˜ ยจ < ๐‘‹ > = ๐‘‹? ๐‘˜ + ๐‘– โˆ’ 1 " . ๐›ฟ๐‘‹ ๐‘˜ + ๐‘– โˆ’ 1 " . ;89 # ;# . ๐›ฟ๐‘ก ยจ < ๐‘‹ > = ๐‘‹(๐‘˜, ๐‘–) + ๐‘– โˆ’ 1 " . ;89 # ;# . ๐›ฟ๐‘ก 107
  • 108. Luc_Faucheux_2020 The BDT mean reversion VIII ยจ Locally there is a drift term equal to ๐‘– โˆ’ 1 " . ;89 # ;# . ๐›ฟ๐‘ก ยจ In the middle where ๐‘– = 1 " , this drift term is nul ยจ The farther we get away from the center, the greater this drift term (not equal for all nodes) ยจ The greater the derivative of the spacing with respect to time ;89 # ;# the greater the drift ยจ < ๐‘‹ > = ๐‘‹(๐‘˜, ๐‘–) + ๐‘– โˆ’ 1 " . ;89 # ;# . ๐›ฟ๐‘ก ยจ < โˆ†๐‘‹ > = ๐‘– โˆ’ 1 " . ;89 # ;# . ๐›ฟ๐‘ก ยจ ๐‘‹ ๐‘˜, ๐‘– = ๐‘‹? ๐‘˜ + ๐‘– โˆ’ 1 " . ๐›ฟ๐‘‹(๐‘˜) ยจ So we have < โˆ†๐‘‹ > = ( 9 1,) -9E(1) 89 # ). ;89 # ;# . ๐›ฟ๐‘ก 108
  • 109. Luc_Faucheux_2020 The BDT mean reversion IX ยจ < โˆ†๐‘‹ > = 9 1,) -9E 1 89 # . ;89 # ;# . ๐›ฟ๐‘ก = ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐‘‹? ๐‘˜ . ! 89 # . ;89 # ;# . ๐›ฟ๐‘ก ยจ For convenience sake, either we set ๐‘‹? ๐‘˜ = 0, or we define ๐‘Œ ๐‘˜, ๐‘– = ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐‘‹? ๐‘˜ and work in the tree in ๐‘Œ. ยจ If we set ๐‘‹? ๐‘˜ = 0 ยจ < โˆ†๐‘‹ > = 9 1,) 89 # . ;89 # ;# . ๐›ฟ๐‘ก = ๐‘‹ ๐‘˜, ๐‘– . ! 89 # . ;89 # ;# . ๐›ฟ๐‘ก ยจ So when writing ๐‘‘๐‘‹ = ๐œ‡. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š we would have ยจ ๐œ‡ = ๐‘‹. ! 89 # . ;89 # ;# ยจ We had previously (๐œŽ". ๐›ฟ๐‘ก) = 89+ : , so looks like ๐œ‡ = ๐‘‹. ! = . ;= ;# , where ๐œŽ = ๐œŽ(๐‘ก) ยจ So looks like ๐‘‘๐‘‹ = ๐‘‹. =@ = . ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š 109
  • 110. Luc_Faucheux_2020 The BDT mean reversion X ยจ We still need to check that the ๐œŽ term in front of the Brownian driver is still the correct one that we obtain in the case of constant ๐œŽ ยจ To do that we need to estimate: ยจ < โˆ†๐‘‹"> = ! " . (๐‘‹ ๐‘˜ + 1, ๐‘– + 1 โˆ’ < ๐‘‹ >)^(2) + (๐‘‹ ๐‘˜ + 1, ๐‘– โˆ’ < ๐‘‹ >)^(2) ยจ Where < ๐‘‹ > is the mid point between ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 and ๐‘‹ ๐‘˜ + 1, ๐‘– ยจ < ๐‘‹ > = ! " . ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 + ๐‘‹ ๐‘˜ + 1, ๐‘– ยจ And so < โˆ†๐‘‹"> = ! : . {(๐‘‹ ๐‘˜ + 1, ๐‘– + 1 โˆ’ ๐‘‹ ๐‘˜ + 1, ๐‘– }"= ! : . {(๐›ฟ๐‘‹ ๐‘˜ + 1 }" ยจ This is the same as before (the intuition is that the drift does not pollute the volatility, because the drift is of order 1 in time, and so any drift when computing the second moment will appear as a term of order 2 in time, which will be neglected when compared to the stochastic term, which is only of order 1 in time 110
  • 111. Luc_Faucheux_2020 The BDT mean reversion XI ยจ The numerical implementation of the BDT tree, by equally spacing k nodes at time k, and then forcing those nodes to connect in a recombining binomial manner, โ€œartificiallyโ€ creates a mean reversion drift ยจ The BDT dynamics is ๐‘‘๐‘‹ = ๐‘‹. =@ = . ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š ยจ At constant volatility, the drift term disappear ยจ I can bet some large amount of money that if we had started from the actual dynamics and being asked to build a tree that follows it we would have struggled quite a lot ยจ We went through this derivation to illustrate the potential pitfalls of going in between numerical tree implementation and continuous dynamics ยจ Note that usually BDT are built with a short term rate in lognormal space, ๐‘‹ = ln(๐‘Ÿ) ยจ The dynamics then become ๐‘‘(ln ๐‘Ÿ ) = ln(๐‘Ÿ). =@ = . ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š ยจ Note that the meaning of ๐œŽ is now different, it is now the lognormal volatility 111
  • 112. Luc_Faucheux_2020 The BDT mean reversion XII ยจ Note that as usual following the Ito convention (Ito lemma) in Ito calculus ยจ ๐‘‘ ln(๐‘Ÿ) = ( โ„๐‘‘๐‘Ÿ ๐‘Ÿ) โˆ’ ( โ„๐œŽ" 2). ๐‘‘๐‘ก ยจ Letโ€™s go back to ๐‘‘๐‘‹ = ๐‘‹. =@ = . ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š ยจ Also normal models are much more in favor now that rates have proven that they can go negative. ยจ The associated PDE for the PDF is given by ยจ ;< (9,#) ;# = โˆ’ ; ;9 ๐œ‡. ฮ  ๐‘‹, ๐‘ก โˆ’ ; ;9 =+ " . ฮ  ๐‘‹, ๐‘ก ยจ ;< (9,#) ;# = โˆ’ ; ;9 ๐‘‹. =@ = . ฮ  ๐‘‹, ๐‘ก โˆ’ ; ;9 =+ " . ฮ  ๐‘‹, ๐‘ก ยจ Note that ๐œŽ is a function of the time t and not the stochastic variable, so we are safe from any Ito versus Stratonovitch controversy for now 112
  • 113. Luc_Faucheux_2020 The BDT mean reversion XIII ยจ In the most general case with added drift (the multiplicative factors K that we used in the Excel implementation of the BDT) ยจ ๐‘‘๐‘‹ = {๐พ ๐‘ก + ๐‘‹. =F # = # }. ๐‘‘๐‘ก + ๐œŽ(๐‘ก). ๐‘‘๐‘Š ยจ We can also split the drift term in order to make obvious the reversion to the mean ๐‘‹A(๐‘ก) ยจ ๐‘‘๐‘‹ = {๐พ ๐‘ก + (๐‘‹ โˆ’ ๐‘‹A ๐‘ก ). =F # = # }. ๐‘‘๐‘ก + ๐œŽ(๐‘ก). ๐‘‘๐‘Š ยจ Or going into Lognormal space ยจ ๐‘‘(ln ๐‘Ÿ ) = {๐พ ๐‘ก + (ln(๐‘Ÿ) โˆ’ ln(๐‘ŸA ๐‘ก )). =F # = # }. ๐‘‘๐‘ก + ๐œŽ(๐‘ก). ๐‘‘๐‘Š ยจ The usual textbook description of the BDT dynamics just goes with ยจ ๐‘‘ ln ๐‘Ÿ = {๐œƒ ๐‘ก + ln(๐‘Ÿ). =F = }. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š ยจ With the drift ๐œƒ ๐‘ก taking care of the arbitrage free constraint to recover the discounts 113
  • 114. Luc_Faucheux_2020 The BDT mean reversion XIV ยจ Always be careful when dealing with numerical implementation of SDE ยจ In the example above, when having constant volatility, the dynamics is the one sometimes called the Ho-Lee: ยจ ๐‘‘๐‘‹ = ๐พ ๐‘ก . ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š ยจ If ๐‘‹ is the short-rate, we have ๐พ ๐‘ก = ;3(%,#) ;# + ๐œŽ". ๐‘ก ยจ Where ๐‘“(0, ๐‘ก) is the initial forward rate curve ยจ When ๐œŽ becomes a function of time ๐œŽ(๐‘ก), we would be tempted to keep the tree that we built for Ho-Lee and just change the spacing at each time step in order to fit the volatility. ยจ What we showed is that doing this โ€œblindlyโ€ introduces mean reversion and changes the dynamics (SDE) to: ยจ ๐‘‘๐‘‹ = {๐พ ๐‘ก + ๐‘‹. =F # = # }. ๐‘‘๐‘ก + ๐œŽ(๐‘ก). ๐‘‘๐‘Š 114
  • 115. Luc_Faucheux_2020 115 Some notes on probabilities and drift inside the tree
  • 116. Luc_Faucheux_2020 A quick aside on probabilities ยจ Probability to go up ๐‘ƒB, probability to go down ๐‘ƒC, with ๐‘ƒB + ๐‘ƒC = 1 ยจ If both probability are equal to 1/2 ยจ < โˆ†๐‘‹ > = ! " . ๐‘‹ + 89 " + ๐‘‹ โˆ’ ๐›ฟ๐‘‹/2 โˆ’ ๐‘‹ = 0 ยจ < โˆ†๐‘‹"> = ! " . ( 89 " )^(2) + ( 89 " )^(2) = ( 89+ : ) 116 X X + ๐›ฟ๐‘‹/2 X - ๐›ฟ๐‘‹/2 ๐›ฟ๐‘‹/2 ๐›ฟ๐‘‹/2 ๐‘ƒ! ๐‘ƒ" ๐›ฟ๐‘ก
  • 117. Luc_Faucheux_2020 A quick aside on probabilities II ยจ < โˆ†๐‘‹ > = 0 ยจ < โˆ†๐‘‹"> = ( 89+ : ) ยจ We match the process ๐‘‘๐‘‹ = 0. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š ยจ ๐œŽ". ๐›ฟ๐‘ก = ( 89+ : ) ยจ ๐›ฟ๐‘‹ = 2๐œŽ. ๐›ฟ๐‘ก 117
  • 118. Luc_Faucheux_2020 Adding drift the easy way (?) ยจ We keep the probabilities equal to (1/2) ยจ The only difference is the addition of the drift term 118 X ๐‘ƒ! ๐‘ƒ" ๐›ฟ๐‘ก ๐‘‹ โˆ’ #$ % + ๐‘Ž. ๐›ฟ๐‘ก ๐‘‹ + #$ % + ๐‘Ž. ๐›ฟ๐‘ก
  • 119. Luc_Faucheux_2020 Adding drift the easy way (?) II ยจ < โˆ†๐‘‹ > = ! " . ๐‘‹ + 89 " + ๐‘Ž. ๐›ฟ๐‘ก + ๐‘‹ โˆ’ 89 " + ๐‘Ž. ๐›ฟ๐‘ก โˆ’ ๐‘‹ = ๐‘Ž. ๐›ฟ๐‘ก ยจ < โˆ†๐‘‹"> = ! " . ( 89 " + ๐‘Ž. ๐›ฟ๐‘ก)^(2) + (โˆ’ 89 " + ๐‘Ž. ๐›ฟ๐‘ก)^(2) ยจ < โˆ†๐‘‹"> = (๐‘Ž. ๐›ฟ๐‘ก)"+( 89+ : ) ยจ We only keep the terms in order 1 in ๐›ฟ๐‘ก (small time steps limit) ยจ < โˆ†๐‘‹"> = ( 89+ : ) ยจ Note that locally, < โˆ†๐‘‹"> = ! " . ( 89 " )^(2) + ( 89 " )^(2) = ( 89+ : ) exactly ยจ We match the process ๐‘‘๐‘‹ = ๐‘Ž. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š 119
  • 120. Luc_Faucheux_2020 Changing the drift by changing the probabilities I ยจ We do not change the values in the space axis (the values for X have been picked already) ยจ We change the probabilities ๐‘ƒB and ๐‘ƒC ยจ This is quite common when building trees, as the node spacing has already been calibrated. ยจ This actually is a little more tricky to deal with (in particular when you change the probabilities, do you still recover a Gaussian for example? This is linked to the Girsanov theorem, just to tell you that this is not as simple as it seems) 120 X X + ๐›ฟ๐‘‹/2 X - ๐›ฟ๐‘‹/2 ๐›ฟ๐‘‹/2 ๐›ฟ๐‘‹/2 ๐‘ƒ! ๐‘ƒ" ๐›ฟ๐‘ก
  • 121. Luc_Faucheux_2020 Changing the drift by changing the probabilities II ยจ We define the probabilities ๐‘ƒB = ! " + ๐œ€ and ๐‘ƒC = ! " โˆ’ ๐œ€ ยจ < โˆ†๐‘‹ > = ! " + ๐œ€ . ๐‘‹ + 89 " } + ! " โˆ’ ๐œ€ . {๐‘‹ โˆ’ 89 " โˆ’ ๐‘‹ = ๐œ€. ๐›ฟ๐‘‹ ยจ Now, ๐›ฟ๐‘‹ scales as ๐›ฟ๐‘ก!/", so we know that right off the bat, in order for the drift term to be linear in time (in order to model ๐‘‘๐‘‹ = ๐‘Ž. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š), we are going to need to have that number ๐œ€ to scale something like {๐‘Ž. (๐›ฟ๐‘ก)!/"} ยจ < โˆ†๐‘‹"> = ! " + ๐œ€ . 89 " " + ! " โˆ’ ๐œ€ . 89 " " ยจ < โˆ†๐‘‹"> = ! " + ๐œ€ . 89 " " + ! " โˆ’ ๐œ€ . 89 " " ยจ < โˆ†๐‘‹"> = 89+ : (1 + 2. ๐œ€") 121
  • 122. Luc_Faucheux_2020 Changing the drift by changing the probabilities III ยจ < โˆ†๐‘‹ > = ๐œ€. ๐›ฟ๐‘‹ = ๐‘Ž. ๐›ฟ๐‘ก ยจ < โˆ†๐‘‹"> = 89+ : 1 + 2. ๐œ€" = ๐œŽ". ๐›ฟ๐‘ก ยจ So ๐œ€ = E.8# 89 and ๐›ฟ๐‘‹ = 2๐œŽ. ๐›ฟ๐‘ก!/" so we can also write ๐œ€ = E "= ๐›ฟ๐‘ก!/" ยจ So changing the probability does not affect the variance in the limit of small time steps (continuous limit). ยจ Not as straightforward as shifting the values in space and keeping the probabilities equal to (1/2) ยจ Changing the probabilities to affect the drift is NOT trivial (in particular we have to convince ourselves that we did not change the shape of the distribution, just the first moment) ยจ Girsanov theorem, Radon-Nikodym derivative if you want to use big words 122
  • 123. Luc_Faucheux_2020 Changing the drift by changing the probabilities IV ยจ So we match the process: ๐‘‘๐‘‹ = ๐‘Ž. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š ยจ ๐›ฟ๐‘‹ = 2๐œŽ. ๐›ฟ๐‘ก!/" ยจ ๐œ€ = E "= ๐›ฟ๐‘ก!/" ยจ WAIT A MINUTE you should say, ๐œ€ is only a number, not a complicated formula: ยจ ๐œ€ = E "= ๐›ฟ๐‘ก!/" ยจ ๐‘Ž is a drift and so scales as [ 9 # ] ยจ ๐œŽ is a volatility and so scales as [ 9 #!/+], or easier ๐œŽ". [๐‘ก]scales as [๐‘‹"] ยจ SO.. ๐œ€ scales as [ 9 # ]. # ! + 9 . [๐‘ก!/"] which is dimensionless and a number indeed !! 123
  • 124. Luc_Faucheux_2020 124 Some tricks we can play in BDT trees
  • 125. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree ยจ Market practice is to do the following: โ€“ Build the tree (if needed to save memory, build also some โ€œghost nodesโ€) โ€“ Start with a given spacing in rates โ€“ Adjust the multiplication factor to match the discount curve โ€“ Adjust the spacing in order to match at-the-money caplet prices (this take into account the numerical noise aspect, and also the bias in the BDT discounting, which needs to be taken into account by adjusting the vol) โ€“ Recalibrate the multiplication factors to match the discount curve โ€“ Iterate a couple of times if needed โ€“ NOW comes the kicker: you will NOT recover the price of at-the-money European swaptions, NOR will you recover the price of callable options (Formosa), there are a lot of reasons why โ€“ The most used โ€œtrickโ€ is to add another mean reversion in the BDT tree on top of the โ€œnaturalโ€ mean reversion : { .% . } 125
  • 126. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree-b ยจ This is in practice a very important point: ยจ Models do get calibrated to a finite subset of instruments. ยจ For reasons that we went over in the Structured Powerpoint, a simple model will NEVER be able to capture the right price (and as a result risk and hedges) for caps and callables, or European swaptions ยจ A true model that should capture the callable prices should be able to incorporate the correlation between the curve steepness as stochastic driver, and the first factor in the volatility surface ยจ Such a model is quite a task to build (no one in the market currently has one) ยจ But as we also showed in the Skew Powerpoint, it is quite legit to use a simpler model, run it through a hedging scenario and capture the residual as the difference in pricing ยจ So you could say, why even bother with mean reversion? Take your model as is, and then run it through your scenario hedging 126
  • 127. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree-c ยจ The answer to that is, yes you could do that, and that would be fine ยจ Introducing mean reversion to the current model brings it closer to the market price. ยจ So it might not be the actual dynamics, but at least you are starting closer to where you want to end, so any Taylor expansion / approximation will be smaller and more justified ยจ Also, even though we are a big proponent of the Scenario hedging, this is a class after all, so playing with the mean reversion is a nice way to introduce some of the concepts around tree pricing 127
  • 128. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree II ยจ Letโ€™s go through the derivation of that โ€œtrickโ€ (not the only one but a rather popular one) ยจ More to illustrate the tree dynamics, and how a change in the algorithm affects the underlying dynamics, and how one needs to be careful about the small details ยจ In textbooks, sometimes you read that you need a trinomial tree in order to have an extra degree of freedom in order to accommodate mean reversion. ยจ I have never fully understood why that is the case, and what a trinomial tree has that a two- step binomial tree cannot exhibit ยจ We will also present a trinomial tree implementation as it is a neat example of something crucial when dealing with trees (or sometimes trees on a grid) : stability analysis and constraints on the discrete parameters 128
  • 129. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree III ยจ ๐‘‹ ๐‘˜, ๐‘– = ๐‘‹? ๐‘˜ + ๐‘– โˆ’ 1 " . ๐›ฟ๐‘‹(๐‘˜) ยจ ๐‘‹ ๐‘˜, 1 " = ๐‘‹?(๐‘˜) ยจ Once the volatility structure ๐›ฟ๐‘‹(๐‘˜) is given, there is no choice on the mean reversion parameter that is given by { =F = } ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) = ! " ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–) 129 X(k,i) X(k+1,i+1) X(k+1,i) ๐›ฟ๐‘‹/2 ๐›ฟ๐‘‹/2
  • 130. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree IV ยจ ฮ  ๐‘‹(๐‘˜, ๐‘–) follows the binomial distribution, in the continuous limit we recover the Gaussian distribution and the diffusion equation. ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) = ! " ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–) ยจ ฮ  ๐‘‹(๐‘˜, ๐‘–) = 2-1. ) 1 = ! "& . 1! )! 1-) ! ยจ ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) = 2-1. )-! 1 = ! "& . 1! ()-!)! 1-)2! ! ยจ We have : )-! 1 + ) 1 = ) 12! ยจ So by recurrence we also have ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) = 2-12!. ) 12! = ! "&H! . (12!)! )! 12!-) ! 130
  • 131. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree V ยจ One introduces mean reversion in an algorithmic fashion in the following way: ยจ Usual tree: ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘– with probability ๐‘ƒC = 1/2 ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 with probability ๐‘ƒB = 1/2 ยจ We introduce ๐œ‡ (note that a time dependent ๐œ‡(๐‘ก) is completely analogous, but for sake of simplicity we will drop the time dependence for now ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘– with probability ๐‘ƒC = ! " . (1 โˆ’ ๐œ‡) ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 with probability ๐‘ƒB = ! " . (1 โˆ’ ๐œ‡) ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘— with probability ๐‘ƒ 1,) โ†’(12!,*) = ๐œ‡. ฮ  ๐‘‹(๐‘˜ + 1, ๐‘—) 131
  • 132. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree VI ยจ The functional ๐‘ƒ 1,) โ†’(12!,*) = ๐œ‡. ฮ  ๐‘‹(๐‘˜ + 1, ๐‘—) is chosen so that the probabilities on the tree are intact ยจ We do not change the variance, nor the shape of the distribution for a given time section in the BDT tree ยจ We only change the probability of jumping from one node back to another across time sections ยจ This will work either when jumping forward in time in the BDT tree (when computing things like Asian options that are path dependent, or for example the Arrow-Debreu prices of securities), but also when jumping backward in the BDT tree, when discounting back American options or pricing callable options. 132
  • 133. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree VI-a ยจ Note that we do not lose any probability density ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘– with probability ๐‘ƒC = ! " . (1 โˆ’ ๐œ‡) ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 with probability ๐‘ƒB = ! " . (1 โˆ’ ๐œ‡) ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘— with probability ๐‘ƒ 1,) โ†’(12!,*) = ๐œ‡. ฮ  ๐‘‹(๐‘˜ + 1, ๐‘—) ยจ So out of the node ๐‘‹ ๐‘˜, ๐‘– we will transfer to the next time slice ๐‘˜ + 1 a total: ยจ ๐‘ƒ = ! " . 1 โˆ’ ๐œ‡ + ! " . 1 โˆ’ ๐œ‡ + ๐œ‡. โˆ‘*$% *$12! ฮ  ๐‘‹ ๐‘˜ + 1, ๐‘— ยจ And since โˆ‘*$% *$12! ฮ  ๐‘‹ ๐‘˜ + 1, ๐‘— = 1 we have ๐‘ƒ = 1 = 100% ยจ So 100% of the probability density in the node ๐‘‹ ๐‘˜, ๐‘– gets transferred to the next time slice, we are not losing any probability density (note that we assumed that the sum of the next tree level probabilities add up to one, so a little self consistent) 133
  • 134. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree VII ยจ The old master equation was: ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) = ! " ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–) ยจ The new master equation is a little more complicated at first: ยจ So just to be rigorous, we will note ฮ โ€ฒ ๐‘‹(๐‘˜ + 1, ๐‘–) the new probability distribution ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) is the baseline or the ๐œ‡ = 0 solution ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) is the usual binomial distribution ยจ ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) = 2-12!. ) 12! = ! "&H! . (12!)! )! 12!-) ! 134
  • 135. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree VII-b ยจ The new Master Equation now becomes: ยจ ฮ โ€ฒ ๐‘‹(๐‘˜ + 1, ๐‘–) = ! " 1 โˆ’ ๐œ‡ . ฮ โ€ฒ ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 + ฮ โ€ฒ ๐‘‹(๐‘˜, ๐‘–) + ๐œ‡. โˆ‘* ฮ โ€ฒ ๐‘‹ ๐‘˜, ๐‘— . ฮ โ€ฒ( ) ๐‘‹(๐‘˜ + 1, ๐‘–) ยจ We can use a recurrence argument here: ยจ ฮ @ ๐‘‹ 0,0 = ฮ  ๐‘‹ 0,0 = 1 ยจ ฮ @ ๐‘‹ 1,0 = ! " 1 โˆ’ ๐œ‡ . ฮ  ๐‘‹ 0,0 + ๐œ‡. ฮ  ๐‘‹(1,0) = ! " 1 โˆ’ ๐œ‡ . 1 + ๐œ‡. ! " = ! " = ฮ  ๐‘‹ 1,0 ยจ ฮ @ ๐‘‹ 1,1 = ! " 1 โˆ’ ๐œ‡ . ฮ  ๐‘‹ 0,0 + ๐œ‡. ฮ  ๐‘‹(1,1) = ! " 1 โˆ’ ๐œ‡ . 1 + ๐œ‡. ! " = ! " = ฮ  ๐‘‹ 1,1 135
  • 136. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree VII-c ยจ We now go from ๐‘˜ โ†’ (๐‘˜ + 1) ยจ We assume that ฮ @ ๐‘‹ ๐‘˜, ๐‘— = ฮ  ๐‘‹(๐‘˜, ๐‘—) ยจ The master equation is ยจ ฮ โ€ฒ ๐‘‹(๐‘˜ + 1, ๐‘–) = !-I " ฮ โ€ฒ ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 + ฮ โ€ฒ ๐‘‹(๐‘˜, ๐‘–) + ๐œ‡ โˆ‘* ฮ โ€ฒ ๐‘‹ ๐‘˜, ๐‘— ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) ยจ ฮ โ€ฒ ๐‘‹(๐‘˜ + 1, ๐‘–) = !-I " ฮ  ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 + ฮ  ๐‘‹(๐‘˜, ๐‘–) + ๐œ‡ โˆ‘* ฮ  ๐‘‹ ๐‘˜, ๐‘— ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) ยจ Since โˆ‘* ฮ  ๐‘‹(๐‘˜, ๐‘—) = 1 ยจ ฮ @ ๐‘‹ ๐‘˜ + 1, ๐‘– = !-I " . ฮ  ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 + ฮ  ๐‘‹ ๐‘˜, ๐‘– + ๐œ‡. ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) 136
  • 137. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree VII-d ยจ ฮ @ ๐‘‹ ๐‘˜ + 1, ๐‘– = !-I " . ฮ  ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 + ฮ  ๐‘‹ ๐‘˜, ๐‘– + ๐œ‡. ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) ยจ Now note that if ฮ @ ๐‘‹ ๐‘˜ + 1, ๐‘– = ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) ยจ The Master Equation now would become ยจ Or: ฮ โ€ฒ ๐‘‹ ๐‘˜ + 1, ๐‘– . (1 โˆ’ ๐œ‡) = ! " 1 โˆ’ ๐œ‡ . ฮ  ๐‘‹(๐‘˜, ๐‘– โˆ’ 1) + ฮ  ๐‘‹(๐‘˜, ๐‘–) ยจ Dividing both sides by the 1 โˆ’ ๐œ‡ term we get: ยจ ฮ @ ๐‘‹ ๐‘˜ + 1, ๐‘– = ! " ฮ  ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 + ฮ  ๐‘‹ ๐‘˜, ๐‘– = ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) ยจ This is the same master equation, so probabilities are conserved, and the distribution is also conserved !! In particular, we also have : โˆ‘*$% *$12! ฮ  ๐‘‹ ๐‘˜ + 1, ๐‘— = 1 137
  • 138. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree VII-e ยจ Without guessing so much: ยจ ฮ @ ๐‘‹ ๐‘˜ + 1, ๐‘– = !-I " . ฮ  ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 + ฮ  ๐‘‹ ๐‘˜, ๐‘– + ๐œ‡. ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) ยจ And the binomial Master Equation ensures that ยจ !-I " . ฮ  ๐‘‹ ๐‘˜, ๐‘– โˆ’ 1 + ฮ  ๐‘‹ ๐‘˜, ๐‘– = 1 โˆ’ ๐œ‡ . ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) ยจ And so : ยจ ฮ @ ๐‘‹ ๐‘˜ + 1, ๐‘– = 1 โˆ’ ๐œ‡ . ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) + ๐œ‡. ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) = ฮ  ๐‘‹(๐‘˜ + 1, ๐‘–) ยจ Sounds pretty obvious, but our little trick did not change the probability distribution, and so it will not affect the price of caplets, and swaps, or any derivatives that can be discounted without any path dependency ยจ Swaptions and callables will change in pricing as it will have to be discounted back along the tree (say it another way, some of the State Prices will be affected) 138
  • 139. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree VIII ยจ So numerically we can observe that this will change the price of callable and swaptions ยจ Will it affect the price of caplets? ยจ Can we write down the new dynamics for the BDT with this new parameter? ยจ Can we even write an equation for the continuous process (SDE) ? ยจ Letโ€™s do the same exercise we did in order to get the new dynamics (if we can) 139
  • 140. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree IX ยจ For k large enough the tree is centered around ๐‘‹ ๐‘˜, 1 " = ๐‘‹?(๐‘˜) for middle ยจ For each node ๐‘‹ ๐‘˜, ๐‘– = ๐‘‹? ๐‘˜ + ๐‘– โˆ’ 1 " . ๐›ฟ๐‘‹(๐‘˜) ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– = ๐‘‹? ๐‘˜ + 1 + ๐‘– โˆ’ 12! " . ๐›ฟ๐‘‹(๐‘˜ + 1) ยจ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 = ๐‘‹? ๐‘˜ + 1 + ๐‘– + 1 โˆ’ 12! " . ๐›ฟ๐‘‹(๐‘˜ + 1) 140 X(k,i) X(k+1,i+1) X(k+1,i) ๐›ฟ๐‘‹(๐‘˜ + 1)
  • 141. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree X ยจ The big difference is that NOW the probabilities have changed to : ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘– with probability ๐‘ƒC = ! " . (1 โˆ’ ๐œ‡) ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 with probability ๐‘ƒB = ! " . (1 โˆ’ ๐œ‡) ยจ ๐‘‹ ๐‘˜, ๐‘– โ†’ ๐‘‹ ๐‘˜ + 1, ๐‘— with probability ๐‘ƒ 1,) โ†’(12!,*) = ๐œ‡. ฮ  ๐‘‹(๐‘˜ + 1, ๐‘—) ยจ Where before we had : ยจ < ๐‘‹ > =< ๐‘‹12!|๐‘‹(๐‘˜, ๐‘–) > = ! " . ๐‘‹ ๐‘˜ + 1, ๐‘– + 1 + ๐‘‹ ๐‘˜ + 1, ๐‘– ยจ We now have to sum over all the possible nodes in the tree at time (๐‘˜ + 1) ยจ < ๐‘‹12!|๐‘‹(๐‘˜, ๐‘–) > = โˆ‘*$% *$12! ๐‘‹ ๐‘˜ + 1, ๐‘— . ๐‘ƒ 1,) โ†’(12!,*) 141
  • 142. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree XI ยจ We can make things easier for us and work in the limit of (๐œ‡ โ†’ 0) ยจ We know that when (๐œ‡ = 0) we have: ยจ < โˆ†๐‘‹(๐œ‡ = 0) > = 9 1,) -9E 1 89 # . ;89 # ;# . ๐›ฟ๐‘ก = ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐‘‹? ๐‘˜ . ! 89 # . ;89 # ;# . ๐›ฟ๐‘ก ยจ For convenience sake, either we set ๐‘‹? ๐‘˜ = 0, or we define ๐‘Œ ๐‘˜, ๐‘– = ๐‘‹ ๐‘˜, ๐‘– โˆ’ ๐‘‹? ๐‘˜ and work in the tree in ๐‘Œ. ยจ If we set ๐‘‹? ๐‘˜ = 0 (we can always add a constant tree drift after) ยจ < โˆ†๐‘‹(๐œ‡ = 0) > = 9 1,) 89 # . ;89 # ;# . ๐›ฟ๐‘ก = ๐‘‹ ๐‘˜, ๐‘– . ! 89 # . ;89 # ;# . ๐›ฟ๐‘ก 142
  • 143. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree XII ยจ In the limit of small ๐œ‡: ยจ < โˆ†๐‘‹ > =< ๐‘‹12!|๐‘‹(๐‘˜, ๐‘–) > โˆ’ ๐‘‹(๐‘˜, ๐‘–) ยจ < ๐‘‹ > =< ๐‘‹ ๐œ‡ = 0 >. 1 โˆ’ ๐œ‡ + ๐œ‡. โˆ‘*$% *$12! ๐‘‹ ๐‘˜ + 1, ๐‘— . ฮ  ๐‘‹(๐‘˜ + 1, ๐‘—) ยจ < โˆ†๐‘‹ > = < โˆ†๐‘‹ ๐œ‡ = 0 >. 1 โˆ’ ๐œ‡ + ๐œ‡. ๐›ฟ < โˆ†๐‘‹ > ยจ With ๐›ฟ < โˆ†๐‘‹ > = โˆ‘*$% *$12! {๐‘‹ ๐‘˜ + 1, ๐‘— โˆ’ ๐‘‹ ๐‘˜, ๐‘– }. ฮ  ๐‘‹(๐‘˜ + 1, ๐‘—) ยจ Or again : ยจ ๐›ฟ < โˆ†๐‘‹ > = [โˆ‘*$% *$12! ๐‘‹ ๐‘˜ + 1, ๐‘— . ฮ  ๐‘‹ ๐‘˜ + 1, ๐‘— โˆ’ ๐‘‹ ๐‘˜, ๐‘– ] ยจ Since: โˆ‘*$% *$12! ๐‘‹ ๐‘˜, ๐‘– . ฮ  ๐‘‹ ๐‘˜ + 1, ๐‘— = ๐‘‹ ๐‘˜, ๐‘– . โˆ‘*$% *$12! ฮ  ๐‘‹ ๐‘˜ + 1, ๐‘— = ๐‘‹ ๐‘˜, ๐‘– 143
  • 144. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree XIII ยจ We now have: ยจ < โˆ†๐‘‹ > = < โˆ†๐‘‹ ๐œ‡ = 0 >. 1 โˆ’ ๐œ‡ + ๐œ‡. ๐›ฟ < โˆ†๐‘‹ > ยจ ๐›ฟ < โˆ†๐‘‹ > = [โˆ‘*$% *$12! ๐‘‹ ๐‘˜ + 1, ๐‘— . ฮ  ๐‘‹ ๐‘˜ + 1, ๐‘— โˆ’ ๐‘‹ ๐‘˜, ๐‘– ] ยจ ๐›ฟ < โˆ†๐‘‹ > = [๐‘‹?(๐‘˜ + 1) โˆ’ ๐‘‹ ๐‘˜, ๐‘– ] ยจ Remember that: ยจ ๐‘‹? ๐‘˜ + 1 = โˆ‘*$% *$12! ๐‘‹ ๐‘˜ + 1, ๐‘— . ฮ  ๐‘‹ ๐‘˜ + 1, ๐‘— ยจ In the limit of a dense tree ๐‘‹? ๐‘˜ = ๐‘‹(๐‘˜, 1 " ) ยจ And for each node ๐‘‹ ๐‘˜, ๐‘– = ๐‘‹? ๐‘˜ + ๐‘– โˆ’ 1 " . ๐›ฟ๐‘‹(๐‘˜) 144
  • 145. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree XIV ยจ < โˆ†๐‘‹ > = < โˆ†๐‘‹ ๐œ‡ = 0 >. 1 โˆ’ ๐œ‡ + ๐œ‡. [๐‘‹?(๐‘˜ + 1) โˆ’ ๐‘‹ ๐‘˜, ๐‘– ] ยจ Again we take the liberty of setting ๐‘‹? ๐‘˜ + 1 = ๐‘‹? ๐‘˜ = 0 ยจ (as we can always impose a constant drift later) ยจ And so : < โˆ†๐‘‹ > = ๐‘‹ ๐‘˜, ๐‘– . ! 89 # . ;89 # ;# . ๐›ฟ๐‘ก. 1 โˆ’ ๐œ‡ โˆ’ ๐œ‡. ๐‘‹ ๐‘˜, ๐‘– ยจ This looks almost like what we are after ยจ We need to check that the units are correct and consistent between the two terms, in particular we look to be missing a ๐›ฟ๐‘ก factor in the second term ยจ Also we worked in the limit (๐œ‡ โ†’ 0) but we know that the BDT construction is algorithmic in nature, so we are missing the cross-terms and higher order terms, we will need to be conscious of that ยจ On the other hand we are trying to get the SDE, which is continuous limit, and not that helpful, because we are using BDT anyways, and not looking for closed form solutions 145
  • 146. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree XV ยจ < โˆ†๐‘‹ > = ๐‘‹ ๐‘˜, ๐‘– . ! 89 # . ;89 # ;# . ๐›ฟ๐‘ก. 1 โˆ’ ๐œ‡ โˆ’ ๐œ‡. ๐‘‹ ๐‘˜, ๐‘– ยจ We have (๐œŽ". ๐›ฟ๐‘ก) = 89+ : , so ! 89 # . ;89 # ;# = ! = . ;= ;# = =@ = ยจ For ๐œ‡ = 0 , the BDT dynamics is ๐‘‘๐‘‹ = ๐‘‹. =@ = . ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š ยจ In the continuous limit the binomial distribution ฮ  ๐‘‹(๐‘˜, ๐‘–) = 2-1. ) 1 = ! "& . 1! )! 1-) ! converges to the Gaussian โ„Ž ๐‘‹, ๐‘ก = ! "J=+# . exp( -9+ "=+# ) 146
  • 147. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree XVI ยจ We still need to calculate the standard deviation ยจ We could say the following: our trick did not change the probability distribution and it did not change the spacing. ยจ And so the variance of the distribution for a given โ€œsliceโ€ (all nodes at the same time) has not changed ยจ This is not completely correct ยจ Because for the dynamics what we care about is the LOCAL variance (for the process) ยจ This is quite an important and sometimes concept in trees implementation , where people sometimes get confused between local and average concept ยจ For example a BDT tree respects the arbitrage free constraints ON AVERAGE (averaging over a slice) ยจ But the BDT tree will NOT respect the arbitrage free constraints locally (as a matter of fact the very existence of mean reversion in the SDE proves it) 147
  • 148. Luc_Faucheux_2020 Adding some more mean reversion to the BDT tree XVII ยจ Why is the binomial distribution converging to a Gaussian ยจ Taylor expansion of the Master equation (Bachelier thesis) ยจ Stirling approximation (Bachelier thesis once again) 148
  • 149. Luc_Faucheux_2020 149 An example of stability in the tree
  • 150. Luc_Faucheux_2020 Trinomial trees โ€“ an example of stability constraint I ยจ Again, not quite sure why that is so different from a two-step binomial, by cutting the time step by half (remember that ๐›ฟ๐‘‹ = 2๐œŽ. ๐›ฟ๐‘ก) 150 X(k,i) X(k+1,i+1) X(k+1,i-1) ๐›ฟ๐‘‹/2 ๐›ฟ๐‘‹/2 X(k+1,i) X(k,i) X(k+2,i+1) X(k+2,i-1) ๐›ฟ๐‘‹/2 X(k+2,i) ๐›ฟ๐‘‹/2
  • 151. Luc_Faucheux_2020 Trinomial trees โ€“ an example of stability constraint II ยจ We saw in the binomial that in order to match the process ๐‘‘๐‘‹ = 0. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š ยจ ๐œŽ". ๐›ฟ๐‘ก = ( 89+ : ) ยจ ๐›ฟ๐‘‹ = 2๐œŽ. ๐›ฟ๐‘ก ยจ So we just have to be a little careful, if we divide the time steps in half, we should only adjust the space step (vertical distance or spacing between nodes) by the square root of it. ยจ And now adding mean reversion in that binomial tree is also a little tricky ยจ But again, barring the fact that trinomial trees are maybe easier to use (and also easier to put on a grid from the usual PDE numerical methods like Explicit / Implicit / Crank- Nicholson), I am still not convinced that trinomial trees present a true qualitative difference from binomial trees. ยจ But again I have been known to be wrong before, and would love to be challenged on that issue 151
  • 152. Luc_Faucheux_2020 Trinomial trees โ€“ an example of stability constraint III ยจ We are going to model the process ๐‘‘๐‘‹ = ๐›ผ. ๐‘‘๐‘ก + ๐œŽ. ๐‘‘๐‘Š ยจ We will then extend to something like ๐›ผ = ๐›ผ ๐‘‹, ๐‘ก = ๐œƒ ๐‘ก โˆ’ ๐‘˜ ๐‘ก . ๐‘‹ with mean reversion ยจ The trinomial trees usually are โ€œon a gridโ€, meaning that the spacing is kept constant and the probabilities are adjusted to reflect the drift, the mean reversion if any, and the volatility ยจ This is useful as the same grid can be used for the PDE solving (implicit and explicit, Crank- Nicholson,..) for the diffusion equation 152 X(k,i) X(k+1,i+1) X(k+1,i-1) ๐›ฟ๐‘‹/2 ๐›ฟ๐‘‹/2 X(k+1,i) ๐‘ƒ& ๐‘ƒ' ๐‘ƒ( ๐›ฟ๐‘ก
  • 153. Luc_Faucheux_2020 Trinomial trees โ€“ an example of stability constraint IV ยจ We have the 3 unknowns ๐‘ƒK, ๐‘ƒA, ๐‘ƒL ยจ We have the 3 equations : ยจ ๐‘ƒK + ๐‘ƒA + ๐‘ƒL = 1 ยจ < โˆ†๐‘‹ > = ๐‘ƒK. โˆ’ 89 " + ๐‘ƒA. 0 + ๐‘ƒL. ( 89 " ) = ๐›ผ. ๐›ฟ๐‘ก ยจ < โˆ†๐‘‹"> = ๐‘ƒK. 89 " " + ๐‘ƒA. 0 + ๐‘ƒL. 89 " " = (๐›ผ. ๐›ฟ๐‘ก)"+๐œŽ". ๐›ฟ๐‘ก ยจ We have 3 equations, we have 3 unknowns, we have a fighting chance 153
  • 154. Luc_Faucheux_2020 Trinomial trees โ€“ an example of stability constraint V ยจ ๐‘ƒK + ๐‘ƒA + ๐‘ƒL = 1 ยจ < โˆ†๐‘‹ > = (๐‘ƒL โˆ’ ๐‘ƒK). 89 " = ๐›ผ. ๐›ฟ๐‘ก ยจ < โˆ†๐‘‹"> = (๐‘ƒL + ๐‘ƒK). 89 " " = (๐›ผ. ๐›ฟ๐‘ก)"+๐œŽ". ๐›ฟ๐‘ก ยจ Or again : ยจ ๐‘ƒK + ๐‘ƒA + ๐‘ƒL = 1 ยจ (๐‘ƒL โˆ’ ๐‘ƒK) = "M.8# 89 ยจ (๐‘ƒL + ๐‘ƒK) = {(๐›ผ. ๐›ฟ๐‘ก)"+๐œŽ". ๐›ฟ๐‘ก}. 89 " -" 154
  • 155. Luc_Faucheux_2020 Trinomial trees โ€“ an example of stability constraint VI ยจ The solution is then: ยจ ๐‘ƒA = 1 โˆ’ {(๐›ผ. ๐›ฟ๐‘ก)"+๐œŽ". ๐›ฟ๐‘ก}. 89 " -" ยจ ๐‘ƒL = ! " . [ "M.8# 89 + {(๐›ผ. ๐›ฟ๐‘ก)"+๐œŽ". ๐›ฟ๐‘ก}. 89 " -" ] ยจ ๐‘ƒK = ! " . [โˆ’ "M.8# 89 + {(๐›ผ. ๐›ฟ๐‘ก)"+๐œŽ". ๐›ฟ๐‘ก}. 89 " -" ] ยจ Note that it would seem sensible that all probabilities should be in [0,1] ยจ A negative probability in the tree is not necessarily a sign that something is wrong, but it is a constraint that we would like to enforce (related to stability analysis) 155
  • 156. Luc_Faucheux_2020 Trinomial trees โ€“ an example of stability constraint VII ยจ In the simple case where ๐›ผ = 0 ยจ ๐‘ƒA = 1 โˆ’ ๐œŽ". ๐›ฟ๐‘ก. 89 " -" ยจ ๐‘ƒL = ! " . ๐œŽ". ๐›ฟ๐‘ก. 89 " -" = ๐‘ƒK ยจ ๐‘ƒK = ! " . ๐œŽ". ๐›ฟ๐‘ก. 89 " -" = ๐‘ƒL ยจ And we have: ๐‘ƒA > 0 implies 1 โˆ’ ๐œŽ". ๐›ฟ๐‘ก. 89 " -" > 0 or ๐›ฟ๐‘‹ > 2๐œŽ ๐›ฟ๐‘ก ยจ So if we chose a spacing in ๐›ฟ๐‘‹ smaller than (2๐œŽ ๐›ฟ๐‘ก) we will create a negative probability for the middle jump ๐‘ƒA (meaning the phase spacing is too small, and so the probabilities will push for more on the wings and will deplete the center in order to still verify the variance or second moment 156
  • 157. Luc_Faucheux_2020 Trinomial trees โ€“ an example of stability constraint VIII ยจ Note that this does not mean that the probability density at the node ๐‘‹(๐‘˜ + 1, ๐‘–) will be negative, but it will be depleted relative to the wings ๐‘‹(๐‘˜ + 1, ๐‘– + 1) and ๐‘‹(๐‘˜ + 1, ๐‘– โˆ’ 1) ยจ If the spacing is really too small we can run into ยจ ๐‘ƒL = ! " . ๐œŽ". ๐›ฟ๐‘ก. 89 " -" = ๐‘ƒK > 1 when ๐›ฟ๐‘‹ < ๐œŽ 2๐›ฟ๐‘ก ยจ Again, mathematically there is nothing wrong there yet, it is just a little weird to have negative jump probabilities. Also a little hard to see what happens with more than one level ยจ But one can see how that effect will propagate along the tree and create a situation where only the 2 nodes on the wings have infinite positive probability and every other nodes in between will have negative infinite probability. This will also violate the added constraint that the probability distribution has to follow the heat equation and converges to a Gaussian. ยจ This is essentially what stability analysis is all about : the propagation of small errors, does that grow exponentially and diverges or is it โ€œunder controlโ€ ? 157