Функция скрипта XNPV() принимает конкретные даты, соответствующие каждому движению денежных средств с применением скидки, отличной от указанной процентной скидки. Она отличается от функции NPV(), так как NPV() рассматривает все периоды времени как равные. По этой причине XNPV() дает более точный результат, чем NPV().
Синтаксис:
XNPV(discount_rate, pmt,
date)
Возвращаемые типы данных: числовой. По умолчанию результат будет отформатирован как валюта.
Для расчета XNPV используется следующая формула:
где:
Pi= чистый приход-расход денежных средств в течение одного периода i
d1= дата первого платежа
di = дата i-го платежа
rate = процент скидки
Чистая текущая стоимость (Net Present Value, NPV) используется для расчета текущей общей стоимости будущих потоков движения денежных средств. Чтобы рассчитать NPV, необходимо оценить будущие денежные потоки для каждого периода и определить правильный процент скидки.
XNPV() принимает процентную скидку и несколько значений, упорядоченных по периоду. Приходы (доходы) имеют положительное значение, а расходы (будущие платежи) имеют отрицательное значение. Они производятся в конце каждого периода.
Аргументы
Аргумент
Описание
discount_rate
discount_rate — это процентная ставка примененной скидки.
Значение 0,1 соответствует скидке 10%.
value
Это поле содержит значения денежного потока. Первое значение — это денежный поток в начале, соответствующая дата используется в качестве ссылки для расчета текущего значения для всех будущих денежных потоков.
Примечание к информацииXNPV() не применяет скидку к начальному значению денежного потока. Последующие платежи учитываются на основе года с 365 днями. Эта функция отличается от NPV(), которая применяет скидку к каждому платежу.
date
Это поле содержит дату, когда имел место денежный поток (value, второй параметр). Первое значение используется как начальная дата при расчетах смещения для будущих денежных потоков.
Ограничения:
Если имеются текстовые значения, значения 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.
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!