В этой статье я продолжаю делиться своим опытом по алгоритмической торговле моих роботов из TSLab на Американском фондовом рынке через брокера Interactive Brokers (IB). Спасибо всем, кто проявил интерес к моей первой статье, опубликованной в ноябре и за ваши комментарии. Это воодушевляет и вдохновляет к дальнейшей работе в этом направлении. Для тех, кто не успел ознакомиться с первой частью даю ссылочку внизу.
Для удобства весь материал был разбит на три части:
Часть 1- Особенности при подготовке к запуску TSLab на реал с IB– ноябрь 2017, ссылка https://smart-lab.ru/my/schardonnay/blog/all/
Часть 2 — Непосредственная работа терминалов TSLab и TWS
Часть 3- Часто встречающиеся проблемы
В данном выпуске идет рассмотрение второй части –как происходит работа TSLab и платформы брокера Trader Workstation (TWS) в течение основной рабочей сессии – с 9.30-16.00 ЕТ, порядок исполнения ордеров, проскальзывание и особенности комиссии. Все примеры сделок в этой статье реальные и приведены с моего торгового счета IB за последние два месяца торговли роботами.
Я исходила из принципа освещения наиболее актуальных моментов, того, что вызвало у меня внимание и повышенный интерес, и того, с чем ранее не сталкивалась. Если у кого-то возникали подобные моменты, буду признательна за комментарии по вашему опыту.
Часть 2- Непосредственная работа терминалов TSLab и TWS
Установление связи между TSLab и TWS- в первой части статьи я описывала моменты подготовки к запуску на реал обеих платформ. При успешном подключении у вас в TWS появится такая табличка при нажатии на зеленый символ DATA в правом верхнем углу. Внизу можно увидеть ваши IP данные с портом 7496 и API Client ID и статус- Аccepted.
При этом в платформе TSLab появляются сообщения о подписке на реальные маркет данные (Market Data Subscriptions), как показано на скриншоте внизу.
Первая строка сверху- брокер транслирует TSLab, что у меня нет подписки на глубину стакана.
Вторая строка сверху- говорит, что есть инструменты в портфеле, по которым нет реальных маркет данных. У меня есть в портфеле бумаги не с Американского рынка, они транслируются с задержкой, это про них.
Остальные строки- это в принципе совпадает со скриншотом вверху из платформы IB с той разницей, что в TSLab эта информация транслируется при подключении к брокеру в сообщениях.
Еще раз отмечу, что для торговли на реале нужны реальные маркет данные. Как это делается я рассказывала в первой статье.
После того, как все сконнектировалось, рассмотрим исполнение ордеров на стороне брокера. На стороне TSLab я останавливаться особо не буду, там в принципе все стандартно и при необходимости можно познакомиться с довольно подробной документацией на сайте TSLab. Отмечу лишь два момента.
Первый -ТSLab после входа в позицию выставляет только один ордер – или стоп или тэйк профит (ТП), в зависимости от того, к какому краю ближе сейчас находится текущая цена. Пересчет и выставление нового ордера происходит в зависимости от интервала пересчета- у меня 1 мин. При этом на графике отображаются данные и по стопу и по ТП, что визуально удобно.
Второй- IB не позволяет заходить в позицию в лонг и шорт одновременно по одной бумаге, можно только в одну сторону. В этом отличие от рынка FORTS.
Комиссия — Вопросы по комиссии от вас встречались наиболее часто, поэтому остановлюсь еще на некоторых нюансах.
- При выборе ордера нужно учитывать, что комиссия за маркет ордера дороже, чем за лимитные ордера, т.к. первые забирают ликвидность у маркета, а последние добавляют ее.
Вот один из экстремальных примеров, когда 100 акций было продано маркетом в шорт с комиссией 1.01 USD и откуплено лимитником с комиссией всего 0.16 USD.
- Для того, чтобы при выставлении ордера играла роль именно комиссия и остальные сборы, выставляем галочку Consider cost when routing в настройке ордеров. Если эта галочка не стоит, то главным условием является цена биржи.
TWS – File> Global Configuration> Presets>Stock>Miscellaneous
- SMARTRouting-При алготорговле через TSLab используется так называемый SMART routing algorithm, когда брокер при работе с ордерами применяет алгоритм, учитывающий максимальную возможность исполнения ордеров при наилучшей цене и комиссии. Поэтому в настройках можно установить нужную для себя опцию исходя из своих потребностей, объема, приоритета в исполнении и т.п. Это делается также через
TWS – File> Global Configuration > Orders > Smart Routing
Частичное исполнение ордеров. Если поставить галочку AllorNone — в предустановленных настройках ордеров, в разделе «Advanced”, то заявка будет исполняться либо полностью, на все количество либо не исполняться вообще. Это позволяет снизить комиссию, когда ордер может быть разбит на несколько частей.
При реальной торговле, однако, это правило не всегда соблюдается и не только на низко ликвидных бумагах. Пример внизу с акцией CRM (Salesforce.com), входящей в индекс S&P500 со средним объемом проторговки в день более 4 млн. Заявка на 167 акций была разбита на две части 100 и 67 при покупке маркетом! При этой операции комиссия же составила не больше, чем бы это был один ордер. Закрылись одним ордером.
Вот также пример, когда заявленный ордер на покупку маркетом 45 акций GIII (G-III Apparel Group) был разбит на три части, причем за одну часть комиссия была 0.00
Проскальзывание (slippage) и SSR(ShortSaleRule), — в процессе работы роботов заметила, что в целом исполнение маркет ордеров за исключением первых 10-15 минут сессии идет примерно с 1-2 центами проскальзывания по сравнению с той ценой, которая идет в лабораторной сделке в TSLab по этому же агенту. Теперь это учитываю при тестировании своих стратегий на истории. При этом ТП всегда ставлю лимитным ордером, без проскальзывания, а не условной заявкой. Это задается в настройках скрипта.
При открытии сессии, когда волатильность высокая, бывают и более значительные проскальзывания. Самым большим у меня была разница в 54 цента, бумага ВА (Boeing). Имеется ввиду разница между ценой входа в лаборатории и реальной ценой входа. Бывают, конечно, и совсем нештатные ситуации. Одним из ярких примеров может служить недавняя история с бумагой PCG (PG&E Corporation), когда еще на премаркете цена упала примерно на 15% с 51.12 до 43.08 из-за плохих новостей. Я как раз стояла в этой бумаге в шорт. При открытии мой маркет ордер был только исполнен через 3!!! минуты, при том, что это был buy ордер.
Здесь также надо отметить тот факт, что именно в это время было установлено правило «up- tick rule», известное также как SSR, когда продавать бумагу можно только после up tick. Выставленные ордера при этом могут получить значительное проскальзывание, т.к не известно когда будет up tick и сколько ордеров успеют провести после этого. Это отражается только в платформе брокера красным кружком рядом с тикером бумаги и не видно в TSLab.
Миллисекунды, миллисекунды- тоже играют значение при алгоритмической торговле, хотя у меня не HFT (High Frequency Trading) роботы. Был случай с одновременным проведением одного ордера по бумаге CNP (CenterPointEnergy) два раза на разных биржах, секунда в секунду. А вот миллисекунды возможно были разные, но в отчете этих данных нет. При этом оригинальная позиция закрылась и тут же открылась новая в обратную сторону. В TSLab на вкладке «Управление Агентами» этого не было видно, т.к позиция закрылась по роботу нормально, а вот новую открытую позицию можно увидеть только в графе «Позиции». Поэтому теперь я все проверяю, хотя бы в конце дня.
Исполнение одинаковых заявок по разным ценам — у меня есть робот с двумя одновременными входами по одной точке входа, но разным управлением позицией. Обычно исполнение этих двух заявок идет одновременно, но иногда встречаются различия, довольно существенные. Пример на скриншоте, когда разница во времени составила 52 сек и цена ушла уже почти на 11 центов. Для бумаги такого калибра, как MSFT (Microsoft)- это значительно.
Премаркет и послемаркет- как известно, на Америке некоторые бумаги торгуются и на премаркете и после закрытия основной сессии (9.30-16.00 ЕТ). При тестировании своих стратегий я учитывала только котировки во время основной сессии, поэтому важно в настройках скрипта в платформе TSLab задать данное время. Иначе график будет отражать всю информацию до и после маркета и это может неправильно отразится при расчете некоторых индикаторов, в частности скользящих средних.
Продолжение следует…
В следующей части я остановлюсь на часто встречающихся ошибках при работе, которые требуют ручного вмешательства или более глубокого изучения вопроса.
Надеюсь, данный материал был полезен. Буду признательна за комментарии и пожелания.
С Наступающими Праздниками и Удачи вам в Новом году!