XNPV - スクリプト関数このページ上
XNPV() スクリプト関数は、割引される各キャッシュフローに対応する特定の日付と、割引率を取得します。これは NPV() 関数とは違います。NPV() はすべての期間が同等であると仮定するためです。このため、XNPV() は NPV() より正確です。
構文:
XNPV( discount_rate, pmt,
date)
戻り値データ型: 数値 既定では、結果は通貨としてフォーマットされます。
XNPV を計算するための式:
次のような前提です:
正味現在価値 (NPV) は、将来のキャッシュ フローの現行合計価値を計算するのに使用されます。NPV を計算するには、各期間に対して将来のキャッシュ フローを推測して、正しい割引率を決定する必要があります。
XNPV() は、期間順の割引率と複数の値を取得します。インフロー (収入) はプラス、アウトフロー (将来の支払い) はマイナスの値であると仮定しています。これらは、各期間の終わりに発生します。
引数
discount_rate
discount_rate は、適用された割引のパーセントです。
値 0.1 は、10% の割引率を示します。
value
この項目にはキャッシュフロー価値が保持されます。最初の値は開始時のキャッシュフローとし、対応日付はすべての将来キャッシュフローの現在価値を計算するための基準として使用されます。
情報メモ XNPV() は、初期キャッシュフローを割引しません。その後の支払いは、年 365 日の日割り計算で割り引かれます。これは、すべての支払いが割り引かれる NPV() とは異なります。
date
この項目は、キャッシュフロー (value 、2 番目のパラメータ) が発生する日付を保持します。最初の値は、将来のキャッシュフローのオフセットを計算するための開始日として使用されます。
制限事項:
一対のデータのどちらか、または両方にテキスト値、NULL 値、欠落している値がある場合、対のデータが無視されます。
使用に適しているケース
地域の設定
特に指定のない限り、このトピックの例では次の日付書式を使用しています: MM/DD/YYYY。日付書式は、データ ロード スクリプトの SET DateFormat ステートメントで指定されています。既定の日付書式は、地域の設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。
App の既定の地域設定は、Qlik Sense がインストールされているコンピューターまたはサーバーの地域システム設定に基づいています。アクセスしている Qlik Sense サーバーがスウェーデンに設定されてい場合、データ ロード エディターは、日付、時間、および通貨にスウェーデンの地域設定を使用します。これらの地域の書式設定は、Qlik Sense ユーザー インターフェースに表示される言語とは関係ありません。Qlik Sense は使用しているブラウザと同じ言語で表示されます。
例 1 - 単一の支払い (スクリプト)
ロード スクリプトと結果
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
1 件のプロジェクトと 1 年のそのキャッシュフローのデータセットで、CashFlow という名前のテーブルに入っています。計算の開始日は 2022 年 7 月 1 日に設定されており、正味キャッシュフローは 0 です。1 年後、1000 ドルのキャッシュフローが発生します。
CashFlow テーブルからの resident load で、XNPV という名前のプロジェクトの XNPV 項目を計算するのに使用されます。
ハードコードされた割引率 10% (0.1) で、これは XNPV 計算で使用されます。
Group By ステートメントは、プロジェクトのすべての支払いをまとめるのに使用されます。
ロード スクリプト
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;
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
式によると、1 番目のレコードの XNPV 値は 0、2 番目のレコードの XNPV 値は 909.09 ドルです。そのため、XNPV の合計は 909.09 ドルとなります。
例 2 – 複数支払い (スクリプト)
ロード スクリプトと結果
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
1 件のプロジェクトと 1 年のそのキャッシュフローのデータセットで、CashFlow という名前のテーブルに入っています。
CashFlow テーブルからの resident load で、XNPV という名前のプロジェクトの XNPV 項目を計算するのに使用されます。
ハードコードされた割引率 10% (0.1) で、これは XNPV 計算で使用されます。
Group By ステートメントは、プロジェクトのすべての支払いをまとめるのに使用されます。
ロード スクリプト
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;
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
この例では、1 年目の終わりに 1000 ドル、2 年目の終わりに 500 ドルの支払いを受けています。期間あたりの割引率が 10% であるため、有効な XNPV は 1322.21 となります。
計算の基準日を指すのは最初の行のデータのみであることに注意してください。その他の行については、データ パラメータが経過期間を計算するのに使用されるため、順序は重要ではありません。
例 3 – 複数支払いと不定期のキャッシュフロー (スクリプト)
ロード スクリプトと結果
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
Project というテーブルの 2 つのプロジェクトの割引率。
プロジェクト ID と日付別の、各プロジェクトに対する複数の期間のキャッシュフロー。Dates 項目は、割引率がキャッシュフローに割り当てられる期間を計算するのに使用されます。最初のレコード (最初のキャッシュフローと日付) を除けば、レコードの順序は重要ではなく、変更しても計算には影響しません。
NoConcatenate 、Resident loads、および Left Join 関数、臨時テーブルの組み合わせを使って、tmpNPV が作成されます。これは、1 つのフラット テーブルに Project と CashFlow テーブルのレコードを組み合わせます。このテーブルでは、各キャッシュフローに対して割引率が繰り返されます。
tmpNPV テーブルからの resident load で、XNPV という名前の各プロジェクトの XNPV 項目を計算するのに使用されます。
各プロジェクトに関連付けられた単一値の割引率で、これは、only() 関数を使って取得され、各プロジェクトに対する XNPV 計算で使用されます。
Group By ステートメント (プロジェクト ID 別にグループ化) は、各プロジェクトのすべての支払いと対応する日付をまとめるのに使用されます。
データ モデルに合計または重複データがロードされないようにするため、tmpXNPV テーブルがスクリプトの終わりに削除されます。
ロード スクリプト
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;
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
結果テーブル
1
$1735.54
2
$278.36
プロジェクト ID 1 は、2021 年 7 月 1 日に初期キャッシュフローが 0 ドルでした。期間あたりの割引率 10% で、2 年連続年度末に 1000 ドルの支払いを受け取ることになっています。そのため、有効な XNPV は 1735.54 です。
プロジェクト ID 2 は、2021 年 7 月 1 日に初期キャッシュフローが 1000 ドルでした (そのためマイナス記号となっています)。2 年後、500 ドルが支払われることになっています。3 年後、500 ドルがさらに支払われます。最後に、2024 年 7 月 1 日に 1000 ドルの支払いが見込まれています。割引率が 15% であるため、有効な XNPV は 278.36 となります。
参照先: