Calcul financiers avec VBA excel

Calcul financiers avec VBA excel - VB/VBA/VBS - Programmation

Marsh Posté le 29-11-2011 à 12:13:23    

Bonjour à tous,
 
Je suis nouveau dans le forum et debutant sur VBA. Pour des besoins de contrôle, j'aimerais avoir les codes VBA pour le calcul du taux de rendement la valeur actuelle et la duration au 31/12/2010 d'une obligation à taux fixe ayant les caracteristiques suivantes:
 
1-cours à l'achat: 104.83
2- Taux coupon: 4.65%
3- Nominal : 1000
4- Qté: 120
5- prix de remboursement 100
6- Date d'achat 28/05/2003
7- Date de maturité : 15/01/2018
 
Je compte sur votre aide  

Reply

Marsh Posté le 29-11-2011 à 12:13:23   

Reply

Marsh Posté le 29-11-2011 à 16:32:13    

Google est votre ami. Avec les mot "Excel duration", on trouve des résultats intéressants.
 
Pour des informations sur la duration, cf. http://fr.wikipedia.org/wiki/Duration , et la version anglaise qui est plus complète http://en.wikipedia.org/wiki/Bond_duration
 
Les caractéristiques de votre obligation sont incomplètes. Par exemple il n'est pas dit si le coupon est annuel (cas fréquent en France) ou semi-annuel, ou trimestriel, ou autre. La date de détachement du prochain coupon n'est précisée. Est-ce que le coupon est prépayé ou postpayé ? Il parait évident que le cours d'achat inclus le coupon couru, mais ce n'est pas dit. Parfois il existe des remboursements anticipés qui viennent compliquer les calculs, mais ce n'est peut-être pas votre cas. Le nominal de 1000 parait très élevé par rapport au prix d'achat et par rapport au prix de remboursement. Peut-être que le nominal n'est que de 100 en réalité. Ou bien, peut-être que le nominal serait en devise, alors que les prix d'achat et de remboursement seraient en pourcentage. Ou bien peut-être que le nominal aurait été confondu avec la quotité. Faut-il prendre en compte une conversion de devise ?
 
Avec toutes ces informations, vous devriez pouvoir calculer facilement la duration, car la formule est un polynome (alors que ce serait plus compliqué pour un calcul de taux actuariel où il faudrait faire une intégration et donc utiliser des logarithmes).
 
Edit :
La formule utilisée par Excel est expliquée sur la page http://www.excelfunctions.net/Exce [...] ction.html
Il s'agit d'une formule, et non-pas d'un code VBA.
Et j'ai oublié de dire qu'il faut savoir comment sont comptés les intérêts : avec des mois de 30 jours ou des mois ayant le nombre de jours rééls, avec des années de 360 jours, ou 365, ou des années ayant le nombre de jours rééls.


Message édité par olivthill le 29-11-2011 à 16:39:22
Reply

Marsh Posté le 29-11-2011 à 19:03:20    

Bonsoir,
 
merci pour vos rappels en effet  
 
le coupon est annuel,  
la base est 365  exact/axact
la date de détachament est le 15 janvier de chaque année
le remboursement est infine
le coupon est postpayé
le cours à l'achat est pieds de coupon
le remboursement est 100% à la maturité
les prix de revient et de remboursement sont des pourcentage.
 
En effet je sais calculer les différents éléments sous exel et il me faut faire un écheancier pour chaque titre et j'ai plusieurs ligne de titre (plus de 100) c'est la raison de mon problème.
 
D'avance merci

Reply

Marsh Posté le 30-11-2011 à 12:04:44    

Voici un exemple simplifié de calcul en VBA :

dt_debut = #1/15/2003#
dt_pr_coupon = #1/15/2004#
dt_fin = #1/15/2008#
pct_rate = 0.0465
face_value = 1000#
maturity_value = 1000#
 
' Calcul le nombre de flux
nb_flow = CInt(Year(dt_fin)) - CInt(Year(dt_debut))
'MsgBox (nb_flux)
 
' Somme des cash flow pondérés
a = 0#
For i_flow = 1 To nb_flow
  a = a + (i_flow * pct_rate * face_value) / (1 + pct_rate) ^ i_flow
Next
a = a + nb_flow * maturity_value / (1 + pct_rate) ^ nb_flow
 
' Prix du titre
b = (1 - (1 + pct_rate) ^ (-1 * nb_flow)) / pct_rate
b = pct_rate * face_value * b
b = b + maturity_value / (1 + pct_rate) ^ nb_flow
 
duration = a / b
MsgBox ("La duration est de : " & CStr(duration) & " année(s)." )


C'est un exemple simplifié, car je ne me souviens plus comment on traite le cas du rompu au début.
La formule mathématique vient de la page http://www.investopedia.com/univer [...] z1fBKPOIdY

Reply

Marsh Posté le 30-11-2011 à 12:34:13    

Merci pour votre aide
 
C'est supper

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed