Home

 Logithèque

CC40

Application financière classique de "Time Value of Money"


Code

DISPLAY AT(10)ERASE ALL,"----TVM----":PAUSE 3

I=10:N=10:PV=0:PMT=0:FV=0:PY=1

1020 DISPLAY ERASE ALL,"TVM : Input Solve Quit"

1030 A$=KEY$:J=POS("isq",A$,1):IF J=0 THEN 1030

IF J=3 THEN END

IF J=2 THEN 1200

REM --- Input

1070 DISPLAY ERASE ALL,"Select var : p/Y N I Pv pMt Fv"

1080 A$=KEY$:J=POS("ynipmfq",A$,1):IF J=0 THEN 1080

DISPLAY ERASE ALL

IF J=7 THEN 1020

ON J GOSUB 1130,1140,1150,1160,1170,1180

GOTO 1070

1130 PRINT "p/y=";PY;:ACCEPT AT(6)SIZE(-5)VALIDATE(DIGIT)NULL(PY),PY:RETURN

1140 PRINT "n =";N;:ACCEPT AT(6)SIZE(-5)VALIDATE(DIGIT)NULL(N),N:RETURN

1150 PRINT "i% =";PY;:ACCEPT AT(6)SIZE(-9)VALIDATE(NUMERIC)NULL(I),I:RETURN

1160 PRINT "PV =";PV;:ACCEPT AT(5)SIZE(-15)VALIDATE(NUMERIC)NULL(PV),PV:RETURN

1170 PRINT "PMT=";PMT;:ACCEPT AT(5)SIZE(-15)VALIDATE(NUMERIC)NULL(PMT),PMT:RETURN

1180 PRINT "FV =";PY;:ACCEPT AT(5)SIZE(-15)VALIDATE(NUMERIC)NULL(PY),PY:RETURN

REM --- Solve

1200 DISPLAY ERASE ALL,"Select var : I Pv pMt Fv"

1210 A$=KEY$:J=POS("ipmfq",A$,1):IF J=0 THEN 1210

DISPLAY ERASE ALL

IF J=5 THEN 1020

ON J GOSUB 1260,1340,1360,1380

GOTO 1200

1260 PRINT "Calcul de i% en cours..."

A=0:B=0:I=A:GOSUB 1430:C=E:I=B:GOSUB 1430:D=E

1280 I=A-C*(B-A)/(D-C):GOSUB 1430

IF SGN(C)=SGN(E) THEN A=I:C=E ELSE B=I:D=E

I=(A+B)/2:GOSUB 1430

IF SGN(C)=SGN(E) THEN A=I:C=E ELSE B=I:D=E

IF ABS(A-B)>.0001 THEN 1280

PRINT "i% =";I:PAUSE:RETURN

1340 GOSUB 1400:PV=-FV*T^(N*PY)-PMT*U

PRINT "PV =";PV:PAUSE:RETURN

1360 GOSUB 1400:PMT=-(PV+FV*T^(N*PY))/U

PRINT "PMT=";PMT:PAUSE:RETURN

1380 GOSUB 1400:FV=-(PV+PMT*U)/T^(N*PY)

PRINT "FV =";FV:PAUSE:RETURN

1400 T=1/(1+I/100/PY)

IF I=0 THEN U=N*PY ELSE U=T*(1-T^(N*PY))/(1-T)

RETURN

1430 GOSUB 1400:E=PV+FV*T^(N*PY)+PMT*U:RETURN


Mode d'emploi

Les numéros de ligne ne sont présents dans le listing que lorsqu'utiles. On peut taper le programme sans se soucier de ces numéros en tapant AUTO sans paramètre (la numérotation des lignes commençant à 1000).

Lancer le programme, le clavier doit être en minuscules. Le fonctionnement est piloté par des menus à partir desquels on frappe une touche pour sélectionner une option.

La touche [Q] ramène au menu précédent, ou sort du programme au niveau le plus haut.

Dans le menu Input on peut saisir les variables du TVM en tapant la touche qui apparaît en majuscule dans le nom de variable. Le contenu actuel de la variable est rappellé à l'écran avant saisie. Pour la visualiser sans la modifier, il suffit de frapper [ENTER]. Les valeurs par défaut sont visibles en ligne 1010.

Pour résoudre un problème de TVM, passer dans le menu Solve et choisir une des variables possibles I, PV, PMT ou FV (N non disponible dans cette version...). Les calculs sont instantanés sauf pour I qui prend quelques secondes. Le résultat est affiché et mémorisé dans la variable adéquate.

La précision de calcul de I est modifiable en ligne 1320.

Attention, une différence avec la plupart des autres TVM est que N contient le nombre d'années et non le nombre de périodes (voir l'exemple). De même, on est toujours en mode "fin de période".


Mathématiques à l'oeuvre

Les formules utilisées sont (PY est le nombre de paiements par an) :

PV+PMT*U+FV*T^(N*PY)=0

U=T*(1-T^(N*PY))/(1-T)

T=1/(1+I/100/PY)

Le calcul de I est réalisé par la méthode de la sécante, qui est stable.

La ligne 1430 calcule la somme de tous les flux actualisés, qui vaut normalement zéro.


Exemple

Calculer le taux effectif d'un emprunt de 500 000 à 15 ans, 12 périodes par an, dont les remboursements fin de période sont de 4 000.

 Entrée Résultat
RUN [ENTER] TVM : Input Solve Quit
 [I] Select var : p/Y N I Pv pMt Fv
 [N] n = 1
 15 [ENTER] n = 15
 [ENTER] Select var : p/Y N I Pv pMt Fv
 (idem saisie des autres variables)  Select var : p/Y N I Pv pMt Fv
 [Q]  TVM : Input Solve Quit
 [S]  Select var : I Pv pMt Fv
 [I]  Calcul de i% en cours...
 (après quelques secondes)  i% =5.176
 [ENTER]  Select var : I Pv pMt Fv

Le taux effectif est de 5,176%.