1. AMMOUR Badr/SECK Babacar FIN2/EFA 2012/2013
1
Derivative markets: Forwards, Futures and Swaps
Assignment 3
Exercise 1:
Question 1: Determine the risk parameters of the portfolio (modified duration and convexity.
Au 23 Janvier, on a le portefeuille obligataire suivant:
L’objectif de cette question est donc de déterminer la modified duration et la convexité du portefeuille en déterminant celles de chacune des 4
obligations qui constituent le portefeuille. On va procéder comme dans la question 5 de l’assignment 2.
Tout d’abord il faut calculer le Yield-To-Maturity YTM de chacune des obligations, que l’on retrouve en utilisant le solveur, et la formule
généralisée ci-dessous :
2. AMMOUR Badr/SECK Babacar FIN2/EFA 2012/2013
2
CP + AI= (R + R* (1- (1+ YTM)^(-n))/YTM +100* (1+ YTM)^ (-n))*(1+YTM) ^ (-d/365)
Avec :
CP : Clean Price
AI : Accrued Interests.
R : Coupon Rate
n : Coupon restants
d : Jours entre aujourd’hui et le prochain coupon
Les valeurs obtenues sont résumées dans le tableau ci-dessous :
ISIN YTM
FR0000188989 0,002976834
FR0010011130 0,003504633
FR0010216481 0,004245756
FR0000187361 0,006431409
FR0010415331 0,007345024
FR0010776161 0,013579589
FR0010854182 0,014595916
FR0010192997 0,017933058
FR0010466938 0,022812816
Ensuite pour chaque obligation, on crée une table de flux, et on calcule:
La modified duration MDi=
3. AMMOUR Badr/SECK Babacar FIN2/EFA 2012/2013
3
Et la convexité Convi = ).
En plus des MDi, il faut aussi calculer les αi pour chaque obligation qui est le poids de cette obligation dans la valeur de marché du portefeuille :
αi= =
Cf. Excel feuille1, pour les tables de flux
ISIN Mdi convi αi
FR0000188989 -0,245843507 0,305553179 0,157826249
FR0000187361 -3,472252201 16,02775636 0,399415678
FR0010192997 -7,024319795 61,14948203 0,071864042
FR0010466938 -8,750237591 94,29144387 0,370894031
On trouve ensuite, la modified duration du portefeuille MDpofolio=∑ = -5.175
Et la convexité du portefeuille Convp = =∑ = 45.816
Question 2: Using Appendix 1, derive the continuously compounded zero-coupon yield curve and represent graphically.
Dans cette question, on va utiliser la méthode de Nielson and Siegel (1987) pour déterminer la courbe zéro-coupon. Le modèle proposé est donné
par la formule suivante :
4. AMMOUR Badr/SECK Babacar FIN2/EFA 2012/2013
4
L’objectif final de cette question est donc de déterminer les coefficients β0, β1, β2 et τ, que l’on utilisera donc pour les questions suivantes.
Explication de la méthode :
Tout d’abord on va donner aux paramètres β0, β1, β2 et τ des valeurs fixes afin de pouvoir utiliser les formules en annexe (l’objectif étant de
déterminer les bonnes valeurs). Bien entendu ces valeurs ne sont pas les bonnes valeurs des paramètres, mais doivent être à peu près du même
ordre (par exemple 3% pour β0, -3% pour β1 et β2, et 1 pour τ).
Pour chacune des neufs obligations, on va tout d’abord calculer les R(0,t) grâce à la formule précédente et les valeurs des paramètres choisis.
Comme il s’agit de zéro coupons on a R(0,t)=YTM.
Ensuite, toujours pour les neufs obligations, on va calculer le prix théorique ̂ = ( )
Après avoir obtenu les prix théoriques, on calcule wi ( ̂ –pi) avec wi= avec Di la duration (Di = -MDi × (1+YTM)) et pi le prix actuel
(clean price + acccrued interests).Puis finalement la somme quadratique des wi ( ̂ –pi).
Ensuite, on va utiliser le solveur de manière à minimiser ̂ – 2
, c’est-à-dire à minimiser les erreurs de mesures entre prix théorique et
prix actuel.
Pour cela certaine conditions doivent être vérifiées :
On crée une nouvelle table avec les valeurs de t évoluant avec un pas de 0.2, et on calcule les R(0,t) pour chacune de ces maturités.
a) Pour vérifier R(tmin)>0, on ajoute la valeur t = 0,00001 dans la table, et on calcule son R(0,t), puis rajoute comme condition dans le
solveur R(0;0.00001)>0.
b) Pour vérifier R(tmax)>0, on ajoute la valeur t = 10000 dans la table, et on calcule son R(0,t), puis rajoute comme condition dans le solveur
R(0;10000)>0.
c) Pour vérifier exp(-R(tk)tk)-exp(-R(tk+1)tk+1)>0 quel que soit tk<tmax, on calcule cette mesure pour les différents t de la table, et ajoute
dans le solveur comme condition exp(-R(tk)tk)-exp(-R(tk+1)tk+1)>0 pour tous les t
d) Ensuite on a le taux EONIA, qui est le taux des Swaps jour pour jour, R(0, ) = 0.074%
e) Les taux Euribor 3mois et un an, R(0 ; 0.25)=0.120% et R(0 ;1)=0.586%.
f) Quand t => 0 R(0,t) => β0 + β1 et quand t=>infini R(0,t) => β0
5. AMMOUR Badr/SECK Babacar FIN2/EFA 2012/2013
5
g) Enfin, on fixe les limites des différents paramètres dans le solveur
Après utilisation du solveur avec comme cellule cible ̂ – 2
que l’on doit minimiser, et les cellules variables celles correspondant au 4
paramètres, on obtient les valeurs suivantes :
β0 1,32025513%
β1 -1,24535207%
β2 -1,45056195%
τ 0,303604652
Ensuite, on crée une nouvelle feuille, dans laquelle on recopie les valeurs des coefficients trouvés précédemment. Désormais, ces valeurs sont
connues, et grâce à la formule proposée par Nielson & Siegel, on trace la courbe zéro coupon dérivée, avec des maturités allant de 0.5 à 11 ans
avec un pas de 0.5.
D’autre part, on reporte dans un tableau les valeurs de R(0,t), ainsi que les facteurs d’actualisation (1+R(0,t))^(-t), que l’on utilisera pour la
question 3.
t R(0,t)
facteur d'actualisation
(1 +R(0,t))^(-t)
0,5 0,002780878 0,998611492
1 0,005859771 0,994174366
1,5 0,007888669 0,988282616
2 0,009135709 0,98197595
2,5 0,009933301 0,975592085
3 0,010475126 0,969221677
3,5 0,010864168 0,962886706
4 0,011156353 0,956591993
4,5 0,011383686 0,950338343
7. AMMOUR Badr/SECK Babacar FIN2/EFA 2012/2013
7
Question 3: Using the continuously compounded zero-coupon yield curve, determine the fixed rate of each swap (so that its value is zero), its
modified duration and convexity.
On cherche tout d’abord le taux Swap qui permet de ramener le prix du Swap à zéro, grâce à la courbe des zéro-coupon. Ces taux représentent les jambes
fixes qui seront livrées à l’échéance des contrats.
Pour ce faire, on va utiliser un solveur permettant de déterminer ce taux sous la contrainte d’un prix de Swap égal à zéro. On procède ainsi pour les deux
Swaps.
On reporte ainsi le taux zéro-coupon R(0,t) que l’on prend du tableau précédent, la jambe fixe dont le taux est égal au taux fixe que l’on cherche, le facteur
d’actualisation (1 +R(0,t))^(-t), la jambe variable dont la valeur est supposée de 100%, et les différents fixed cash flows actualisés (distribution de valeur)
dont la somme doit être égale à 100%, afin d’obtenir des swaps de valeur nulle. Les tables obtenues sont reportées ci-dessous.
SWAP 5 ans 0
Nominal 1000000
Fixed rate
% 1,153%
t
Taux zéro-
coupon %
Fixed CF
Facteur
actualisation
Valeur actuelle
Distribution
de la valeur
0,5 0,002780878 0,999 100%
1 0,005859771 1,15297754% 0,994 1,14626072%
2 0,009135709 1,15297754% 0,982 1,13219622%
3 0,010475126 1,15297754% 0,969 1,11749083%
4 0,011156353 1,15297754% 0,957 1,10292909%
5 0,011565568 101,15297754% 0,944 95,50112315%
Sum 100,00000%
8. AMMOUR Badr/SECK Babacar FIN2/EFA 2012/2013
8
Swap en %
nominal 0,00000%
Pour le Swaps 5 ans, on retrouve ainsi un taux fixe de 1,153%
Pour le Swaps 7 ans, on retrouve ainsi un taux fixe de 1,199%.
L’étape suivante est de calculer les Modified duration et les convexités des deux Swaps. On procède comme dans la question 1, avec Ft les fixed CF (trouvés
juste avant).
SWAP 7
ans
Nominal 1000000
Fixed rate
% 1,199%
t
Taux zéro-
coupon %
Fixed CF %
Facteur
actualisation
Valeur actuelle
(en %)
Distribution de
la valeur
0,5 0,002780878 0,9986 100%
1 0,005859771 1,199246% 0,9942 1,19225998%
2 0,009135709 1,199246% 0,982 1,17763108%
3 0,010475126 1,199246% 0,9692 1,16233556%
4 0,011156353 1,199246% 0,9566 1,14718946%
5 0,011565568 1,199246% 0,9441 1,13223927%
6 0,011838398 1,199246% 0,9318 1,11748440%
7 0,012033277 101,199246% 0,9197 93,07086024%
Sum 100,00000000%
Swap en %
nominal 0,0000%
9. AMMOUR Badr/SECK Babacar FIN2/EFA 2012/2013
9
Swap 5ans
M.Duration Convexity
t
t.Ft.(1+r)^(-t-1) Ft.(1+r)^-t t(t+1).Ft(1+r)^(-t-2) Ft(1+r)^-t
1 0,011268432 0,011398355 0,022279982 0,011398355
2 0,022279982 0,011268432 0,06607808 0,011268432
3 0,03303904 0,011139991 0,130649797 0,011139991
4 0,043549932 0,011013013 0,215267673 0,011013013
5 4,721463627 0,955180208 28,00588025 0,955180208
sum 4,831601013 1 28,44015578 1
Mdi 4,831601013 Convi 28,44015578
Swap 7ans
M.Duration Convexity
t t.Ft.(1+r)^(-t-1) Ft.(1+r)^-t t(t+1).Ft(1+r)^(-t-2) Ft(1+r)^-t
1 0,011709918 0,011850349 0,023142303 0,0118503
2 0,023142303 0,011709918 0,068604175 0,0117099
3 0,034302087 0,011571151 0,135582383 0,0115712
4 0,045194128 0,011434029 0,223292807 0,011434
5 0,055823202 0,011298532 0,330970064 0,0112985
6 0,066194013 0,01116464 0,457867135 0,0111646
7 6,439573317 0,930971381 50,90609702 0,9309714
Sum 6,675938967 1 52,14555589 1
Mdi 6,675938967 Convi 52,145556
Question 4 : Duration hedging is performed using the 7-year swap. What is the quantity of this swap to be bought or sold so as to hedge the
bond portfolio?
10. AMMOUR Badr/SECK Babacar FIN2/EFA 2012/2013
10
Dans les questions qui suivent, on va établir deux types de couverture d’un portefeuille obligataire avec des Swaps
On va d’abord étudier le cas d’une couverture avec un seul Swap.
On calcule tout d’abord pour le portefeuille, la modified duration MDp et la $Durationp (per bps)
Pour cela on utilise les données reportées dans le tableau de la fin de question 2 (valeurs de R(0,t) et facteurs d’actualisation), et on utilise les
données pour les maturités correspondant à celles des obligations de mon portefeuille.
Le prix de ces obligations, étant des obligations zéro-coupon, correspond à la valeur actuelle de la valeur de remboursement de ces obligations. A noter que
pour les maturités inférieure à un an, on utilise la formule : ( 1 + R(0,t) x t )^-1
. Ainsi, P0 = 100 x facteur d’actualisation de maturité correspondante. On en
déduit la MVi de chaque obligation qui est égale au produit P0×Par value, et les αi.
Etant donné que les obligations sont des obligations zéro-coupon, les YTM de ces obligations est égal au taux zéro-coupon R(0,t) de la maturité
correspondante. Les MDi et les convi de chaque obligation sont calculés avec les mêmes formules que précédemment, sauf que cette fois-ci on aura qu’un
seul flux Ft de 100 qui sera versé à la maturité.
Ci-dessous les valeurs obtenues. Pour plus de détails se reporter au fichier excel.
ISIN Mdi convi
FR0000188989 0,2462842 0,306649321
FR0000187361 3,7098015 17,43199109
FR0010192997 8,1525071 74,51753202
FR0010466938 10,621281 123,3023711
On obtient alors la modified duration du portefeuille MDp=∑ = 5.67 et
La $Durationp (per bps)= MDp×MVp× (0.01%)= 37033,90
11. AMMOUR Badr/SECK Babacar FIN2/EFA 2012/2013
11
De plus, la $DurationSwap7ans (per bps)= = = 667,5938967
Le hedge ratio est donné par la formule :
Hedge ratio = - = - = -55,47.
Il faut donc vendre 56 Swaps de maturité 7 ans pour couvrir efficacement le portefeuille obligataire.
Question 5 : Duration/Convexity hedging is performed using both swaps. What are the quantities of each swap to be bought or sold so as to
hedge the bond portfolio?
Dans cette question il s’agit de réaliser une couverture efficace en utilisant 2 swaps.
On a d’après le cours la formule suivante :
Il faut aussi donc calculer les convexités dans ce cas.
La convexité du portefeuille est donnée par : Convp=∑ = 53,59528924
La $Convp (per bps)= Convp×MVp× (0.01%)= 349975,9465
Et la $Durationp (per bps) a déjà été calculée précédemment= 37033,90
On a également déjà calculé précedemment, les modified duration et convexités des swaps qu’il suffit de multiplier par 1000000×(0.01%) pour obtenir les
valeurs en dollars per bps.
P2S21S1
P2S21S1
Conv$Conv$hConv$h
Dur$Dur$hDur$h
12. AMMOUR Badr/SECK Babacar FIN2/EFA 2012/2013
12
Ce problème peut être schématisé de la façon suivante :
CDswaps × H = - CDp
Avec : CDswaps la matrice ( )
H le vecteur ( )
Et CDp le vecteur ( )
Alors H=- (CDswaps)-1
CDp
On obtient H= ( )
Pour se couvrir efficacement, dans le cas de l’utilisation des deux Swaps, il faut acheter 65 swaps de maturité 5 ans et vendre 102 Swaps de maturité 7 ans.
Question 6: To measure the performance of each hedging method, assume 10 different movements of the yield curve. These ten scenarios are
obtained by assuming the following changes in the beta parameters in the NS-model:
a/ small parallel shifts with b0 = +0.1% and -0.1%
b/ large parallel shifts with b0= +1.0% and -1.0%
c/ decrease and increase in the long-to-short spread with b1= +1.0% and -1.0%
d/ curvature moves with b2 = +0.6% and -0.6%
e/ flattening and steepening move of the yield curve with (b0=-0.4%; b1=+1.2%) and (b0=+0.4%; b1=-1.2%).
In each scenario, calculate the variation in value of the bond portfolio and the hedging error in the two different methods. Conclude.
Dans cette question il s’agit d’étudier l’impact de variations des paramètres β0, β1 et β2, sur la valeur de marché du portefeuille, ainsi que sur les
hedging ratios trouvés précédemment, pour les deux précédentes méthodes, afin de déterminer laquelle est la plus efficace.
13. AMMOUR Badr/SECK Babacar FIN2/EFA 2012/2013
13
Afin d’automatiser le processus de variation des paramètres β0, β1 et β2, on a utilisé des boutons que l’on affecte aux cellules correspondant aux
valeurs de ces paramètres. Il faut également affecter chacun de ces 3 boutons à une macro qui permettra en fait de ramener les valeurs des swaps
5 ans et 7 ans à 0 en fixant leur fixed rate, grâce à l’utilisation de deux solveurs (1 pour fixer le fixed rate du Swap 5 ans, et un autre pour fixer le
fixed rate du Swap 7ans, comme dans la question 3). La macro réalisée se présente comme ci-dessous :
Sub solvvf()
Range("J23").Select
SolverOk SetCell:="$J$23", MaxMinVal:=3, ValueOf:=1, ByChange:="$F$13", Engine _
:=1, EngineDesc:="GRG Nonlinear"
SolverOptions MaxTime:=0, Iterations:=0, Precision:=0.00000001, Convergence:= _
0.000000001, StepThru:=False, Scaling:=False, AssumeNonNeg:=True, Derivatives:= _
2
SolverOptions PopulationSize:=100, RandomSeed:=0, MutationRate:=0.075, Multistart _
:=False, RequireBounds:=False, MaxSubproblems:=0, MaxIntegerSols:=0, _
IntTolerance:=0.1, SolveWithout:=False, MaxTimeNoImp:=30
SolverOk SetCell:="$J$23", MaxMinVal:=3, ValueOf:=1, ByChange:="$F$13", Engine _
:=1, EngineDesc:="GRG Nonlinear"
SolverOk SetCell:="$J$23", MaxMinVal:=3, ValueOf:=1, ByChange:="$F$13", Engine _
:=1, EngineDesc:="GRG Nonlinear"
SolverSolve
Range("Q25").Select
SolverOk SetCell:="$Q$25", MaxMinVal:=3, ValueOf:=1, ByChange:="$M$13", Engine _
:=1, EngineDesc:="GRG Nonlinear"
SolverOptions MaxTime:=0, Iterations:=0, Precision:=0.00000001, Convergence:= _
0.000000001, StepThru:=False, Scaling:=False, AssumeNonNeg:=True, Derivatives:= _
2
SolverOptions PopulationSize:=100, RandomSeed:=0, MutationRate:=0.075, Multistart _
:=False, RequireBounds:=False, MaxSubproblems:=0, MaxIntegerSols:=0, _
IntTolerance:=0.1, SolveWithout:=False, MaxTimeNoImp:=30
SolverOk SetCell:="$Q$25", MaxMinVal:=3, ValueOf:=1, ByChange:="$M$13", Engine _
:=1, EngineDesc:="GRG Nonlinear"
SolverOk SetCell:="$Q$25", MaxMinVal:=3, ValueOf:=1, ByChange:="$M$13", Engine _
14. AMMOUR Badr/SECK Babacar FIN2/EFA 2012/2013
14
:=1, EngineDesc:="GRG Nonlinear"
SolverSolve
End Sub
Les boutons avec la macro ont été utilisés dans les dix situations. On a bien vérifié que la valeur des Swaps était à chaque fois ramenée à zéro.
Les résultats obtenus sont reportés dans le tableau ci-dessous :
Scénarios
Value of the bond
portfolio
Variation value
portfolio
Duration Hedging Duration/Convexity Hedging
Swap 7years Hedging error Swap 5years Hedging error Swap 7years Hedging error
Initial situation
Initial values of β0,
β1 & β2 65 299 758,89 € -55,46401463 65,23650126 -102,678206
Small parallel shifts β0
β0= +0,1% 64 931 159,20 € -368 599,69 € -55,16653974 0,297474888 64,91829543 -0,318205832 -102,1950598 0,483146204
β0= -0,1% 65 671 856,08 € 372 097,18 € -55,78318609 -0,319171465 65,64198326 0,405481996 -103,2449254 -0,56671939
Large parallel shifts
β0
β0= +1,0% 61 764 751,80 € -3 535 007,10 € -52,50368541 2,960329215 61,75715753 -3,479343731 -97,62327829 5,054927695
β0= -1,0% 69 184 941,94 € 3 885 183,05 € -58,67669218 -3,212677554 68,99729136 3,760790101 -108,1289701 -5,45076415
Decrease & Increase
long-to-short spread
β1
β1= +1,0% 65 120 525,52 € -179 233,38 € -55,3785033 0,085511324 65,38441787 0,147916609 -102,6959374 -0,0177314
β1=-1,0% 65 479 625,68 € 179 866,78 € -55,56933515 -0,105320524 65,17427761 -0,062223646 -102,7416192 -0,06341324
Curvature moves β2
15. AMMOUR Badr/SECK Babacar FIN2/EFA 2012/2013
15
β2= +0,6% 65 200 338,64 € -99 420,26 € -55,41795844 0,046056189 65,33576237 0,099261109 -102,7015635 -0,02335756
β2= -0,6% 65 399 384,70 € 99 625,81 € -55,52957922 -0,065564595 65,22272274 -0,013778514 -102,7355353 -0,05732927
Flatening &
steepening moves
{β0=-0,4%;
β1=+1,2%} 66 588 331,50 € 1 288 572,61 € -56,60796931 -1,143954681 66,86531697 1,628815706 -104,8099263 -2,13172035
{β0=+0,4%; β1=-
1,2%} 64 055 884,79 € -1 243 874,10 € -54,37010478 1,093909846 63,71833514 -1,518166114 -100,6650725 2,01313346
On remarque que les variations qui affectent le plus les valeurs du portefeuille et les hedging ratios sont celles liés aux larges variations (+/- 1%)
de β0, alors que pour les petites variations de β0 (+/-0.1%) et celles de β1 et β2, les variations sont légères, voire inexistantes au niveau des hedgings ratios.
Ensuite, dans un degré moindre les variations combinées « Flatening & steepening moves », affectent moins que pour les β0= +/-1,0% (environ la
moitié) les valeurs de marché du portefeuille, ainsi que les hedging ratios. Ensuite, concernant les différentes méthodes utilisées, l’impact sur le Duration
hedging est inférieur à celui de la Duration/Convexity Hedging pour les 10 scénarios, le Duration hedging avec un seul swap 7 ans est donc plus efficace que
le Duration/Convexity Hedging avec deux Swaps de maturité 5 et 7ans