Germany | Finland | Saint Petersburg | Drive

Арбитраж AmiSpread

Опубликовано в Торговые системы

Этот робот я написал для себя. AmiSharp вкупе с возможностями Амиброкера дают возможность написать арбитражный робот практически любой сложности с минимальными трудозатратами. Описываемый робот реализует вариант рыночно-нейтральной стратегии.

Рыночно-нейтральные стратегии характеризуются суммарной нулевой бетой. Используем способ обнуления беты при помощи комбинации длинная покупка - короткая продажа. Предполагаем использование инструментов, имеющих сопоставимые рыночные цены и максимальный коэффициент корреляции. Таким образом, реализуем метод парной торговли разницей для корзин, состоящих из одного инструмента.

Из терминала QUIK посредством плагина от ARQA экспортируем в Amibroker все нужные нам котировки: цену последней сделки, лучшие цены спроса и предложения, количества спроса и предложения. С помощью встроенного в Amibroker языка AFL преобразуем всю эту сырую информацию в 4 графика. Для целей написания статьи я настроил новую копию робота, который занимается арбитражем фьючерсов на Лукойл и Газпром, торгующий 1 контрактом.

 

Зеленый график (который с точками) - спред на покупку, красный с точками - спред на продажу. Красная и зеленые плавные линии - это уровни отсечек, перечечение которых является сигналом к смене позиции. Уровни рассчитываются по относительно сложной формуле, пользователь может управлять параметрами расчета исходя из собственых целей и предпочтений.

Например, если SpreadBuy (зеленый спред на покупку) пересекает зеленый уровень и оказывается под ним - это сигнал к закрытию короткой позиции по спреду и открытия длинной. Моменты, где это происходит, подсвечиваются синим цветом. Аналогично, выход красного спреда (SpreadSell) выше красного уровня - сигнал к закрытию лонга по спреду и и входа в шорт.

Чуточку терминологии. Лонг по спреду - это ОДНОВРЕМЕННОЕ открытие двух позиций в паре в направлении его увеличения. Таким образом, если котировки бумаг необоснованно (с точки зрения робота) сблизились, он будет открывать позиции в обоих инструментах, чтобы получить прибыль при увеличении спреда.

Шорт по спреду - это игра в направлении сужения, когда котировки бумаг разошлись чересчур далеко.

Синяя горизонтальная линия отображает РЕАЛЬНЫЙ спред входа в позицию, рассчитанный не по графикам, а по результатам заявок, использованным для входа в позицию.

Очевидно, что для правильной работы робота котировки обоих инструментов должны коррелировать между собой, иметь какую-то связь. Например, можно применять календарный арбитраж, когда в пару входят ближний и дальний контракты на один и тот же базовый актив или индекс (актуально перед экспирацией). Или активы из одного сектора рынка, показывающие высокий уровень корреляции на исторических данных (к примеру Газпром-Лукойл). Можно также применять арбитраж между обычными и привелегированными акциями или фьючерсными контрактами на них (пример: Сургутнерфтегаз обычные и привелегированные). Возможны иные варианты, взависимости от предпочтений и личного опыта торговли пользователя.

Очевидно, что прибыльность арбитражного робота сильно зависит от  его алгоритма  в выставлении заявок и обработки их результатов. Обратную связь робот обеспечивает посредством AmiSharp. С его помощью робот, работающий в Амиброкере, получает доступ к результатам выставления заявок, а также управляет транзакциями, посылаемыми роботом в торговую систему. В частности, на графике Amibroker  его помощью можно увидеть метки сделок, произошедшие в реальности, а не рассчитанные посредством формулы АмиБрокера (расчетные тоже можно).

Из Квика (на текущий момент) экcпортируются 3 таблицы в скрипт робота при помощи протокола DDE и AmiSharp:

 

В процессе работы скрипт робота формирует листинг своих действий, выводя в него торговые сигналы, реальные и расчетные точки открытия/закрытия позиций и сами позиции. Листинг доступен как в реальном времени на экране, так и в виде Excel файла. На текущий момент листинг действий робота выглядит так:

