понедельник, 13 февраля 2023 г.

Детектор аномальных объёмов — анализируем спрос и предложение с помощью платформы TKSBrokerAPI

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

В частности, трейдерам бывает интересно автоматически анализировать биржевой стакан текущих цен. Им нужно получать оперативные оповещения о появлении в нём аномальных (относительно других значений) объёмов предложений продавцов или покупателей. Существует гипотеза о том, что если на рынке в текущий момент времени преобладают объёмы покупателей, а также появились большие или сверхбольшие предложения на покупку, то цена инструмента будет расти в краткосрочной перспективе, или, как минимум, не будет падать ниже этих предложений. И, тоже самое, но наоборот: если преобладают объёмы продавцов и в них присутствуют аномальные значения, то цена будет снижаться или не будет расти.

Следующий скриншот иллюстрирует стакан цен с объёмами предложений продавцов и покупателей, которые трейдер визуально может принять за аномалии:

Но как же их определять автоматически?

Теоретические основы детектирования аномалий можно изучить в предыдущей статье: «Как быстро найти аномалии в числовых рядах с помощью метода Хампеля», а также посмотреть практические примеры в юпитер-ноутбуке. Этот метод хорошо себя зарекомендовал на практике для быстрого анализа числовых рядов на наличие в них аномальных выбросов. Объёмы предложений в стакане цен — это тоже числовые ряды, а значит метод Хампеля может быть применён и к ним.

Для автоматизации поиска аномалий в объёмах понадобятся: Python (3.9, либо старше), библиотека TKSBrokerAPI (для работы с API брокера Тинькофф Инвестиции) и известная сетевая библиотека requests (для отправки сообщений через API Телеграм). На выходе может получиться, например, такой скрипт: TKSAVDetector.py.

Детектор аномальных объёмов — это простой Телеграм бот для анализа объёмов спроса и предложения покупателей и продавцов.

Бот следит за объёмами покупателей и продавцов в биржевом стакане, ищет аномалии в числовом ряду объёмов и оповещает о них в Телеграм. Оповещение содержит: текущую цену инструмента и цены с аномальными объёмами.

Концепция

Основные шаги работы детектора аномальных объёмов:

  1. Скрипт выходит на рынок по расписанию, например, в формате crontab:
    timeToWork: "*/2 10-21 * * 1-5"
    что означает, c 10:00 утра до 22:00 вечера (включительно) в будние дни, каждые 2 минуты. Можно посмотреть другие примеры по ссылке.

  2. В параллельном (мультипроцессном) конвейерном режиме скрипт запрашивает данные по состоянию биржевого стакана по указанным инструментам и с указанной глубиной стакана (depth <= 50).

  3. Для каждого стакана скрипт ищет все текущие аномалии в объёмах продавцов и покупателей (фильтрация методом Хампеля по всей длине числового ряда текущего стакана).

  4. Если список аномалий по инструменту получился не пустой, то скрипт формирует оповещение, например, такого вида:

    Обнаружены аномальные объёмы
    продавцов и покупателей:
       - [YNDX] [Shares] [Yandex]
       - Время обнаружения:
         2023-01-29 14:49:31 UTC
       - Есть в портфеле: Нет

      - Текущая цена/объём/стоимость
       - Купить:
         [0] 1927.6/4/7710.4 руб
       - Продать:
         [0] 1915.9/4/7663.6 руб

      - Аномалии
       - в объёмах продавцов:
          [0] 1927.6/4/7710.4 руб
         [3] 1928.2/6/11569.2 руб
       - в объёмах покупателей:
          [0] 1915.9/4/7663.6 руб
         [1] 1915.7/6/11494.2 руб

    Сгенерировано ⚙️ TKSBrokerAPI


  5. Скрипт подключается к указанному ТГ-боту по токену и отправляет через него оповещение (не обязательно, так как можно следить за информацией в логах и без оповещений):

Подробнее о настройке и запуске бота вы можете прочитать в инструкции. На этом пример анализа объёмов закончен, а в следующих статьях расскажу, какие ещё биржевые операции можно автоматизировать при помощи модуля TKSBrokerAPI.


Упоминаемые в статье ссылки


______________________________

Подписывайтесь на меня в Пульсе (профиль: TimurGilmullin), буду рассказывать там про автоматизацию на бирже и разработку торговых роботов.

Если вы хотите упростить свои рутинные операции на бирже — закажите автоматизацию у меня. Пишите, обсудим вашу задачу и чем я могу помочь. Контакт в Телеграм: @tgilmullin.

Поддержите разработку платформы TKSBrokerAPI: https://yoomoney.ru/to/410015019068268

🚀 Успехов вам в автоматизации биржевой торговли! И профита!