Функция скрипта NPV() принимает процентную скидку и несколько значений, упорядоченных по периоду. Поступления (доходы) имеют положительное значение, а расходы (будущие платежи) имеют отрицательное значение в рамках этих вычислений. Они производятся в конце каждого периода.
Чистая текущая стоимость (Net Present Value, NPV) используется для расчета текущей общей стоимости будущих потоков движения денежных средств. Чтобы рассчитать NPV, необходимо оценить будущие денежные потоки для каждого периода и определить правильный процент скидки. Функция скрипта NPV() принимает процентную скидку и несколько значений, упорядоченных по периоду. Поступления (доходы) имеют положительное значение, а расходы (будущие платежи) имеют отрицательное значение в рамках этих вычислений. Они производятся в конце каждого периода.
Синтаксис:
NPV(discount_rate, value)
Возвращаемые типы данных: числовой. По умолчанию результат будет отформатирован как валюта.
Используется следующая форму расчета чистой текущей стоимости:
где:
Rt= чистый приход-расход денежных средств в течение одного периодаt
i = процент скидки или возврата, который можно получить при альтернативных инвестициях
t = количество периодов времени
Аргументы
Аргумент
Описание
discount_rate
discount_rate — это процентная ставка примененной скидки.
Значение 0,1 обозначает скидку 10%.
value
Это поле содержит значения для нескольких периодов, перечисленные через запятую. Первое значение представляет денежный поток на конец периода 1 и т. д.
Ограничения:
Функция NPV() имеет следующие ограничения:
Текстовые значения, значения NULL и отсутствующие значения игнорируются.
Значения денежного потока должны перечисляться по возрастанию периодов.
Когда это следует использовать
NPV() — это финансовая функция, предназначенная для проверки рентабельности проекта и для получения производных мер. Эта функция полезна, когда сведения о денежных потоках доступны в формате необработанных данных.
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.
Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.
Пример 1. Один платеж (скрипт)
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных одного проекта и его денежного потока за один период, загруженный в таблицу под именем CashFlow.
Резидентная загрузка из таблицы CashFlow, используемая при расчете поля NPV для проекта в таблице под именем NPV.
Жестко запрограммированный процент скидки 10%, используемый при расчете NPV.
Оператор Group By, используемый для группировки всех платежей в проекте.
Скрипт загрузки
CashFlow:
Load
*
Inline
[
PrjId,PeriodId,Values
1,1,1000
];
NPV:
Load
PrjId,
NPV(0.1,Values) as NPV //Discount Rate of 10%
Resident CashFlow
Group By PrjId;
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
PrjId
NPV
Результирующая таблица
PrjId
NPV
1
$909.09
Если имеется один платеж $1000 к получению в конце одного периода со скидкой 10% за период, значение NPV = $1000 / (1 + процент скидки). Эффективное значение NPV равно $909.09
Пример 2. Несколько платежей (скрипт)
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Набор данных одного проекта и его денежного потока за несколько периодов, загруженный в таблицу под именем CashFlow.
Резидентная загрузка из таблицы CashFlow, используемая при расчете поля NPV для проекта в таблице под именем NPV.
Жестко запрограммированный процент скидки 10% (0,1), используемый при расчете NPV.
Оператор Group By, используемый для группировки всех платежей в проекте.
Скрипт загрузки
CashFlow:
Load
*
Inline
[
PrjId,PeriodId,Values
1,1,1000
1,2,1000
];
NPV:
Load
PrjId,
NPV(0.1,Values) as NPV //Discount Rate of 10%
Resident CashFlow
Group By PrjId;
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
PrjId
NPV
Результирующая таблица
PrjId
NPV
1
$1735.54
Если имеются платежи по $1000 к получению в конце двух периодов со скидкой 10 % за период, эффективное значение NPV = $1735.54.
Пример 3. Несколько платежей (скрипт)
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Процентные ставки скидки для двух проектов, загруженных в таблицу под именем Project.
Денежные потоки за несколько периодов для каждого проекта по идентификаторам проекта и периода. Этот идентификатор периода можно использовать для упорядочения записей, если данные не упорядочены сразу.
Комбинация NoConcatenate, резидентных загрузок и функции Left Join для создания временной таблицы tmpNPV. В таблице объединены записи таблиц Project и CashFlow в одну плоскую таблицу. В этой таблице процентные ставки скидки будут повторяться для каждого периода.
Резидентная загрузка из таблицы tmpNPV, используемая при расчете поля NPV для каждого проекта в таблице под именем NPV.
С каждым проектом связана одна процентная ставка скидки стоимости. Она извлекается с помощью функции only() и используется при расчете NPV для каждого проекта.
Оператор Group By, используемый для группировки всех платежей в каждом проекте по идентификатору проекта.
Для предотвращения загрузки синтетических или избыточных данных в модель данных, таблица tmpNPV удаляется в конце скрипта.
Скрипт загрузки
Project:
Load * inline [
PrjId,Discount_Rate
1,0.1
2,0.15
];
CashFlow:
Load
*
Inline
[
PrjId,PeriodId,Values
1,1,1000
1,2,1000
1,3,1000
2,1,500
2,2,500
2,3,1000
2,4,1000
];
tmpNPV:
NoConcatenate Load *
Resident Project;
Left Join
Load *
Resident CashFlow;
NPV:
Load
PrjId,
NPV(Only(Discount_Rate),Values) as NPV //Discount Rate will be 10% for Project 1 and 15% for Project 2
Resident tmpNPV
Group By PrjId;
Drop table tmpNPV;
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
PrjId
NPV
Результирующая таблица
PrjId
NPV
1
$2486.85
2
$2042.12
Для идентификатора проекта 1 ожидаются платежи по $1000 к получению в конце трех периодов со скидкой 10% за период. Таким образом, эффективное значение NPV = $2486.85.
Для идентификатора проекта 2 ожидаются два платежа по $500 и еще два платежа по $1000 за четыре периода со скидкой 15%. Таким образом, эффективное значение NPV = $2042.12.
Пример 4. Пример рентабельности проекта (скрипт)
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Процентные ставки скидки и начальные капиталовложения (период 0) для двух проектов, загруженных в таблицу под именем Project.
Денежные потоки за несколько периодов для каждого проекта по идентификаторам проекта и периода. Этот идентификатор периода можно использовать для упорядочения записей, если данные не упорядочены сразу.
Комбинация NoConcatenate, резидентных загрузок и функции Left Join для создания временной таблицы tmpNPV. В таблице объединены записи таблиц Project и CashFlow в одну плоскую таблицу. В этой таблице процентные ставки скидки будут повторяться для каждого периода.
С каждым проектом связана одна процентная ставка скидки, которая извлекается с помощью функции only() и используется при расчете NPV для каждого проекта.
Резидентная загрузка из таблицы tmpNPV, используемая при расчете поля NPV для каждого проекта в таблице под именем NPV.
Дополнительное поле, которое делит NPV на начальное капиталовложение каждого проекта, создается для расчета индекса рентабельности проекта.
Оператор group by, используемый для группировки по идентификатору проекта, применяется с целью группировки всех платежей для каждого проекта.
Для предотвращения загрузки синтетических или избыточных данных в модель данных, таблица tmpNPV удаляется в конце скрипта.
Скрипт загрузки
Project:
Load * inline [
PrjId,Discount_Rate, Initial_Investment
1,0.1,100000
2,0.15,100000
];
CashFlow:
Load
*
Inline
[
PrjId,PeriodId,Values,
1,1,35000
1,2,35000
1,3,35000
2,1,30000
2,2,40000
2,3,50000
2,4,60000
];
tmpNPV:
NoConcatenate Load *
Resident Project;
Left Join
Load *
Resident CashFlow;
NPV:
Load
PrjId,
NPV(Only(Discount_Rate),Values) as NPV, //Discount Rate will be 10% for Project 1 and 15% for Project 2
NPV(Only(Discount_Rate),Values)/ Only(Initial_Investment) as Profitability_Index
Resident tmpNPV
Group By PrjId;
Drop table tmpNPV;
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
PrjId
NPV
Создайте следующую меру:
=only(Profitability_Index)
Результирующая таблица
PrjId
NPV
=only(Profitability_Index)
1
$87039.82
0.87
2
$123513.71
1.24
Для идентификатора проекта 1 эффективное значение NPV равно $87039.82, а начальное капиталовложение — $100000. Таким образом, индекс рентабельности равен 0.87. Так как он меньше 1, проект является нерентабельным.
Для идентификатора проекта 2 эффективное значение NPV равно $123513.71, а начальное капиталовложение — $100000. Таким образом, индекс рентабельности равен 1.24. Так как он больше 1, проект является рентабельным.
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!