Настройка no-code приложения ALM (Управление активами и пассивами)
Привет! На связи опять команда «БизнесАнализ» от ПрограмБанка и я, Мария, её руководитель.
Продолжаю цикл статей с примерами использования no-code инструментов хранилища «БизнесАнализ».
В этой статье показываю пример самостоятельной настройки аналитиком бизнес-приложения ALM (управление активами и пассивами) для расчета прогнозного управленческого баланса на базе первички по остаткам и сделкам из АБС.
Статья будет интересна руководителям планово-финансовых отделов, специалистам по отчетности, риск-менеджерам, дата-аналитикам, так же профильным ИТ-спецам, которые исследуют российский рынок no-code-платформ для решения финансовых задач без программирования.
Настройку приложения может выполнять обычный аналитик, прошедший обучение по self-service инструментарию. Для этого не нужен ни ИТ специалист, ни программист.
Как правило у него уже есть финансовая модель в Excel, на которую он и ориентируется при настройке.
Смотрим в свою постановку от методолога банка и ищем там финальные формы с расчетными показателями, это:
Баланс ALM должен выглядеть следующим образом:
Он будет настроен как форма многомерных показателей. Для него нам понадобится:
полный список показателей — строки баланса — в едином реестре показателей;
типы значений — их мы используем для вывода в столбцах баланса значений — Остаток, Объемы выплаты, Процентные доходы и расходы, Маржа и т.д.;
наборы временных корзин — их будем использовать для дополнительного разделения столбца с объемами выплат;
также баланс должен считаться в разрезе валют и видов бизнеса банка — значит нужны такие аналитики.
Также будем считать нормативы ликвидности.
Исходя из требований к финальным показателям (формам баланса и нормативов) структура приложения в объектах self-service будет такой:
Здесь будут:
2 типовых и 3 специальных справочника;
3 витрины с данными из АБС — остатки на балансовых счетах второго порядка и финансовые потоки по сделкам, 2 витрины с ручным вводом данных по модельным сделкам;
2 многомерные формы.
1. Создаем приложение ALM Управление активами и пассивами.
Для создания приложения пользователю достаточно ввести код и название.
Папка с объектами нового бизнес-приложения сразу появляется в общем пользовательском дереве-меню. Теперь можно добавлять в него новые объекты.
Если сравнить с Excel, то это момент создания файла и сохранения его с новым именем.
2. Настраиваем справочники-аналитики
В нашем примере нам нужны 2 аналитики — валюта и вид бизнеса.
Для создания аналитик мы используем т.н. типовые справочники — это справочники без предзаложенной в системе логики обработки, состав атрибутов которых архитекторы приложений полностью определяют сами.
Смотрим ранее настроенные глобальные типовые справочники — это такие справочники, которые вынесены за пределы конкретных бизнес-приложений и могут использоваться всеми приложениями одновременно.
В глобальных справочниках видим — Валюта, Балансовые счета 2-го порядка и Центры финансовой ответственности (ЦФО).
Тогда для ALM мы будем использовать готовый глобальный справочник валют. А справочник видов бизнеса надо будет создать.
Процесс создания типового справочника довольно простой:
указываем название справочника — оно в дальнейшем будет использоваться в формулах;
добавляем в список все нужные нам атрибуты с их названиями;
для каждого атрибута определяем его тип данных (строка\ число\ дата и т.п.), обязательность заполнения, признак уникальности (ключа);
можно включить обязательное журналирование всех изменений в данных справочника.
Атрибуты для ввода срока актуальности записей и настройки иерархии добавляются во все справочники автоматически.
Таким образом мы быстро настраиваем простейший справочник видов бизнеса — два строковых поля Код и Название, где Код уникален. Сохраняем справочник — и сразу видим его в меню, можем добавить в него данные.
Для каждого типового справочника автоматически генерится excel-шаблон загрузки данных, который можно использовать для быстрого заполнения.
В будущем, если виды бизнеса понадобятся другим приложениям — новый справочник тоже стоит так же перенести в глобальные.
3. Настраиваем специальные справочники
Специальными мы называем справочники фиксированной структуры с встроенной в self-service платформу логикой обработки их данных.
Для настройки приложения ALM будем использовать несколько типов специальных справочников:
типы значений
наборы временных корзин
С созданием специальных справочников все не просто, а прям таки примитивно — тут достаточно только названия — и справочник готов.
Создаем справочник типов значений «Типы значений ALM».
Структура такого справочника всегда одинаковая:
Код,
Название,
Порядковый номер — для сортировки в формах,
Формула по умолчанию.
Заполняем его данными.
Аналогично создаем справочник наборов временных корзин «Сроки баланса ALM».
Структура фиксированная:
Код уникальный,
Название уникальное,
Минимальное количество дней,
Максимальное количество дней.
Заполняем справочник теми группами сроков, которые мы хотим видеть в балансе.
Минимальное и максимальное количество дней определяют собственно границы непересекающихся диапазонов сроков, по которым финансовые потоки будут определяться в ту или иную корзину.
4. Добавляем показатели
Для настройки всех self-service приложений в одном хранилище используется единый словарь терминов и типов — единый реестр показателей.
Для настройки строк баланса мы также будем использовать показатели из единого репозитория, поэтому проверяем в нём наличие нужных показателей и добавляем недостающие.
5. Настраиваем базовую структуру многомерного Баланса ALM
Итак, в самом начале мы рассматривали форму будущего баланса ALM.
В данный момент мы уже готовы сделать создать многомерную форму нужной нам структуры, для этого:
Добавляем в строки формы показатели баланса и выстраиваем их в иерархию.
Для столбцов выбираем аналитики:
В настройках столбцов указываем, что сроки баланса должны разворачиваться только в одном из типов значений — Сроки.
В параметры формы выбираем аналитики Валюта и Вид бизнеса.
Если в форме в качестве одной из аналитик по столбцам или строкам используются периоды, например, месяцы года, то для их настройки используется специальный справочник типа календарь. Если календаря в аналитиках нет, то у формы по умолчанию в параметрах появляется операционная дата.
В нашем управлении активами и пассивами анализ расчётных данных ведется на каждую конкретную дату, поэтому операционной даты нам будет достаточно.
На этом этапе мы уже имеем форму нужной нам структуры, с нужными параметрами, где значения всех показателей можно ввести вручную.
На этом этапе для показателей уже можно настроить способы агрегации. Тогда агрегированный по валютам и видам бизнеса баланс можно будет получать даже с данными ручного ввода. Настройка выполняется так же просто через интерфейс — алгоритм выбирается из готового списка вариантов (сумма, средневзвешенное, количество и т.п.), для специфичных случаев можно ввести формулу.
Дальше можно переходить к настройке источников данных и формул для расчета.
6. Настраиваем витрины сбора данных
Для загрузки данных из внешних источников используем self-service витрины, в которых отдельно на каждую операционную дату загружаются\ заводятся и дальше хранятся исходные данные.
Для приложения ALM сначала мы сделаем витрины с загрузкой данных из ПрограмБанк.АБС.
Для связи между нашим хранилищем и этой внешней базой данных есть преднастроенный бизнес-словарь, в котором в виде иерархического списка бизнес-терминов представлен по сути список сущностей и атрибутов логической модели данных АБС.
Пользователи могут выбирать показатели для витрины из понятных им описаний, например, «балансовый счет», «исходящий остаток в эквиваленте», «код валюты» и т.п., поэтому настройка таких витрин с бизнес-словарём не займет много времени, после этого можно сразу запускать загрузку.
Из АБС будем загружать данные в следующие витрины:
Остатки на балансовых счетах 2-го порядка;
Финансовые потоки по сделкам привлечения;
Финансовые потоки по сделкам размещения.
Как настроить витрину:
вводим код и название витрины;
определяем способ ее заполнения данными — в нашем случае это «бизнес-словарь»;
добавляем показатели из бизнес-словаря или единого репозитория, часть настроек показателей при этом заполняется автоматически;
при необходимости можно скорректировать названия показателей;
для показателей, которые должны рассчитываться из других, указываем формулу;
признак обязательности заполнения;
признак уникальности (ключи);
для числовых показателей можно указать еще алгоритм расчета итогов — выбором из стандартных: сумма, средневзвешенное и т.д.
Для мэппинга строк данных с корзинами сроков и статьями баланса (показателями многомерной формы) добавляем в каждой витрине по два вычисляемых столбца, в которых при помощи т.н. таблиц решений настраиваем вывод подходящих значений в зависимости от значений других показателей строки витрины.
Это позволит нам дальше в формулах баланса фильтровать строки витрины по конкретным показателям или по срокам.
Сохраняем витрину — и она уже готова.
Для загрузки данных просто выбираем операционную дату и нажимаем на кнопку Загрузить, данные берутся напрямую из базы данных АБС, привязанной через настройки бизнес-словаря.
Кроме загружаемых витрин нам понадобятся витрины с ручным вводом данных о прогнозируемых сделках по привлечению и размещению. Они нам нужны для расчета прогнозной части баланса ALM.
Настраиваются эти витрины так же, только способ заполнения витрины указываем как «ручной ввод», а показатели добавляются не из бизнес-словаря, а из единого репозитория показателей.
В них так же добавляем рассчитываемые показатели Статья баланса и Корзина сроков.
7. Настраиваем формулы для формы Баланса ALM
Переходим к самому интересному и трудоемкому — формулам расчета показателей.
Штатный self-service функционал настройки многомерных форм позволяет указывать для показателей разные алгоритмы расчета для разных значений специальных справочников в контексте.
Это значит, что для одного показателя в каждом столбце для типа значений или набора временных корзин мы сможем указать свою формулу расчета.
Посмотрим настройку формул на примере показателя «Корпоративные клиенты до востребования» по порядку вывода значений в столбцах баланса:
Для типов значений «Остаток» и «Сроки» используется одна и та же формула
СуммЕсли("Привлечение#Остаток в эквиваленте")
При этом функция сама отбирает для суммирования только те строки витрины Привлечение, в которых:
операционная дата витрины совпадает с операционной датой баланса;
значение показателя Вид бизнеса совпадает с видом бизнеса из параметров баланса;
в столбце Статья баланса выведен показатель баланса, для которого и считается формула — то есть «Корпоративные клиенты до востребования».
Для типа значений Сроки, который еще и развернут по наборам временных корзин, в фильтр добавляется еще и конкретная временная корзина.
Тип значений »% Д/Р (руб)» и «Трансферт. % Д/Р (руб)» считаются по аналогичной формуле, только с суммой по другим показателям витрины
СуммЕсли("Привлечение#Начисленные %")
СуммЕсли("Привлечение#Начисленные трансфертные %")
Формулы получаются довольно универсальными, поэтому их можно копировать в другие показатели ветки Обязательства.
У функций СуммЕсли есть и встроенный бонус — ячейки с этими функциями при просмотре в готовой форме могут быть детализированы до записей исходной витрины, которые в итоге участвовали в расчете.
Остальные типы значений считаются друг из друга уже
Маржа, руб: "% Д/Р (руб)"-"Трансферт. % Д/Р (руб)"
Средняя процентная ставка, %: "% Д/Р (руб)"*365*100/("Остаток"*15)
Средняя трансфертная ставка, %: "Трансферт. % Д/Р (руб)"*365*100/("Остаток"*15)
Процентная маржа, %: "Ср. проц.ставка (%)"-"Ср. трансферт. ставка (%)"
Учитывая, что эти типы значений рассчитываются совершенно одинаково для всех показателей баланса, формулу их расчета можно один раз указать в специальном справочнике типов значений в поле Формула по умолчанию. Либо просто использовать копирования формул между показателями.
Аналогично настраиваются формулы и для всех остальных нижнеуровневых показателей баланса. В основном также используется функция СуммЕсли с обращением к разным витринам.
Для группирующих показателей дальше используем функцию СуммНиже (), которая просто суммирует все нижестоящие значения.
Для расчета показателя «Разрыв» используем формулу с обращением к другим показателям:
"Активы” - "Обязательства”
Также применим условное форматирование для выделения критических значений в разрывах.
Настройка условного форматирования делается по сути также в виде таблицы решений — когда формулам сопоставляются конкретные значения показателя или его стили.
В нашем случае красным будут подсвечены значения, удовлетворяющие данному условию:
("Типы значений ALM" = 'Сроки' и "Сроки баланса ALM"<>'Без срока') и ("Разрыв" < 0)
8. Настраиваем многомерную форму для расчета нормативов
Теперь, когда у нас есть готовый Баланс, мы можем быстро настроить базовую форму для расчета нормативов ликвидности.
Посмотрим, как она может выглядеть:
по строкам — иерархия показателей — иерархический список нормативов и их составляющих, из которых потом рассчитывается финальное значение;
для столбцов понадобится новый список типов значений;
те ячейки, которые могут быть вычислены на основании данных из Баланса ALM или на основании других ячеек этой же формы, мы сделаем формульными, остальные — ручной ввод (они в нашем шаблоне оранжевые).
Итак, настраиваем (мы уже умеем) новый специальный справочник типов значений — Типы значения для Нормативов, в который добавляем значения, соответствующие столбцам новой формы:
Создаем новую форму Нормативы, в ней:
указываем следующие аналитики:
в параметры — так же как и в Балансе — Валюта и Вид бизнеса;
в столбцы — Типы значений для Нормативов;
заводим иерархию показателей в соответствии с шаблоном.
Для расчета фактических значений составляющих нормативов ЦБ в нашем приложении пока недостаточно данных, поэтому им оставляем ручной ввод. Сами нормативы ЦБ будут рассчитываться из своих составляющих по стандартным формулам, например:
Лам/("Овм" -0.5*"Овм*")*100
Для расчета нормативов ALM данных баланса вполне достаточно, поэтому они полностью формульные. Таким образом, например, будет считаться у нас показатель Мгновенная ликвидность:
БалансALM#Активы[["Типы значений ALM":='Сроки', "Сроки баланса ALM":='До востребования']]
/(
БалансALM#Обязательства[["Типы значений ALM":='Сроки', "Сроки баланса ALM":='До востребования']] –
‘БалансALM#Корпоративные клиенты до востребования’[["Типы значений ALM":='Сроки', "Сроки баланса ALM":='До востребования']] * 0.3 –
'БалансALM#Физические лица до востребования'[["Типы значений ALM":='Сроки', "Сроки баланса ALM":='1 день']] * 0.3
)*100
Для расчета отклонений зададим формулу по умолчанию на уровне справочника типов значений, чтобы не делать лишней работы.
А вот подсветку отклонений, выходящих за допустимые лимиты, настроим в самой многомерное форме.
Смотрим что получилось:
На данном этапе первую версию нашего приложения ALM можно считать готовой. Она несложная, но это вполне реалистичная база для дальнейшего наращивания функционала.
Настройка приложения заняла у нас около 2-х рабочих часов.
С его помощью пользователь может рассчитать Баланс ALM и Нормативы ликвидности на базе первички по остаткам и сделкам из АБС. Приложение автоматизирует построение как частных баланса и нормативов в разрезе валют и видов бизнеса, так и их агрегированных по всем валютам и бизнесам версий, в том числе единый агрегированный ALM-баланс банка.
Что можно будет ещё добавить в это no-code приложение для управления активами и пассивами в коммерческом банке:
Можно добавить любые дополнительные аналитики в многомерные формы — филиалы, центры финансовой ответственности, точки продаж, группы клиентов и т.п.
Можно добавить аллокации расходов и доходов.
Можно добавить расчет трансфертных доходов и расходов, маржи.
Можно подключить искусственный интеллект к прогнозной части баланса.
В отличие от моего предыдущего примера — Бюджетирования — управление активами и пассивами не требует настройки бизнес-процесса, потому что все загрузки и расчеты показателей выполняются в одной дате.
Вместе с этой статьей мы с вами прошли все шаги по настройке своего собственного финансового приложения и познакомились с некоторыми возможностями self-service инструментов платформы «ПрограмБанк.БизнесАнализ».
Основная специализация этого инструментария — быстрая разработка и внедрение собственных финансовых моделей без привлечения программистов, проверка гипотез, прототипирование.
Оперативность работы обеспечивают удобные интерфейсы редакторов витрин и форм, навигаторы по функциям и объектам приложений, копирование как настроек отдельных показателей, так и целиком форм или приложений, адаптированные лаконичные формульные функции и т.д.
Вот список направлений, в которых применение такого инструментария точно эффективно:
Сбор, выверка и обогащение первичных данных из учетных систем
Ведение классификаторов
Управленческий учет
Планирование и бюджетирование
Бюджетный контроль расходов и платежей
Аллокация расходов и расчет себестоимости
Трансфертное ценообразование
Функционально-стоимостной анализ
Консолидированная финансовая и управленческая отчетность
Аналитические витрины
Моделирование и стресс-тестирование
Буду рада, если вы поделитесь своим мнением о подобном self-service инструментарии или идеями по другим возможным областям его применения!
Другие статьи по этой же теме: