ième Stéphane HAMARD Mathématiques financières · ISBN : 978-2-7460-9821-3 21,95 € Pour plus...

16
Mathématiques financières Construisez votre bibliothèque de fonctions avec VBA Excel 3 ième édition Stéphane HAMARD

Transcript of ième Stéphane HAMARD Mathématiques financières · ISBN : 978-2-7460-9821-3 21,95 € Pour plus...

ISBN

: 97

8-2-

7460

-982

1-3

21,9

5 €

Pour plus d’informations :

Mathématiques financièresConstruisez votre bibliothèque de fonctions avec VBA Excel (3ième édition)Cet ouvrage est la troisième édition du désormais classique et incon-tournable livre de référence pour ceux qui souhaitent utiliser les ma-thématiques financières avec VBA Excel. Les fonctions présentées ont prouvé leur robustesse pendant la crise financière : elles permettent la prise en compte des évolutions dans les usages de valorisation et égale-ment, les taux d’intérêt négatif. Cet ouvrage s’adresse aux étudiants en finance, aux professionnels de la finance, qu’ils soient en front ou en middle office, mais également aux informaticiens désirant acquérir les bases des mathématiques financières.C’est un guide simple, pratique et convivial pour construire pas à pas une bibliothèque de fonctions financières évolutives, portables et fiables à l’aide du tableur de référence Microsoft® Excel (à partir de la version 2002). Grâce aux nombreux exemples présentés, il permet, de manière progressive et pédagogique, de se familiariser avec le langage VBA et les mathématiques financières. Il couvre avec clarté six domaines fonctionnels : dates, taux d’intérêts, instruments à taux fixe, instruments à taux variable, swap et titres in-dexés sur l’inflation. Les fonctions liées aux dates permettent par exemple, de déterminer les fractions d’années, en tenant compte du calendrier TARGET, en dif-férentes bases : exact/exact, exact/360, 30/360, ... Les fonctions de taux comprennent, entre autres, la construction d’une courbe de taux zéro coupons ou le calcul des taux forwards. Les fonctions pour les instru-ments à taux fixe ou à taux variable incluent la détermination du taux actuariel, de son prix par actualisation de ses flux sur une courbe de taux ou encore, de sa sensibilité sur chaque point d’une courbe de taux. Les fonctions sur les swaps couvrent la détermination du taux fixe d’un swap ou encore le spread égalisant les prix de la jambe fixe et de la jambe variable. Les fonctions sur les titres indexés sur l’inflation réa-lisent par exemple le calcul de l’inflation point mort d’un instrument.De nombreuses autres fonctions, indispensables en finance, sont détail-lées. La dernière partie présente une application concrète à travers la couverture d’un portefeuille et l’utilisation des formulaires en VBA.

Mat

hém

atiq

ues

finan

cièr

es Mathématiques

financières Construisez votre bibliothèque de fonctions avec VBA Excel

3ième édition

Nouvelle éditionStéphane HAMARD

Stéphane Hamard est gérant de portefeuille dans une grande institu-tion financière parisienne depuis de nombreuses années. Passionné d’in-formatique, il est reconnu comme un expert d’Excel avec lequel il a réalisé de nombreux outils financiers utilisés quotidiennement par lui-même et par ses collègues de la salle des marchés.

Téléchargementwww.editions-eni.fr.fr

sur www.editions-eni.fr : b code des fonctions date

Stéphane HAMARD

Table des matières©

Edi

tions

EN

I - A

ll rig

hts r

eser

ved

1Chapitre 1 Une première fonction en Visual BasicA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13B. L'éditeur Visual Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13C. Déclaration de la fonction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14D. Déclaration des variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15E. Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1. L'opérateur Mod. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152. L'instruction clef If. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

F. Fermeture de la fonction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17G. Tester votre première fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Chapitre 2 Avant de poursuivreA. Utilisation du débogueur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23B. Utilisation de l'aide (touche 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

Chapitre 3 Fonctions de manipulation des datesA. Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

1. Les dates dans Visual Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29B. La fonction DimancheDePaques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

