NPV()-skriptfunktionen tar en rabattsats och multiplicerar värden ordnade efter period. Inflöden (intäkter) är positiva och utflöden (framtida betalningar) antas vara negativa värden för dessa beräkningar. Dessa inträffar i slutet av varje period.
Det aktuella nettovärdet, eller NPV (Net Present Value), används för att beräkna det aktuella totala värdet för en framtida ström av kassaflöden. För att beräkna NPV behöver vi beräkna framtida kassaflöden för varje period och fastställa korrekt rabattsats. NPV()-skriptfunktionen tar en rabattsats och multiplicerar värden ordnade efter period. Inflöden (intäkter) är positiva och utflöden (framtida betalningar) antas vara negativa värden för dessa beräkningar. Dessa inträffar i slutet av varje period.
Syntax:
NPV(discount_rate, value)
Returnerad datatyp: numeriska. Som standard formateras resultatet som valuta.
Formeln för att beräkna det aktuella nettovärdet är:
där:
Rt= nettokassainflöden och -utflöden under en enstaka period t
i = rabattsats eller avkastning som kan tjänas eller erhållas genom alternativa investeringar
t = antal timerperioder
Argument
Argument
Beskrivning
discount_rate
discount_rate är procentandelen för rabatt som tillämpas.
Ett värde på 0,1 anger en rabattsats på 10 %.
value
Det här fältet innehåller värden för flera perioder sorterade efter period. Det första värdet antas vara kassaflödet vid slutet av period 1 och så vidare.
Begränsningar:
NPV()-funktionen har följande begränsningar:
Textvärden, NULL-värden samt saknade värden ignoreras.
Kassaflödesvärden måste sorteras efter stigande period.
Användning
NPV() är en finansiell funktion som används för att kontrollera lönsamheten för projekt och för att härleda andra mått. Den här funktionen är användbar när kassaflöden finns tillgängliga som rådata.
Lokala inställningar
Om inget annat anges använder exemplen i detta ämne följande datumformat: MM/DD/ÅÅÅÅ. Datumformatet anges i SET DateFormat-satsen i datainläsningsskriptet. Förvald datumformatering kan vara annorlunda i ditt system, på grund av dina regionala inställningar och andra faktorer. Du kan ändra formaten i exemplen nedan så att det passar dina krav. Eller så kan du ändra formaten i ditt laddningsskript så att de matchar dessa exempel.
Standardregionalinställningar i appar baseras på de regionala systeminställningarna för datorn eller servern där Qlik Sense är installerad. Om Qlik Sense-servern du ansluter till är inställd på Sverige så kommer skriptredigeraren använda regionala inställningar för Sverige för datum, tid och valuta. Dessa regionala formatinställningar är inte relaterade till språket som visas i Qlik Sense användargränssnittet. Qlik Sense kommer att visas på samma språk som webbläsaren du använder.
Exempel 1 – enstaka betalning (skript)
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
En datauppsättning med ett projekt och dess kassaflöde för en period som laddas till en tabell som heter CashFlow.
En resident load från CashFlow-tabellen, som används för att beräkna NPV-fältet för projektet i en tabell som heter NPV.
En hårdkodad rabattsats på 10 % som används i NPV-beräkningen.
En Group By-sats som används för att gruppera alla betalningar för projektet.
Laddningsskript
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;
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
PrjId
NPV
Resultattabell
PrjId
NPV
1
$909.09
För en enstaka betalning på 1000 USD som ska erhållas på slutet av en period, till en rabattsats på 10 % per period, är NPV lika med 1000 USD delat med (1 + rabattsatsen). Effektiv NPV motsvarar 909,09 USD.
Exempel 2 – flera betalningar (skript)
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
En datauppsättning med ett projekt och dess kassaflöde för flera perioder som laddas till en tabell som heter CashFlow.
En resident load från CashFlow-tabellen, som används för att beräkna NPV-fältet för projektet i en tabell som heter NPV.
En hårdkodad rabattsats på 10 % (0,1) används i NPV-beräkningen.
En Group By-sats som används för att gruppera alla betalningar för projektet.
Laddningsskript
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;
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
PrjId
NPV
Resultattabell
PrjId
NPV
1
$1735.54
För betalningar på 1000 USD som ska erhållas på slutet av två period, till en rabattsats på 10 % per period, är effektiv NPV lika med 1735,54 USD.
Exempel 3 – flera betalningar (skript)
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
Rabattsatser för två projekt som laddas till en tabell som heter Project.
Kassaflöden för flera perioder för varje projekt efter projekt-ID och period-ID. Detta period-ID kan användas för att sortera posterna om uppgifterna inte är sorterade.
Kombinationen av NoConcatenate, resident loads, och Left Join-funktionen för att skapa en temporär tabell, tmpNPV. Tabellen kombinerar posterna från tabellerna Project och CashFlow till en platt tabell. Rabattsatserna kommer att upprepas i den här tabellen för varje period.
En resident load från tmpNPV-tabellen, som används för att beräkna NPV-fältet för varje projekt i en tabell som heter NPV.
Den enstaka rabattsatsen som är kopplad till varje projekt. Detta hämtas med only()-funktionen och används i NPV-beräkningen för varje projekt.
En Group By-sats som används för att gruppera alla betalningar för varje projekt efter projekt-ID.
För att undvika att syntetiska eller redundanta data laddas till datamodellen släpps tmpNPV-tabellen på slutet av skriptet.
Laddningsskript
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;
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
PrjId
NPV
Resultattabell
PrjId
NPV
1
$2486.85
2
$2042.12
I projekt-ID 1 förväntas betalningar på 1000 USD erhållas på slutet av tre perioder, till en rabattsats på 10 % per period. Därför blir effektiv NPV 2486,85 USD.
I projekt-ID 2 förväntas två betalningar på 500 USD och ytterligare två betalningar på 1000 USD över fyra perioder med en rabattsats på 15 %. Därför blir effektiv NPV 2042,12 USD.
Exempel 4 – exempel på lönsamhet för ett projekt (skript)
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
Rabattsatser och initiala investeringar (period 0) för två projekt som laddas till en tabell som heter Project.
Kassaflöden för flera perioder för varje projekt efter projekt-ID och period-ID. Detta period-ID kan användas för att sortera posterna om uppgifterna inte är sorterade.
Kombinationen av NoConcatenate, resident loads, och Left Join-funktionen för att skapa en temporär tabell, tmpNPV. Tabellen kombinerar posterna från tabellerna Project och CashFlow till en platt tabell. Rabattsatserna kommer att upprepas i den här tabellen för varje period.
Den enstaka rabattsatsen som är kopplad till varje projekt, som hämtas med only()-funktionen och används i NPV-beräkningen för varje projekt.
En resident load från tmpNPV-tabellen används för att beräkna NPV-fältet för varje projekt i en tabell som heter NPV.
Ett extra fält som delar upp NPV efter den inledande investeringen för varje projekt används för att beräkna projektets lönsamhetsindex.
En gruppsats som grupperar efter projekt-ID används för att gruppera alla betalningar för varje projekt.
För att undvika att syntetiska eller redundanta data laddas till datamodellen släpps tmpNPV-tabellen på slutet av skriptet.
Laddningsskript
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;
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
PrjId
NPV
Skapa följande mått:
=only(Profitability_Index)
Resultattabell
PrjId
NPV
=only(Profitability_Index)
1
$87039.82
0.87
2
$123513.71
1.24
Projekt-ID 1 har ett effektivt NPV på 87 039,82 USD och en initial investering på 100 000 USD. Därför är lönsamhetsindexet lika med 0,87. Eftersom det är mindre än 1 är projektet inte lönsamt.
Projekt-ID 2 har ett effektivt NPV på 123 513,71 USD och en initial investering på 100 000 USD. Därför är lönsamhetsindexet lika med 1.24. Eftersom det är större än 1 är projektet lönsamt.
Om du hittar några fel på denna sida eller i innehållet – ett stavfel, ett steg som saknas eller ett tekniskt fel – berätta för oss så att vi kan blir bättre!