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%.