De scriptfunctie NPV() neemt een kortingstarief en meerdere waarden op volgorde van periode. Ontvangsten, (inkomsten) zijn positief en uitgaven (toekomstige betalingen) worden voor deze berekeningen als negatieve waarden beschouwd. Deze vinden plaats aan het einde van elke periode.
De huidige nettowaarde of Net Present Value/ NPV, wordt gebruikt om de huidige totale waarde van een toekomstige stream van cashflows te berekenen. Om de NPV te berekenen, moeten we de toekomstige cashflows per periode berekenen en het correcte kortingstatief bepalen. De NPV()-scriptfunctie neemt een kortingstarief en meerdere waarden op volgorde van periode. Ontvangsten, (inkomsten) zijn positief en uitgaven (toekomstige betalingen) worden voor deze berekeningen als negatieve waarden beschouwd. Deze vinden plaats aan het einde van elke periode.
Syntaxis:
NPV(discount_rate, value)
Retourgegevenstypen: numeriek. Het resultaat wordt standaard geformatteerd als een valuta.
De formule om de huidige nettowaarde te berekenen is:
waarbij:
Rt= Netto-ontvangsten/-uitgaven in cash gedurende één periode t
i = Kortingspercentage dat of opbrengst die zou kunnen worden verdiend uit alternatieve investeringen
t = Aantal timerperioden
Argumenten
Argument
Beschrijving
discount_rate
discount_rate is het percentagetarief van de toegepaste korting.
Een waarde van 0,1 zou een kortingspercentage van 10% aangeven.
value
Dit veld bevat waarden voor meerdere perioden op volgorde van periode. De eerste waarde wordt aangenomen als de cashflow aan het eind van periode 1, enzovoort.
Beperkingen:
De NPV()-functie heeft de volgende beperkingen:
Tekstwaarden, NULL-waarden en ontbrekende waarden worden genegeerd.
Cashflowwaarden moeten op volgorde van oplopende periode staan.
Wanneer gebruiken
NPV() is een financiële functie die wordt gebruikt om de winstgevendheid van een project te controleren en andere metingen af te leiden. Deze functie is handig wanneer cashflows beschikbaar zijn in de vorm van onbewerkte gegevens.
Landinstellingen
Tenzij anders aangegeven, wordt in de voorbeelden in dit onderwerp de volgende datumindeling gebruikt: MM/DD/JJJJ. De datumopmaak wordt opgegeven in de opdracht SET DateFormat in uw script voor het laden van gegevens. De standaard datumindeling is mogelijk anders op uw systeem vanwege landinstellingen en andere factoren. U kunt de indelingen in de voorbeelden wijzigen zodat deze aansluiten op uw behoeften. Of u kunt de indelingen in uw load-script wijzigen zodat ze overeenkomen met deze voorbeelden.
Standaard landinstellingen in apps zijn gebaseerd op de regionale systeeminstellingen van de computer of server waarop Qlik Sense is geïnstalleerd. Als de Qlik Sense-server die u gebruikt is ingesteld op Zweden, gebruikt de editor voor laden van gegevens de Zweedse landinstellingen voor datums, tijd en valuta. Deze landinstellingen voor indelingen zijn niet gerelateerd aan de taal die wordt weergegeven in de gebruikersinterface van Qlik Sense. Qlik Sense wordt weergegeven in dezelfde taal als de browser die u gebruikt.
Voorbeeld 1 – Enkele betaling (script)
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Een gegevensverzameling van één project en de daarbij behorende cashflow voor één periode die in de tabel CashFlow wordt geladen.
Een resident-load uit de tabel CashFlow die wordt gebruikt om het NPV-veld te berekenen voor het project in de tabel NPV.
Een vastgesteld kortingspercentage van 10%, dat wordt gebruikt in de berekening van de NPV.
De opdracht Group By die wordt gebruikt om alle betalingen voor het project te groeperen.
Load-script
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;
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
PrjId
NPV
Resultatentabel
PrjId
NPV
1
$909.09
Om aan het eind van één periode een enkele betaling van $1000 te kunnen ontvangen met een kortingspercentage van 10% per periode, is de NPV gelijk aan $1000 gedeeld door (1 + kortingspercentage). De effectieve NPV is gelijk aan $909,09
Voorbeeld 2 – Meerdere betalingen (script)
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Een gegevensset van één project en de daarbij behorende cashflow voor meerdere perioden die in de tabel CashFlow wordt geladen.
Een resident-load uit de tabel CashFlow die wordt gebruikt om het NPV-veld te berekenen voor het project in de tabel NPV.
Een vastgesteld kortingspercentage van 10% (0,1), dat wordt gebruikt in de berekening van de NPV.
De opdracht Group By die wordt gebruikt om alle betalingen voor het project te groeperen.
Load-script
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;
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
PrjId
NPV
Resultatentabel
PrjId
NPV
1
$1735.54
Om aan het eind van twee perioden betalingen van $1000 te kunnen ontvangen met een kortingspercentage van 10% per periode, is de effectieve NPV gelijk aan $1735,54.
Voorbeeld 3 – Meerdere betalingen (script)
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Kortingstarieven voor twee projecten die in de tabel Project worden geladen.
Cashflows voor meerdere perioden per project op project-id en periode-id. Deze periode-id kan worden gebruikt om de records te sorteren in het geval dat de gegevens niet zijn gesorteerd.
De combinatie van NoConcatenate, resident-loads en de Left Join-functie om een tijdelijke tabel aan te maken, tmpNPV. De tabel combineert de records uit de tabellen Project en CashFlow in één tabel. In deze tabel worden de kortingstarieven voor iedere periode herhaald.
Een resident-load uit de tabel tmpNPV die wordt gebruikt om het NPV-veld te berekenen voor elk project in de tabel NPV.
Het kortingspercentage voor één waarde dat aan elk project is gekoppeld. Dit wordt opgehaald met de only()-functie en wordt gebruikt in de NPV-berekening per project.
De Group By-opdracht, die wordt gebruikt om alle betalingen per project te groeperen op project-id.
Om te vermijden dat synthetische of overbodige gegevens in het gegevensmodel worden geladen, wordt de tabel tmpNPV aan het einde van het script verwijderd.
Load-script
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;
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
PrjId
NPV
Resultatentabel
PrjId
NPV
1
$2486.85
2
$2042.12
Project-id 1 verwacht dat betalingen van $1000 aan het einde van drie perioden worden ontvangen met een kortingspercentage van 10% per periode. Daarom is de effectieve NPV gelijk aan $2486,85.
Project-id 2 verwacht twee betalingen van $500 en nog eens betalingen van $1000 in vier perioden met een kortingspercentage van 15%. Daarom is de effectieve NPV gelijk aan $2042.12.
Voorbeeld 4 – Voorbeeld van winstgevendheid van project (script)
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Kortingstarieven en aanvankelijke investeringen (periode 0) voor twee projecten die in de tabel Project worden geladen.
Cashflows voor meerdere perioden per project op project-id en periode-id. Deze periode-id kan worden gebruikt om de records te sorteren in het geval dat de gegevens niet zijn gesorteerd.
De combinatie van NoConcatenate, resident-loads en de Left Join-functie om een tijdelijke tabel aan te maken, tmpNPV. De tabel combineert de records uit de tabellen Project en CashFlow in één tabel. In deze tabel worden de kortingstarieven voor iedere periode herhaald.
Het kortingspercentage voor de enkele waarden dat bij elk project hoort, dat wordt opgehaald met de only()-functie en wordt gebruikt in de NPV-berekening per project.
Een resident-load uit de tabel tmpNPV wordt gebruikt om het NPV-veld te berekenen voor elk project in de tabel NPV.
Een extra veld dat de NPV verdeelt op basis van de aanvankelijke investering van elk project, wordt gemaakt om de winstgevendheidsindex van het project te berekenen.
Een Group By-opdracht, die op project-id groepeert, wordt gebruikt om alle betalingen voor elk project te groeperen.
Om te vermijden dat synthetische of overbodige gegevens in het gegevensmodel worden geladen, wordt de tabel tmpNPV aan het einde van het script verwijderd.
Load-script
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;
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
PrjId
NPV
Maak de volgende meting:
=only(Profitability_Index)
Resultatentabel
PrjId
NPV
=only(Profitability_Index)
1
$87039.82
0.87
2
$123513.71
1.24
Project-id 1 heeft een effectieve NPV van $87039,82 en een aanvankelijke investering van $100.000. Daarom is de winstgevenheidsindex gelijk aan 0,87. Omdat het minder is dan 1, is het project niet winstgevend.
Project-id 2 heeft een effectieve NPV van $123513,71 en een aanvankelijke investering van $100.000. Daarom is de winstgevenheidsindex gelijk aan 1,24. Omdat het groter is dan 1, is het project winstgevend.
Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!