1. Mot clef Int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302. Mot clef DateSerial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303. Le code de la fonction DimancheDePaques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304. Test de la fonction DimancheDePaques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

C. La fonction EstJourTravaille . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321. La gestion des erreurs dans Visual Basic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

a. Les mots clefs On Error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32b. L'utilisation de variable matricielle ou variable tableau . . . . . . . . . . . . . . . . . 34c. Complément sur les déclarations de variable. . . . . . . . . . . . . . . . . . . . . . . . . . 35d. La commande de boucle For ... Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36e. Fonctions Visual Basic de traitement des dates. . . . . . . . . . . . . . . . . . . . . . . . 38f. Compléments sur la fonction if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38g. Code de la fonction EstJourTravaille . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Mathématiques financières2 Construisez votre bibliothèque de fonctions avec VBA Excel

D. La fonction AjusteDate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421. Les différents modes d'ajustement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422. Les mots clefs Select Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423. La boucle while end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444. L'opérateur Not . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445. Le code de la fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

E. La fonction FractionAnnee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471. Convention Exact/365 ou Actual/365 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472. Convention Exact/360 ou Actual/360 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473. Convention Exact/Exact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484. Convention 30/360 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495. Code de la fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

F. La fonction DatesDesFlux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521. Spécifications fonctionnelles détaillées de la fonction . . . . . . . . . . . . . . . . . . . . . 52

a. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52b. Cas général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52c. Cas où la date de calcul correspond à la date d'un flux . . . . . . . . . . . . . . . . . . 53d. Cas des flux en fin de mois . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53e. Cas des instruments à départ futur ou instrument forward . . . . . . . . . . . . . 54f. Cas des instruments zéro coupon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54g. Cas des coupons brisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54h. Gestion des jours fériés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57i. Récapitulatif des arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

2. Écriture de la fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57a. L'underscore ou _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57b. La conversion de données. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58c. La fonction DateOffset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58d. La fonction DatesDesFlux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59e. Tester la fonction DatesDesFlux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

G. La fonction ProchainFlux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661. Spécifications fonctionnelles détaillées de la fonction . . . . . . . . . . . . . . . . . . . . . 662. Écriture de la fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

H. La fonction DernierFlux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671. Spécifications fonctionnelles détaillées de la fonction . . . . . . . . . . . . . . . . . . . . . 672. Écriture de la fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

Table des matières©

Edi

tions

EN

I - A

ll rig

hts r

eser

ved

3Chapitre 4 ComplémentsA. Les objets et les macros dans Visual Basic pour Excel . . . . . . . . . . . . . . . . . . . . . . . . 71B. Le passage de tableaux en arguments d'une fonction. . . . . . . . . . . . . . . . . . . . . . . . . 73C. La fonction CTableau. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

1. Code de la fonction CTableau. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

Chapitre 5 Fonctions de manipulation des courbes de tauxA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77B. L'instruction "Option Base". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77C. La fonction ChangeTaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

1. Taux simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782. Taux composé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783. Taux continu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794. Facteur d'actualisation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795. Objectif de la fonction ChangeTaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796. Arguments de la fonction ChangeTaux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808. Code de la fonction ChangeTaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

D. La fonction InterpolationLineaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

a. Cas général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85b. Cas des bornes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

4. Code de la fonction InterpolationLineaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855. Test de la fonction InterpolationLineaire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

E. La fonction InterpolationCubique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 891. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 892. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

a. Cas général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90b. Traitements des bornes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

4. Code de la fonction InterpolationCubique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91F. La fonction Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

1. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942. Code de la fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

Mathématiques financières4 Construisez votre bibliothèque de fonctions avec VBA Excel

G. La fonction CourbeActualisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 951. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 952. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954. Code de la fonction CourbeActualisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995. Test de la fonction CourbeActualisation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

H. La fonction TauxForward . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1041. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1042. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1053. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1054. Code de la fonction TauxForward . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1065. Test de la fonction TauxForward . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

Chapitre 6 Instruments à taux fixeA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111B. La fonction FluxTF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

1. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1112. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1123. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124. Code de la fonction FluxTF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

C. La fonction CouponCouruTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1151. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1152. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1153. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1164. Code de la fonction CouponCouruTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

D. La fonction TauxRendementTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1181. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1182. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1183. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1194. Code de la fonction TauxRendementTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

E. La fonction PrixPleinTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1221. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1222. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1224. Code de la fonction PrixPleinTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

Table des matières©

Edi

tions

EN

I - A

ll rig

hts r

eser

ved

5F. La fonction PrixPiedTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

1. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1242. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1243. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1254. Code de la fonction PrixPiedTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

G. La fonction SpreadSurCourbeTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1261. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1262. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1273. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1284. Code de la fonction SpreadSurCourbeTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

H. La fonction PrixPleinSurCourbeTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1301. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1302. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1313. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1314. Code de la fonction PrixPleinSurCourbeTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

I. Les fonctions de gestion du risque d'un instrument à taux fixe . . . . . . . . . . . . . . . 1331. La fonction BPVTF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

a. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134b. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135c. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135d. Code de la fonction BPVPTF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

2. La fonction SensibiliteTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137a. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137b. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137c. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138d. Code de la fonction SensibiliteTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138e. Exemple de couverture en sensibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

3. La fonction ConvexiteTF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139a. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139b. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139c. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140d. Code de la fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140e. Exemple de couverture en sensibilité et convexité . . . . . . . . . . . . . . . . . . . . 141

4. La fonction DurationTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142a. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142b. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142c. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143d. Code de la fonction DurationTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

Mathématiques financières6 Construisez votre bibliothèque de fonctions avec VBA Excel

5. La fonction BPVSurCourbeTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144a. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144b. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144c. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145d. Code de la fonction BPVSurCourbeTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

Chapitre 7Instruments à taux variablesA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149B. La fonction FluxTV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

1. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1492. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1523. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

a. Détermination des taux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153b. Détermination des flux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

4. Code de la fonction FluxTV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154C. La fonction CouponCouruTV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

1. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1562. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1563. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

a. Détermination du taux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157b. Détermination du coupon couru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

4. Code de la fonction CouponCouruTV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157D. La fonction TauxRendementTV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

1. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1592. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1593. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1604. Code de la fonction TauxRendementTV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

E. Autres fonctions pour les instruments à taux variables . . . . . . . . . . . . . . . . . . . . . . 1621. La fonction SpreadSurCourbeInsTV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

a. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163b. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163c. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164d. Code de la fonction SpreadSurCourbeInsTV . . . . . . . . . . . . . . . . . . . . . . . . . 164

2. La fonction PrixPleinSurCourbeTV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1663. La fonction BPVSurCourbeTV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

Table des matières©

Edi

tions

EN

I - A

ll rig

hts r

eser

ved

7Chapitre 8 Fonctions de manipulation des swapsA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173B. La fonction PrixPleinCbSwp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

1. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1732. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1743. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1754. Code de la fonction PrixPleinCbSwp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

C. La fonction BPVCbSwap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1771. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1772. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1773. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1774. Code de la fonction BPVCbSwp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

D. La fonction FluxSwp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1781. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1782. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1783. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784. Code de la fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

a. Le tri à bulles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179b. Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

E. La fonction TauxFixeSwap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1821. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1822. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1823. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1824. Code de la fonction TauxFixeSwp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

F. La fonction SpreadSwp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1851. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1852. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1853. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1854. Code de la fonction SpreadSwp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

Chapitre 9Fonctions pour les titres indexés sur l'inflationA. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191B. La fonction ValeurIndiceQuotidien. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

1. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1922. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1923. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

Mathématiques financières8 Construisez votre bibliothèque de fonctions avec VBA Excel

4. Code de la fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192C. La fonction CouponCouruIndexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

1. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1932. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1933. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1944. Code de la fonction CouponCouruIndexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

D. La fonction BreakEven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1951. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1952. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1953. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1964. Code de la fonction BreakEven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

E. La fonction BreakEvenCb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1991. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1992. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2003. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2004. Code de la fonction BreakEvenCb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

