XIRR - 图表函数
XIRR() 用于返回通过图表维度迭代 pmt 和 date 指定表达式中成对数值表示的现金流(不必为周期性的)时间表(即不一定是周期性的)。 所有付款按 365 天一年年折扣。
Qlik 的 XIRR 函数(XIRR() 和 RangeXIRR() 函数)使用以下方程来求解 Rate 值,以确定正确的 XIRR 值:
XNPV(Rate, pmt, date) = 0
这个方程是用简化版的牛顿法求解的。
语法:
XIRR([TOTAL [<fld {,fld}>]] pmt, date)
返回数据类型: 数字
参数 | 描述 |
---|---|
pmt |
付款。表达式或字段包含与在 date 中指定的付款时间表对应的现金流。 |
date | 表达式或字段包含与在 pmt 中指定的现金流支付对应的日期时间表。 |
TOTAL |
如果在函数参数前面出现单词 TOTAL,则计算给出当前选择项的所有可能值,而不只是属于当前维度值的那些值,即它会忽略图表维度。 通过使用 TOTAL [<fld {.fld}>](其中 TOTAL 限定符后跟一个或多个字段名称作为图表维度变量的子集的列表),您可以创建总可能值的子集。 |
使用此功能时,以下限制适用:
-
pmt 和 date 不能包含聚合函数,除非这些内部聚合包含 TOTAL 限定符。 有关高级嵌套聚合函数的更多信息,请结合指定维度使用 Aggr 高级函数。
-
数据对任意部分或两部分中的文本值,NULL 值和缺失值在整个数据对中忽略不计。
-
此函数需要至少一个有效的负付款和至少一个无效的正付款(具有相应的有效日期)。如果没有提供这些付款,则会返回 NULL 值。
这些主题可以帮助您使用此函数:
-
XNPV - 图表函数:使用此函数可以计算现金流表的聚合净现值。
-
RangeXIRR - 脚本和图表函数:RangeXIRR() 是 XIRR() 函数的等效范围函数。
在 Qlik Sense 客户端托管 的不同版本中,此函数使用的底层算法存在差异。有关算法最近更新的更多信息,请参阅支持文章,请参阅支持文章 XIRR 函数修复和更新。
示例
解释 XIRR 返回值
XIRR 功能通常用于分析一项投资,其中一开始有一笔向外(负)付款,然后是一系列较小的收入(正)付款。以下是一个简化的例子,只有一个负付款和一个正付款:
Cashflow:
LOAD * inline [
Date|Payments
2023-01-01|-100
2024-01-01|110
] (delimiter is '|');
我们首付 100,一年后收回 110。这意味着每年 10% 的回报率。XIRR(Payments, Date) 返回值 0.1。
XIRR 功能的返回值可以为正,也可以为负。对于投资而言,为负的结果表明投资是亏损的。收益或损失的金额可以直接通过在支付字段上进行求和聚合来计算。
在上面的例子中,我们将贷款一年。回报率可以被认为是利息。当你是交易的另一方时(例如,如果你是借款人而不是贷款人),也可以使用 XIRR 的功能。
考虑以下示例:
Cashflow:
LOAD * inline [
Date|Payments
2023-01-01|100
2024-01-01|-110
] (delimiter is '|');
这与第一个示例相同,但进行了反向处理。在这里,我们借入 100,为期一年,并以 10% 的利息偿还。在这个例子中,XIRR 计算返回 0.1 (10%),与第一个例子的值相同。
请注意,在第一个示例中,我们获得了 10 的利润,在第二个示例中我们遇到了 10 的损失,但对于这两个示例,XIRR 功能的返回值都为正。这是因为 XIRR 功能计算交易中隐藏的利息,而不考虑您在交易中处于哪一方。
对于多个解的限制
Qlik 的 XIRR 函数由以下等式定义,在其中求解 Rate 值:
XNPV(Rate, pmt, date) = 0
这个方程有时可能有不止一个解。这被称为“多个 IRR 问题”,由非正常现金流(也称为非常规现金流)引起。以下加载脚本显示了与此相关的一个示例:
Cashflow:
LOAD * inline [
Date|Payments
2021-01-01|-200
2022-01-01|500
2023-01-01|-250
] (delimiter is '|');
在这个例子中,有一个负解和一个正解(Rate = -0.3 和 Rate = 0.8)。XIRR() 将返回 0.8。
当的 Qlik 的 XIRR 功能搜索解时,它从 Rate = 0 开始,并逐步增加速率,直至找到解。如果有一个以上的正解,它将返回遇到的第一个解。如果它找不到正解,它会将 Rate 重置为零,并开始在负方向上寻找解。
请注意保证“正常”现金流,以便只有一个解。“正常”现金流意味着所有具有相同符号(正或负)的付款都在一个连续组中。