Моделирование ивестиционных проектов


Приложение предназначено для простого моделирования инвестиционных проектов с выводом обощающей и детализированной информации по каждому проекту и каждому возможному сценарию его развития.
Предполагается, что в одном сеансе сравнивается несколько проектов и для каждого из них может быть задано несколько сценариев развития. Поэтому единицей вывода результатов является совокупность данных, характеризующих конкретный сценарий конкретного проекта.
Исходной информацией являются общие параметры проекта и модели денежных потоков (МДП) каждого из его сценариев. Отдельно задаются МДП для доходов и расходов проекта. По данным моделей денежного потока для приходов (pm) и расходов (rm) каждого сценария каждого проекта автоматически рассчитываются:
1. числовые оценки денежных потоков приходов (px) и расходов (rx) проекта;
2. дисконтированные потоки приходов (pd) и расходов (rd);
3. дисконтированный (PID) и недисконтированный (PI) индекс прибыльности;
4. дисконтированный (PPD) и недисконтированный (PP) срок окупаемости;
5. чистый денежный поток как разность приходов и расходов каждого периода (cf) и его дисконтированный аналог (cfd);
6. показатели NPV и IRR, соответствующие дисконтированному чистому денежному потоку;

Порядок задания исходных данных


Рассмотрим порядок задания исходных данных на содержимом одного из примеров.
$.x inv
$.n Тестовый проект A
$.a
$.d 03333
/ProektA
* Задание имени проекта
A.$.n Проект A
* Задание ставки дисконтирования проекта
A.$.d 0.1
* Задание параметров сценария 1
* Название сценария
A.osn.n Основной сценарий
* Модель расходов проекта в условных денежных единицах
A.osn.r 2 1 1 1
* Модель приходов  проекта в условных денежных единицах
A.osn.p 0 2 2 2
* Задание параметров сценария 2
* Название сценария
A.pes.n Пессимистичный сценарий
* Модель расходов проекта в условных денежных единицах
A.pes.r 2 -40% +0% +0%
* Модель приходов  проекта в условных денежных единицах
A.pes.p 0 2 +0% +0%
* Задание параметров сценария 3
* Название сценария
A.opt.n Оптимистичный сценарий
* Модель расходов в условных денежных единицах
A.opt.r 2 =50% +0% +0%
* Модель приходов  проекта в условных денежных единицах
A.opt.p 0 2.2 +0% +0%
//

Здесь секция inv01 содержит массив разделов данных расширения ia. Собственно данные проекта заданы в единственном разделе ProektA.
Строки, начинающиеся с символа * являются комментариями. При загрузке данных и выполнении расчётов они полностью игнорируются. В рассматриваемом примере они приведены для упрощения понимая последовательностей кодирования данных.
Каждый параметр начинается с кода проекта. В данном случае рассматривается всего один проект с кодовым обозначением A. Для него задаётся три сценария с кодами osn, pes, opt. Кроме того, существует технический сценарий $, характеризующий общие для проекта параметры, по умолчанию адресуемые всем сценариям.
Имена кода проекта и кода сценария рекомендуется задавать латинскими буквами и цифрами. Первый символ - буква.
Для каждого проекта рекомендуется указывать его название. Имя проекта определяется конструкцией <код-проекта>.$.n В данном случае конструкция A.$.n Проект A указывает, что проект с кодом A называется "Проект A".
В данном случае ставка дисконтирования является общим параметром для всех сценариев проекта. Она задаётся конструкцией <код-проекта>.$.d В данном случае конструкция A.$.d 0.1 указывает, что по умолчанию ставка дисконтирования для каждого сценария равна 0.1.
Ставку дисконтирования можно задать отдельно и для каждого сценария конструкцией <код-проекта>.<код-сценария>.d Если ставка дисконтирования для сценария не задана, то будет использоваться ставка, заданная по умолчанию для всего проекта.
На уровне всего проекта по умолчанию можно задать также модели денежных потоков приходов и расходов. В этом случае, если соответствующая модель не задана, то будет использоваться модель по умолчанию. В данном случае модели потоков прихода и расхода для всего проекта не заданы, поскольку индивидуально задаются для каждого сценария.
В описаниях сценариев аналогичным образом могут быть заданы: название, ставка дисконтирования, модели денежных потоков приходов и расходов. В данном случае для каждого сценария индивидуально задаются: название, а также модели денежных потоков приходов и расходов.
Наиболее важным элементом описания любого сценария являются модели денежных потоков. Каждая такая модель представляет собой последовательность чисел и некоторых условных кодов, используемых для вычисления конкретных значений величин денежного потока.
В рассматриваемом примере для основного сценария (osn) задаются абсолютные значения величин как для приходов (A.osn.p 0 2 2 2), так и для расходов (A.osn.r 2 1 1 1). Для доходов (A.osn.p) эти данные могут интерпретироваться как факт того, что в нулевом периоде доходов нет, а в последующие они составляют по 2 усл. д.е (например, млн. руб). Расходы (A.osn.r) предполагаются в сумме 2 в нулевом периоде и 1 во всех последующих.
Данные денежных потоков могут задаваться также в относительном виде: в процентах к некоторому базовому значению или в виде абсолютного или процентного смещения от предыдущего значения.
В рассматриваемом примере для пессимистичного сценария (pes) ряд расходов задан в виде следующей последовательности: A.pes.r 2 -40% +0% +0%. Это означает, что в первом периоде расходы составят 2 усл. д.е., во втором периоде они будут на 40% меньше, чем в предыдущем и в последующем останутся на том же уровне (+0%). Здесь модель потока основана на указании относительных изменений от предыдущего значения.
Модель расходов оптимистичного сценария задана в смешанном виде: A.opt.r 2 =50% +0% +0%. В этой модели потока предполагается, что в первом периоде расходы составят 2 усл. д.е., во втором периоде будут равны 50% от базы (=50%) и в последующем не изменятся.
Таким образом, указание символа = перед числом или процентом говорит о привязке расчёта к базе - первому числовому значению. В независимости от того, для какого периода указан этот элемент. Если перед числом стоит - или +, то это означает, что данное значение рассчитывается в привязке к предыдущему. В конце числа можно указать знаки % или =. В первом случае число будет интерпретироваться как процент (к предыдущему, если перед числом + или -; к базе, если перед числом стоит =). Если в конце указан знак =, то это означает, что число задаёт абсолютную величину прироста (к предыдущему +/- или к базе = перед числом).
Базовым может быть не только значение в нулевом периоде, но и любое первое числовое значение. Например, если в модели ряда -100% -100% 1000 1200 +20% +10% +10% базой будет значение 1000 - первое числовое значение в модели. Содержательно такой ряд представляет денежный поток, в котором значения в нулевом и первом периодах равны 0 (-100% от базы), во втором периоде равны 1000 (база), в третьем - 1200, в четвёртом +20% к 1200, в пятом +10% к четвёртому периоду, в шестом +10% к значению пятого периода.
Возможность задания относительных изменений существенно упрощает построение гипотетических сценариев, поскольку можно задать именно модель потока, а не предполагаемые абсолютные величины его изменения. В дальнейшем предполагается введение специальных конструкций, позволяющих вычислять элемент потока по данным аналогичного потока в другом сценарии. Например, на 10% больше или 10% меньше, чем в некотором базовом сценарии.

