← На главную

Bank Python отрывает инвестбанки от открытого Python

25.06.2026 20:14 · hackernews

В крупных инвестбанках живёт и процветает странный зверь — «Bank Python». Это не библиотека, а целая проприетарная экосистема, форк всего Python, со своими базами, раннерами и IDE. В статье её описывают на примере вымышленной системы Minerva.

В основе Minerva лежит Barbara — глобальное key-value хранилище. Всё: от котировок облигаций до исходного кода — лежит не на файловой системе, а в нём. Barbara разбита на «кольца»-неймспейсы, данные реплицируются между нодами как в Dynamo или BigTable. Объекты — это просто запакованные pickle+zip. Мягкий лимит на размер — 16 МБ, для вторичных индексов лучше взять что-то другое, но для ежедневных задач Barbara надёжна и проста.

Поверх Barbara работает Dagger — система, отслеживающая граф зависимостей финансовых инструментов. Класс облигации, дериватива или портфеля наследуется от Instrument, а Dagger автоматически переоценивает всё, что зависит от изменившегося актива. Если кредитный рейтинг упал, Dagger пересчитает все привязанные свопы. Иерархия книг идёт от маленького стола трейдера до единой книги всего банка. По сути, Dagger — это Excel-модели, вытащенные в код и версионированные, без файлов вида «финал (окончательный) (2).xlsx».

Код хранится прямо в Barbara, в специальном кольце sourcecode. Запускает его Walpole — единый общебанковский джоб-раннер, гибрид Jenkins и systemd. Один инстанс на весь банк. Он перезапускает упавшие сервисы, сохраняет логи, понимает зависимости между задачами и, главное, радикально упрощает деплой: достаточно ini-файла. Никаких k8s или Terraform — только ини-файл. Это снижает порог входа для финансистов, которые не хотят учить облачную инфраструктуру.

Для работы с данными вместо pandas используют MnTable — табличную библиотеку с b-tree индексами, ленивыми вычислениями и поддержкой больших (гигабайтных) датасетов. Большинство данных в банке — «среднего размера», не подходящего ни под словари, ни под распределённые кластеры. MnTable плотно упаковывает данные в памяти и легко сбрасывает на диск.

Минусы у такого подхода серьёзные. Новички учатся месяцами. Разрыв с открытым Python растёт. Внешним разработчикам взаимодействовать с Minerva — боль: чтобы прочитать данные из Barbara, нужно читать код, который тоже лежит в Barbara. У системы собственный IDE, собственный веб-фреймворк, собственный (не-git) воркфлоу. Навыки нормального Python атрофируются — забываешь, как работать с pip и virtualenv.

Тем не менее, Minerva — яркий пример «data-first» подхода: данные организованы в таблицы и базы, а код работает над ними отдельно. Одна большая база, один раннер, один репозиторий — это убирает кучу случайной сложности. Скрипт можно написать и запустить в продакшене за час. Для финансистов, привыкших к Excel, это куда понятнее, чем микросервисы с service mesh.

Читать оригинал →