# XIRR - 圖表函數

XIRR() 會針對圖表維度上反覆運算的運算式的配對數字 (以 pmt 和 date 表示) 所代表的現金流量排程 (不一定是定期) 傳回彙總的內部報酬率 (每年)。 所有支出均按照 1 年 365 天攤算。

Qlik 的 XIRR 功能 (XIRR() 和 RangeXIRR() 函數) 使用解開 `Rate` 值的下列方程式，以判定正確的 XIRR 值：

`XNPV(Rate, pmt, date) = 0`

會使用 Newton 方法的簡化版本解開方程式。

語法：

XIRR([TOTAL [&lt;fld {,fld}&gt;]] pmt, date)

傳回的資料類型： 數值

引數

| 引數 | 描述 |
| --- | --- |
| pmt | 付款。包含對應於 date 中提供之付款排程的現金流量的運算式或欄位。 |
| date | 包含對應於 pmt 中提供之現金流量付款的日期排程的運算式或欄位。 |
| TOTAL | 如果單字 TOTAL 位於函數引數之前，則會在提供現行選項的所有可能值上進行計算，而不僅僅是關於目前維度值的那些選項，也就是說，它會忽略圖表維度。<br><br>透過使用 TOTAL [&lt;fld {.fld}&gt;] (其中 TOTAL 限定詞後面是做為圖表維度變數子集之一或更多欄位名稱的清單)，您可建立總可能值的子集。<br><br>[定義彙總範圍](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

使用此函數時，適用下列限制：

* 除非內部彙總包含 TOTAL限定詞，否則 pmt 與 date 不可包含彙總函數。 如需更進階的巢狀彙總，請結合使用進階函數 Aggr 與指定維度。

* 若資料配對中有任一資料是 (或兩個都是) 文字值、NULL 值及遺漏值，會導致整個資料配對被忽略。

* 此函數需要至少一個有效負值和至少一個有效正值付款 (連同對應的有效日期)。若未提供這些付款，會傳回 NULL 值。

這些主題可能可協助您使用此函數：

* [XNPV - 圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FinancialAggregationFunctionsInCharts/xnpv.htm)：使用此函數計算現金流排程的彙總淨現值。

* [RangeXIRR 指令碼與圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/RangeFunctions/RangeXIRR.htm)：RangeXIRR() 是 XIRR() 函數的同等範圍函數。

資訊備註

如需更多關於此函數使用之基礎演算法最近更新的資訊，請參閱支援文章 [XIRR 函數修正和更新](https://community.qlik.com/t5/Member-Articles/XIRR-function-Fix-and-Update/ta-p/2049021)。

## 範例

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FinancialAggregationFunctionsInCharts/xirr.htm)

#### 載入指令碼和圖表運算式

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 包含現金流交易的資料集。

* 儲存在稱為 `Cashflow` 之表格中的資訊。

載入指令碼

```
Cashflow:
LOAD 2013 as Year, * inline [
Date|Payments
2013-01-01|-10000
2013-03-01|3000
2013-10-30|4200
2014-02-01|6800
] (delimiter is '|');
```

結果

請執行下列動作：

載入資料並開啟工作表。建立新的表格並新增下列計算作為量值：

`=XIRR(Payments, Date)`

結果表格

| =XIRR(Payments, Date) |
| --- |
| 0.5385 |

## 解譯 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` 重設為零並開始以負向搜尋解決方案。

請注意，「正常」現金流保證只有一個解決方案。「正常」現金流表示具有相同符號 (正或負) 的所有款項都在連續的群組中。

## 瞭解更多資訊

* [IRR - 圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FinancialAggregationFunctionsInCharts/irr.htm)
* [Aggr - 圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm)
* [XIRR 函數修正和更新](https://community.qlik.com/t5/Member-Articles/XIRR-function-Fix-and-Update/ta-p/2049021)