La fonction XNPV() renvoie la valeur actuelle nette agrégée pour un calendrier de liquidités (non nécessairement périodique) que représentent des nombres appariés dans les expressions pmt et date. Tous les paiements sont actualisés sur une base de 365 jours par an.
XNPV(discount_rate, pmt,
date)
numérique
Note InformationsPar défaut, le résultat sera formaté sous forme de devise.
La formule pour calculer XNPV est indiquée ci-dessous :
où :
Pi= entrées/sorties de flux de liquidités nettes au cours d'une seule période i
d1= première date de paiement
di = ie date de paiement
rate = taux de remise
La valeur Net Present Value, or NPV, est utilisée pour calculer la valeur totale actuelle d'un flux de liquidités futur avec un taux de remise donné. Pour calculer XNPV, nous devons estimer les liquidités futures avec les dates correspondantes. Ensuite, pour chaque paiement, nous appliquons le taux de remise composé en fonction de la date du paiement.
L'application de l'agrégation XNPV à une série de paiements est similaire à l'application d'une agrégation Sum sur ces paiements. La différence réside dans le fait que chaque montant est modifié (ou « réduit ») en fonction du taux de remise sélectionné (similaire à un taux d'intérêt) et du niveau d'avancée du paiement dans le futur. L'application de XNPV avec le paramètre discount_rate défini sur zéro produira une opération XNPV équivalente à une opération Sum (les paiements ne seront pas modifiés avant d'être additionnés). En règle générale, plus le paramètre discount_rate est proche de zéro, plus le résultat XNPV sera similaire à celui d'une agrégation Sum.
Arguments
Argument
Description
discount_rate
discount_rate est le taux de réduction annuel à appliquer aux paiements.
Une valeur égale à 0.1 indique un taux de remise de 10 %.
pmt
Paiements. Expression ou champ contenant les flux de liquidités correspondant au calendrier de paiement spécifié dans la fonction date. Les valeurs positives sont supposées être des apports et les valeurs négatives des décaissements.
Note InformationsXNPV() n'applique pas de remise aux liquidités initiales, étant donné que la fonction s'applique toujours à la date de début. Les paiements ultérieurs font l'objet d'une remise en fonction d'une année de 365 jours. Cela est différent de NPV(), où même le premier paiement fait l'objet d'une remise.
date
Expression ou champ contenant le calendrier de dates correspondant aux paiements de flux de liquidités spécifiés dans la fonction pmt. La première valeur est utilisée comme date de début pour calculer les décalages temporels des liquidités futures.
Si vous utilisez cette fonction, les limitations suivantes s'appliquent :
Les valeurs textuelles, les valeurs NULL et les valeurs manquantes dans une ou les deux paires de données sont ignorées.
Cas d'utilisation
La valeur XNPV() est utilisée dans la modélisation financière pour calculer la valeur Net Present Value (NPV - Valeur actuelle nette) d'une opportunité d'investissement.
En raison de sa plus grande précision, la valeur XNPV est préférée à la valeur NPV pour tous les types de modèles financiers.
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 son flux de trésorerie pour un an, dans une table appelée CashFlow. La date initiale du calcul est définie sur le 1er juillet 2022, avec un flux de trésorerie net égal à 0. Au bout d'un an, on a un flux de trésorerie de 1 000 $.
Instruction resident load de la table CashFlow, utilisée pour calculer le champ XNPV du projet dans une table appelée XNPV.
Taux de remise codé en dur de 10 % (0,1), utilisé dans le calcul XNPV.
Une instruction Group By est utilisée pour regrouper l'ensemble des paiements du projet.
Script de chargement
CashFlow:
Load
*
Inline
[
PrjId,Dates,Values
1,'07/01/2022',0
1,'07/01/2023',1000
];
XNPV:
Load
PrjId,
XNPV(0.1,Values,Dates) as XNPV //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
XNPV
Tableau de résultats
PrjId
XNPV
1
$909.09
Conformément à la formule, la valeur XNPV du premier enregistrement est 0, et, pour le deuxième enregistrement, la valeur XNPV est de 909,09 $. Ainsi, la valeur XNPV totale est de 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 son flux de trésorerie pour un an, dans une table appelée CashFlow.
Instruction resident load de la table CashFlow, utilisée pour calculer le champ XNPV du projet dans une table appelée XNPV.
Taux de remise codé en dur de 10 % (0,1), utilisé dans le calcul XNPV.
Une instruction Group By est utilisée pour regrouper l'ensemble des paiements du projet.
Script de chargement
CashFlow:
Load
*
Inline
[
PrjId,Dates,Values
1,'07/01/2022',0
1,'07/01/2024',500
1,'07/01/2023',1000
];
XNPV:
Load
PrjId,
XNPV(0.1,Values,Dates) as XNPV //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
XNPV
Tableau de résultats
PrjId
XNPV
1
$1322.21
Dans cet exemple, un paiement de 1 000 $ est reçu à la fin de la première année et un paiement de 500 $ à la fin de la deuxième année. Avec un taux de remise de 10 % par période, la valeur XNPV effective est égale à 1 322,21 $.
Notez que seule la première ligne de données doit faire référence à la date de base pour les calculs. Pour le reste des lignes, l'ordre n'a pas d'importance, car le paramètre date est utilisé pour calculer la période écoulée.
Exemple 3 – plusieurs paiements et flux de trésorerie irréguliers (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 dans une table appelée Project.
Flux de trésorerie pour plusieurs périodes pour chaque projet par ID de projet et dates. Le champ Dates est utilisé pour calculer la durée pendant laquelle le taux de remise est appliqué au flux de trésorerie. À l'exception du premier enregistrement (flux de trésorerie initial et date initiale), l'ordre des enregistrements n'a pas d'importance et sa modification ne devrait pas avoir d'impact sur les calculs.
Via une combinaison de NoConcatenate, de chargements résidents et de la fonction Left Join, une table temporaire, tmpNPV, est créée, combinant 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 flux de trésorerie.
Instruction resident load de la table tmpNPV, utilisée pour calculer le champ XNPV de chaque projet dans une table appelée XNPV.
Le taux de remise de valeur unique associé à chaque projet est récupéré via la fonction only() et utilisé dans le calcul XNPV pour chaque projet.
Une instruction Group By, effectuant un regroupement par ID de projet, est utilisée pour regrouper tous les paiements et dates correspondantes pour chaque projet.
Pour éviter le chargement de toute donnée synthétique ou redondante dans le modèle de données, la table tmpXNPV 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,Dates,Values
1,'07/01/2021',0
1,'07/01/2022',1000
1,'07/01/2023',1000
2,'07/01/2020',0
2,'07/01/2023',500
2,'07/01/2024',1000
2,'07/01/2022',500
];
tmpXNPV:
NoConcatenate Load *
Resident Project;
Left Join
Load *
Resident CashFlow;
XNPV:
Load
PrjId,
XNPV(Only(Discount_Rate),Values,Dates) as XNPV //Discount Rate will be 10% for Project 1 and 15% for Project 2
Resident tmpXNPV
Group By PrjId;
Drop table tmpXNPV;
Résultats
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
PrjId
XNPV
Tableau de résultats
PrjId
XNPV
1
$1735.54
2
$278.36
L'ID de projet 1 a un flux de trésorerie initial de 0 $ le 1er juillet 2021. Deux paiements de 1 000 $ doivent être reçus à la fin de deux années consécutives, à un taux de remise de 10 % par période. Par conséquent, la valeur XNPV effective est égale à 1 735,54 $.
L'ID de projet 2 a un flux sortant initial de 1 000 $ (d'où le signe négatif) le 1er juillet 2020. Au bout de deux ans, un paiement de 500 $ est prévu. Au bout de trois ans, un autre paiement de 500 $ est prévu. Pour finir, le 1er juillet 2024, un paiement de 1 000 $ est prévu. Avec le taux de remise de 15 %, la valeur XNPV effective est égale à 278,36 $.
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 !