|
1. В Fin-Model.comВсе данные собраны на одной странице в очень удобной и понятной системе иерархии папок( далее по тексту группа). Вам не надо метаться между страницами, что бы запомнить связи разных таблиц и запоминать нужные данные из разных страниц для анализа модели.
В группах хранятся компоненты. Компонент это строка с данными по месяцам на весь срок проекта.
Все данные легко собрать в логические структуры с удобным доступом к каждой строчке данных. Вы одними кликом открываете набор данных с которым работаете или скрываете его, если переходите к другому набору данных в проекте. Ни каких сложных настроек - просто сохраняете в один клик текущиее состояние интерфейса: какие папки(группы) открыты/закрыты, какие графики включены, скролл экрана. Клик! И вы сосредоточены на другом наборе строк, а не скролированием экрана в поисках нужной цифры.
Поэтому в Fin-Model.com в таблице данных с тысячей строк и сотней колонок, элементарно найти нужное число, сосредоточиться только на нужных деталях, скрыть ненужные сейчас подробности.
2. В Fin-Model.com максимально упрощены или вообще убраны стандартные, рутинные действия. Не надо прописывать новые строки в формулах как в Exel
Вы просто добавляете строку с данными в нужную папку, или удаляете, или изменяете значения, и в реальном времени финансовая модель пересчитается с учётом изменений и перерисовывает графики для указанных вами наборам данных.
3.Конечно, В Exel есть мощный набор математических функций, развитая система ссылок на ячейки с данными типа SUMM(A1:A12), но зато в Fin-Model.com формулы пишутся так:
(PriceCofe - SebectoimostCoffe) * QuantityClient
и в строке с такой фомулой, будут помесячные значения прибыли от продажи кофе.
Вам нужно расписать месячную зарплату на 3 года с поквартальным повышением зарплаты на 5% выше инфляции? Это будет просто:
SalaryBase * (1 + QRTL_CNT * (Inflation + 0.5))
И для этих формул не важно на какой странице данные, в какой папке, сколько в строке колонок с данными. Согласитесь, что написание и анализ такой формулы в Fin-Model.com в разы понятнее и эффективнее, чем кликанье по ячейкам и сопоставление адресов ячеек в виде AC21 в таблицах на разных страницах как в Exel.
4. Мощность и разнообразие внутренних функций Exel, одновременно является и его ахилесовой пятой в плане безопасности и верификации расчётных данных в финансовых моделях. Все эти нюансы написания, неочевидность переходов, незапоминающиеся и плохопонимаемые ссылки на данные, позволяют легко запутать анализируещего финансовую модель специалиста и добавить, во вроде бы правильную методику вычислений финансовых показателей, искажающие реальность коофициенты.
Преднамеренное завышение дохода, сокращениен издержек, да просто случайная ошибка могут привести к большим потерям инестора.
В Fin-Model.com реализована специально продуманная архитектура для защиты от таких искажающих иньекций кода в расчёте данных. Мы вообще убрали те этапы расчётов, где в Exel возможна искажающая иньекция кода. Во многих местах заменили ручное задание алгоритмов расчётов на автоматическое. А там, где нужно написание формул именно человеком, сделали процесс их анализа и связей максимально прозрачным, понятным и логичным.
5. Первое, что бросается в глаза при сравнении таблиц с данными Fin-Model.com и Exel это графики, внедрённые прямо в тело таблиц.
Конечно, в Exel есть все типы графиков для анализа результатов финансовых моделей. Но Fin-Model.com пошла много дальше.
теперь графики это не только анализ результатов, но и анализ входных данных, промежуточных расчётов, сравнения любых наборов данных прямо в месте их расположения, а не на отдельной странице.
Вспомните бесконечное поле цифр в таблице Exel, случайная ошибка в них вообще незаметна на нём, а на графике, который меняется в реальном времени прямо поверх этой строки вы сразу увидите случайный или ошибочный выброс неправильной цифры, нелогичный или неожиданный для вас тренд изменения данных. Ошибки при вводе данных практически исключаются, анализ любого блока данных сокращается до одного беглого взгляда на график. Эффективность, скорость, надёжность работы аналитика и создателя модели возрастают в разы.
Это набор данных собранных в единую таблицу в виде строк(компонентов) по месяцам со значениями заданными вручую, формулой или ссылкой на другую строку(компонент) данных.
Эти строки данных группируются в разделы по типу расчётов в финансовой модели, логике применения и вида действия.
Проект может содержать одну или несколько моделей, которой и заданы структура, параметры, связи между компонентами для расчёта финансовых параметров.
Проект доступен для просмотра и редактирования только собственнику проекта и тем пользователям, которому он дал на него соответствующие права на соответствующий срок. Эти права и сроки устанавливаются на странице Разрешения
Модель это структура данных и сами данные по которым расчитывается один из вариантов моделирования финансовых показателей проекта.
У проекта может быть несколько моделей, например для сравнения стратегий с разными исходными данными, для анализа минимальных и максимальных финансовых результатов.
Для удобства перебора вариантов стратегий или входных данных, модель можно сдублировать и работать с копией, внося в неё любые изменения.
Данные и настройки модели и её дубликата ни как не связаны
Для анализа показателей нескольких моделей можно выводить графики для сразу нескольких моделей.
Какие графики каких моделей выводить задаются в панели "Графики моделей" которая вызывается из меню Модели->Графики моделей
Основа интерфейса таблица с данными.
Столбцы это данные по месяцам всего установленного диапазона модели.
Строки это разделы, группы и компоненты.
Компоненты - это любая финансовая операция. Данные для компонентов могут задаваться вручную, формулой или ссылкой на другой компонент или группу.
Группа - это объединение компонентов и/или других групп. Значениями в строке группы являются ссуммы всех входящих в неё компонентов помесячно.
Значения группы не могут задаваться пользователем напрямую.
Разделы - это самая верхняяя группа, объединяющая компоненты по типу финансовых расчётов. Например "Расходы", "Доходы", "Зарплата", "Налоги" и тд и тп
Далее по тексту елемент или строка это общее название Компонента, Группы или Раздела.
Каждый тип финансовых расчётов (раздел), для удобства восприятия, имеет свой цвет.
Для удобства анализа данных можно переключить несколько цветовых профилей: преобладание графиков, акцентирование на данных в таблице и среднее между ними.
Графики данных показывают значения по месяцам только у групп и раздела. Эти графики можно включать или скрывать.
Высота графика равна высоте всех открытых групп и компонентов этого раздела. Поэтому она изменяется от минимального в высоту строки, когда закрыты все группы и/или раздел, до высоты всех строк (групп и компонентов) в этом разделе
Каждая строка имеет надпись. Она состоит из нескольких элементов.
1. Название элемента
При её написании можно употреблять любые знаки.
2. Ссылочное имя объекта ( никнэйм ). Оно отделено от имени символом #.
В её написании можно употреблять только заглавные и строчные буквы латинского алфавита без пробелов и символы "_", "-".
Никнэйм будет указан в строке только если он присвоен этому элементу. Никнэйм присваивается элементу, когда в расчётах требуется ссылки на его значения.
Как происходят расчёты и как использовать ссылки смотри пункт Принцип расчётов
Двойным кликом на никнэйм можно выделить и скопировать его в буфер, что бы добавить его в формулы в панели "Редактирование формулы"
3. Символ "F". Его наличие указывает, что значения в этой строке задаются формулой или ссылкой на другой компонент, группу или раздел.
Клик на этот символ "F" открывает окно быстрого просмотра формулы. Для проверки ошибок и анализа финансовой модели их можно открыть несколько. они перемещаются по таблице вертикально.
Разделы - это самая верхняяя группа, объединяющая компоненты по типу финансовых расчётов. Например "Расходы", "Доходы", "Зарплата", "Налоги" и тд и тп
При создании нового проекта, по умолчанию, сразу создаются несколько разделов, которые обеспечивают минимально необходимый набор для финансовой модели.
Это разделы: Расходы, Доходы, Зарплата, Налоги, Капитальные расходы с амортизацией, Кредитно-заёмный, Результаты. Есть ещё раздел типа "Данные для информации"
В процессе работы с моделью можно добавлять и удалять разделы разного типа. Исключение составляет только раздел "Результаты" - он может быть только один и не может удаляться.
Изменения параметров раздела, изменение порядка расположения разделов, создания нового раздла, удаление раздела производится в панели "Управление разделами".
Тип раздела поменять нельзя. Он выбирается при создании проекта.
В строке значений раздела находится сумма всех компонентов этого раздела по месячно. Эти значения нельзя задать вручную или формулой или ссылкой.
1. кнопка добавления компонента в раздел. Раскрывает панель создания компонента.
2. кнопка показа/скрытия графика значений раздела. График показывает сумму значений всех компонентов в этом разделе по месяцам
3. кнопка открытия меню команд для раздела
Изменение положение разделов в иерархии производится кнопками:
ALT + Перемещение выделенной группы вверх в рамках своего уровня в своей родительской группе к первому месту в списке
ALT + Перемещение выделенной группы вниз в рамках своего уровня в своей родительской группе к последнему месту в списке
ALT + Перемещение группы на один уровень иерархии выше. Выделенная группа размещается перед своим бывшим родителем
ALT + Перемещение группы на один уровень иерархии ниже. Выделенная группа перемещается в группу следующей за ней, которая находится в этой же родительской группе. Выделенная становится последней в списке потомков группы в которую переместилась. Если ниже нет группы, то группа не перемещается.
Создание, редактирование и удаление группы сразу же сохраняется в базе. Изменения в иерархии структуры групп сохраняются только после нажатия кнопки "Save"
Для отображения изменений в иерархии разделов в главной таблице, необходимо перегрузить страницу.
Рутовый элемент структуры не может добавляться, редактироваться и удаляться.
При нажатии кнопки "Удалить только группу" удаляется только выделенная группа, а вся её внутренняя структура из подгрупп и компонентов сохраняется и переходит к её паренту. Изменения сразу сохраняются в базе.
При нажатии кнопки "Удалить всю группу" удаляется выделенная группа и вся её внутренняя структура из подгрупп и компонентов. Изменения сразу сохраняются в базе.
Группа это объединение компонентов и/или других групп по какому-то логическому или архитектурному принципу.
Тип группы всегда соответствует типу раздела в которой она находится.
Группу можно заблокировать, в этом случае значения группы по месяцам расчитываются и записываюьтся в её строку, но эти данные игнорируются в других расчётах.
В строке значений группы находится сумма всех компонентов входящих в иерархию этой группы по месячно. Значения в группе нельзя задать вручную или формулой или ссылкой.
Каждая группа имеет свой график значений. Графики групп объеденены по разделам. И их размер определяется высотой и шириной площади строк занимаемой разделом.
От минимального - это размер строки раздела, со скрытыми всеми группами и компонентами, до максимального - это размер строки раздела и открытыми всеми строками групп и компонентов.
1. Группирование компонентов по признаку.
2. В группе хранится помесячная сумма всех компонентов входящих эту группу.
3. Графики выводятся только для значений группы.
4. Ссылка на группу в формулах, позволяет изменять значения у компонентов, добавлять, удалять компоненты, которые входят в эту группу. И эти изменения будут пересчитываться, без дополнительных изменений в самих формулах.
В строке есть две кнопки.
1. Кнопка показа/скрытия графика значений группы.
2. Изменение параметров группы.
Изменение положения группы в иерархии раздела, удаление, изменение параметров производится в панели
строка Раздела -> Меню раздела -> Управление группами
Изменение положение группы в иерархии производится кнопками:
ALT + Перемещение выделенной группы вверх в рамках своего уровня в своей родительской группе к первому месту в списке
ALT + Перемещение выделенной группы вниз в рамках своего уровня в своей родительской группе к последнему месту в списке
ALT + Перемещение группы на один уровень иерархии выше. Выделенная группа размещается перед своим бывшим родителем
ALT + Перемещение группы на один уровень иерархии ниже. Выделенная группа перемещается в группу следующей за ней, которая находится в этой же родительской группе. Выделенная становится последней в списке потомков группы в которую переместилась. Если ниже нет группы, то группа не перемещается.
Создание, редактирование и удаление группы сразу же сохраняется в базе. Изменения в иерархии структуры групп сохраняются только после нажатия кнопки "Save"
Для отображения изменений в иерархии разделов в главной таблице, необходимо перегрузить страницу.
При нажатии кнопки "Удалить только группу" удаляется только выделенная группа, а вся её внутренняя структура из подгрупп и компонентов сохраняется и переходит к её паренту. Изменения сразу сохраняются в базе.
При нажатии кнопки "Удалить всю группу" удаляется выделенная группа и вся её внутренняя структура из подгрупп и компонентов. Изменения сразу сохраняются в базе.
Компонент это строка в таблице с набором значений по месяцам заданными вручную или формулой или ссылкой
Компонент может быть заблокирован для участия в расчётах.
График для компонента не выводится, для получения графика для одного или нескольких компонентов нужно создать для них группу, одна из функций которой
вывод графика всех его потомков.
Редактирование параметров компонента и его удаление осуществляется в панели "Редактирование Компонента". Панель вызывается кликом на символе карандаш в строке компонента
Что бы исключить зацикливание в формулах и гарантировать работу ссылок, определена жесткая последовательность пересчёта данных при их изменении или загрузке.
В строку значений группы вносятся только сумма всех её прямых потомков (компонентов и групп). Ручной ввод данных или по формуле в ячейки строки групп запрещён.
В строку значений компонента возможен ручной ввод данных или по формуле.
Расчёт результата происходит в порядке: Сверху в низ по списку разделов в таблице, а в каждом разделе с самого нижнего уровня иерархии до верхнего.
Такая последовательность заполнения значений нужна, потому что компоненты в разделе разнесены по группам, на разных уровнях иерархии и поэтому,
нельзя подсчитать значение суммы потомков непосредственно раздела, пока не подсчитаются суммы потомком групп расположенных ниже по иерархии.
Исключение в последовательности расчётов составляют два типа разделов:
1. Раздел "Результат" всегда расчитывается последним, так как для него нужны уже подготовленные данные со всех разделов. Раздел такого типа может быть только один.
2. Разделы типа "Информационные Данные", всегда считаются первыми. Порядок расчётов этого типа: по списку разделов в порядке сверху в низ, а в разделе с самого нижнего уровня иерархии до верхнего.
В разделах это типа происводятся предварительные расчёты напрямую не связанные с финансовыми расчётами.
В расчётах помимо задаваемых значений используются ссылки на значения. В формулах можно задать ссылку на все помесячные значения строки или на их часть.
Ссылка задаётся специальным параметром для элемента, который называется никнэйм. Полное описание параметра никнэйм сдесь
Пример использования раздела "Информационные Данные" (упрощённый для описания принципа):
Столярная мастерская делает игрушки и подарочный изделия из дерева. Количество продукции одного артикула к разным праздникам разное.
Цены на эти изделия перед празниками увеличиваются из-за спроса, а после падают.
Удобнее и быстрее в разделе типа "Информационные Данные" создать две строки в разделе:
1. Название: "Колличество Игрушка артикул №1". Никнэйм: "Quantity_articul_1"
и ввести значения сколько штук игрушек будет производиться по месяцам.
2. Название: "Цена Игрушка артикул №1". Никнэйм: "Selling_ptice_articul_1"
и ввести значения сколько стоит игрушка будет стоит по месяцам.
3. Название: "Себестоимость Игрушки артикул №1". Никнэйм: "Production_cost_articul_1"
и ввести значения себестоимости изготовления и продвижения игрушки по месяцам.
В разделе типа "Доходы" создать компонент
Название: "Доход от Игрушка артикул №1". Никнэйм: "Profit_articul_1"
и внести формулу: Quantity_articul_1 * Production_cost_articul_1
В разделе типа "Расходы" создать компонент
Название: "Расходы на Игрушку артикул №1". Никнэйм: "Expense_articul_1"
и внести формулу: Quantity_articul_1 * Production_cost_articul_1
После внесения этих строк, расчёты модели доходы, расходы, прибыль, налоги и тд будут автоматически расчитываться и выводиться в суммарные графики значений
Более подробнее о работе с формулами читайте в разделе Формулы
Никнэйм это текстовый указатель (ссылка) на компонет, группу, раздел для использование в формулах.
Никнэйм может содержать только заглавные и строчные латинские буквы (A-Za-z) без пробелов, цифры и символы: "-", "_"
Если значения в этой строке не используются в формулах, никнэйм для этого элемента можно не задавать.
Если никнэйм используется в формулах, то его изменение или удаление будет вызывать ошибку при каждом пересчёте модели.
При этом будет выводиться сообщение об ошибке, подсвечиваться строка в каком месте она произошла, что бы исправить её.
Никнэйм в формулах может использоваться как
1. "MyNickname_1" - Указание всего диапазона месяцев в модели от начала проекта.
В этом случае в формуле для расчёта в каждом месяце, будет браться соответствующее значение месяца из строки значений из "MyNickname_1"
2. "MyNickname_2[3]" - Указание конкретного индекса месяца от начала проекта.
3. "MyNickname_2[5_17]" - Это диапазон в каких ячейках (месяцах) считать формулу.
4. "MyNickname_2[3_]" - диапазон от 3 до конца диапазона месяцев проекта.
Индексы начинаются с 0.
Более подробнее о работе с формулами читайте в разделе Формулы
Базовые параметры это параметры, которые задаются пользователем для модели.
Они нужны, если вам требуется в формулах у многих компонентов использовать одно и тоже значение. Удобно менять параметр для всех формул в одном месте.
У каждой модели свои базовые параметры.
Параметры задаются в панели "Базовые параметры модели".
Базовыми параметрами могут быть любые числовые значения, выражающие любой параметр
например: Налог в процентах, Базовая цена в рублях, Производительность в метрах в час, Колличество в штуках и тд и тп
Список всех возможных Базовых параметров можно увидеть в панели "Редактирование Формулы" по клику на кнопке помощь в разделе "Базовые параметры".
Упрощённый пример применения базовых параметров:
В панели "Создание базовых параметров" создаём параметр. Имя:"Подоходный налог". Никнэйм:"Income_Tax", тип значения проценты.
В панели "Создание базовых параметров" создаём параметр. Имя:"Базовая зарплата столяра". Никнэйм:"Basic_salary_carpenter".
В разделе типа "Налоги" создаём компонент с именем "Значение подоходного налога столяр Иванов И.И.". В формуле этого компонента записываем
Basic_salary_carpenter * ( Income_Tax * 0.01 )
Строка значений заполнится значениями подоходного налога с базовой зарплаты столяра Иванов И.И.
Теперь эти значения будут участвовать в расчётах.
Встроенные параметры это параметры, которые расчитываются внутри модели на основе данных модели.
Встроенные параметры нельзя изменить. Название встроенные параметра регистрозависимое.
Список всех возможных встроенных параметов можно увидеть в панели "Редактирование Формулы" по клику на кнопке помощь в разделе "Встроенные параметры".
| Параметр | Описание |
| MNTH_QNT: | Количество месяцев в проекте |
| MNTH_CNT: | Номер месяца от начала проекта |
| QRTL_CNT: | Номер квартала от начала проекта |
| YEAR_CNT: | Номер года от начала проекта |
| INCOME_By_MONTH: | Массив значений дохода, прихода, поступлений по месяцам |
| SALARY_By_MONTH: | Зарплата по месяцам |
| TAX_By_MONTH: | Налоги по месяцам |
| PROFIT_By_MONTH: | Прибыль по месяцам |
| PROFIT_CUMULATIVE_By_MONTH: | Суммарная прибыль от начала проекта |
| OPERATING_EXPENSES_By_MONTH: | Операционные расходы помесячно |
| EXPENSE_By_MONTH: | Все расходы помесячно |
| EXPENSE_FIXED_By_MONTH: | Постоянные расходы помесячно |
| EXPENSE_VARIABLE_By_MONTH: | Переменные расходы помесячно |
| ASSETS_By_MONTH: | Движение средств по основным средствам |
| ASSETS_COST_By_MONTH: | Сумма первоначальных стоимостей основных средств |
| ASSETS_AMORTIZATION_By_MONTH: | Сумма всех амортизационных отчислений |
| ASSETS_RESIDIAL_By_MONTH: | Сумма всех остатков стоимости основных средств |
| FINANCE_By_MONTH: | Движение средств по основным финансом |
| FINANCE_RECEIVEDMONEY_By_MONTH: | Полученные деньги по месяцам |
| FINANCE_MONTHLYPAYMENT_By_MONTH: | Массив выплат процентов с телом долга помесячно |
| FINANCE_DEBTREMAINS_MONTH: | Сумма остатков долга за кредит |
Упрощённый пример применения Встроенных параметров.
Нужно подсчитать подоходный налог со столяра Иванов И.И. у которого базовая зарплата индексируется каждый квартал на 5 процентов.
Возьмем пример расчёта из "Базовые параметры"
и добавим в формулу компонента с именем "Значение подоходного налога столяр Иванов И.И." добавку к базовой зарплате в зависимости от квартала
( Basic_salary_carpenter + ( Basic_salary_carpenter * 0.05 * QRTL_CNT ) ) * ( Income_Tax * 0.01 )
где:
Basic_salary_carpenter * 0.05 это пять процентов от зарплаты
QRTL_CNT это номер квартала от начала проекта.
Значения QRTL_CNT по месяцам Добавка к зарплате
с 1 по 3 месяц: 0 * 0.05 = 0;
с 4 по 8 месяц: 1 * 0.05 = 0.05;
с 9 по 12 месяц: 2 * 0.05 = 0.1;
с 13 по 15 месяц: 3 * 0.05 = 0.15;
с 16 по 18 месяц: 4 * 0.05 = 0.20;
с 19 по 21 месяц: 5 * 0.05 = 0.25;
и тд...
Математические ореранды это символы обозначающие математические операции.
Представлен их стандартный набор.
| Nickname | Description | | +: | a + b | | -: | a - b | | *: | a * b | | /: | a / b | | ^: | Math.pow(a, b) | | %: | a*b/100 |
Математические функции.
Представлен их стандартный набор.
| Nickname | Description |
| Abs(a) | Абсолютное значение |
| Sin(a) | Возвращает синус угла, заданного в радианах. Возвращаемое значение — число от -1 до 1 |
| Cos(a) | Возвращает косинус угла, заданного в радианах. Возвращаемое значение — число от -1 до 1 |
| Exp(a) | Возвращает число e (приблизительно 2,718) в степени указанного аргумента |
| Pow(a, b) | Возвращает a, возведённое в b |
| Sqrt(a) | Вычисления квадратного корня из числа |
| Max(a, b) | Возвращает наибольшее число из переданных аргументов |
| Min(a, b) | Возвращает наименьшее число из переданных аргументов |
| Round(a) | Округляет число до ближайшего целого числа по классическим математическим правилам |
| Floor(a[0]) | Округляет число до ближайшего меньшего целого числа |
| Ceil(a) | Округляет число до ближайшего большего целого числа |
| Trunc(a) | Возвращает целую часть числа путём отбрасывания дробной части |
| Random(min_val, max_val) | Возвращает случайное значение в укаханном диапазоне |
| Summ(p1,p2,p3....p99) | Возвращает сумму значений массива данных у указанного по Nickname компонента. |
| Average(p1,p2,p3....p99) | Возвращает среднее значение переданных в функцию чисел |
Значения в строке компонента можно задавать с помощью формул.
Формула генерирует значения в каждый месяц этого компонента на весь расчётный диапазон модели. И эти значения учавствуют в расчётах финансовой модели.
Если у компонента есть формула, то в его строке выводится символ "F". Если на ней кликнуть, то появится панель быстрого просмотра формулы.
Формулы могут состоять из любого количества значений, параметров, функций, ссылок.
Для примера, рассмотрим несколько примеров формул:
1) Простейшая формула
"17"
Число 17 запишется во все месяцы этого компонента
2) Формула с использованием внутренних параметров
"10 + QRTL_CNT"
QRTL_CNT - это номер квартала от начала диапазона модели. Счёт начинается с 0
В колонках помесячных значений получатся такие значения:
10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14 14 ..... и тд до конца диапазона недели модели
3) Формула с использованием ссылок.
Компонент в примере №1 имеет никнэйм "Component_1"
Компонент в примере №2 имеет никнэйм "Component_2"
В редакторе Основных параметрах задан параметр с никнэйм "Add_Procent" со значением 5%
К значению колонки компонента №1 добавляется 5 процентов от значения в колонке этого же месяца из строки компонента №2 и добавить номер месяца.
"Component_1 + Component_2 * Add_Procent * 0.01 + MNTH_CNT"
В ячейки этого компонента запишутся значения по месяцам
для 1 месяца: 17 + 10 * 5 * 0.01 + 0 = 17.5
для 2 месяца: 17 + 10 * 5 * 0.01 + 1 = 18.5
для 3 месяца: 17 + 10 * 5 * 0.01 + 2 = 19.5
для 4 месяца: 17 + 11 * 5 * 0.01 + 3 = 20.55
для 5 месяца: 17 + 11 * 5 * 0.01 + 4 = 21.55
для 6 месяца: 17 + 11 * 5 * 0.01 + 5 = 22.55
для 7 месяца: 17 + 12 * 5 * 0.01 + 6 = 23.6
для 8 месяца: 17 + 12 * 5 * 0.01 + 7 = 24.6
для 9 месяца: 17 + 12 * 5 * 0.01 + 8 = 25.6
для 10 месяца: 17 + 13 * 5 * 0.01 + 9 = 26.65
для 11 месяца: 17 + 13 * 5 * 0.01 + 10 = 27.65
для 12 месяца: 17 + 13 * 5 * 0.01 + 11 = 28.65
и тд.
Пользоваться формулами очень удобно и эффективно, но существуют ситуации, в которых применение формул неудобно:
- Если надо менять значения вручную только в нескольких конкретных месяцах.
- Применение формул более ресурсоёмко, по сравнению с уже сформированным массивом данных по месяцах.
- Когда надо зафиксировать значение формул, которые меняются при каждом пересчёте таблицы. Например функция Random().
Эта функция генерирует новые значения каждый раз при её вызове, соответственно данные меняются с каждым пересчётом таблицы.
Что бы зафиксировать значения получаемыми формулой, необходимо просто удалить формулу у этого компонента.
Тогда в массиве данных по месяцам останутся значения от формулы.
Последовательность действий:
- 1. Открыть панель "редактирование параметров компонента"
- 2. Открыть панель "редактирования формулы строки"
- 3. Ввести нужное число или функцию
- 4. Нажать кнопку "Применить"
- 5. Закрыть панель редактирование формулы без сохранения, нажав кнопку "Закрыть"
- 6. Возвращаемся в панель "редактирование параметров компонента". В поле "формула" не должно быть текста формулы или числа
- 7. Нажать в панели "редактирования параметров компонента" кнопку "Закрыть".
Здесь перечислены часто используемые математические функции и приёмы, позволяющие быстро и эффективно создавать проекты и обрабатывать и создавать данные.
В начале описана требуемая задача, а потом её решение.
Требуется обнулять данные в конкретных месяцах для разных компонентов в разных разделах проекта
Нужно создать строку компонента, где установить значения 0 если надо обнулить значение или 1, если надо оставить текущее значение
Например провести вспашку земли только весной и осенью. считаем месяцы с января: 0,0,1,1,1,0,0,0,1,1,0,0
Теперь, умножая эту строку на, например, строки расходы на топливо на вспашку, оплату вспашки трактористу, износ и ремонт навесного оборудования в эти месяцы и тд и тп
получаем данные только по этим месяцам.
| Nickname | Значение осуществления работы по месяцам с начала проекта |
| Is_Work | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
| * |
| Salary | 12000 | 12000 | 12000 | 12000 | 12000 | 12000 | 12000 | 12000 | 12000 | 12000 | 12000 | 12000 |
| = |
| Is_Work*Salary | 0 | 0 | 12000 | 12000 | 12000 | 0 | 0 | 0 | 12000 | 12000 | 0 | 0 |
Требуется обнулять данные в конкретных месяцах для разных компонентов в разных разделах проекта
Нужно создать строку компонента, где установить значения 0 если надо обнулить значение или 1, если надо оставить текущее значение
Например провести вспашку земли только весной и осенью. считаем месяцы с января: 0,0,1,1,1,0,0,0,1,1,0,0
Теперь, умножая эту строку на, например, строки расходы на топливо на вспашку, оплату вспашки трактористу, износ и ремонт навесного оборудования в эти месяцы и тд и тп
получаем данные только по этим месяцам.
| Nickname | Значение осуществления работы по месяцам с начала проекта |
| Is_Work | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
| * |
| Salary | 12000 | 12000 | 12000 | 12000 | 12000 | 12000 | 12000 | 12000 | 12000 | 12000 | 12000 | 12000 |
| = |
| Is_Work*Salary | 0 | 0 | 12000 | 12000 | 12000 | 0 | 0 | 0 | 12000 | 12000 | 0 | 0 |
И эти рабочие месяца очень удобно менять сразу для всех компонентов одновременно.
Хотя можно было бы вручну прописывать для всех в отдельности.
Требуется создать последовательность, когда каждый месяц идёт рост или спад первого значения на Х%
Используемая функция:
Min( MaxValue, ( ( 1 + IncreaseProcent / 100) ^ MNTH_CNT * Start_Value) )
Описание параметров:
| IncreaseProcent | Число процент на сколько будет расти/уменьшаться значения |
| IncreaseProcent / 100 | Перевод процентов в множитель |
| ( 1 + IncreaseProcent / 100 ) | Число основание геометрической прогрессии для расчета увеличения каждый месяц значения на Х% больше предидущего |
| MNTH_CNT | Счётчик месяцев от начала проекта. Последовательность начинается с 0 |
| X^Y | Математическая функция возведения числа Х в степень Y |
| Start_Value | Стартовое значение последовательности, относительно которого будет расти/уменьшаться значения на указанные проценты |
| MaxValue | Максимальное значение, до которого будет расти/уменьшаться значения |
| Min |
Математическая функция, которая возвращает минимальное значение из двух переданных ей операндов
Примеры:
Min(90,34) -> 34. Min(90,95) -> 90
|
Требуется создать последовательность, когда каждый месяц идёт рост или спад первого значения на Х%,
но начало роста должно начаться с 3 месяца, а 1 и 2 месяц значения 0
Такая ситуация встречается, когда, например, нужно указать, что первые два месяца у кафе не было продаж, пока шёл ремонт и подготовка к открытию,
и кафе открылось с 3 месяца от старта проекта. Затем каждый месяц посещаемость росло на 5 процента пока не достигла макимума в 90 процентов от максимальной возможности обслуживания клиентов
Используемая функция:
Min(MaxValue, (IsWork * ( (1+IncreaseProcent/100) ^ ( Max(0,(MNTH_CNT -2)) ) * Start_Value) )
Описание параметров:
| IncreaseProcent | Число процент на сколько будет расти/уменьшаться значения |
| IncreaseProcent / 100 | Перевод процентов в множитель |
| ( 1 + IncreaseProcent / 100 ) | Число основание геометрической прогрессии для расчета увеличения каждый месяц значения на Х% от предыдущего |
| MNTH_CNT | Счётчик месяцев от начала проекта. Последовательность начинается с 0 |
| Max( 0,(MNTH_CNT - 2) ) |
Смещаем счётчик месяцев на -2. и используем математическую функцию, получения максимального значения из двух операндов Max(x,y), заменяем отрицательные значения на 0
получаем из последовательности чисел 0,1,2,3,4,5,6... последовательность 0,0,0,1,2,3,4
|
| (1+IncreaseProcent/100) ^ ( Max(0,(MNTH_CNT -2)) |
Получаем последовательность со смещённым началом старта увеличения арифметической прогрессии на 2 месяца
|
| IsWork * |
Строка компонента, где указано работало ли предприятие в этом месяце
Работа: 1
Не работало: 0
Например, кафе не работало первые два месяца, поэтому создаём последовательность в строке по месяцам 0,0,1,1,1,1,1,1,1,1,1,1,1....
Тогда при умножении на эту строку доходы или расходы на продукты в нерабочие месяцы будут обнуляться.
|
| Start_Value | Стартовое значение последовательности, относительно которого будет расти/уменьшаться значения на указанные проценты |
| MaxValue | Максимальное значение, до которого будет расти/уменьшаться значения |
| Min |
Математическая функция, которая возвращает минимальное значение из двух переданных ей операндов
Примеры:
Min(90,34) -> 34. Min(90,105) -> 90
|
Графики визиализирует значения в строке группы или раздела.
Компоненты не имеют графиков. Значения отдельного компонента можно визуализировать расположив только его в группе.
В разделе может быть много групп и каждая по умолчанию выводит график. График у группы можно отключить кликом на кнопку в строке на символ графика.
Если кликать на символ графика с нажатой клавишей CNTRL, то остальные графики этого раздела переключаются в режим противоположный графику на котором кликается.
То есть если график включился, то остальные в этой группе выключатся иили если график выключается, то остальные включатся.
Графики сгруппированы по разделам.
Вертикальный размер поля (высота), на котором рисуется график, равен сумме высот отображенных в этом разделе строк компонентов, групп и самого раздела.
И, соответственно, высота графиков меняется при открытии или закрытии групп в этом разделе.
Горизонтальный размер (ширина) поля для рисования графиков равна ширине всех месяцев в модели.
Так как размерность значений в разных строках групп могут различаться на порядки, то разность в высоте графиков, если их выводить согласно масштаба значений,
будет очень значительна и более малые графики практически не будут видны.
Поэтому, что бы видеть реальные изменения значений на графиках, все они приводятся к одному масштабу - значения растягиваются от минимальной до максимальной высоты поля вывода графиков.
Что бы отличать графики друг от друга они задаются разными цветами в тонах цвета своего раздела.
Каждый график имеет свой цвет. Что бы соотнести график и строку, к котором у он принадлежит, цвет символа включения/выключения графика в строке группы или раздела имеет тот же цвет что и график.
Цвета графиков в разделе назначаются автоматически в оттенках цвета раздела. Цвет графика берётся из цветовой растяжки от светлого до тёмного тонов цвета этого раздела
Цвет конкретного графика настроить нельзя, потому что колличество графиков в разделе может быть разное количество по мере добавления или уменьшения групп.
Поэтому, перед выводом графиков, тоновая растяжка для разделов делится на количество групп и соответственно для каждой группы получается свой цвет.
Для графиков в разделе "Результат" есть дополнительная опция. Если в проекте есть несколько моделей, то можно выводить графики результатов нескольких моделей сразу.
Так как для анализа результатов в разных моделях одного проекта, надо выводить графики результатов нескольких моделей, в панели
можно выбрать какие графики будут выводиться.
По умолчанию выводится только графики текущей выбранной модели.
В FinModels можно импортровать из Exel, LibreOffice, Google.Sheets, Яндекс.Таблица, файлов .CSV, любых текстовых редакторов.
Данные можно экспортировать в разделы любых типов кроме: "Основные средства" (Asset), "Финансы" (Finance), "Результаты" (Result).
Экспортировать можно двумя способами:
В буфер обмена из можно скопировать любое количество колонок данных из Exel, LibreOffice, Google.Sheets, Яндекс.Таблица
Что бы вставить эти данные в проект FinModel выбирается стартовая ячейка.
Комбинацией клавиш "Ctrl+V" или через контекстное меню, вызываемое правой клавишей мыши, вставляем предварительно скопированный набор данных.
Вся последовательность данных вставляется, каждая в свои ячейки, начиная с выделенной.
Правила однострочного копирования данных из Exel:
- 1. Если в буфере данных больше, чем ячеек в строке в таблице FinModel, данные обрезаются до конца строки в таблице FinModel
- 2. При копировании, в буфере обмена все ячейки справа с текстом(не числом!) до первой ячейки с числом удаляюся
- 3. Вставка начинается с первого левого найденного числа в буфере обмена
- 4. Если ячейка пустая, то вставляется 0
- 5. Если в ячейке не число, то вставляется 0
Открываем панель импорта данных. Командное меню раздела -> Импорт компонентов.
В панели импорт компонентов, вставляем скопированные в буфер обмена данные в поле "Вставка данных из буфера обмена:"
При нажатии кнопки "Импортировать данные", данные из этого поля распарсятся в соответствующие группы и компоненты сохранятся в базе
и страница перегрузится, что бы отобразить изменения
При импортировании данных можно использовать несколько параметров
1. Поместить в группу:
Это дерево папок в которые можно положить импортированные компоненты.
Если выбрана папка, то в неё разместятся группы и компоненты, которые вы импортируете
Если папка не выбрана, то новые компоненты и группы разместится в самой верхней рутовой папке раздела.
2. Создать папки для групп?:
При импорте, по умолчанию, создаётся новая папка, куда и размещаются компоненты.
Если данные разделены на несколько блоков/таблиц, то для каждого создаётся отдельная папка.
Если галочка снята, то эти группы не создаются и все компоненты из всех блоков данных помещаются в папку, которую выделили в поле "Поместить в группу"
3. Разделитель списка данных:
Как правило, при копирование в буфер обмена в программах Exel, LibreOffice, Google.Sheets, Яндекс.Таблица данные разделяются друг от друга символом 'TAB'.
Этот разделить колонок используется в FinModels по умолчанию.
Но в некоторых случаях пользователи этих программ заменяют этот разделитель на другой. В текстовых редакторах используют символ ';' или ',' или вообще любой другой раделяющий символ.
Поэтому, вы можете выбрать в списке основные используемые символы. Или выбрав "Другой" задать свой символ.
При импортировании блоками, автоматически из данных создаются группы и компоненты.
Можно копировать данные с именами компонентов и папок. При обработке блоков данных программа FinModels сама распознает имена папок компонентов и сохранит их.
При копировании данных блока надо следить что бы:
1. В блоке данных не должно быть пустых колонок.
2. В части блока со значениями не должно быть пустых ячеек.
Ниже на скриншотах показаны разные варианты блоков при копировании которых данные будут корректно распознанны, разбиты по папкам и проименованы.
Для копирования из таблиц:
Для копирования из любых текстовых редакторов:
Прямого экспорта данных и алгоритмов расчётов из файла данных программ (например .xls) Exel, LibreOffice, Google.Sheets, Яндекс.Таблица в формат FinModel нет.
Это обусловлено абсолютно разной архитектурой обработки, защиты и контроля типа данных, уникального интерфейса, а также изменение графиков визуализации данных в реальном времени.
В проекте может использоваться много компонетов и групп, которые могут быть открыты/закрыты и с различными комбинациями показа графиков в разделах, поэтому создаётся ситуация,
когда переходить к месту над которым вы работаете, да ещё открыть нужные и закрыть ненужные группы, а так же указать показ графика становится трудно и долго.
Для упрощения этой ситуации и удобства работать при анализе модели, есть возможность делать закладки.
Закладка это сохранённое состояние интерфейса - положение скрола экрана, состояние открыто/закрыто групп текущей модели и состояние отображения групп в графиках.
В интерфейсе есть список всех сохранённых закладок для этой модели
Закладку можно сохранить, редактировать, открыть или удалить. Количество закладок неограничено.
Что бы зафиксировать текущее состояние интерфейса нужно выбрать в панели
и указать имя закладки.
При клике на кнопке закладка сохранится в список закладок.
Проект создаёт пользователь, который имеет все права на него и ему доступна вся функциональность работы над ним.
Часто требуется, что бы над проектом работали несколько человек, каждый со своего эккаунта на портале.
Для этого, на странице можно установить права доступа к проекту для каждого пользователя.
- 1. Owner - собственник, который обладает всеми правами над проектом. Может удалять и изменять проект проект, добавлять и удалять новых пользователей проекта
- 2. Writer - пользователь проекта, который может только добавлять, удалять и редактировать данные.
- 3. Viewer - пользователь проекта, который может только смотреть данные проекты.
- 4. Request - Сделать запрос на присоединению проекту.
Права на работу с проектом можно ограничивать и временем.
- 1. Доступ без временных ограничений.
- 2. Доступ до указанного времени.
- 3. От и до указанного диапазона.
- 4. В течении указанного времени с начала работы с проектом.
- 5. Заблокировать.
|