F. La fonction PrixPleinIndexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2031. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2032. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2033. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2044. Code de la fonction PrixPleinIndexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

G. La fonction PrixPleinCbIndexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2061. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2062. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2063. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2074. Code de la fonction PrixPleinCbIndexe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

H. La fonction TauxRendementInsIndexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2101. Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2102. Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2103. Mode de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2114. Code de la fonction TauxRendementInsIndexe. . . . . . . . . . . . . . . . . . . . . . . . . . 212

Table des matières©

Edi

tions

EN

I - A

ll rig

hts r

eser

ved

9Chapitre 10 Réalisation d'un programme de couverture d'un portefeuille de swapA. Principe de la couverture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217B. Déroulement du programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219C. Construction d'un formulaire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219D. Code de gestion du formulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225E. La macro de calcul de la couverture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

1. La boucle For sur une collection d'objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2332. L'instruction With . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2353. Code de la macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2364. Test de notre programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239

Chapitre 11 Deux exemples en complémentA. Améliorer l’interface de la bibliothèque de fonctions . . . . . . . . . . . . . . . . . . . . . . . . 247B. Opération de change à terme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

1. Exemple d’utilisation de la fonction ChangeATerme . . . . . . . . . . . . . . . . . . . . . 252

Index des instructions Visual Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

Chapitre 6 Instruments à taux fixe

A. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111B. La fonction FluxTF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111C. La fonction CouponCouruTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115D. La fonction TauxRendementTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118E. La fonction PrixPleinTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122F. La fonction PrixPiedTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124G. La fonction SpreadSurCourbeTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126H. La fonction PrixPleinSurCourbeTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130I. Les fonctions de gestion du risque d'un instrument à taux fixe . . . . . . . . . . . . . . . 133

Chapitre 6 : Instruments à taux fixe©

Edi

tions

EN

I - A

ll rig

hts r

eser

ved

111

Chapi tre 6 : In st rum en ts à tau x fi xe

Math ém ati q ues f i nan ci èresA. IntroductionVous allez dans ce chapitre réaliser un ensemble de fonctions utiles pour la gestion desinstruments à taux fixe.

Par exemple les obligations de l'Etat français, les OAT, sont des instruments à taux fixe.Pour plus d'informations sur les obligations, vous pouvez consulter l'article qui leur estconsacré sur Wikipédia, à l'adresse : http://fr.wikipedia.org/wiki/Obligation_(finance)

Nous ne considérons que les instruments à remboursement in fine, c'est-à-dire dont leflux de capital est unique et à la date de maturité de l'instrument.

B. La fonction FluxTF

1. ObjectifCette fonction détermine les dates et les flux d'un instrument à taux fixe entre la datede calcul et la date de maturité.

GUn instrument à taux fixe paye à intervalles réguliers des intérêts basés sur le mêmetaux tout au long de sa vie. Le montant des intérêts peut ne pas être constant.

Mathématiques financières112 Construisez votre bibliothèque de fonctions avec VBA Excel

2. Arguments

3. Mode de calculSi les flux ne sont pas ajustés selon leur durée, les paiements d'intérêts sont tous égaux :

Flux(i)=dblValeurRemboursement*Coupon/iFrequence

Pour un investissement de 100 € recevant un coupon de 5% par an, payé en 2 fois, lesflux d'intérêts seront de 2.5 €.

Si les flux sont ajustés selon leur durée, par exemple en mode Modified Following, il fautpondérer chaque flux par la fonction FractionAnnee :

dblFrac=FractionAnnee(DateFlux(i-1);DateFlux(i);ModeAjustement)

Flux(i) = dblValeurRemboursement*Coupon*dblFrac

Que les flux d'intérêts soient ajustés ou non, le dernier flux de l'instrument est égal auflux d'intérêts plus le flux de remboursement.

Nom de l'argument Description Format de l'argument

DateDeCalcul Date de calcul Date

DateDeMaturite Date de maturité de l'instrument Date

dblCoupon Coupon (%) Double, coupon del'instrument

