XIRR — функция диаграммы
XIRR() возвращает агрегированную внутреннюю ставку доходов (годовую) для графика потоков денежных средств (не обязательно периодических), представленных парными числами в выражениях, выданных элементами pmt и date, повторяемыми в измерениях диаграммы. Все платежи учитываются на основе года с 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 предшествует списку из одного или нескольких имен полей, выступающих в качестве подмножества переменных измерения диаграммы, создается подмножество всех возможных значений. |
При работе с этой функцией действуют следующие варианты:
-
Элементы pmt и date не должны содержать функции агрегирования, если только внутреннее агрегирование не содержит префикс TOTAL. Для получения более расширенных вложенных агрегирований необходимо использовать расширенную функцию Aggr вместе с указанным измерением.
-
Текстовые значения, значения NULL и отсутствующие значения в какой-либо или обеих частях пары значений приводят к игнорированию всей пары значений.
-
Для этой функции требуется хотя бы один допустимый отрицательный и хотя бы один допустимый положительный платеж (с соответствующими допустимыми датами). Если такие платежи отсутствуют, возвращается значение NULL.
Эти раздел помогут в работе с этой функцией:
-
XNPV — функция диаграммы: используйте эту функцию для расчета агрегированного чистого текущего значения для графика потоков денежных средств.
-
RangeXIRR — функция скриптa и диаграммы: RangeXIRR() — это эквивалент функции XIRR() для выборок.
В разных версиях 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 определяется следующим уравнением, решением которого является значение 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 до нуля и начинает поиск решения снова в отрицательном направлении.
Обратите внимание, что «нормальный» поток движения денежных средств гарантированно имеет только одно решение. «Нормальный» поток денежных средств означает, что все платежи с одинаковым знаком (положительные или отрицательные) относятся к непрерывной группе.