Funkcja skryptu XNPV() pobiera określone daty odpowiadające każdemu dyskontowanemu przepływowi pieniężnemu z wyjątkiem stawki rabatu. Różni się od funkcji NPV() tym, że NPV() zakłada, że wszystkie okresy są równe. Dlatego XNPV() jest precyzyjniejsza od NPV().
Składnia:
XNPV(discount_rate, pmt,
date)
Typ zwracanych danych: liczbowy. Domyślnie wynik zostanie sformatowany jako waluta.
Wzór na obliczanie XNPV:
gdzie:
Pi = wpływy pieniężne netto - wypływy podczas pojedynczego okresu i
d1= data pierwszej płatności
di = data i-tej płatności
rate = stopa dyskontowa
Wartość bieżąca netto (Net Present Value – NPV) służy do obliczania bieżącej wartości łącznej przyszłego strumienia przepływów pieniężnych. Aby obliczyć NPV, należy oszacować przyszłe przepływy pieniężne dla każdego okresu i określić poprawną stopę dyskontową.
Funkcja XNPV() pobiera stopę dyskontową i kilka wartości uporządkowanych według okresu. Wpływy (przychody) są dodatnie, a wypływy (przyszłe płatności) powinny być wartościami ujemnymi. Występują na końcu każdego okresu.
Argumenty
Argument
Opis
discount_rate
discount_rate jest wartością procentową zastosowanego rabatu.
Wartość 0,1 oznaczałaby stopę dyskontową w wysokości 10%.
value
To pole przechowuje wartości przepływów pieniężnych. Przyjmuje się, że pierwsza wartość reprezentuje przepływ pieniężny na początku, a odnośna data służy jako punkt odniesienia do obliczenia wartości bieżącej dla wszystkich przyszłych przepływów pieniężnych.
InformacjaXNPV() nie dyskontuje początkowego przepływu pieniężnego. Kolejne płatności są dyskontowane na podstawie roku zawierającego 365 dni. W funkcji NPV() jest inaczej, ponieważ w jej przypadku każda płatność jest dyskontowana.
date
To pole zawiera datę dokonania przepływu pieniężnego (value, drugi parametr). Pierwsza wartość określa datę początkową do obliczania przesunięć dla przyszłych przepływów pieniężnych.
Ograniczenia:
Jeśli w jednej lub obu częściach pary danych pojawi się wartość tekstowa, wartości NULL, lub zabraknie którejś z tych wartości, dana para zostanie pominięta.
Kiedy używać
Funkcja XNPV() jest używana w modelowaniu finansowym do obliczania bieżącej wartości netto (NPV) potencjalnej inwestycji.
Funkcja XNPV jest dokładniejsza i dlatego jest preferowana w porównaniu z NPV we wszystkich typach modeli finansowych.
Ustawienia regionalne
Jeżeli nie podano inaczej, w przykładach w tym temacie stosowany jest następujący format daty: MM/DD/RRRR. Format daty jest określony w instrukcji SET DateFormat w skrypcie ładowania danych. Domyślny format daty w Twoim systemie może być inny ze względu na ustawienia regionalne i inne czynniki. Formaty zastosowane w przykładach można zmienić, aby dostosować je do własnych wymagań. Zamiast tego można też zmienić formaty w skrypcie ładowania, aby pasowały do tych przykładów.
Domyślne ustawienia regionalne w aplikacjach są oparte na regionalnych ustawieniach systemu komputera lub serwera, na którym zainstalowano Qlik Sense. Jeśli serwer Qlik Sense, do którego uzyskujesz dostęp, jest ustawiony na Szwecję, Edytor ładowania danych użyje szwedzkich ustawień regionalnych dla dat, godziny i waluty. Te ustawienia regionalne nie są związane z językiem wyświetlanym w interfejsie użytkownika Qlik Sense. Interfejs Qlik Sense będzie wyświetlany w tym samym języku co używana przeglądarka.
Przykład 1 – Pojedyncza płatność (skrypt)
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Zestaw danych jednego projektu i jego przepływy pieniężne dla jednego roku, w tabeli o nazwie CashFlow. Początkowa data do obliczeń jest ustawiona na 1 lipca 2022 r., a przepływ pieniężny netto wynosi 0. Po roku pojawia się przepływ pieniężny w wysokości 1000 $.
Polecenie LOAD z predykatem Resident z tabeli CashFlow, które jest używane do obliczania pola XNPV dla projektu w tabeli o nazwie XNPV.
Wpisana w kod stopa dyskontowa w wysokości 10% (0,1), która jest używana w obliczeniach XNPV.
Polecenie Group By użyte do zgrupowania wszystkich płatności dotyczących projektu.
Skrypt ładowania
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;
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
PrjId
XNPV
Tabela wynikowa
PrjId
XNPV
1
$909.09
Zgodnie ze wzorem, wartość XNPV dla pierwszego rekordu wynosi 0, a wartość XNPV dla drugiego rekordu wynosi 909,09 $. Zatem całkowita wartość XNPV wynosi 909,09 $.
Przykład 2 – Kilka płatności (skrypt)
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Zestaw danych jednego projektu i jego przepływy pieniężne dla jednego roku, w tabeli o nazwie CashFlow.
Polecenie LOAD z predykatem Resident z tabeli CashFlow, które jest używane do obliczania pola XNPV dla projektu w tabeli o nazwie XNPV.
Wpisana w kod stopa dyskontowa w wysokości 10% (0,1), która jest używana w obliczeniach XNPV.
Polecenie Group By użyte do zgrupowania wszystkich płatności dotyczących projektu.
Skrypt ładowania
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;
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
PrjId
XNPV
Tabela wynikowa
PrjId
XNPV
1
$1322.21
W tym przykładzie otrzymano płatność w wysokości 1000 $ na koniec pierwszego roku i płatność w wysokości 500 $ na koniec drugiego roku. Przy stopie dyskontowej na poziomie 10% na okres efektywna wartość XNPV wynosi 1322,21 $.
Należy zauważyć, że tylko pierwszy wiersz danych powinien odnosić się do daty bazowej do obliczeń. W przypadku pozostałych wierszy kolejność jest nieistotna, ponieważ do obliczania okresu, który upłynął, jest używany parametr date.
Przykład 3 – Kilka płatności w nieregularnych przepływach pieniężnych (skrypt)
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Stopy dyskontowe dla dwóch projektów w tabeli o nazwie Project.
Przepływy pieniężne dla kilku okresów dla każdego projektu według identyfikatora projektu i dat. Pole Dates jest używane do obliczania czasu, przez jaki stopa dyskontowa jest stosowana do przepływu pieniężnego. Nie licząc pierwszego rekordu (początkowy przepływ pieniężny i data), kolejność rekordów jest nieistotna, i jej zmiana nie powinna mieć wpływu na wynik obliczeń.
Przy użyciu kombinacji NoConcatenate, poleceń LOAD z predykatem Resident oraz funkcji Left Join zostaje utworzona tymczasowa tabela tmpNPV, która łączy rekordy z tabel Project i CashFlow w jedną płaską tabelę. Będzie ona zawierać stopy dyskontowe dla każdego przepływu pieniężnego.
Polecenie LOAD z predykatem Resident z tabeli tmpNPV, które jest używane do obliczania pola XNPV dla każdego projektu w tabeli o nazwie XNPV.
Pojedyncza stopa dyskontowa powiązana z każdym projektem jest pobierana za pomocą funkcji only() i jest używana w obliczeniach XNPV dla każdego projektu.
Polecenie Group By, grupowanie według identyfikatora projektu, jest używane do grupowania wszystkich płatności i odnośnych dat dla każdego projektu.
Aby uniknąć załadowania do modelu danych syntetycznych lub redundantnych, na końcu skryptu tabela tmpXNPV zostaje usunięta.
Skrypt ładowania
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;
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
PrjId
XNPV
Tabela wynikowa
PrjId
XNPV
1
$1735.54
2
$278.36
Projekt o identyfikatorze 1 ma początkowy przepływ pieniężny w wysokości 0 $ na dzień 1 lipca 2021 r. Na koniec dwóch kolejnych lat mają zostać odebrane dwie płatności po 1000 $ ze stopą dyskontową 10% na okres. Zatem efektywna wartość XNPV wynosi 1735,54 $.
Projekt o identyfikatorze 2 ma początkowy wypływ pieniężny w wysokości 1000 $ (stąd znak minus) 1 lipca 2020 r. Po dwóch latach oczekiwana jest płatność w wysokości 500 $. Po trzech latach oczekiwana jest kolejna płatność w wysokości 500 $. Na koniec, 1 lipca 2024 r., oczekiwana jest płatność w wysokości 1000 $. Przy stopie dyskontowej na poziomie 15% efektywna wartość XNPV wynosi 278,36 $.