Die Skriptfunktion NPV() nimmt einen Diskontsatz und mehrere Werte, sortiert nach Zeitraum. Eingänge (Einnahmen) sind positive Werte, Ausgänge (zukünftige Zahlungen) sind negative Werte für diese Berechnungen. Sie finden am Ende jedes Zeitraums statt.
Der Nettobarwert (Net Present Value, NPV) dient zum Berechnen des aktuellen Gesamtwerts von zukünftigen Geldflüssen. Zur Berechnung des NPV müssen die zukünftigen Geldflüsse für jeden Zeitraum geschätzt und die korrekte Diskontierungsrate bestimmt werden. Die Skriptfunktion NPV() enthält eine Diskontierungsrate und mehrere Werte, sortiert nach Zeitraum. Eingehende Geldflüsse (Einnahmen) sind positive Werte, ausgehende Geldflüsse (zukünftige Zahlungen) sind negative Werte für diese Berechnungen. Sie finden am Ende jedes Zeitraums statt.
Syntax:
NPV(discount_rate, value)
Rückgabe Datentyp: numerisch. Standardmäßig wird das Ergebnis als Währung formatiert.
Der Nettobarwert wird mit folgender Formel berechnet:
Dabei gilt:
Rt= eingehende und ausgehende Nettogeldflüsse während eines einzelnen Zeitraums t
i = Diskontierungsrate oder Rendite, die in alternativen Anlagen verdient werden könnte
t = Anzahl der Zeiträume
Argumente
Argument
Beschreibung
discount_rate
discount_rate ist der Prozentsatz des angewendeten Rabatts.
Ein Wert von 0,1 gibt eine Diskontierungsrate von 10 % an.
value
Dieses Feld enthält Werte für mehrere Zeiträume, nach Zeitraum sortiert. Der erste Wert steht für den Geldfluss am Ende von Zeitraum 1, usw.
Beschränkungen:
Die Funktion NPV() weist die folgenden Beschränkungen auf:
Textwerte, NULL-Werte und fehlende Werte werden ignoriert.
Geldflusswerte müssen in aufsteigender Zeitraumreihenfolge sortiert sein.
Verwendung
NPV() ist einen Finanzfunktion und dient zum Prüfen der Projektrentabilität und zum Ableiten anderer Kennzahlen. Die Funktion ist nützlich, wenn Geldflüsse als Rohdaten vorliegen.
Regionaleinstellungen
Sofern nicht anders angegeben, verwenden die Beispiele in diesem Thema das folgende Datumsformat: MM/TT/JJJJ. Das Datumsformat wird in der Anweisung SET DateFormat in Ihrem Datenladeskript angegeben. Das Standarddatumsformat in Ihrem System kann aufgrund Ihrer regionalen Einstellungen und anderer Faktoren abweichen. Sie können die Formate in den Beispielen unten Ihren Anforderungen entsprechend ändern. Sie können auch die Formate in Ihrem Ladeskript entsprechend den Beispielen ändern. Weitere Informationen finden Sie unter Ändern von regionalen Einstellungen für Apps und Skripte.
Regionale Standardeinstellungen in Apps basieren auf dem Benutzerprofil. Diese Einstellungen im regionalen Format hängen nicht mit der Sprache zusammen, die in der Benutzeroberfläche von Qlik Cloud angezeigt wird. Qlik Cloud wird in der gleichen Sprache wie der von Ihnen verwendete Browser angezeigt.
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript umfasst:
Ein Datensatz für ein Projekt und dessen Geldfluss für einen Zeitraum wird in eine Tabelle namens CashFlow geladen.
Ein Resident Load aus der Tabelle CashFlow wird verwendet, um das NPV-Feld für das Projekt in der Tabelle NPV zu berechnen.
Eine feste Diskontierungsrate von 10 % wird in der NPV-Berechnung verwendet.
Ein Group By-Befehl wird zum Gruppieren aller Zahlungen für das Projekt verwendet.
Ladeskript
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;
Ergebnisse
Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:
PrjId
NPV
Ergebnistabelle
PrjId
NPV
1
$909.09
Für eine einmalige Zahlung von $1000, die am Ende eines Zeitraums erhalten werden soll, und mit einer Diskontierungsrate von 10 % pro Zeitraum entspricht der NPV $1000 geteilt durch (1 + Diskontierungsrate). Der effektive NPV entspricht $909,09
Beispiel 2 – Mehrere Zahlungen (Skript)
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript umfasst:
Ein Datensatz für ein Projekt und dessen Geldflüsse für mehrere Zeiträume wird in eine Tabelle namens CashFlow geladen.
Ein Resident Load aus der Tabelle CashFlow wird verwendet, um das NPV-Feld für das Projekt in der Tabelle NPV zu berechnen.
Eine feste Diskontierungsrate von 10 % (0,1) wird in der NPV-Berechnung verwendet.
Ein Group By-Befehl wird zum Gruppieren aller Zahlungen für das Projekt verwendet.
Ladeskript
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;
Ergebnisse
Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:
PrjId
NPV
Ergebnistabelle
PrjId
NPV
1
$1735.54
Für Zahlungen von $1000, die am Ende von zwei Zeiträumen erhalten werden sollen, und mit einer Diskontierungsrate von 10 % pro Zeitraum entspricht der NPV $1735,54.
Beispiel 3 – Mehrere Zahlungen (Skript)
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript umfasst:
Diskontierungsraten für zwei Projekte werden in eine Tabelle namens Project geladen.
Cashflows für mehrere Zeiträume für jedes Projekt nach Projekt-ID und Zeitraum-ID. Diese Zeitraum-ID kann zum Sortieren der Datensätze verwendet werden, wenn die Daten nicht sortiert sind.
Die Kombination aus NoConcatenate, Resident Loads und der Funktion Left Join dient zum Erstellen einer temporären Tabelle, tmpNPV. Die Tabelle kombiniert die Datensätze der Tabellen Project und CashFlow in einer flachen Tabelle. In dieser Tabelle werden Diskontierungsraten für jeden Zeitraum wiederholt.
Ein Resident Load aus der Tabelle tmpNPV wird verwendet, um das NPV-Feld für jedes Projekt in der Tabelle NPV zu berechnen.
Die Diskontierungsrate mit einem Wert ist jedem Projekt zugeordnet. Sie wird mit der Funktion only() abgerufen und in der NPV-Berechnung für jedes Projekt verwendet.
Ein Group By-Befehl wird zum Gruppieren aller Zahlungen für jedes Projekt nach Projekt-ID verwendet.
Um zu verhindern, dass synthetische oder redundante Daten in das Datenmodell geladen werden, wird die Tabelle tmpNPV am Ende des Skripts verworfen.
Ladeskript
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;
Ergebnisse
Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:
PrjId
NPV
Ergebnistabelle
PrjId
NPV
1
$2486.85
2
$2042.12
Für Projekt-ID 1 werden Zahlungen von $1000 am Ende von drei Zeiträumen mit einer Diskontierungsrate von 10 % pro Zeitraum erwartet. Daher entspricht der effektive NPV $2486,85.
Für Projekt-ID 2 werden zwei Zahlungen von $500 und zwei weitere Zahlungen von $1000 über vier Zeiträume hinweg mit einer Diskontierungsrate von 15 % erwartet. Daher entspricht der effektive NPV $2042,12.
Beispiel 4 – Beispiel für Projektrentabilität (Skript)
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript umfasst:
Diskontierungsraten und anfängliche Investitionen (Zeitraum 0) für zwei Projekte werden in eine Tabelle namens Project geladen.
Cashflows für mehrere Zeiträume für jedes Projekt nach Projekt-ID und Zeitraum-ID. Diese Zeitraum-ID kann zum Sortieren der Datensätze verwendet werden, wenn die Daten nicht sortiert sind.
Die Kombination aus NoConcatenate, Resident Loads und der Funktion Left Join dient zum Erstellen einer temporären Tabelle, tmpNPV. Die Tabelle kombiniert die Datensätze der Tabellen Project und CashFlow in einer flachen Tabelle. In dieser Tabelle werden Diskontierungsraten für jeden Zeitraum wiederholt.
Die Diskontierungsrate mit einem Wert, die jedem Projekt zugewiesen ist, wird anhand der Funktion only() abgerufen und in der NPV-Berechnung für jedes Projekt verwendet.
Ein Resident Load aus der Tabelle tmpNPV wird verwendet, um das NPV-Feld für jedes Projekt in einer Tabelle NPV zu berechnen.
Ein weiteres Feld, das den NPV durch die anfängliche Investition für jedes Projekt teilt, wird erstellt, um den Projektrentabilitätsindex zu berechnen.
Ein Group By-Befehl gruppiert nach Projekt-ID und wird zum Gruppieren aller Zahlungen für jedes Projekt verwendet.
Um zu verhindern, dass synthetische oder redundante Daten in das Datenmodell geladen werden, wird die Tabelle tmpNPV am Ende des Skripts verworfen.
Ladeskript
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;
Ergebnisse
Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:
PrjId
NPV
Erstellen Sie die folgende Kennzahl:
=only(Profitability_Index)
Ergebnistabelle
PrjId
NPV
=only(Profitability_Index)
1
$87039.82
0.87
2
$123513.71
1.24
Projekt-ID 1 hat einen effektiven NPV von $87039.82 und eine anfängliche Investition von $100000. Daher entspricht der Rentabilitätsindex 0,87. Da dieser Wert kleiner als 1 ist, ist das Projekt nicht rentabel.
Projekt-ID 2 hat einen effektiven NPV von $123513,71 und eine anfängliche Investition von $100000. Daher entspricht der Rentabilitätsindex 1,24. Da dieser Wert größer als 1 ist, ist das Projekt rentabel.
Wenn Sie Probleme mit dieser Seite oder ihren Inhalten feststellen – einen Tippfehler, einen fehlenden Schritt oder einen technischen Fehler –, teilen Sie uns bitte mit, wie wir uns verbessern können!