Функция XNPV() возвращает агрегированную чистую текущую стоимость для графика потоков денежных средств (необязательно регулярных), представленных парными числами в элементах pmt и date. Все платежи учитываются на основе года с 365 днями.
Синтаксис:
XNPV(discount_rate, pmt,
date)
Возвращаемые типы данных: числовое значение
Примечание к информацииПо умолчанию результат будет отформатирован как валюта.
Для расчета XNPV используется следующая формула:
где:
Pi= чистый приход-расход денежных средств в течение одного периода i
d1= дата первого платежа
di = дата i-го платежа
rate = процент скидки
Чистая текущая стоимость (Net Present Value, NPV) используется для расчета текущей общей стоимости будущих потоков движения денежных средств с учетом ставки дисконта. Для расчета XNPV необходимо оценить будущие потоки движения денежных средств с соответствующими датами. После этого для каждого платежа применяется сложная ставка дисконта на основе даты платежа.
Выполнение агрегирования XNPV для серии платежей выполняется аналогично агрегированию суммы этих платежей. Разница заключается в том, что каждая сумма модифицируется (или «дисконтируется») в соответствии с выбранной дисконтной ставкой (подобно процентной ставке) и с тем, насколько далеко в будущем ожидается платеж. Выполнение XNPV с параметром discount_rate=0 дает значение XNPV, равное результату операции суммирования (Sum) (платежи не модифицируются перед суммированием). В общем, чем ближе значение discount_rate к нулю, тем ближе результат XNPV к результату агрегирования суммы.
Аргументы
Аргумент
Описание
discount_rate
discount_rate — годовая ставка дисконта, на которую должны уменьшаться платежи.
Значение 0,1 соответствует скидке 10%.
pmt
Платежи. Выражение или поле, содержащее денежные потоки, соответствующие графику платежей, представленному в элементе date. Положительные значения воспринимаются рассматриваются как доходы, а отрицательные — как расходы.
Примечание к информацииXNPV() не уменьшает начальный поток денежных средств, так как он всегда происходит в дату начала. Последующие платежи учитываются на основе года с 365 днями. Эта функция отличается от функции NPV(), которая также применяет скидку к первому платежу.
date
Выражение или поле, содержащее график дат, соответствующих потоку денежных средств, представленному в элементе pmt. Первое значение используется как начальная дата при расчетах смещения для будущих денежных потоков.
При работе с этой функцией действуют следующие варианты:
Текстовые значения, значения NULL и отсутствующие значения в какой-либо или обеих частях пары значений приводят к игнорированию всей пары значений.
Когда это следует использовать
XNPV() используется при финансовом моделировании для расчета чистой текущей стоимости (NPV) инвестиционной возможности.
Благодаря более высокой точности XNPV этой функции отдается предпочтение перед NPV для всех типов финансовых моделей.
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.
Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.
Пример 1. Один платеж (скрипт)
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных одного проекта и его денежного потока за один год в таблице под именем CashFlow. В качестве начальной даты для расчета задано 1 июля 2022 года со значением денежного потока 0. Через год регистрируется денежный поток $1000.
Резидентная загрузка из таблицы CashFlow, используемая при расчете поля XNPV для проекта в таблице под именем XNPV.
Жестко запрограммированный процент скидки 10% (0,1), используемый при расчете XNPV.
Оператор Group By используется для группировки всех платежей в проекте.
Скрипт загрузки
CashFlow:
Load
*
Inline
[
PrjId,Dates,Values
1,'07/01/2022',0
1,'07/01/2023',1000
];
XNPV:
Load
PrjId,
XNPV(0.1,Values,Dates) as XNPV //Discount Rate of 10%
Resident CashFlow
Group By PrjId;
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
PrjId
XNPV
Результирующая таблица
PrjId
XNPV
1
$909.09
Согласно формуле, XNPV для первой записи имеет значение 0, а для второй записи XNPV = $909.09. Таким образом, общая величина XNPV составила $909.09.
Пример 2. Несколько платежей (скрипт)
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных одного проекта и его денежного потока за один год в таблице под именем CashFlow.
Резидентная загрузка из таблицы CashFlow, используемая при расчете поля XNPV для проекта в таблице под именем XNPV.
Жестко запрограммированный процент скидки 10% (0,1), используемый при расчете XNPV.
Оператор Group By используется для группировки всех платежей в проекте.
Скрипт загрузки
CashFlow:
Load
*
Inline
[
PrjId,Dates,Values
1,'07/01/2022',0
1,'07/01/2024',500
1,'07/01/2023',1000
];
XNPV:
Load
PrjId,
XNPV(0.1,Values,Dates) as XNPV //Discount Rate of 10%
Resident CashFlow
Group By PrjId;
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
PrjId
XNPV
Результирующая таблица
PrjId
XNPV
1
$1322.21
В этом примере платеж $1000 получен в конце первого года, а платеж $500 получен в конце второго года. Так как действует скидка 10% за период, фактическое значение XNPV составляет $1322.21.
Обратите внимание, что только первая строка данных должна ссылаться на базовую дату для расчетов. Для остальных строк порядок не имеет значения, так как параметр даты используется для расчета истекшего периода.
Пример 3. Несколько платежей и нерегулярные денежные потоки (скрипт)
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Процентные ставки скидки для двух проектов в таблице под именем Project.
Денежные потоки за несколько периодов для каждого проекта по идентификаторам проекта и датам. Поле Dates используется для расчета продолжительности периода, для которого к денежному потоку применяется скидка. Помимо первой записи (начальный денежный поток и дата), порядок записей не имеет значения, и его изменение не повлияет на расчеты.
С использованием комбинации NoConcatenate, резидентных загрузок и функции Left Join создается временная таблица tmpNPV, которая объединяет записи таблиц Project и CashFlow в одну плоскую таблицу. В этой таблице процентные ставки скидки будут повторяться для каждого денежного потока.
Резидентная загрузка из таблицы tmpNPV, используемая при расчете поля XNPV для каждого проекта в таблице под именем XNPV.
Одна процентная ставка скидки, связанная с каждым проектом, извлекается с помощью функции only() и используется при расчете XNPV для каждого проекта.
Оператор Group By, используемый для группировки по идентификатору проекта, применяется с целью группировки всех платежей и соответствующих дат для каждого проекта.
Для предотвращения загрузки синтетических или избыточных данных в модель данных, таблица tmpXNPV удаляется в конце скрипта.
Скрипт загрузки
Project:
Load * inline [
PrjId,Discount_Rate
1,0.1
2,0.15
];
CashFlow:
Load
*
Inline
[
PrjId,Dates,Values
1,'07/01/2021',0
1,'07/01/2022',1000
1,'07/01/2023',1000
2,'07/01/2020',0
2,'07/01/2023',500
2,'07/01/2024',1000
2,'07/01/2022',500
];
tmpXNPV:
NoConcatenate Load *
Resident Project;
Left Join
Load *
Resident CashFlow;
XNPV:
Load
PrjId,
XNPV(Only(Discount_Rate),Values,Dates) as XNPV //Discount Rate will be 10% for Project 1 and 15% for Project 2
Resident tmpXNPV
Group By PrjId;
Drop table tmpXNPV;
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
PrjId
XNPV
Результирующая таблица
PrjId
XNPV
1
$1735.54
2
$278.36
Для идентификатора проекта 1 имеется начальный денежный поток $0 от 1 июля 2021 года. Имеются два платежа $1000 к получению в конце двух последующих лет со скидкой по 10% за период. Таким образом, фактическое значение XNPV составляет $1735.54.
Идентификатор проекта 2 содержит начальный расход $1000 (со знаком «минус») от 1 июля 2020 года. Через два года ожидается платеж $500. Через три года ожидается еще один платеж $500. В заключение 1 июля 2024 года ожидается платеж $1000. Так как действует скидка 10% за период, фактическое значение XNPV составляет $1322.21.
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!