iFrequence Fréquence Entier, nombre de coupon par an de l'instrument

Base Base Variant

dblValeurRemboursement Valeur de remboursement Double

ModeAjustement Mode d'ajustement (optionnel) Variant

bPremierCouponPlein Premier Coupon Plein (optionnel)

Booléen

TypeCouponBrise Type coupon brisé (optionnel) Variant

DateDeDepart Date de départ de l'instrument(optionnel, obligatoire si le typede coupon brisé est renseigné)

Date

Chapitre 6 : Instruments à taux fixe©

Edi

tions

EN

I - A

ll rig

hts r

eser

ved

1134. Code de la fonction FluxTFPour déterminer la date des flux nous utilisons la fonction DatesDesFlux.

Option Base 1

Option Explicit

Function FluxTF(DateDeCalcul As Date, DateDeMaturite As Date, _

dblCoupon As Double, iFrequence As Integer, _

Base As Variant, dblValeurRemboursement _

As Double, Optional ModeAjustement As Variant = 0, _

Optional bPremierCouponPlein As Boolean = False, _

Optional TypeCouponBrise As Variant = 0, _

Optional DateDeDepart As Date = 0)

'//////////////////////////////////////////////////////////

' Cette fonction détermine les flux d'un

' instrument à taux fixe

'//////////////////////////////////////////////////////////

Dim TabDateFlux 'Tableau renvoyé par la fonction DatesDesFlux

Dim dblFrac As Double 'Fraction année

Dim TabSortie 'Données renvoyées

Dim i As Integer 'Variable de boucle

Dim iFreq As Integer 'Variable pour gérer le cas des zéro-coupon

'Si la fréquence est égale à 0

' alors c'est un instrument zéro coupon

' Pour que les formules ci-après fonctionnent

' il faut utiliser une seconde variable pour

' conserver la fréquence

If iFrequence = 0 Then

iFreq = 1

Else

iFreq = iFrequence

End If

'Test de la validité des données

If TypeCouponBrise <> 0 And DateDeDepart = 0 Then Exit Function

'Détermine les dates de flux

TabDateFlux = DatesDesFlux(DateDeCalcul, DateDeMaturite, iFrequence,

_

ModeAjustement, TypeCouponBrise, DateDeDepart)

'Dimensionne le tableau de sortie

ReDim TabSortie(2, UBound(TabDateFlux))

'Traitement du premier flux

Mathématiques financières114 Construisez votre bibliothèque de fonctions avec VBA Excel

'La date du premier flux

TabSortie(1, 1) = TabDateFlux(1)

'Test coupon brisé non encore échu

If TypeCouponBrise <> 0 And bPremierCouponPlein = False And _

TabDateFlux(0) = DateDeDepart Then

'flux pondéré par sa durée

dblFrac = FractionAnnee((TabDateFlux(0)), (TabDateFlux(1)), Base)

TabSortie(2, 1) = dblValeurRemboursement * dblCoupon * dblFrac

Else

'flux plein

TabSortie(2, 1) = dblValeurRemboursement * dblCoupon / iFreq

End If

'Les autres flux

If UBound(TabDateFlux) > 1 Then

'S'il y a d'autres flux, on boucle sur le tableau de dates

For i = 2 To UBound(TabDateFlux)

'La date du flux

TabSortie(1, i) = TabDateFlux(i)

'Calcul du flux selon le mode d'ajustement

If ModeAjustement <> 0 Then

dblFrac = FractionAnnee((TabDateFlux(i - 1)), _

(TabDateFlux(i)), Base)

TabSortie(2, i) = dblValeurRemboursement * _

dblCoupon * dblFrac

Else

'S'il n'y a pas de mode d'ajustement

TabSortie(2, i) = dblValeurRemboursement * dblCoupon /

iFreq

End If

Next

End If

'Au dernier flux on ajoute le flux de capital

' (instrument in fine)

TabSortie(2, UBound(TabDateFlux)) = TabSortie(2, UBound(TabDateFlux)) _

+ dblValeurRemboursement

FluxTF = TabSortie

End Function