, что позволяет не только наблюдать за действиями робота, но также и собирать статистику с использованием накопленных данных уже в Excel. В результате можно получить РЕАЛЬНУЮ кривую EQUITY, а не фантомы, которыми пестрит интернет, созданные подгонкой  на истории в программах теханализа.

 

Использование Амиброкера позволяет в рамках одного алгоритма производить как саму торговлю, так и всевозможные действия, определяемые богатым функционалом программы технического анализа: бэктест, оптимизацию и все остальные. Кроме того, развитые возможности азыка AFL и графические возможности позволяют серьёзно экономить трудозатраты на кодирование.

 

Интерфейсные возможности языка AFL позволяют интерактивно управлять действиями робота. На самом верхнем изображении слева видны 3 кнопки. При нажатии на них робот моментально произведёт соответстветствующее действие - открытие длинной или короткой позиции по спреду либо закрытие существующей. Таким образом торговая система может использоваться параллельно к основной своей задаче еще и как арбитражный привод.

Сервисные возможности: цвет, звук, голос, email и прочее

 

Настройка параметров робота выглядит следующим стандартным для AmiBroker образом:

Если присмотреться, то среди параметров можно увидеть те, что отвечают за авторизацию терминала QUIK в торговой системе. Да, в числе прочего, скрипт (если ему сообщить эти данные), запустит терминал, автоматически авторизуется и подключится к торговой системе, инициализирует начало экспорта данных.

Робот никаким способом не привязан ни к какому-то определённому таймфрейму, ни к каким-то определенным инструментам для торговли - все определяется нуждами пользователя. Не возникает проблем с запуском одновременно нескольких копий робота - достаточно просто открыть в Амиброкере новый график, разместить в нем тот же самый скрипт и настроить новые параметры.

К вопросу быстродействия. Робот настроен на мониторинг рынка по приходу каждого тика (можно варьировать). Для теста производительности (с трудом) был найден компьютер 2*2.66ГГц, 2Гб ОЗУ. Год выпуска 2006, Win XP. Загрузка процессора:

Итого в сухом остатке: Amibroker - 5%, Квик - 3%, AmiSharp 1%. Скриншот сделан в момент, когда робот не ожидает наступления какого-то сигнала. Если по его мнению, наступление сигнала возможно в ближайшие секунды, он включает режим "боевой готовности", чтобы иметь возможность максимально быстро среагировать на этот сигнал. При этом загрузка процессора возрастает примерно на 3-5%. Увеличение приходится на AmiBroker. В момент выставления пары заявок робот включает максимальную производительность  - загрузка процессора возрастает до 30-50% в течение 1-2 секунд.

Реализация похожего (более сложного) алгоритма на QPILE: МТС Жандарм.

Комментарии   
# echaki 10.05.2013 22:59
здравствуйте а как посмотреть поближе??
Ответить | Ответить с цитатой | Цитировать
# admin 11.05.2013 10:11
Посмотреть можно. Свяжитесь со мной, например,скайпо м.
Ответить | Ответить с цитатой | Цитировать
# Yurii 18.02.2016 23:01
Здравствуйте, МТС еще актуальна ?
Ответить | Ответить с цитатой | Цитировать
# admin 18.02.2016 23:16
Добрый день.

Именно в том виде, в котором она описана на сайте, я ее уже не использую, давненько это было.

Тем не менее система работоспособна по прежнему, ничто не поменялось.
Ответить | Ответить с цитатой | Цитировать
# Yurii 19.02.2016 10:12
Ответил на
Ответить | Ответить с цитатой | Цитировать
# Сергей456 17.09.2016 17:52
Добрый день! Робот актуален?
Ответить | Ответить с цитатой | Цитировать
# admin 17.09.2016 19:14
Цитирую Сергей456:
Добрый день! Робот актуален?

Почему нет?
Ответить | Ответить с цитатой | Цитировать
# Роман2017 12.06.2017 18:31
Здравствуйте
Ищу недорогого и понятного для новичка арбитражного робота для квика.
Ваш вполне понятен. Если робот актуален, либо есть более свежая версия, готов приобрести по приемлемой цене. Жду ответа на почту.
С уважением Роман
Ответить | Ответить с цитатой | Цитировать
Добавить комментарий