Проекты
Здесь представлено несколько текущих проектов, которые мы выполняем для наших клиентов – ключевых игроков инвестиционно-банковского сектора:
Предпосылки
Исторически, фондовая биржа представляла собой место, где покупатели и продавцы могли встретиться и провести переговоры. С развитием средств коммуникации, необходимость физического присутствия отпала, т.к. покупатели и продавцы получили возможность сообщать друг другу о своей заинтересованности в сделке в электронной форме, равно как и вести переговоры удаленно. Электронные торги облегчают процесс заключения, отслеживания, оплаты и осуществления окончательного контроля исполнения сделки.
FIX протокол — это электронный протокол, разработанный специально для обмена информацией о фондовом рынке и операциях на нем в реальном времени. FIX протокол стал эталоном электронного обмена информацией для сопровождения сделок.
Особенности проекта
Когда от клиента поступает новый заказ в формате FIX сообщения, он должен быть проверен на правильность, нормализован, пополнен данными и доставлен системой по назначению, например, непосредственно на биржу, или трейдеру, или же отклонен. В некоторых ситуациях к нему должны быть применены определенные торговые стратегии. Системе также необходимо прозрачно поддерживать изменение заказов, их отмену и отсылку информации об исполнении обратно клиенту.
Программное обеспечение, которое работает с такими заказами, должно одновременно обслуживать множество клиентов и принимать большое количество решений в кратчайшие промежутки времени, основываясь на деталях, перечисленных в заказе, специфических особенностях клиента, внутренней политике компании. Система должна быть очень надежной и поддерживать режим работы 24/6. Архитектура приложения должна быть тщательно продуманной, чтобы высокопроизводительно работать с большими объемами данных: время отклика системы должно быть минимальным, а пропускная способность высокой.
Существующее программное обеспечение написано на С++ под Linux и Solaris платформы. В настоящее время мы работаем над серьезными изменениями, затрагивающими его архитектуру, с целью получить распределенную систему, в которой части приложения, отвечающие за взаимодействие с клиентом, могут быть размещены ближе к клиенту, а части приложения, отвечающие за взаимодействие с биржей, могут быть размещены ближе к бирже.
Процедура восстановления приложения после сбоя полностью переделана с учетом его распределенности, а также для обеспечения высокого уровня отказоустойчивости и сведения к минимуму времени, необходимого на перезапуск системы.
Меняются механизмы работы с памятью и кэширования данных, внедряется поддержка 64-битных платформ.
Реализуется поддержка более современных версий FIX-протокола. Ведутся также и другие разработки, направленные на увеличение производительности приложений за счет минимизации времени отклика и повышения пропускной способности систем.
Предпосылки
Рабочее место трейдера – это жизненно важное приложение, работающее на рабочих станциях торговых залов. Такое приложение обычно имеет очень богатый пользовательский интерфейс и отображает огромное количество информации, включая поступающие заказы, отчеты о совершении сделок, оперативную информацию с рынков, чтобы помочь трейдеру осуществить сделку. Производительность и надежность такого приложения крайне существенна: трейдер должен мгновенно принимать решения, и даже небольшая задержка может стоить многого.
Особенности проекта
В настоящий момент АРМ трейдера представляет собой .Net-приложение, работающее на Windows платформах. Перед нами стояла задача оснастки приложения счетчиками производительности, позволяющими собирать статистику на протяжении торгового дня для дальнейшей ее обработки и анализа в удобной форме и определения узких мест. Необходимо было также предоставить возможность автоматического оповещения службы тех-поддержки торгового зала во время торгов в случае превышения счетчиками эталонных показателей. Дополнительными требованиями к реализации были минимальное затрагивание существующего кода и жесткие условия на добавочные временные расходы, связанные со сбором статистики.
Для реализации поставленной задачи нами была выбрана техника аспектно-ориентированного программирования, AOP (англ. Aspect Oriented Programming), позволившая внедрить код протоколирования, минимально затрагивая существующий код. Нами была реализована трехуровневая модель с выделенным сервером приложений, обеспечивающая возможность сохранения статистических данных. Также было написано мощное графическое приложение, позволяющее анализировать собранные данные в различных аспектах.
В то же время использование профайлеров помогло нам найти дефекты существующего кода, возникшие на этапах его разработки или внедрения.
Предпосылки
Сервер является центральным звеном обработки всех сделок по ценным бумагам, а также предоставляет основные интерфейсы доступа к биржевым площадкам и внутренним системам. Сервер проверяет входящие заявки о торгах на соответствие внутренним бизнес-правилам, отклоняя неверно сформированные и сохраняя лишь корректные запросы и ассоциированные с ними события, такие как, например, совершение сделки. Сервер написан на языке C/C++ и работает под управлением UNIX.
Особенности проекта
Сервер испытывает максимальные нагрузки в конце рабочего дня, когда трейдеры закрывают открытые заявки. Таким образом, основная задача состояла в реструктуризации сервера с тем, чтобы:
- Обеспечить надлежащий уровень многопоточности и кластеризации для достижения большего параллелелизма и надежности обработки;
- Обеспечить режим доступности сервера 24/6;
- Поддержать новый сетевой протокол сетевого уровня;
- Существенно улучшить механизм восстановления после сбоев таким образом, чтобы клиентские приложения могли не только восстановить текущее состояние заявки, но и при желании полностью отследить историю изменений ее статуса.
Помимо изменений непосредственно кода сервера, API клиентских библиотек, включая C++, .Net и Java API, также требовали соответствующих изменений.
Предпосылки
Протокол обмена финансовой информацией (Financial Information eXchange, FIX) является стандартом для обмена сообщениями, разработанным специально для проведения электронных торговых транзакций в режиме реального времени. Ядро FIX представляет собой программное обеспечение, которое обеспечивает сетевое соединение, формирует и обрабатывает исходящие и входящие сообщения, а также обеспечивает восстановление транзакционных сессий после сбоев. Ядро написано на языке Java и работает под управлением UNIX.
Особенности проекта
Минимальное время отклика, максимальная пропускная способность и большое время доступности являются критическими требованиями к системам электронной торговли реального времени. Таким образом, задача состояла в создании высоко-оптимизированного и надежного приложения, обеспечивающего:
- Взаимодействие с клиентом по протоколу FIX через TCP/IP;
- Взаимодействие с различными внутренними системами, используя собственный прикладной протокол и одну из современных коммерческих систем сетевого обмена сообщениями;
- Механизм восстановления так, что при перезапуске ядра после сбоя, система гарантирует обработку пропущенных сообщений от остальных приложений.
Предпосылки
Многие финансовые приложения перед тем, как принять торговую заявку, должны убедиться в ее корректности. В частности, зачастую необходимо знать рабочие дни бирж и открытые часы торговых сессий на них. Эта информация особенно важна в крупных финансовых конгломератах, ведущих торговлю по всему миру.
Особенности проекта
Основными целями данного проекта были:
- Предоставить другим приложениям современный, надежный, мощный, но в тоже время простой способ определить открытые дни и часы биржи через механизм web-сервисов;
- Обеспечить разработчиков других приложений легкими и гибкими API, которые оборачивают взаимодействие с сервисом и предоставляют наборы простых и удобных для вызова функций. Эти API реализованы для трех основных платформ разработки – C++, .Net and Java.
Предпосылки
Система обработки данных по торгам и активным позициям предназначена для контроля корректности осуществления операций купли-продажи, которая осуществляется благодаря:
- Чёткому и своевременному составлению отчетов о прибылях и убытках и балансе денежных средств;
- Независимой оценке торговых позиций банка;
- Оценке и интеграции новых процессов и видов деятельности в финансовую систему банка.
Все эти виды деятельности осуществляются с использованием трейдингового приложения – ключевого элемента в инфраструктуре этой Системы.
Особенности проекта
Приложение является хранилищем для данных о балансе денежных средств, торговых операций, балансе за отчетный период и списаниях убытков, представляемых в виде стандартизированной модели данных. Её основные функции:
- Оценка и обработка ошибок главных бизнес атрибутов всех торговых операций, позиций и потоков денежных средств;
- Построение необработанных отчётов о списаниях;
- Оценка и поддержка продаж, позиций, счетов к получению, баланса денежных средств и отчета о прибылях и убытках;
- Составление финансовой отчетности, отчета о прибылях и убытках, включая “Чистый отчет о прибылях и убытках”;
- Сведение cash flow в балансы денежных средств.