Расширение "Инвестиционный анализ"

Расширение предназнаено для выполнения типовых расчётов по оценке эффективности инвестиционных проектов.
Оно позволяет:
автоматизировать построение сценариев денежных потоков инвестиционных проектов;
рассчитать типовые характеристики инвестиционных проектов по заданным сценариям денежных потоков;
проводить комплексное сравнения инвестиционных проектов и сценариев их реализации.
Расширение требует установки файла 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
Оцените публикацию по предложенной шкале
-5  -4  -3  -2  -1  0  +1  +2  +3  +4  +5

Статистика Код