Выходные данные


На основе исходных данных строится отчет, содержащий агрегированную и детальную информацию. В рассматриваемом примере будут получены результаты, которые можно просмотреть по ссылке Результаты расчётов.
Сначала выводится таблица сводных данных, содержащая основные показатели всех сценариев всех проектов. В шапке проекта выводятся его код и название, а также идентификаторы показателей:
disc - ставка дисконтирования;
NPV - чистая приведённая стоимость;
PID - дисконтированный индекс прибыльности;
PPD - дисконтированный срок окупаемости;
IRR - внутренняя норма доходности.
Последующие выходные данные можно смотреть в двух режимах: Таблица или Лента. Режим Лента более удобен при просмотре страницы на экранах смартфонов и автоматически включается, если сайт определил устройство пользователя как смартфон.
Здесь выводятся значения соответствующих показателей для каждого сценария развития проекта. Целое часть значения дисконтированного срока окупаемости означает число периодов, для которых накопленная разность дисконтированных доходов и расходов остаётся отрицательной. Дробная часть означает долю следующего периода, в течение которой указанная разность снижается до нуля. Например, если в рассматриваемом примере период - это год, то PPD равное 3,68 означает, что проект полностью окупится через 3 и 0,68 часть 4-го года.
Далее выводятся детальные сведения по каждому сценарию каждого проекта. Сначала выводится дубль соответствующей строки сводной таблицы, а далее - таблица с детальными данными по проекту: доходы недисконтированные (px) и дисконтированные (pd) с принятой для сценария ставкой дисконтирования; недисконтированные (rx) и дисконтированные (rd) расходы; недисконтированный (cf) и дисконтированный (cfd) чистый денежный поток; разность потоков прихода и расхода нарастающим итогом для недисконтированных (scf) и дисконтированных (scfd) данных. По группе рядов "Окупаемость проекта" можно наглядно видеть на "сломе" какого по номеру периода разность приходов и расходов становится положительной.

Порядок использования модели для собственных целей


Свои модели могут создавать только пользователи, имеющие статус "Писатель". Как получить статус Писатель?
При формировании собственных массивов проще всего просто скопировать данные рассмотренного здесь примера и далее изменить их по собственному усмотрению. Для этого надо просто скопировать приведённый фрагмент кода, вставить его в свою статью и отредактировать её по собственному усмотрению. После завершения ввода и сохранения статьи вызов её для просмотра будет означать выполнение расчётов и вывод результатов.