NPV - 脚本函数在该页面上
NPV() 脚本函数接受折扣率和按期间排序的多个值。在这些计算中,流入(收入)为正值,流出(未来付款)为负值。这些发生在每个周期结束时。
净现值 (NPV) 用于计算未来现金流的当前总价值。为了计算净现值,我们需要估计每个期间的未来现金流,并确定正确的贴现率。NPV() 脚本函数接受贴现率和按期间排序的多个值。在这些计算中,流入(收入)为正值,流出(未来付款)为负值。这些发生在每个周期结束时。
语法:
NPV( discount_rate, value)
返回数据类型: 数字。 默认情况下,结果将被格式化为货币。
净现值的计算公式为:
其中:
R t = 单期净现金流入流出 t
i = 替代投资可能获得的贴现率或回报
t = 定时器周期数
参数
discount_rate
discount_rate 是应用的折扣百分比。
值 0.1 表示 10% 的贴现率。
value
此字段 保存按期间排序的多个期间的值。假设第一个值是期间 1 结束时的现金流,依此类推。
限制:
NPV() 函数具有以下限制:
文本值,NULL 值和缺失值都忽略不计。
现金流量值必须按期间升序排列。
适用场景
NPV() 是一种财务函数,用于检查项目盈利能力并得出其他度量 。当现金流可用作原始数据时,此函数非常有用。
区域设置
除非另有规定,本主题中的示例使用以下日期格式:MM/DD/YYYY。日期格式已经在数据加载脚本中的 SET DateFormat 语句中指定。由于区域设置和其他因素,系统中的默认日期格式可能有所不同。您可以更改以下示例中的格式以满足您的要求。或者,您可以更改加载脚本中的格式以匹配这些示例。有关详细信息,请参阅修改应用程序和脚本的区域设置 。
应用程序中的默认区域设置基于用户配置文件。这些区域格式设置与 Qlik Cloud 用户界面中显示的语言无关。Qlik Cloud 将以与您使用的浏览器相同的语言显示。
如果你是应用程序创建者,你可以为自己创建的应用程序设置默认区域。有关更多信息,请参阅设置 Qlik Cloud 分析 中创建应用程序和脚本所用的首选区域设置 。
示例 1 – 一次性付款(脚本)
加载脚本和结果
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
一个项目及其一个期间的现金流的数据集 ,该数据集加载到名为 CashFlow 的表中。
CashFlow 表中的常驻荷载 ,用于计算名为 NPV 的表中项目的 NPV 字段。
硬编码贴现率为 10%,用于净现值计算。
用于对项目的所有付款进行分组的 Group By 报表。
加载脚本
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;
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
对于在一个周期结束时收到的 1000 美元的单笔付款,在每个周期 10% 的贴现率下,净现值等于 1000 美元除以(1 + 贴现率)。有效净现值等于 909.09 美元
示例 2 – 多次付款(脚本)
加载脚本和结果
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
一个项目及其多个期间的现金流的数据集,该数据集加载到名为 CashFlow 的表中。
CashFlow 表中的常驻荷载,用于计算名为 NPV 的表中项目的 NPV 字段。
硬编码贴现率为 10% (0.1),用于净现值计算。
用于对项目的所有付款进行分组的 Group By 报表。
加载脚本
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;
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
对于在两个周期结束时收到的 1000 美元付款,按每个周期 10% 的贴现率计算,有效净现值等于 1735.54 美元。
示例 3 – 多次付款(脚本)
加载脚本和结果
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
两个项目的贴现率,它被加载到名为 Project 的表中。
按项目 ID 和期间 ID 列出每个项目的多个期间的现金流。如果数据未排序,则可以使用此期间 ID 对记录进行排序。
NoConcatenate 、常驻加载和 Left Join 函数的组合用于创建临时表 tmpNPV 。该表将 Project 和 CashFlow 表的记录合并为一个平面表。此表将重复每个期间的贴现率。
tmpNPV 表中的常驻荷载,用于计算名为 NPV 的表中每个项目的 NPV 字段。
与每个项目关联的单个值贴现率。这是使用 only() 函数检索的,并用于每个项目的净现值计算。
一个 Group By 语句,用于按项目 ID 对每个项目的所有付款进行分组。
为了避免将任何合成或冗余数据加载到数据模型中,将在脚本末尾删除 tmpNPV 表。
加载脚本
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;
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
结果表
1
$2486.85
2
$2042.12
项目 ID 1 预计在三个周期结束时收到 1000 美元的付款,每个周期的贴现率为 10%。因此,有效净现值等于 2486.85 美元。
项目 ID 2 预计在四个时期内以 15% 的贴现率支付两次 500 美元的付款和另外两次 1000 美元的付款。因此,有效净现值等于 2042.12 美元。
示例 4 – 项目盈利能力示例(脚本)
加载脚本和结果
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
两个项目的贴现率和初始投资(期间 0),加载到名为 Project 的表中。
按项目 ID 和期间 ID 列出每个项目的多个期间的现金流。如果数据未排序,则可以使用此期间 ID 对记录进行排序。
NoConcatenate 、常驻加载和 Left Join 函数的组合用于创建临时表 tmpNPV 。该表将 Project 和 CashFlow 表的记录合并为一个平面表。此表将重复每个期间的贴现率。
与每个项目相关的单值贴现率,使用 only() 函数检索,并用于每个项目的净现值计算。
tmpNPV 表中的常驻负载用于计算名为 NPV 的表中每个项目的 NPV 字段。
创建一个额外字段,将净现值除以每个项目的初始投资,以计算项目盈利能力指数。
按项目 ID 分组的 group-by 语句用于对每个项目的所有付款进行分组。
为了避免将任何合成或冗余数据加载到数据模型中,将在脚本末尾删除 tmpNPV 表。
加载脚本
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;
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
创建以下度量:
=only(Profitability_Index)
结果表
1
$87039.82
0.87
2
$123513.71
1.24
项目 ID 1 的有效净现值为 87039.82 美元,初始投资为 100000 美元。因此,盈利能力指数等于 0.87。因为它小于 1,所以该项目不盈利。
项目 ID 2 的有效净现值为 123513.71 美元,初始投资为 100000 美元。因此,盈利能力指数等于 1.24。因为它大于 1,所以项目是有利可图的。
了解详情