La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

FIM700: Finance computationnelle et gestion des risques Séance 4: Plan Test dauto-évaluation Relâche ou pas? À faire Retour sur les exercices Méthode de.

Présentations similaires


Présentation au sujet: "FIM700: Finance computationnelle et gestion des risques Séance 4: Plan Test dauto-évaluation Relâche ou pas? À faire Retour sur les exercices Méthode de."— Transcription de la présentation:

1 FIM700: Finance computationnelle et gestion des risques Séance 4: Plan Test dauto-évaluation Relâche ou pas? À faire Retour sur les exercices Méthode de dichotomie Tableaux VBA vs Tableaux Excel Gestion derreurs Modèle objet Excel Obtenir des données dune base de données

2 FIM700: Finance computationnelle et gestion des risques À faire (re)Lire formation VBA: Gestion d'erreur Collections et tableaux Dialogues et formulaires Objets et événements Excel Conseils de programmation Une macro Excel qui crée un tableau VBA contenant une matrice symétrique 500x500 de nombres aléatoires entre 1 et 100, puis en copie le contenu dans une plage Excel

3 FIM700: Finance computationnelle et gestion des risques À faire (suite)

4 FIM700: Finance computationnelle et gestion des risques Retour sur les exercices Un bon programme… Fait toujours ce qui est prévu. Ne fait jamais ce qui n'est pas prévu. Est facile à utiliser. Est facile (peu coûteux) à modifier.

5 FIM700: Finance computationnelle et gestion des risques Exercice: Comparaison de plages Une fonction Excel qui compare 2 plages de cellules dégales dimensions et retourne le nombre de cellules dont le contenu est identique (dans la même position)

6 FIM700: Finance computationnelle et gestion des risques Exercice: Création de matrice Un programme VBA Excel qui crée une plage Excel contenant une matrice symétrique de nombres aléatoires entre 1 et 100, puis en affiche laperçu avant impression.

7 FIM700: Finance computationnelle et gestion des risques Exercice: Décompte de hausses Une fonction Excel qui détermine le nombre de fois où une action a augmenté de plus de 10% dans une journée. Suggestion: tester votre programme à partir dune série de valeurs historiques obtenues de Yahoo Finance.

8 FIM700: Finance computationnelle et gestion des risques Exemple de boucle en finance Calcul du coût en capital en utilisant « two stage Gordon model » (méthode Gordon) P 0 capital au temps 0 Div 0 revenus au temps 0 g high taux de croissance élevé de Div 0 m nombre dannées de taux g high g normal taux de croissance par la suite r E taux de rendement (valeur cherchée) (Tiré de Simon Benniga Financial Modeling)

9 FIM700: Finance computationnelle et gestion des risques Calcul de r E Méthode de dichotomie Code proposé par lauteur (p.52): Function TwoStageGordon(P0, Div0, Highgrowth, Highgrowthyrs, Normalgrowth) high = 4 low = 0 Do While (high - low) > Estimate = (high + low) / 2 factor = (1 + Highgrowth) / (1 + Estimate) Term1 = Div0 * factor * (1 - factor ^ Highgrowthyrs) / (1 - factor) Term2 = Div0 * factor ^ Highgrowthyrs * (1 + Normalgrowth) / (Estimate - Normalgrowth) If (Term1 + Term2) > P0 Then low = (high + low) / 2 Else: high = (high + low) / 2 End If Loop TwoStageGordon = Estimate End Function

10 FIM700: Finance computationnelle et gestion des risques TwoStageGordon – sur CD Le code est (un peu) différent sur CD: Function TwoStageGordon(P0, Div0, Highgrowth, Highgrowthyrs, Normalgrowth) high = 1 low = 0 Do While (high - low) > Estimate = (high + low) / 2 factor = (1 + Highgrowth) / (1 + Estimate) Term1 = Div0 * factor * (1 - factor ^ Highgrowthyrs) / (1 - factor) Term2 = Div0 * factor ^ Highgrowthyrs * (1 + Normalgrowth) / (Estimate - Normalgrowth) If (Term1 + Term2) > P0 Then low = (high + low) / 2 Else: high = (high + low) / 2 End If Loop TwoStageGordon = (high + low) / 2 End Function

11 FIM700: Finance computationnelle et gestion des risques Code documenté Function TwoStageGordonMB(P0, Div0, Highgrowth, Highgrowthyrs, Normalgrowth) 'Auteurs: Maja Sliwinski, Beni Czaczkes et Simon Benninga, tiré de Financial Modeling (2008) p.52 'Adaptée par Michel Berthiaume, sept 'Calcul du taux de rendement d'un capital P0 donnennt des rendements Div0 au temps 0, 'avec des taux de croissance Highgrowth (durant Highgrowthyrs années) et Normalgrowth par la suite 'Résolution en utilisant la Méthode de dichotomie 'Noter que l'utilisation du type Currency au lieu de Double réduit la précision à 4 décimales Dim cHigh As Currency 'Borne supérieure Dim cLow As Currency 'Borne inférieure Dim cEstimate As Currency 'Valeur testée Dim cFactor As Currency 'Sous-calcul répété dans l'équation. Dim cterm1 As Currency 'Partie 1 Dim cterm2 As Currency 'Partie 2 'Validations If Not IsNumeric(P0) Or _ Not IsNumeric(Div0) Or _ Not IsNumeric(Highgrowth) Or _ Not IsNumeric(Highgrowthyrs) Or _ Not IsNumeric(Normalgrowth) Then TwoStageGordonMB = "Paramètre non numérique" Exit Function End If cHigh = 4 'Valeurs initiales. cLow = 0 'On cherche un taux compris entre 0 et 4. Do While (cHigh - cLow) > 'On arrète quand cHigh = cLow ou presque cEstimate = (cHigh + cLow) / 2 'Calcul de la fonction en utilisant cEstimate cFactor = (1 + Highgrowth) / (1 + cEstimate) cterm1 = Div0 * cFactor * (1 - cFactor ^ Highgrowthyrs) / (1 - cFactor) cterm2 = Div0 * cFactor ^ Highgrowthyrs * (1 + Normalgrowth) / (cEstimate - Normalgrowth) 'On remplace une des bornes par la valeur testée If (cterm1 + cterm2) > P0 Then cLow = cEstimate Else cHigh = cEstimate End If Loop 'Et on recommence.... TwoStageGordonMB = cEstimate End Function

12 FIM700: Finance computationnelle et gestion des risques Lectures… Questions?

13 FIM700: Finance computationnelle et gestion des risques Tableaux Range ("A1:A3") Dim dVecteur(1 to 3) Range ("A1:J10") DIM tblValeurs as double(1 to 10,1 to 10) DIM tblValeurs() ReDIM tblValeurs(1 to 10,1 to 10) Utilisation de FOR... NEXT Utilisation de FOR … EACH

14 FIM700: Finance computationnelle et gestion des risques Limites de tableaux DIM REDIM UBOUND LBOUND Utiles lorsquon passe un tableau en paramètre OPTION BASE (éviter ou mettre à 1)

15 FIM700: Finance computationnelle et gestion des risques De Excel vers VBA: Méthode classique (2 boucles) ou Dim vTableau() As Variant vTableau = Range("Plage") Si tableau dynamique et variant Intéressant, mais dangereux: type variant ReDim implicite

16 FIM700: Finance computationnelle et gestion des risques De VBA vers Excel Range(Cells(1, 1), Cells(UBound(vTableau, _ 1), UBound(vTableau, 2))) = vTableau si LBound() = 1 Seules les cellules de Range sont modifiées Attention aux dimensions

17 FIM700: Finance computationnelle et gestion des risques Tableaux Excel vs Tableaux VBA En lecture: 100 fois plus lent dans Excel que dans VBA En écriture: 1000 fois plus lent

18 FIM700: Finance computationnelle et gestion des risques Objets Excel Evaluate MsgBox [A2] [MsgBox [VLOOKUP(DATE(2008,11,12),A4:R2620,2)] SpecialCells xlCellTypeBlanks. Cellules vides xlCellTypeConstants. Cellules contenant des constantes xlCellTypeFormulas. Cellules contenant des formules xlCellTypeLastCell. Dernière cellule dans la plage utilisée xlCellTypeVisible.Toutes les cellules visibles CurrentRegion Cette propriété renvoie un objet Range qui représente la zone en cours. Celle-ci est une plage limitée par toute combinaison de lignes et de colonnes vides.Range UsedRange Cette propriété renvoie un objet Range qui représente la plage utilisée dans la feuille de calcul spécifiée.Range

19 FIM700: Finance computationnelle et gestion des risques Gestion derreurs On error goto Stop

20 FIM700: Finance computationnelle et gestion des risques ByrRef, ByVal Option Explicit Sub test() Par Michel Berthiaume, mai 2007 ByRef ou ByVal? Dim cMontant As Currency cMontant = 9.99 MsgBox fnTaxe(cMontant) MsgBox cMontant End Sub Function fnTaxe(cValeur) If Not IsNumeric(cValeur) Then fnTaxe = "Erreur, valeur non numérique" End If cValeur = cValeur * 0.07 fnTaxe = cValeur End Function


Télécharger ppt "FIM700: Finance computationnelle et gestion des risques Séance 4: Plan Test dauto-évaluation Relâche ou pas? À faire Retour sur les exercices Méthode de."

Présentations similaires


Annonces Google