Расширение "Инвестиционный анализ"
Расширение предназнаено для выполнения типовых расчётов по оценке эффективности инвестиционных проектов.
Оно позволяет:
автоматизировать построение сценариев денежных потоков инвестиционных проектов;
рассчитать типовые характеристики инвестиционных проектов по заданным сценариям денежных потоков;
проводить комплексное сравнения инвестиционных проектов и сценариев их реализации.
Расширение требует установки файла ia.php (не входит в базовую комплектацию).
Функция mcr() - формирование модели денежного потока
Функция mcr(m) позволяет автоматизировать процессы построения сценариев денежного потока инвестиционного проекта за счёт преобразования модели ряда денежного потока (m) в числовой ряд.
Модель денежного потока представляет собой последовательность числовых и специальным образом построенных нечисловых значений, вычисление которых осуществляется функцией по определённым правилам.
Примеры моделей денежного потока:
2 -40% +0% +0%
2 =50% +0% +0%
При построении последовательных значений модели денежного потока могут использоваться:
отрицательные и положительные числа;
числа со спецсимволами % или = в конце и +,-,= в начале.
Числа без специсимволов интерпретируются как конкретные, не требующие модификации значения.
Одиночный символ = (знак равенства) предполагает копирование предыдущего значения.
Разметка
~x=mcr("1 2 = = 3 =")
@vvt(x)
Вывод
0 |
1 |
2 |
3 |
4 |
5 |
1 |
2 |
2 |
2 |
3 |
3 |
Числа, оканчивающиеся на символ % (знак процента) интерпретируются как процентное значение к предыдущему рассчитанному значению ряда и вычитаемое (-) или прибавляемое (+) к предыдущему значению.
Разметка
~x=mcr("10 -10% 10 +10%")
@vvt(x)
Вывод
0 |
1 |
2 |
3 |
10 |
9 |
10 |
11 |
Символ = (равно) перед числом с символом % (процент) сзади него означает вычисление заданного процента от базового значения - первого числового значения модели при её рассмотрении слева направо.
Разметка
~x=mcr("=90% 10 =80% =70% =60%")
@vvt(x)
Вывод
0 |
1 |
2 |
3 |
4 |
9 |
10 |
8 |
7 |
6 |
В данном примере базовым значением является число 10 - первое числовое значение модели. Все остальные значения вычисляются как заданный процент от него.
Символ = (равно) после числа означает прибавление (вычитание) данного числа из предыдущего значения.
Разметка
~x=mcr("=90% 10 -2= +3= =70%")
@vvt(x)
Вывод
0 |
1 |
2 |
3 |
4 |
9 |
10 |
8 |
11 |
7 |
Функция cfd() - дисконтирование денежного потока
Функция cfd(cf,r) выполняет дисконтирование денежного потока cf (массив или строка чисел) с коэффициентом дисконтирования r.
Разметка
~x=cfd("10 10 10 10",0.1)
@vvt(x)
Вывод
0 |
1 |
2 |
3 |
10 |
9,09 |
8,26 |
7,51 |
Функция npv() - NPV дисконтированного ряда
Функция npv(cf,r) вычисляет NPV дисконтированого с коэффициентом r денежного потока cf.
Разметка
~u=npv("10 10 10 10",0.1)
NPV равно =u
Вывод
NPV равно 34.868519909842
Функция mpi() - индекс доходности
Функция mpi(d,r[,k]) вычисляет индекс доходности рядов доходов d и расходов r с коэффициентом дисконтирования k (по умолчанию равен нулю).
Разметка
~d=massiv("0 10 10 10")~r=massiv("10 5 0 0")
~x=mpi(d,r)
Индекс доходности без дисконтирования равен =x
Вывод
Индекс доходности без дисконтирования равен 2
Разметка
~d=massiv("0 10 10 10")~r=massiv("10 5 0 0")
~x=mpi(d,r,0.1)
Индекс доходности с дисконтированием по ставке 0.1 равен =x
Вывод
Индекс доходности с дисконтированием по ставке 0.1 равен 1.7097107438017
Функция ppd() - срок окупаемости
Функция ppd(d,r[,k]) вычисляет cрок окупаемости рядов доходов d и расходов r с коэффициентом дисконтирования k (по умолчанию равен нулю). Примеры используют ряды доходов и расходов, построенные в предыдущем примере для функции mpi().
Разметка
~x=ppd(d,r)Срок окупаемости без дисконтирования равен =x
Вывод
Срок окупаемости без дисконтирования равен 2.5
Разметка
~x=ppd(d,r,0.1)Срок окупаемости с дисконтированием по ставке 0.1 равен =x
Вывод
Срок окупаемости с дисконтированием по ставке 0.1 равен 2.66
Функция irr() - внутренняя норма доходности
Функция irr(cf[,e]) вычисляет внутреннюю норму доходности денежного потока cf с точность до e (по умолчанию e=0.0001).
Разметка
По данным рядов доходов (d) и расходов (r) из прошлых примеров с помощью функции вычитания векторов vmv расширения "Линейная алгебра" получаем денежный поток:::Доходы
@vvt(d)
:::Расходы
@vvt(r)
~cf=vmv(d,r)
:::Денежный поток
@vvt(cf)
~x=irr(cf)
Внутренняя норма доходности равна =x
Проверяем, вычисляя NPV с данной ставкой дисконтирования
~y=npv(cf,x)
Доходность проекта при ставке дисконтирования =x равна =y
Вывод
По данным рядов доходов (d) и расходов (r) из прошлых примеров с помощью функции вычитания векторов vmv расширения "Линейная алгебра" получаем денежный поток
Доходы
0 |
1 |
2 |
3 |
0 |
10 |
10 |
10 |
Расходы
0 |
1 |
2 |
3 |
10 |
5 |
0 |
0 |
Денежный поток
0 |
1 |
2 |
3 |
-10 |
5 |
10 |
10 |
Внутренняя норма доходности равна 0.55583953857422
Проверяем, вычисляя NPV с данной ставкой дисконтирования
Доходность проекта при ставке дисконтирования 0.55583953857422 равна 9.4617445111744E-5
Функция ia() - пакетные вычисления с загрузкой данных из файла или секции
Функция ia(p) в пакетном режиме выполняет комплексный обсчёт нескольких сценариев нескольких проектов и выводит отчёт. Параметр p должен быть текстовой строкой, включающей разделённые пробелами параметры, заданные в форме ключ:значение. На текущий момент может использовать единственный параметр d, значением которого должен быть указатель на массив исходных данных. Детальное описание порядка подготовки данных для функции ia() и описание выходных данных содержит Инструкция по эксплуатации. Здесь приведём лишь отчёт, полученный по данным рассматриваемого в ней примера.
Разметка
@ia("d:inv/invfs.s~inv01")
Вывод
disc |
NPV |
PID |
PPD |
IRR |
A: Проект A | ||||
osn: Основной сценарий | ||||
0,100 |
0,487 |
1,11 |
3,68 |
0,234 |
pes: Пессимистичный сценарий | ||||
0,100 |
-0,011 |
0,998 |
0 |
0,097 |
opt: Оптимистичный сценарий | ||||
0,100 |
0,984 |
1,22 |
2,95 |
0,363 |
Таблица Лента
Проект A
osn: Основной сценарий
disc |
NPV |
PI |
PID |
PP |
PPD |
IRR |
0,100 |
0,487 |
1,20 |
1,11 |
3 |
3,68 |
0,234 |
code |
sum |
0 |
1 |
2 |
3 |
Доходы от проекта | |||||
px |
6 |
0 |
2 |
2 |
2 |
pd |
4,97 |
0 |
1,82 |
1,65 |
1,50 |
Расходы на проект | |||||
rx |
5 |
2 |
1 |
1 |
1 |
rd |
4,49 |
2 |
0,909 |
0,826 |
0,751 |
Чистый денежный поток | |||||
cf |
1 |
-2 |
1 |
1 |
1 |
cfd |
0,487 |
-2 |
0,909 |
0,826 |
0,751 |
Окупаемость проекта | |||||
scf |
3 |
-2 |
-1 |
0 |
1 |
scfd |
3,68 |
-2 |
-1,09 |
-0,264 |
0,487 |
pes: Пессимистичный сценарий
disc |
NPV |
PI |
PID |
PP |
PPD |
IRR |
0,100 |
-0,011 |
1,07 |
0,998 |
3,80 |
0 |
0,097 |
code |
sum |
0 |
1 |
2 |
3 |
Доходы от проекта | |||||
pm |
0 |
2 |
+0% |
+0% |
|
px |
6 |
0 |
2 |
2 |
2 |
pd |
4,97 |
0 |
1,82 |
1,65 |
1,50 |
Расходы на проект | |||||
rm |
2 |
-40% |
+0% |
+0% |
|
rx |
5,60 |
2 |
1,20 |
1,20 |
1,20 |
rd |
4,98 |
2 |
1,09 |
0,992 |
0,902 |
Чистый денежный поток | |||||
pm |
0 |
2 |
0 |
0 |
|
cf |
0,400 |
-2 |
0,800 |
0,800 |
0,800 |
cfd |
-0,011 |
-2 |
0,727 |
0,661 |
0,601 |
Окупаемость проекта | |||||
scf |
3,80 |
-2 |
-1,20 |
-0,400 |
0,400 |
scfd |
0 |
-2 |
-1,27 |
-0,612 |
-0,011 |
opt: Оптимистичный сценарий
disc |
NPV |
PI |
PID |
PP |
PPD |
IRR |
0,100 |
0,984 |
1,32 |
1,22 |
2,82 |
2,95 |
0,363 |
code |
sum |
0 |
1 |
2 |
3 |
Доходы от проекта | |||||
pm |
0 |
2.2 |
+0% |
+0% |
|
px |
6,60 |
0 |
2,20 |
2,20 |
2,20 |
pd |
5,47 |
0 |
2 |
1,82 |
1,65 |
Расходы на проект | |||||
rm |
2 |
=50% |
+0% |
+0% |
|
rx |
5 |
2 |
1 |
1 |
1 |
rd |
4,49 |
2 |
0,909 |
0,826 |
0,751 |
Чистый денежный поток | |||||
pm |
0 |
2,20 |
0 |
0 |
|
cf |
1,60 |
-2 |
1,20 |
1,20 |
1,20 |
cfd |
0,984 |
-2 |
1,09 |
0,992 |
0,902 |
Окупаемость проекта | |||||
scf |
2,82 |
-2 |
-0,800 |
0,400 |
1,60 |
scfd |
2,95 |
-2 |
-0,909 |
0,083 |
0,984 |
Оцените публикацию по предложенной шкале