Bank Python: как мир финансов разработал собственный язык программирования

Bank Python: как мир финансов разработал собственный язык программирования

Неудивительно, что Python, самый популярный язык программирования для целей анализа данных, является предпочтительной областью инвестиционного банкинга. Но в финансовом мире появился вариант Python, функциональность которого, вероятно, многим неизвестна. Фактически, он настолько отличается от стандартного использования IT, что специалисты дали ему собственное наименование: Bank Python.
Аналитики в течение нескольких лет разрабатывали форки языка программирования Python для конкретных банков. Начало этому, вероятно, можно найти в 2002 году, когда Python, малопризнанная в то время технология, впервые была установлена на компьютерах в отделе ценных бумаг Goldman Sachs. Об этом недавно заявил Шон Хантер, бывший вице-президент отдела стратегии Goldman Sachs. Он сказал, что в то время отвечал за крупномасштабное распространение программного обеспечения.
«Все, что мы делали, было совершенно секретно, посторонние не должны были знать об этом», — говорит Хантер о работе в банке Goldman Sachs, который ранее использовал Perl.
«Хотя Perl очень мощный, он также очень сложен и труден для понимания. Python требует аналогичного уровня концептуальной сложности, но гораздо проще перевести это в код», — говорит IT-стратег. Например, переход на Python позволил устанавливать асинхронные обновления на 20 000 компьютеров с помощью одной кодовой команды.

Другой диалект

Кэл Патерсон, бывший разработчик Python в Bank of America, Citibank и JPMorgan, также знает, что у Bank Python собственная экзотическая система, далекая от стандартов с открытым исходным кодом. В недавнем сообщении в блоге он описывает, как Python теперь существует в странной параллельной вселенной в мире инвестиционно-банковских услуг.
Bank Python изначально разрабатывался из-за необходимости создавать финансовые модели на основе MS Excel. Точно так же, как изменения в записях электронных таблиц в Excel влияют на все дальнейшие функции и расчеты с этими значениями, изменения в активах, компаниях или кредитных рейтингах повлияют на все дальнейшие транзакции, в которых они участвуют в длинной причинно-следственной цепочке.
Чтобы не раскрывать никаких секретных подробностей, Патерсон обобщает свои наблюдения фрагментарно в системе Bank Python под названием «Minerva». Minerva построена на единой базе данных больших объектов, которая содержит подавляющее большинство всех ценных бумаг, финансовых инструментов и данных о торговле на рынке Форекс, необходимых ежедневно.

Bank Python: как мир финансов разработал собственный язык программирования
По словам лондонского разработчика программного обеспечения, Bank Python использует эту «жестоко простую» базу данных значений, чтобы избежать ошибок. Вопреки всем общепринятым практикам программирования, он даже содержит весь исходный код Minerva, который обычно хранится в отдельной файловой системе. Это имеет то преимущество, что Minerva можно легко запустить из любого места.
Кроме того, Minerva использует проприетарные библиотеки операций с таблицами, которые предшествуют сегодняшним аналогам Python, и работает исключительно в проприетарной интегрированной среде разработки (IDE). По словам Патерсона, это подтверждает непопулярное мнение о том, что инвестиционные банки страдают от пресловутого синдрома «не здесь изобретено» (NIH), то есть недоверия к разработкам, возникшим за пределами их учреждений.

IT-специалисты переносят идеологию из банка в банк

GitHub также вряд ли стоит использовать инвестиционным банкам. Банковская идиосинкразия Python проявляется в большинстве банковских учреждений, потому что сотрудники IT переносят основную идеологию своей работы из одного инвестиционного банка в другой.
Патерсон заключает, что, вопреки общепринятому мнению, Bank Python ориентирован на данные, а не на код. Потому что обычно пишется код, который пытается отобразить реальность, чтобы затем наполнить его данными. С Minerva все наоборот: данные сначала «раскладываются в таблицы, а код живет отдельно от них», говорит разработчик программного обеспечения.
В качестве еще одного примера Minerva он приводит, среди прочего, своеобразную «систему залога», в которой фундаментальные изменения в кодексе должны быть одобрены только их соответствующими авторами. В результате срочные изменения могут быть одобрены вслепую, основываясь исключительно на репутации лица, вносящего изменения, сказал Патерсон.

Простор для инноваций?

