Главное о кейсе
Инвестиционная платформа Advisors’ Axiom — это площадка для совместной работы инвесторов сегмента Premium и VIP, инвестиционных консультантов и финансовых экспертов, разработанная ПАО «Росбанк».
Для проекта была разработана нейросеть для прогнозирования котировок акций в зависимости от тональности финансовых новостей. Полученная информация поможет клиентам, инвестиционным консультантам и финансовым экспертам более эффективно инвестировать денежные средства в ценные бумаги компаний.
Как проект изменил жизнь пользователей
Возможности платформы:
- Персонализированные рекомендации
- Подборки ценных бумаг
- Продуктовый каталог
- Модель сбалансированного инвестиционного портфеля
- Показывает только те новости, которые могут повлиять на цену ваших активов, и отмечает тональность этого события
- Оценка риска портфеля и инвестиционное профилирование
Бизнес-задача и ее решение
Необходимо было разработать удобный онлайн-инструмент для инвестирования для клиентов Росбанка сегмента Premium и VIP с возможностью следить за всеми изменениями их портфеля, а также мобильное приложение к нему.
Платформа должна включать профиль инвестора и инвестиционного консультанта, который закреплен за каждым клиентом и помогает ему в формировании и реализации его инвестиционной стратегии.
Сервис должен не только содержать всю необходимую информацию по портфелю, но и формировать рекомендации для клиентов и отслеживать происходящие в экономике изменения с помощью машинного обучения, анализировать состояние активов и фиксировать их динамику.
РЕАЛИЗАЦИЯ
Разнородные исходные данные из различных банковских учетных систем загружаются в БД PostgreSQL. Загрузка информации, ее способы и оперативность находились под контролем специалистов банка и вне влияния команды разработки.
Способы загрузки информации:
- Удаление БД и полная загрузка
- Частичные insert
- Частичный update
- Частичный delete
Система производит подготовку данных в нужном формате и объеме, необходимом для целей визуального представления информации в интерфейсе. Вследствие того что система не имеет сведений о способах поступления информации, ее объеме и частоте, процедуры обработки исходных данных каждый раз выполняют все расчеты с нуля на требуемую глубину на весь объем данных.
Это позволяет гарантировать корректность информации сразу после расчета на основе объема исходных данных, который был на момент расчета.
Все расчеты выполняются в разрезе одного клиента.
На примере типовой задачи по расчетам, например, активов из исходных данных:
- Производится обход списка клиентов в БД и постановка для каждого клиента соответствующей задачи «расчет последней информации по активам» через брокер сообщений, т. е. генерируется множество независимых задач расчета по каждому клиенту
- Контейнеры-консьюмеры производят обработку сообщений из очередей
- Увеличение производительности достигается увеличением количества consumer-обработчиков
Крафт (мастерство), реализация, технические детали
По требованиям заказчика в качестве языка разработки был выбран python и django — в качестве фреймворка. Django-админ выполняет роль чернового интерфейса к БД системы для административного персонала. Система предоставляет restful-API для web- и iOS-клиентов.
С точки зрения назначения и интерфейса есть два потребителя:
- менеджер банка,
- клиент банка.
Поэтому система делится:
- на личный кабинет менеджера,
- личный кабинет клиента.
Функционал API для личного кабинета клиента на 95% основан на API личного кабинета менеджера и представляет собой урезанную версию API. Они работают на одной кодовой базе, но выполняются в разных контейнерах в средах банка с различными уровнями доступа:
- личный кабинет менеджера доступен только из сети банка с устройств банка;
- личный кабинет клиента доступен из сети Интернет.
Технически релиз основной части системы представляет собой контейнер с единым исходным кодом, который может быть запущен либо как личный кабинет менеджера, либо как личный кабинет клиента.
Основную часть системы можно представить как монолит, выполняющий несколько задач:
- Админ-панель как технический интерфейс для просмотра и отладки исходных данных
- API для личного кабинета менеджера
- API для личного кабинета клиента
- Обработчики-консьюмеры задач из очередей
Админ-панель и API для личного кабинета менеджера объединяются в одном контейнере. Другие функции выполняются каждая в своем отдельном контейнере.
Сопутствующая функциональность реализуется в микросервисной архитектуре. В частности, отдельно реализованы вынесены такие сервисы, как:
- Генератор PDF-отчетов (php)
- Профилирование клиентов (опросник клиентов и расчет риск-рейтинга)
- Новостной модуль (парсинг и анализ новостей с помощью машинного обучения)
- Внешнее API для поставщиков услуг
Взаимодействие между микросервисами и основным функционалом осуществляется через брокер сообщений и restful-API.
Инсайты, гипотезы, процесс создания и взаимодействия с заказчиком
База данных в описываемой схеме является потенциально узким местом, которое на текущий момент не масштабируется.
Однако считаем, что имеем запас производительности БД еще почти на 2 порядка до тех пор, пока эта проблема с объемом данных и производительностью БД действительно возникнет.
До тех пор увеличение производительности рекомендуется решать штатными тривиальными методами:
- Увеличение ресурсов сервера БД
- Улучшение структуры таблиц исходных данных
- Разделение БД на чтение и запись
Однако такую схему нельзя признать удовлетворительной на долгий срок, и тот временной период, который имеется в запасе, требуется использовать для перепроектирования схемы поставки исходных данных в систему.
Скриншоты