La fonction de script NPV() prend une taux de remise et plusieurs valeurs triées par période. Les entrées (revenus) sont positives et les sorties (paiements futurs) sont supposées être des valeurs négatives pour ces calculs. Ils se produisent à la fin de chaque période.
La valeur Net Present Value, or NPV, est utilisée pour calculer la valeur totale actuelle de flux de trésorerie futurs. Pour calculer la valeur NPV, nous devons estimer les flux de trésorerie futurs pour chaque période et déterminer le taux de remise correct. La fonction de script NPV() prend une taux de remise et plusieurs valeurs triées par période. Les entrées (revenus) sont positives et les sorties (paiements futurs) sont supposées être des valeurs négatives pour ces calculs. Ces derniers se produisent à la fin de chaque période.
NPV(discount_rate, value)
numérique Par défaut, le résultat sera formaté sous forme de devise.
La formule permettant de calculer la valeur NPV est la suivante :
où :
Rt= entrées/sorties de flux de trésorerie nettes au cours d'une seule période t
i = taux de remise ou retour susceptible d'être obtenu dans des investissements alternatifs
t = nombre de périodes
Arguments
Argument
Description
discount_rate
discount_rate est le taux de pourcentage de remise appliqué.
Une valeur égale à 0.1 indique un taux de remise de 10 %.
value
Ce champ contient les valeurs de plusieurs périodes triées par période. La première valeur est supposée être le flux de trésorerie à la fin de la période 1, etc.
La fonction NPV() présente les restrictions suivantes :
Les valeurs textuelles, les valeurs NULL et les valeurs manquantes sont ignorées.
Les valeurs de flux de trésorerie doivent être triées dans l'ordre de période croissant.
Cas d'utilisation
NPV() est une fonction financière utilisée pour vérifier la rentabilité des projets et dériver d'autres mesures. Cette fonction est utile en cas de disponibilité de flux de trésorerie sous forme de données brutes.
Paramètres régionaux
Sauf indication contraire, les exemples de cette rubrique utilisent le format de date suivant : MM/JJ/AAAA. Le format de date est indiqué dans l'instruction SET DateFormat de votre script de chargement de données. Le format de date par défaut peut être différent dans votre système en raison de vos paramètres régionaux et d'autres facteurs. Vous pouvez modifier les formats utilisés dans les exemples ci-dessous en fonction de vos besoins. Ou vous pouvez modifier les formats utilisés dans votre script de chargement pour qu'ils correspondent à ceux de ces exemples. Pour plus d'informations, voir Modification des paramètres régionaux des applications et des scripts.
Les paramètres régionaux par défaut des applications sont basés sur le profil utilisateur. Ces paramètres de format régionaux ne sont pas liés à la langue affichée dans l'interface utilisateur Qlik Cloud. Qlik Cloud sera affiché dans la même langue que celle du navigateur que vous utilisez.
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.
Le script de chargement contient :
Ensemble de données d'un projet et de son flux de trésorerie pour une période, chargé dans une table appelée CashFlow.
Instruction resident load de la table CashFlow, utilisée pour calculer le champ NPV du projet dans une table appelée NPV.
Taux de remise codé en dur de 10 %, utilisé dans le calcul NPV.
Instruction Group By, utilisée pour regrouper l'ensemble des paiements du projet.
Script de chargement
CashFlow:
Load
*
Inline
[
PrjId,PeriodId,Values
1,1,1000
];
NPV:
Load
PrjId,
NPV(0.1,Values) as NPV //Discount Rate of 10%
Resident CashFlow
Group By PrjId;
Résultats
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
PrjId
NPV
Tableau de résultats
PrjId
NPV
1
$909.09
Pour un seul paiement de 1 000 $ à recevoir à la fin d'une période, à un taux de remise de 10 % par période, la valeur NPV est égale à 1 000 $ divisé par (1 + taux de remise). La valeur NPV effective est égale à 909,09 $.
Exemple 2 – plusieurs paiements (script)
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.
Le script de chargement contient :
Ensemble de données d'un projet et de son flux de trésorerie pour plusieurs périodes, chargé dans une table appelée CashFlow.
Instruction resident load de la table CashFlow, utilisée pour calculer le champ NPV du projet dans une table appelée NPV.
Un taux de remise codé en dur de 10 % (0,1) est utilisé dans le calcul NPV.
Instruction Group By, utilisée pour regrouper l'ensemble des paiements du projet.
Script de chargement
CashFlow:
Load
*
Inline
[
PrjId,PeriodId,Values
1,1,1000
1,2,1000
];
NPV:
Load
PrjId,
NPV(0.1,Values) as NPV //Discount Rate of 10%
Resident CashFlow
Group By PrjId;
Résultats
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
PrjId
NPV
Tableau de résultats
PrjId
NPV
1
$1735.54
Pour des paiements de 1 000 $ à recevoir à la fin de deux périodes, à un taux de remise de 10 % par période, la valeur NPV effective est égale à 1 735,54 $.
Exemple 3 – plusieurs paiements (script)
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.
Le script de chargement contient :
Taux de remise pour deux projets, chargés dans une table appelée Project.
Flux de trésorerie pour plusieurs périodes pour chaque projet par ID de projet et ID de période. Cet ID de période peut être utilisé pour trier les enregistrements si les données ne sont pas triées.
Combinaison de NoConcatenate, de chargements résidents et de la fonction Left Join pour créer une table temporaire, tmpNPV. La table combine les enregistrements des tables Project et CashFlow en une seule table uniforme. Les taux de remise de cette table sont répétés pour chaque période.
Instruction resident load de la table tmpNPV, utilisée pour calculer le champ NPV de chaque projet dans une table appelée NPV.
Taux de remise de valeur unique associé à chaque projet. Cette valeur est récupérée via la fonction only() et utilisée dans le calcul NPV pour chaque projet.
Instruction Group By, utilisée pour regrouper l'ensemble des paiements pour chaque projet par ID de projet.
Pour éviter le chargement de toute donnée synthétique ou redondante dans le modèle de données, la table tmpNPV est abandonnée à la fin du script.
Script de chargement
Project:
Load * inline [
PrjId,Discount_Rate
1,0.1
2,0.15
];
CashFlow:
Load
*
Inline
[
PrjId,PeriodId,Values
1,1,1000
1,2,1000
1,3,1000
2,1,500
2,2,500
2,3,1000
2,4,1000
];
tmpNPV:
NoConcatenate Load *
Resident Project;
Left Join
Load *
Resident CashFlow;
NPV:
Load
PrjId,
NPV(Only(Discount_Rate),Values) as NPV //Discount Rate will be 10% for Project 1 and 15% for Project 2
Resident tmpNPV
Group By PrjId;
Drop table tmpNPV;
Résultats
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
PrjId
NPV
Tableau de résultats
PrjId
NPV
1
$2486.85
2
$2042.12
L'ID de projet 1 prévoit la réception de paiements de 1 000 $ à la fin de trois périodes, à un taux de remise de 10 % par période. Par conséquent, la valeur NPV effective est égale à 2 486,85 $.
L'ID de projet 2 prévoit deux paiements de 500 $ et deux autres paiements de 1 000 $ sur quatre périodes à un taux de remise de 15 %. Par conséquent, la valeur NPV effective est égale à 2 042,12 $.
Exemple 4 – Exemple rentabilité de projet (script)
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.
Le script de chargement contient :
Taux de remise et investissements initiaux (période 0) pour deux projets, chargés dans une table appelée Project.
Flux de trésorerie pour plusieurs périodes pour chaque projet par ID de projet et ID de période. Cet ID de période peut être utilisé pour trier les enregistrements si les données ne sont pas triées.
Combinaison de NoConcatenate, de chargements résidents et de la fonction Left Join pour créer une table temporaire, tmpNPV. La table combine les enregistrements des tables Project et CashFlow en une seule table uniforme. Les taux de remise de cette table sont répétés pour chaque période.
Taux de remise de valeur unique associé à chaque projet, récupéré via la fonction only() et utilisé dans le calcul NPV pour chaque projet.
Une instruction resident load de la table tmpNPV est utilisée pour calculer le champ NPV de chaque projet dans une table appelée NPV.
Un champ supplémentaire, qui divise la valeur NPV par l'investissement initial de chaque projet, est créé pour calculer l'indice de rentabilité du projet.
Une instruction group by, effectuant un regroupement par ID de projet, est utilisée pour regrouper tous les paiements pour chaque projet.
Pour éviter le chargement de toute donnée synthétique ou redondante dans le modèle de données, la table tmpNPV est abandonnée à la fin du script.
Script de chargement
Project:
Load * inline [
PrjId,Discount_Rate, Initial_Investment
1,0.1,100000
2,0.15,100000
];
CashFlow:
Load
*
Inline
[
PrjId,PeriodId,Values,
1,1,35000
1,2,35000
1,3,35000
2,1,30000
2,2,40000
2,3,50000
2,4,60000
];
tmpNPV:
NoConcatenate Load *
Resident Project;
Left Join
Load *
Resident CashFlow;
NPV:
Load
PrjId,
NPV(Only(Discount_Rate),Values) as NPV, //Discount Rate will be 10% for Project 1 and 15% for Project 2
NPV(Only(Discount_Rate),Values)/ Only(Initial_Investment) as Profitability_Index
Resident tmpNPV
Group By PrjId;
Drop table tmpNPV;
Résultats
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
PrjId
NPV
Créez la mesure suivante :
=only(Profitability_Index)
Tableau de résultats
PrjId
NPV
=only(Profitability_Index)
1
$87039.82
0.87
2
$123513.71
1.24
L'ID de projet 1 a une valeur NPV effective de 87 039,82 $ et un investissement initial de 100 000 $. Par conséquent, l'index de rentabilité est égal à 0,87. Étant donné qu'il est inférieur à 1, le projet n'est pas rentable.
L'ID de projet 2 a une valeur NPV effective de 123 513,71 $ et un investissement initial de 100 000 $. Par conséquent, l'index de rentabilité est égal à 1,24. Étant donné qu'il est supérieur à 1, le projet est rentable.
Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !