# XIRR — функция диаграммы

XIRR() возвращает агрегированную внутреннюю ставку доходов (годовую) для графика потоков денежных средств (не обязательно периодических), представленных парными числами в выражениях, выданных элементами pmt и date, повторяемыми в измерениях диаграммы. Все платежи учитываются на основе года с 365 днями.

В Qlik функционал XIRR (функции XIRR() и RangeXIRR()) использует следующее уравнение, решение которого становится значением `Rate`, чтобы определить правильное значение XIRR:

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

Для решения уравнения используется упрощенная версия метода Ньютона.

Синтаксис:

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/ru-RU/sense/May2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

При работе с этой функцией действуют следующие варианты:

* Элементы pmt и date не должны содержать функции агрегирования, если только внутреннее агрегирование не содержит префикс TOTAL. Для получения более расширенных вложенных агрегирований необходимо использовать расширенную функцию Aggr вместе с указанным измерением.

* Текстовые значения, значения NULL и отсутствующие значения в какой-либо или обеих частях пары значений приводят к игнорированию всей пары значений.

* Для этой функции требуется хотя бы один допустимый отрицательный и хотя бы один допустимый положительный платеж (с соответствующими допустимыми датами). Если такие платежи отсутствуют, возвращается значение NULL.

Эти раздел помогут в работе с этой функцией:

* [XNPV — функция диаграммы](https://help.qlik.com/ru-RU/sense/May2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FinancialAggregationFunctionsInCharts/xnpv.htm): используйте эту функцию для расчета агрегированного чистого текущего значения для графика потоков денежных средств.

* [RangeXIRR — функция скриптa и диаграммы](https://help.qlik.com/ru-RU/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/RangeFunctions/RangeXIRR.htm): RangeXIRR() — это эквивалент функции XIRR() для выборок.

Примечание к информации

В разных версиях Qlik Sense под управлением клиента существуют различия в базовом алгоритме, используемом этой функцией. Для получения дополнительной информации о последних обновлениях алгоритма см. статью службы поддержки [Исправление и обновление функции XIRR](https://community.qlik.com/t5/Member-Articles/XIRR-function-Fix-and-Update/ta-p/2049021).

## Пример

[](https://help.qlik.com/en-US/sense/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 определяется следующим уравнением, решением которого является значение `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.

Когда функция XIRR в Qlik выполняет поиск решения, она начинает с `Rate` = 0 и постепенно увеличивает ставку, пока не будет найдено решение. Если положительных решений несколько, будет возвращено решение, найденное первым. Если не удается найти положительное решение, то функция сбрасывает `Rate` до нуля и начинает поиск решения снова в отрицательном направлении.

Обратите внимание, что «нормальный» поток движения денежных средств гарантированно имеет только одно решение. «Нормальный» поток денежных средств означает, что все платежи с одинаковым знаком (положительные или отрицательные) относятся к непрерывной группе.

## Подробнее

* [IRR — функция диаграммы](https://help.qlik.com/ru-RU/sense/May2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FinancialAggregationFunctionsInCharts/irr.htm)
* [Aggr — функция диаграммы](https://help.qlik.com/ru-RU/sense/May2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm)
* [Исправление и обновление функции XIRR](https://community.qlik.com/t5/Member-Articles/XIRR-function-Fix-and-Update/ta-p/2049021)