- PVSM.RU - https://www.pvsm.ru -
Мы много пишем о создании торговых систем и создаем инструменты для их разработки (от API брокерской системы [2] до конструктора роботов внутри торгового терминала [3]). Сегодня речь пойдет о проектировании архитектуры алагоритмической торговой системы — именно этой теме посвящен материал [4] из блога Turing Finance, написанный количественным аналитиком хедж-фонда NMRQL Стюартом Ридом.
В своей статье автор описывает принципы создания архитектуры для трейдинговой системы, которая бы отвечала требованиям ISO/IEC/IEEE 42010 и стандартам описания софта инжиниринговых архитектурных систем. Согласно этим стандартам описание архитектуры должно содержать различные стандартизированные архитектурные подходы и поддерживать связи между конструкторскими решениями и требованиями системы. Мы представляем вашему вниманию адаптированный перевод этой статьи.
Споры о том, что есть системная архитектура, ведутся до сих пор. В контексте темы статьи автор предлагает понимать под этим внутреннюю инфраструктуру, компоненты приложения которой удовлетворяют функциональным требованиям, могут быть установлены, развернуты и запущены. Нефункциональные требования можно оценить через качество самой системы.
Даже если все функциональные требования выполнены, это еще не значит, что система собрана качественно. Нефункциональные требования также должны быть учтены. Проиллюстрируем эту мысль на примере. Представьте следующую картину: трейдинговая система, которую вы только что приобрели или самостоятельно выстроили, принимает правильные торговые решения. Но она устроена так, что на нее нельзя возложить ни организацию риск-менеджмента, ни бухгалтерские отчеты. Вряд ли такую систему можно назвать полностью удовлетворяющей запросам.
На абстрактном уровне описываются понятия и основные механизмы системы. Желательно с глубокой и детальной проработкой. На этом этапе трейдинговая система «упаковывается» в архитектуру управления событий (Event Driver Architecture). Та, в свою очередь, разбивается на 4 слоя и два отдельных подхода. Для каждого из них используются свои референсы и свои паттерны. Паттерны – общепринятые структуры для достижения конкретных задач.
Архитектура управления событиями – это архитектура, которая позволяет обнаруживать, производить и уничтожать события или реагировать на них. События могут быть: движениями рынка в реальном времени, комплексными событиями или трендами, торговыми сигналами, которые тем или иным образом упорядочены.
Концепция архитектуры торговой системы представлена на картинке:
Если использовать строительную метафору, то эталонная архитектура – это то же самое, что и проект несущей стены. Его можно использовать для создания помещения различного дизайна. Главное – он удовлетворяет базовым требованиям строительных стандартов. Эталонная архитектура – некий образец, описывающий общие структуры и механизмы, которые модно использовать для создания определенного архитектурного софта с конкретными требованиями.
Архитектура для алгоритмической трейдинговой системы использует в качестве референсов пространственную архитектуру (SBA) и фундаментальный паттерн «модель-вид-контроллер» (MVC). Подходят также практики типа операционного склада данных (ODS), паттерн «извлечение, преобразование, загрузка» (ETL) и корпоративное хранилище дынных (Data Warehouse).
Модель-вид-контроллер
Пространственная архитектура
На этапе построения структуры определяются компоненты и суб-компоненты торговой системы. Структура определяет то, как эти компоненты будут развернуты в рамках физической инфраструктуры. UML-диаграмма (диаграмма на унифицированном языке моделирования) показывает, какие компоненты включены, и как они развертываются. На рисунках представлены диаграммы развертывания: общая и для каждого из слоев.
Тактика имеет дело с качественными атрибутами модели. Самый простой пример того, как система пытается подстроиться под качественные требования, — манипулирование операционным набором данных через непрерывные запросы. Эти компоненты способны непрерывно анализировать ODS, чтобы обнаруживать и извлекать комплексные события. Вот список тактик, которые используются в архитектуре:
Этот список предлагает лишь небольшое число проектировочных решений, которые автор статьи смог идентифицировать в процессе разработки архитектуры для трейдинговой системы. Список далеко не полный. На каждом уровне детализации к ним добавляются новые тактики для удовлетворения функциональных и нефункциональных требований. На картинке представлены три диаграммы, описывающие паттерн дезинтегратора, паттерн фильтра и компоненты непрерывных запросов:
Этот обзор архитектуры демонстрирует то, как должны взаимодействовать компоненты и слои системы. Он весьма полезен, когда вы разрабатываете сценарии для тестирования системы и понимания того, как все устроено от начала и до конца. Этот обзор состоит из диаграмм последовательности и диаграмм активностей. Последние показывают внутренние процессы работы трейдинговой системы и как сами трейдеры с ней взаимодействуют. Примеры таких диаграмм представлены ниже.
Финальный шаг в разработке архитектуры программной части торговой системы – найти подходящие техники и фреймворки, которые можно использовать для ее реализации. Общее правило здесь: постараться для начала выжать все, что возможно, из существующих техник, убедившись, что они отвечают функциональным и нефункциональным требованиям. Фреймворк в данном случае представляет собой эталонную архитектуру. Так, например, фреймворк JBoss реализует эталонную архитектуру JEE. Вот список нескольких техник и фреймворков, которые можно использовать для создания архитектуры трейдинговой системы:
Следует помнить, что любые компоненты (техники или фреймворки) должны иметь API, чтобы обеспечить их совместимость.
Предложенный вариант архитектуры удовлетворяет самым общим требованиям алгоритмических трейдинговых систем. Для таких систем основную нагрузку несут три фактора, которые выступают на практике в разных комбинациях:
Предложенная архитектура нуждается в адаптации на основе движения от кейса к кейсу. Она должна соответствовать специфичным организационным, регуляторным требованиям и региональным ограничениям. Проще говоря, в статье был представлен лишь список полезных ссылок, которые нужно еще настраивать под индивидуальные потребности.
Автор: ITinvest
Источник [18]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/razrabotka/130945
Ссылки в тексте:
[1] Image: https://habrahabr.ru/company/itinvest/blog/302990/
[2] API брокерской системы: http://www.itinvest.ru/software/smartcom/
[3] конструктора роботов внутри торгового терминала: http://www.itinvest.ru/software/comp/smartx/plagin-konstruktor-robotov/
[4] материал: http://www.turingfinance.com/algorithmic-trading-system-architecture-post/
[5] CUDA: http://www.nvidia.com/object/computational_finance.html
[6] Apache river: http://river.apache.org/
[7] Apache Hadoop: http://hadoop.apache.org/
[8] AlgoTrader: http://www.algotrader.ch/
[9] FIX Engine: http://www.fixtradingcommunity.org/pg/structure/products-and-services
[10] ITinvest: http://www.itinvest.ru/
[11] Технологии фондового рынка: 10 заблуждений о нейронных сетях: https://habrahabr.ru/company/itinvest/blog/302120/
[12] Аналитические материалы о ситуации на финансовых рынках от экспертов ITinvest: http://www.itinvest.ru/analytics/
[13] Можно ли создать алгоритм для торговли на бирже с помощью анализа тональности сообщений в интернете: https://habrahabr.ru/post/282403/
[14] Как определить наилучшее время для сделки на фондовом рынке: Алгоритмы следования тренду : https://habrahabr.ru/post/281515/
[15] ИБ-стартап Palantir поможет инвестбанку Credit Suisse создать систему для выявления недобросовестных трейдеров: https://habrahabr.ru/post/280436/
[16] Эксперимент: Использование Google Trends для прогнозирования обвалов фондового рынка: https://habrahabr.ru/post/279021/
[17] Эксперимент: создание алгоритма для прогнозирования поведения фондовых индексов: https://habrahabr.ru/company/itinvest/blog/278023/
[18] Источник: https://habrahabr.ru/post/302990/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.