1 / 16

Programmation

Programmation. Construction d’un Call Synthétique. Déclaration des Variables. Option Explicit Dim S_t As Double Dim X As Double Dim S_0 As Double Dim CompteurSimulation As Long Dim Portefeuille As Double Dim Vol As Double

meir
Download Presentation

Programmation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programmation Construction d’un Call Synthétique

  2. Déclaration des Variables • Option Explicit • Dim S_t As Double • Dim X As Double • Dim S_0 As Double • Dim CompteurSimulation As Long • Dim Portefeuille As Double • Dim Vol As Double • Dim BT As Double 'Valeur des bons du trésors achetés à escompte à t=0 • Dim PcS_t As Double 'Porportion du portefeuille investi dans S_t en pourcent • Dim PcBT As Double 'Quantité de bons du trésor dans le portefeuille en pourcent • Dim NbBT As Double 'Le nombre d'unité de BT dont la valeur nominale est 100 • Dim NbS_t As Double 'le nombre d'actions détenus dont la valeur est de S_t

  3. Tâches à accomplir • 'On fixe la valeur initiale du portefeuille à 100$ • 'Le delta détermine la proportion investie dans S_t et la différence dans les • 'Bons du trésors. • 'programme pour calculer la valeur d'une option synthétique • Sub CalculePortefeuille() • Dim NombreSimulations As Long • Dim r_f As Double • Dim div As Double • Dim T_t As Double • Dim LongueurPas As Double

  4. Lire les données • ' • 'Lire les données dans le chiffrier Excel avec les définitions de • 'nom de variables • S_0 = Range("S_0").Value • X = Range("Strike").Value • Vol = Range("Vol").Value • r_f = Range("r_f").Value • div = Range("div").Value • T_t = Range("T_t").Value • LongueurPas = Range("LongueurPas").Value • CompteurSimulation = 0 • NombreSimulations = InputBox("Entrer le nombre de simulations", "Simulations des points d'arrivés") • 'NombreSimulations = Range("Nombre_Simulations").Value • Range("Nombre_Simulations").Value = NombreSimulations • '

  5. Pour chaque simulation • For CompteurSimulation = 1 To NombreSimulations • S_t = S_0 • PcS_t = DeltaCall(S_t, X, Vol, r_f, div, T_t) • PcBT = 1# - PcS_t • BT = Exp(-r_f * T_t) * 100 • NbBT = PcBT * 100# / BT • NbS_t = PcS_t * 100# / S_t • Portefeuille = BT * NbBT + NbS_t * S_t • Call VolatiliteConstante(r_f, div, Vol, LongueurPas, T_t) • Next CompteurSimulation • Range("B15").Value = Portefeuille • End Sub

  6. Jour par jour pour la période • Sub VolatiliteConstante(ByVal r_f, ByVal div, ByVal sigma, ByVal LongueurPas, ByVal T_t) • 'Executer une boucle qui nous permet de trouver la valeur • 'de l'actif sous-jacent • Dim CompteurJours As Integer • Dim NombrePas As Integer • Dim Echeance As Double • Dim RendementPortefeuille As Double • Dim RendementS_t As Double • NombrePas = T_t * 365 • For CompteurJours = 0 To NombrePas

  7. Simulation du sous-jacent • 'Calcul de la valeur du sous_jacent • S_t = S_t + dS_t(r_f, div, sigma, LongueurPas) • 'Réévaluation du portefeuille • 'Les bons du trésors valent + cher une journée de moins avant échéance • Echeance = T_t - CompteurJours * LongueurPas • If (Echeance <= 0) Then Echeance = 0.0001 • BT = Exp(-r_f * Echeance) * 100

  8. Calcul des pourcentages • 'portefeuille avant transactions • Portefeuille = NbBT * BT + NbS_t * S_t • 'calcul de la quantité de sous-jacent et BT • PcS_t = DeltaCall(S_t, X, Vol, r_f, div, Echeance) • PcBT = 1# - PcS_t • 'Transactions : faire les transaction pour que la porportion de S_t soit toujours à delta • NbBT = PcBT * Portefeuille / BT • NbS_t = PcS_t * Portefeuille / S_t • Portefeuille = BT * NbBT + NbS_t * S_t • 'Si on veut examiner une trajectoire on affiche les ressultats • 'Call AfficheResultats(Portefeuille, S_t, BT, CompteurJours) • Next CompteurJours

  9. Calcul du rendement du portefeuille • 'Calcul du rendement du portefeuille à la fin de la trajectoire • 'La valeur initiale du portefeuille est de 100 et la valeur • 'Initiale de l'actif sous-jacent de S_0 • RendementPortefeuille = Log(Portefeuille / 100#) • RendementS_t = Log(S_t / S_0) • Call AfficheRendement(RendementS_t, RendementPortefeuille, CompteurSimulation) • End Sub

  10. Variable aléatoire • Function dS_t(ByVal r_f, ByVal div, ByVal sigma, ByVal LongueurPas) • Dim Ei As Integer • Dim sqrdt As Double • Dim dt As Double • dt = LongueurPas • sqrdt = Sqr(LongueurPas) • Ei = N01() • dS_t = (r_f - div) * S_t * LongueurPas + sigma * Ei * sqrdt * S_t • End Function

  11. Nombre selon une normale • Function N01() • Dim r As Double • r = Rnd() • If r < 0.5 Then • r = -1# • Else: r = 1 • End If • N01 = r • End Function

  12. Calcul du Delta • Function DeltaCall(ByVal S, ByVal X, ByVal sigma, ByVal r, ByVal div, ByVal t) • 'Fonction pour calculer le Delta d'un Call • Dim d1 As Double • d1 = d_1(S, X, sigma, r, div, t) • DeltaCall = NombreNormal(d1) * Exp(-div * t) • End Function

  13. Calcul de d1 • Function d_1(ByVal S, ByVal X, ByVal sigma, ByVal r, ByVal div, ByVal t) • 'Calcul de d_1 • d_1 = (Log(S / X) + (r - div + sigma * sigma / 2) * t) / (sigma * Sqr(t)) • End Function

  14. Fonction de densité • Function NombreNormal(ByVal z) • 'Fonction qui calcule la normale cumulative • NombreNormal = Application.NormSDist(z) • End Function

  15. Affiche les résultats • Sub AfficheResultats(ByVal Portefeuille, ByVal S_t, ByVal BT, ByVal Ligne) • Cells(20 + Ligne, 1).Value = Portefeuille • Cells(20 + Ligne, 2).Value = S_t • Cells(20 + Ligne, 3).Value = BT • End Sub

  16. Affiche les rendements • Sub AfficheRendement(ByVal S_t, ByVal Portefeuille, ByVal Compteur) • Cells(20 + Compteur, 1).Value = Compteur • Cells(20 + Compteur, 2).Value = S_t • Cells(20 + Compteur, 3).Value = Portefeuille • End Sub

More Related