Устная история Bank Python: как работают внутренние платформы инвестбанков

Устная история Bank Python: как работают внутренние платформы инвестбанков

Bank Python, это категория собственных разработок Python-платформ, которые используют крупные инвестиционные банки. Это не стандартный Python, а полноценные proprietary форки всей экосистемы. Автор (разработчик, работавший с такими системами) описывает вымышленный, но типичный пример, банковскую систему Minerva.

Мinerva построена на нескольких ключевых компонентах:

  1. Barbara, глобальное иерархическое хранилище ключ-значение, построенное на pickle+zip. Вся база данных объектов банка (трейды, инструменты, рыночные данные) хранится в Barbara. Это центральный источник истины. Barbara использует несколько «rings» (пространств имён) и работает как DynamoDB/BigTable с eventual consistency. Она настолько простая и надёжная, что отказы редки.

  2. Dagger, управление графом зависимостей финансовых инструментов. Финансовые инструменты (облигации, свопы, дериватьи и т.п.) образуют иерархию с зависимостями. Когда базовый инструмент меняется (например, при понижении кредитного рейтинга), Dagger автоматически пересчитывает стоимость всех зависимых инструментов. Это похоже на Excel, но с версионированием, тестами и под контролем.

  3. Walpole, bankwide job runner, центральный сервис для запуска периодических работ (end-of-day скрипты, обновление данных, отправка отчётов). Walpole работает как мега-Jenkins + мега-systemd, разумеет зависимости между jobами. Ключевой бонус: любой может задеплоить приложение через простой ini-файл конфига, без согласований и месячного ожидания железа.

  4. Исходный код в Barbara, революционный момент: исходный код хранится не на диске, а в Barbara (специальный ring), что меняет весь workflow.

  5. MnTable, встроенная таблочная библиотека для работы с плотными (memory-dense) структурами данных, в отличие от хэш-таблиц, которые разреженны и требуют предварительного знания access patterns.

Система прошла эволюцию: старые поколения (Athena, Quartz на других банках) были похожей архитектуры. Bank Python, это внутренний мир тысяч разработчиков, скрытый от публики, редко упоминаемый в открытых источниках.

Ключевые факты

  • Bank Python, proprietary форки Python, используемые в крупных банках; Minerva, типичный пример такой системы
  • Barbara, глобальное key-value хранилище на pickle+zip, центральный источник всех данных банка (трейды, инструменты, рыночные данные)
  • Dagger, система управления зависимостями финансовых инструментов; автоматически пересчитывает стоимость дериватов при изменении базовых инструментов
  • Walpole, bankwide job runner, упрощает деплой любому разработчику через ini-файл, без месячного ожидания согласований
  • Исходный код хранится в Barbara, а не на диске, что требует революционного подхода к версионированию и деплою

Почему это важно

Bank Python показывает, как крупные финансовые учреждения решают фундаментальные проблемы: управление зависимостями между тысячами финансовых инструментов, деплой без бюрократии, единая глобальная база данных. Это демонстрирует, что стандартный Python/Cloud-Native слишком сложен для domain-специалистов (финансовых аналитиков, риск-менеджеров). Простота Barbara и ini-файл Walpole, результат многолетней эволюции, прагматизм vs. сложность облачных решений.

Кому это важно

Разработчикам в инвестиционных банках, архитекторам больших систем обработки данных, специалистам по финансовым вычислениям. Также интересно для тех, кто проектирует internal tools и платформы, как организовать простоту при масштабе тысяч пользователей.

Как это применить

Для своих проектов: рассмотреть простоту barbara-подхода (key-value store + иерархия) для управления сложными зависимостями данных. Использовать Dagger-подобную идею (граф зависимостей, автоматический пересчёт) в любых системах с вычисляемыми значениями. Упростить деплой до ini-файла, если текущий процесс требует месячных согласований. Хранить исходный код в системе версионирования, связанной с самими данными, чтобы избежать рассинхрона.

Можно ли доверять

Автор, разработчик, работавший внутри банковских систем; он раскрывает типичную архитектуру под вымышленным именем Minerva и менял названия компонентов для конфиденциальности. Описание технически точно и совпадает с известными старыми системами типа Athena/Quartz. Однако деталей он не знает в полноте (как он сам оговаривает), поэтому описание, обоснованная реконструкция, а не полная техническая спецификация.

Риски и подводные камни

Barbara имеет мягкий лимит на размер объектов (~16MB сжатых pickled), что требует регулярного архивирования старых данных. Отсутствие файловой системы усложняет интеграцию с внешними инструментами. Proprietary форк Python означает полную изоляцию от open-source экосистемы и сложность при наёме людей, незнакомых с внутренней системой. Простота Barbara может обернуться производительностью на больших датасетах, автор сам рекомендует переходить на SQL или kdb+ при растущем размере. Centrale Walpole, single point of failure для всех job'ов в банке.