XNPV()-skriptfunktionen accepterar specifika datum som motsvarar varje kassaflöde som rabatt ges för bortsett från rabattsatsen. Detta skiljer sig från NPV()-funktionen eftersom NPV() utgår från att alla tidsperioder är lika. Av denna anledning har XNPV() högre precision än NPV().
Syntax:
XNPV(discount_rate, pmt,
date)
Returnerad datatyp: numeriska. Som standard formateras resultatet som valuta.
Formeln för att beräkna XNPV är:
där:
Pi= nettokassainflöden och -utflöden under en enstaka period i
d1= det första betalningsdatumet
di = det i:e betalningsdatumet
rate = rabattsats
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.
XNPV() 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. Dessa inträffar i slutet av varje period.
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 kassaflödesvärden. Det första värdet antas vara kassaflödet i början, och det motsvarande datumet används som referens för att beräkna aktuellt värde för alla framtida kassaflöden.
Anteckning om informationXNPV() beräknar ingen rabatt för det initiala kassaflödet. Efterföljande betalningar rabatteras utifrån ett 365-dagarsår. Detta skiljer sig från NPV(), där varje betalning rabatteras.
date
Detta fält innehåller det datum då kassaflödet (value, den andra parametern) inträffade. Det första värdet används som startdatum för att beräkna förrskjutningar för framtida kassaflöden.
Begränsningar:
Om det finns textvärden, NULL-värden och saknade värden i något eller båda delarna av ett datapar kommer dataparet att ignoreras.
Användning
XNPV() används vid finansiell modellering för beräkning av det aktuella nettovärdet (NPV) för en investeringsmöjlighet.
På grund av sin högre precision är XNPV att föredra framför NPV för alla typer av finansiella modeller.
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 ett år, i en tabell som heter CashFlow. Det initiala datumet för beräkningen är inställt till 1 juli 2022, med ett nettokassaflöde på 0. Efter ett år inträffar ett kassaflöde på 1000 USD.
En resident load från CashFlow-tabellen, som används för att beräkna XNPV-fältet för projektet i en tabell som heter XNPV.
En hårdkodad rabattsats på 10 % (0,1) används i XNPV-beräkningen.
En Group By-sats används för att gruppera alla betalningar för projektet.
Laddningsskript
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;
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
PrjId
XNPV
Resultattabell
PrjId
XNPV
1
$909.09
Enligt formeln är XNPV-värdet för den första posten 0, och för den andra posten är XNPV-värdet 909,09 USD. Totalt XNPV är 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 ett år, i en tabell som heter CashFlow.
En resident load från CashFlow-tabellen, som används för att beräkna XNPV-fältet för projektet i en tabell som heter XNPV.
En hårdkodad rabattsats på 10 % (0,1) används i XNPV-beräkningen.
En Group By-sats används för att gruppera alla betalningar för projektet.
Laddningsskript
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;
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
PrjId
XNPV
Resultattabell
PrjId
XNPV
1
$1322.21
I det här exemplet erhålls en betalning på 1000 USD på slutet av det första året och en betalning på 500 USD erhålls på slutet av andra året. Med en rabattsats på 10 % per period blir effektiv XNPV 1322,21 USD.
Observerar att endast den första raden med data ska hänvisa till basdatumet för beräkningar. För resten av raderna spelar ordningen ingen roll, eftersom datumparametern används för att beräkna den förbrukade tiden.
Exempel 3 – flera betalningar och oregelbundna kassaflöden (skript)
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
Rabattsatser för två projekt som i en tabell som heter Project.
Kassaflöden för flera perioder för varje projekt efter projekt-ID och datum. Dates-fältet används för att beräkna hur länge respektive rabattsatsen tillämpas för kassaflödet. Bortsett från från den första posten (initialt kassaflöde och datum) spelar posternas ordning ingen roll och om den ändras påverkas inte beräkningarna.
Med en kombination av NoConcatenate, resident loads och Left Join-funktionen skapas en temporär tabell tmpNPV som kombinerar posterna i tabellerna Project och CashFlow till en platt tabell. Den här tabellen kommer att ha repeterade rabattsatser för varje kassaflöde.
En resident load från tmpNPV-tabellen, som används för att beräkna XNPV-fältet för varje projekt i en tabell som heter XNPV.
Den enstaka rabattsatsen som är kopplad till varje projekt hämtas med only()-funktionen och används i XNPV-beräkningen för varje projekt.
En Group By-sats som grupperar efter projekt-ID används för att gruppera alla betalningar och motsvarande datum för varje projekt.
För att undvika att syntetiska eller redundanta data laddas till datamodellen släpps tmpXNPV-tabellen på slutet av skriptet.
Laddningsskript
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;
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
PrjId
XNPV
Resultattabell
PrjId
XNPV
1
$1735.54
2
$278.36
Projekt-ID har ett initialt kassaflöde på 0 USD den 1 juli 2021. Det finns två betalningar på 1000 USD som ska erhållas på slutet av två på varandra följande år, med en rabattsats på 10 % per period. Därför blir effektiv XNPV 1735.54 USD.
Projekt-ID 2 har ett initialt utflöde av 1000 USD (därför används minustecken) den 1 juli 2020. Efter två år förväntas en betalning på 500 USD. Efter två år förväntas ytterligare en betalning på 500 USD. Slutligen förväntas en betalning på 1000 USD den 1 juli 2024. Med rabattsatsen på 15 % blir effektiv XNPV 278,36 USD.
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!