Теряем рабочие места
...теперь и в аптеке.
...теперь и в аптеке.
Сейчас наш мир стремится к автоматизации многих процессов, которые люди ранее выполняли самостоятельно. Технологии не обошли стороной и финансовый рынок. Сегодня мы поговорим об алготрейдинге и выясним, насколько эффективна автоматизация торговых процессов и какие риски влечет за собой чрезмерная активность торговых ботов.
Пара слов о сути понятия
Алгоритмическая торговля — это делегирование рутинных процессов системе, которая выполняет действия человека, если говорить простыми словами. Зачастую трейдеры, особенно новички, допускают ошибки из-за эмоциональности, некорректного анализа статистических данных, несвоевременной реакции на изменения ситуации на рынке.
Так как рынок постоянно меняется, разработчики пытаются предугадать, могут ли разные модели повторяться не только в прошлом, но и в будущем. Торговые механизмы помогают составить правила, позволяющие совершать выгодные сделки. Форекс-роботы анализируют обстановку на рынке на основе технических индикаторов, из которых строится стратегия. На базе полученных данных трейдер может самостоятельно решать, какую сделку открыть в пределах рекомендованного диапазона.
Оцениваем риски
Использование торговых роботов для биржевой торговли может быть эффективным при правильном подходе. Однако начинающим трейдерам стоит усвоить одно из правил любой биржи — чем выше доход, тем больше рисков.
При использовании торговых роботов форекс могут возникать разные риски:
• технические сбои. Если автоматизированный алгоритм повышает количество заявок до критического уровня, это может привести к отказу системы. Такая ситуация чревата приостановкой торгов, в результате чего трейдеры теряют часть прибыли. К техническим ошибкам также могут приводить недоработки программы;
• резкий скачок волатильности. Стоимость активов может периодически взлетать или падать под воздействием повышения или снижения интереса к ним;
• отток ликвидности. Активное применение торговых роботов иногда провоцирует стрессовые движения, вследствие оставления большей части заявок. Такая ситуация может привести к оттоку ликвидности и овалу котировок;
• снижение прогнозируемости рынка. Активный алготрейдинг может привести к потере прозрачности ценообразования, что отрицательно сказывается на точности прогнозов.
На основе вышесказанного можно сделать выводы, что алгороботы упрощают торги, но их чрезмерное использование способно пагубно сказаться на рыночной ситуации. При насыщении рынка алготрейдерами традиционные инвесторы могут остаться без сделок с выгодными ценами, перехваченными автоматизированной системой. Кроме того, осознание преимуществ использования торговых роботов постепенно приводят к отказу от ручной торговли все большего количества участников рынка.
FIX протокол нашел большое применение у трейдеров, давайте рассмотрим почему.
Financial Information Exchange, именно так расшифровывается аббревиатура FIX.
Это переводится - обмен финансовой информацией.
Он создан для финансовых рынков, с целью скоростной передачи огромного объема данных. Сегодня им пользуется большая часть участников финансового рынка, устанавливая коммуникацию между информационными системами, является стандартом взаимодействия на финансовом рынке.Nerd
FIX API или FIX протокол обладает рядом бесспорных плюсов:
• простота архитектуры протокола позволяет с высокой частотой и маленьким временным промежутком передавать большой объем данных;
• так как FIX протокол един, соединение между участниками по нему не требует большое количество времени;
• протокол предоставляет трейдеру обладающему своей торговой системой быть анонимным к тем, кому доступны операции;
• протокол обладает большим количеством специализированных инструментов, в частности - стандартизированный язык, при по средством которого участники рынка общаются.
• при наличии FIX API, можно пользоваться лимитными ордера FOK и IOC. Что позволяет избежать проскальзывания, сделка или открывается по вашей цене, либо просто не открывается, цена при этом не скользит.
FIX API предоставляет проектировать свои торговые системы, такие как "черный ящик" алготрейдинга, они способны получать огромное количество информации из огромного числа разных ресурсов, принимая решения на базе полученной информации. Все это позволяет занимать миллисекунды процессу получения и анализа информации, а так же размещения ордеров на рынке посредством FIX API.
Современные биржи – очень технологичны и привлекают внимание людей, которые ранее не имели опыта инвестиций. Многих интересует тема написания торговых роботов – кто-то хочет самостоятельно попытаться заработать на бирже, кто-то не прочь делать это на заказ. Сегодня мы поговорим о том, как стоит подойти к созданию первого такого продукта – обсудим возможный стек технологий, снижение порога входа и способы минимизации возможных потерь.
Примечание: пост для тех, кто уже хотя бы примерно представляет себе устройство биржи, наличие рисков, имеет возможность экспериментировать не на последние деньги и, в целом, обладает здравым смыслом.
Изучите возможный стек технологий
Как и в любом ИТ-проекте, при разработке приложений для торговли на бирже, выбор конкретных инструментов диктует конечная цель. Прежде чем начинать разрабатывать торгового робота, нужно спроектировать всю систему, понять, какие модули в ней будут, как они будут взаимодействовать.
Пишите вы высокочастотного робота, которому важна каждая миллисекунда? На каких рынках каких стран будет работать торговая система? Будет ли в ней лишь торговый движок, или еще нужно добавить модуль риск-менеджмента?
В каждом из этих случаев набор технологий может различаться. Хорошо подход к выбору описан в статье на профильном ресурсе QuantStart (конечно, на английском – для разработки финансовых приложений этим языком лучше неплохо овладеть).
В общем и целом, выбирать вам скорее всего придется из такого списка технологий:
- Большинство брокерских и не только API (вот моя подборка таких инструментов) имеют интерфейсы на C++ и/или Java. Возможно, вы сумеете найти готовые модули для подключения, написанные на C#, Python, R, Excel и MatLab представителями сообщества/клиентами конкретного брокера. Но возможно придется и писать их самостоятельно.
- Для анализа данных часто применяют такие библиотеки, как uBLAS, LAPACK и NAG для C++, MatLab в Python популярны NumPy/SciPy.
- При разработке высокочастотных роботов, использующих GPU (FPGA), скорее всего придется познакомиться с фреймворком CUDA.
Для первого раза будет проще использовать встроенные языки программирования
Создание мощной торговой системы – это по-умолчанию достаточно масштабный проект. Однако если ваша цель – в принципе познакомиться с разработкой для сферы финансов, изучить различные моменты при создании торговых роботов, то вполне можно обойтись и так называемыми встроенными языками программирования.
Существуют торговые терминалы, которые можно не только использовать для совершения сделок в ручном режиме, но и применять встроенные в них скриптовые языки для создания несложных роботов.
Один из самых популярных на российском фондовом рынке терминалов – это QUIK, и в нем есть алгоритмический язык QPILE ( QUIK Programmable Interface and Logic Environment). С его помощью можно автоматизировать несложные торговые системы. Также в QUIK встроен интерпретатор скриптового языка LUA – он называется QLUA. В терминал скрипты на нем можно загружать как в виде исходного кода, так и уже в виде скомпилированного байт-кода.
Пример кода на QPILE:
PROGRAM
FirmCode = "MC0012300000"
CurrentBalance = MONEY_CURRENT_BALANCE(ROWNAME, FirmCode, "EQTV", "SUR")
CurrentLimit = MONEY_CURRENT_LIMIT(ROWNAME, FirmCode, "EQTV", "SUR")
Locked = MONEY_LIMIT_LOCKED(ROWNAME, FirmCode, "EQTV", "SUR")
AvailableMoney = MoneyCurrentBalance + MoneyCurrentLimit – MoneyLocked
If AvailableMoney > 0
Status = "Заявки доступны"
Else
Status = "Заявки недоступны"
SET_ROW_COLOR(ROWNAME, "RGB(255,138,138)", "DEFAULT_COLOR")
End If
END_PROGRAM
Оба языка обладают достаточно развитым коммьюнити пользователей, вопросы можно задавать в тредах на официальном форуме.
Помимо QUIK, на российских биржах можно торговать через терминал SMARTx. В нем используется встроенный скриптовый язык TradeScript. Синтаксис у него простой, но количество доступных слов и операндов, кодировать можно довольно сложные стратегии. Вот так может выглядеть код простой стратегии на TradeScript:
Buy Signals
# Покупаем, если момент и инерция имеют однонаправленный тренд
TREND(EMA(CLOSE, 20), 15) = UP AND
TREND(MACD(13, 26, 9, SIMPLE), 5) = UP
Sell Signals
# Продаем, если момент и инерция имеют однонаправленный тренд
TREND(EMA(CLOSE, 20), 15) = DOWN AND
TREND(MACD(13, 26, 9, SIMPLE), 5) = DOWN
Exit Long Signal
# Выходим, если тренд инерции и момента имеет противоположное направления
TREND(EMA(CLOSE, 20), 15) = DOWN OR
TREND(MACD(13, 26, 9, SIMPLE), 5) = DOWN
Exit Short Signal
# Выходим, если тренд инерции и момента имеет противоположное направления
TREND(EMA(CLOSE, 20), 15) = UP OR
TREND(MACD(13, 26, 9, SIMPLE), 5) = UP
Самый важный этап: тестирование и отладка
Разработка приложений для сферы финансов и особенно инструментов для торговли на бирже сложна тем, что тут за ошибки в прямом смысле нужно расплачиваться деньгами. Это не написание кода для очередного веб-стартапа, где при сбой может пройти незамеченным. Любая ошибка в коде торгового робота будет выливаться в потерю денег. Поэтому отладка и тестирование – самый важный этап при создании такого софта.
Безусловно, следует применять все лучшие практики, создавать тесты, правильно проводить приемку кода (пусть даже вы разрабатываете проект в одиночку). И самое главное – перед началом тестов на реальных деньгах, «погоняйте» программу на виртуальных.
Сегодня многие российские брокеры предлагают бесплатную услугу тестового доступа (например, такой есть у компании-разработчика терминала SMARTx), когда вам дают счет, который почти ничем не отличается от реального, но деньги на нем виртуальные. Как правило, при работе с таким счетом можно торговать на основных рынках – фондовом, валютном, срочном – и работать с основными акциями, фьючерсами и т.п.
В некоторых случаях, можно даже тестировать торговлю с привлечением заемных средств (то есть плечом) – но при создании первого робота еще вопрос, нужно ли добавлять в него такие функции.
Человечество вовсю торгует в онлайн-пространстве и совершает покупки в автоматизированных виртуальных магазинах, зачастую не задумываясь – а кто выступает продавцом? Кто отвечает за ценники на товары? Еще в 2015-ом минимум треть всех сделок на Amazon обслуживали специальные торговые алгоритмы — по сути, узкоспециализированные роботы. Подозрения в их отношении копились долго, и вот результат – доказано, что сговор между такими системами неминуем.
Торговые алгоритмы очень похожи на ИИ с урезанным функционалом. Они умеют анализировать ситуацию на рынке, учиться на своих ошибках, а цель у них всегда одна – максимизация прибыли. Чтобы роботы не устроили хаос, у них есть ограничения на максимальные значения ценников, но вот за политикой ценообразования в целом никто специально не следит. Слишком большой объем операций — чем и не преминули воспользоваться роботы.
Как объясняют профессоры Эмилио Кальвано и Джакомо Кальцолари из Болонского университета (Италия), в этих алгоритмах нет понятия «торговые войны», но они пришли к нему сами. Точнее, решили, что надо их исключить для общего блага, для чего вступили в сговор. Ученые провели десятки экспериментов, которые наглядно показали, как система из двух и более участников-роботов приходила в состояние сговора. ИИ не договаривались напрямую, у них нет такой возможности, но роботы сами делились на вожака и ведомых, которые подстраивали свою политику под него. И переставали демпинговать.
Больше всего профессоров поразило то, что ИИ учились вступать в сговор не так, как люди. Они не изучали среду, не получали инструкций, не применяли специальных инструментов и схем, за неимением таковых, не координировали свои действия. Но упорно, методом проб и ошибок, сами осваивали то, что в Болонском университете назвали «основами капитализма для роботов». Это когда цель поставлена — максимальная прибыль — а методы достижения ИИ разрабатывает сам.