跳到主要内容 跳到补充内容

XIRR - 图表函数

XIRR() 用于返回通过图表维度迭代 pmtdate 指定表达式中成对数值表示的现金流(不必为周期性的)时间表(即不一定是周期性的)。 所有付款按 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 限定符后跟一个或多个字段名称作为图表维度变量的子集的列表),您可以创建总可能值的子集。

定义聚合范围

使用此功能时,以下限制适用:

  • pmtdate 不能包含聚合函数,除非这些内部聚合包含 TOTAL 限定符。 有关高级嵌套聚合函数的更多信息,请结合指定维度使用 Aggr 高级函数。

  • 数据对任意部分或两部分中的文本值,NULL 值和缺失值在整个数据对中忽略不计。

  • 此函数需要至少一个有效的负付款和至少一个无效的正付款(具有相应的有效日期)。如果没有提供这些付款,则会返回 NULL 值。

这些主题可以帮助您使用此函数:

信息注释

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 重置为零,并开始在负方向上寻找解。

请注意保证“正常”现金流,以便只有一个解。“正常”现金流意味着所有具有相同符号(正或负)的付款都在一个连续组中。

本页面有帮助吗?

如果您发现此页面或其内容有任何问题 – 打字错误、遗漏步骤或技术错误 – 请告诉我们如何改进!