Инфраструктуры внутреннего программного обеспечения банка часто справедливо называют старыми системами (также унаследованными системами). Только подумайте о бесчисленных процессах, интерфейсах и функциях, через которые должна пройти одна финансовая транзакция на пути от А к Б. Во избежание каких-либо сбоев в связанных IT-системах или внутренних процессах банкам обычно рекомендуется воздерживаться от внесения серьезных изменений в их очень сложное программное обеспечение для бизнеса.
Это привело к застою из-за длительного использования Windows 7 и MS Outlook 10. В случае с Python соблюдение устаревших стандартов может означать, что код иногда все еще пишется в устаревшей версии Python 2, которая значительно отличается от версии Python 3 2008 года и несовместима с ней.
Вопреки распространенному мнению об отставании банков, Шон Хантер считает, что сверхсекретные коды обладают особым потенциалом для инноваций. Потому что банкам часто приходится разрабатывать автоматизированные решения для вполне конкретных случаев — например, в виде MVP, так называемых минимально жизнеспособных продуктов, внедрение которых оказывает влияние на мировую практику. Специалист также считает оправданным начало внедрения облачных вычислений в Goldman Sachs. И еще один факт, вероятно, будет решающим для Bank Python как движущей силы инноваций: банки обладают огромным глобальным богатством данных, что, в свою очередь, сопровождается потенциалом для получения знаний.
Но устаревшие системы банков и их идиосинкразическая практика кодирования, скорее всего, еще больше усложнят для IT-персонала переход в другую IT-область после многих лет работы в крупных финансовых учреждениях — даже если они это сделали, это просто означает переход к финтеху. И наоборот, шансы найти карьеру в банковской сфере со знанием Python несколько выше. Однако, по словам Патерсона, на ознакомление с особенностями Bank Python может уйти несколько месяцев.

Широкий спектр приложений

Библиотеки pandas

Тот факт, что Python особенно удобен для работы с большими данными, в основном связан с его выбором программных библиотек, основанных на анализе данных. Библиотеки pandas и NumPy подходят для базовой работы с большими объемами данных — последняя была разработана в 2008 году компанией хедж-фонда AQR Capital Management. Также полезны для финансов Matplotlib для визуализации данных и SciPy для расширенных статистических и математических функций. Исходя из этого, можно использовать такие библиотеки, как Scikit и Pybrain, которые оснащены эффективными алгоритмами машинного обучения для прогнозирования тенденций.
Единственным недостатком Python является так называемая глобальная блокировка интерпретатора (GIL): интерпретатор Python, который читает и выполняет код, может одновременно редактировать только одну часть кода. Однако на практике это редко вызывает какое-либо время ожидания, если блоки кода предварительно распараллелены и выполняются на кластере компьютеров. Для интенсивных вычислительных процессов с большими объемами данных Python также может хорошо использоваться в сочетании с такими платформами, как Spark и Hadoop, и имеет программные интерфейсы для баз данных NoSQL, таких как MongoDB.
Чтобы сократить время вычислений, также можно писать функции на C или C++, а затем встраивать их в модули Python. Расчетные модели обычно сначала формулируются как прототип, затем калибруются и тестируются в Python, и только после этого они становятся доступными для конечного использования.

Математическая реликвия: язык программирования R

язык программирования R

Согласно опросу, проведенному KD Nuggets, язык программирования R оставался ведущим для обработки данных вплоть до 2016 года благодаря его широкому использованию в университетах. Python следовал за ним, но догнал его в 2017 году, когда два языка были примерно связаны чуть менее чем на шестьдесят процентов. В 2018 и 2019 годах доля Python выросла до дух третей, в то время как чуть менее половины опрошенных предпочли R. Тенденция продолжилась: на E-Financial-Careers, ведущей доске объявлений о вакансиях в сфере финансовых услуг, в настоящее время открыта 2231 вакансия для Python и только 456 вакансий для R.
Хотя R изначально предлагал лучшие пакеты для статистического анализа и визуализации, Python, вероятно, выиграл в основном из-за простоты использования и лучшей обработки объектно-ориентированного программирования (ООП). Динамическая типизация в Python также менее подвержена ошибкам, а когда дело доходит до скорости, Python, как говорят, в четыре раза быстрее, чем R.

Устойчивая тенденция будущего

Исследователи данных, которые ценят строгость математики, вероятно, по-прежнему будут хвалить достоинства R для статистического анализа и визуализации данных. Но разрыв все больше сокращается. Широкий спектр приложений Python и его специализация в растущих областях больших данных, искусственного интеллекта и алгоритмов глубокого обучения сделали его предпочтительным универсальным языком для целей анализа данных, в том числе в финансовом секторе.
Одна из основных причин этого заключается в том, что IT-подразделениями банков, которые составляют большую часть всего персонала финансового учреждения, обычно руководят компьютерщики, не обладающие глубокими знаниями в области анализа данных. R более ориентирован на данные, не нужны какие-либо статистические знания для программирования на Python — это плюс для современных программистов инвестиционно-банковских услуг, которые работают преимущественно на основе кода и редко имеют профессиональный опыт в статистике или финансовой математике.
В быстро меняющемся и в то же время абстрактном мире инвестиционно-банковских услуг особенно выгодно использовать язык программирования, широко распространенный как в академических исследованиях, так и среди конечных клиентов. Учитывая популярность Python в финансовом секторе, в будущем можно ожидать роста сообщества пользователей. Это, в свою очередь, приводит к ожиданиям, что инструменты для Bank Python будут активно развиваться и что будет расти несоответствие между Bank Python и Python с открытым исходным кодом.

Анастасия Волкова

Специалист по информационной безопасности.

Оцените автора
Безопасник
Добавить комментарий