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

XIRR - 脚本函数

XIRR() 函数用于返回聚合内部回报率(每年),以揭示迭代于 group by 子句定义的大量记录上的 pmtdate 表达式的成对数值表示的现金流时间表(不必为周期性的)。 所有付款按 365 天一年年折扣。

Qlik 的 XIRR 函数(XIRR()RangeXIRR() 函数)使用以下方程来求解 Rate 值,以确定正确的 XIRR 值:

XNPV(Rate, pmt, date) = 0

这个方程是用简化版的牛顿法求解的。

语法:  

XIRR(pmt, date )

返回数据类型: 数字

参数
参数 描述
pmt

付款。表达式或字段包含与在 date 中指定的付款时间表对应的现金流。

date 表达式或字段包含与在 pmt 中指定的现金流支付对应的日期时间表。

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

  • 数据对的任意部分或两部分内存在文本值、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 重置为零,并开始在负方向上寻找解。

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

本页面有帮助吗?

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