# XIRR — функция скрипта

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

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

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

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

Синтаксис:

XIRR(pmt, date )

Возвращаемые типы данных: числовое значение

Аргументы

| Аргумент | Описание |
| --- | --- |
| pmt | Платежи. Выражение или поле, содержащее денежные потоки, соответствующие графику платежей, представленному в элементе date. |
| date | Выражение или поле, содержащее график дат, соответствующих потоку денежных средств, представленному в элементе pmt. |

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

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

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

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

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

* [RangeXIRR — функция скриптa и диаграммы](https://help.qlik.com/ru-RU/sense/November2024/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/Scripting/FinancialAggregationFunctions/XIRR.htm)

#### Скрипт загрузки и результаты

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.

Скрипт загрузки содержит следующее:

* Данные транзакции для серии денежных потоков.

* Используйте функцию XIRR() для расчета годовой внутренней ставки дохода для этих денежных потоков.

Скрипт загрузки

```
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 '|');
 
Cashflow1:
LOAD Year,XIRR(Payments, Date) as XIRR2013  Resident Cashflow Group By Year;
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

* `Year`

* `XIRR2013`

Результирующая таблица

| Год | XIRR2013 |
| --- | --- |
| 2013 | 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` до нуля и начинает поиск решения снова в отрицательном направлении.

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

## Подробнее

* [XNPV — функция скрипта](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/FinancialAggregationFunctions/XNPV.htm)
* [RangeXIRR — функция скриптa и диаграммы](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/RangeFunctions/RangeXIRR.htm)
* [Исправление и обновление функции XIRR](https://community.qlik.com/t5/Member-Articles/XIRR-function-Fix-and-Update/ta-p/2049021)