April 13

Инженерный взгляд на трейдинг: как работает сигнальный алгоритм торгового робота

Алгоритм определяет нечёткую силу сигналов и уровень вероятности достижимости целевой цены

Тимур Гильмуллин в соавторстве с Мансуром Гильмуллиным

В этой статье:

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

В этом блоге мы уже рассказывали о трёх ключевых компонентах, на которых строится реальный торговый алгоритм:

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

Объединив все эти элементы, можно построить достаточно надёжную автоматическую сигнальную систему, которая:

  • самостоятельно применяет правила управления капиталом (MMR, Money Management Rules);
  • автоматически анализирует рыночное движение цен и выдаёт прогнозы по целям;
  • оценивает силу сигналов и вероятность достижения прогнозных целей;
  • интерпретирует сигналы и риски на нечёткой шкале, понятной человеку;
  • а также принимает решения об открытии и усреднении позиции либо об удержании позиции или фиксации текущей прибыли на основе заранее заданных правил.

В этой статье покажем, как устроен сам алгоритм: как он анализирует данные, принимает решения и управляет сделками.

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

Задачи, решаемые алгоритмическим торговым роботом, следующие.

  1. Отобрать торговые сигналы с высокой вероятностью достижения целевой цены на основе анализа статистик ценовых рядов исторических данных.
  2. Исключить аномальные всплески цен с помощью методов фильтрации (например, модифицированного метода Хампеля).
  3. Учесть динамику рынка на разных таймфреймах, чтобы корректно оценивать вероятности достижения целей. Для этого проанализировать статистики пятиминуток и часовых свечей для трейдерского алгоритма, либо часовые и дневные — для долгосрочного инвесторского алгоритма.
  4. Перевести числовую вероятность в понятные уровни качества сигналов с помощью универсальной нечёткой шкалы {Min, Low, Med, High, Max}.
  5. Отфильтровать и скорректировать силу торговых сигналов в зависимости от текущей вероятности успеха, чтобы динамически адаптироваться к меняющимся рыночным условиям.
  6. Применять строгие правила удержания или открытия новых позиций, усреднения и фиксации прибыли для каждой сделки, исключив человеческий фактор и эмоциональные решения.
  7. Контролировать и перераспределять капитал на уровне портфеля с помощью глобальных правил:
    • закрытие убыточных или достаточного числа прибыльных позиций по заданным условиям;
    • управление свободным кешем путём его перекладывания в фонды ликвидности, для повышения устойчивости торговой системы.

Блок-схема работы алгоритма

Блок-схема работы трейдингового алгоритма

Как строятся торговые сигналы

После очистки данных от аномалий и расчёта вероятности достижения цели, алгоритм переходит к формированию торговых сигналов: проверяются возможности закрытия имеющихся позиций и открытие новых. В цикле торговой итерации, параллельно для десятков инструментов, на основании правил «открытия / закрытия» позиций (Open / Close Rules) определяется множество характеристик ценовых рядов, как с помощью классического технического анализа (построение канала Bollinger Band, вычисление значения индикатора Parabolic SAR), так и вероятностные характеристики цен (логарифмические доходности, средние доходности, волатильность и стандартизированное отклонение). По итогу вычисляются желаемая целевая цена и значение силы сигнала на покупку или продажу.

Каждый сигнал дополнительно анализируется по нескольким признакам:

  • оценивается вероятность достижения целевой цены;
  • числовая вероятность и сила сигнала переводятся в уровень на нечёткой шкале {Min, Low, Med, High, Max};
  • выполняется фильтрация силы сигнала в зависимости от вероятности достижимости цели.

На этом этапе слабые или нестабильные сигналы отсеиваются. Только если вероятность достаточно высокая и дополнительные условия выполнены, сигнал поступает в блок принятия решения об открытии сделки. Кроме того, сила сигнала напрямую влияет на используемые в торгах объёмы инструмента.

Непосредственно перед выполнением самой сделки дополнительно анализируется текущее состояние биржевого стакана (Orders Book):

  • наличие в нём достаточного объёма на покупку и продажу;
  • приоритет выбранного направления;
  • отсутствие аномальных объёмов в стакане.

Анализ стакана биржевых цен даёт дополнительный «рычаг» на отмену сделки. Например, если получен сигнал «покупать», но объёмы на продажу в разы больше, чем на покупку, стоит отказаться от покупки в текущий момент. Или если слишком много аномальных объёмов на продажу в стакане. Хотя, при наличии аномальных объёмов, также можно встать в покупку чуть выше аномалии, а на продажу — чуть ниже, по методике Front Running.

Правила открытия и закрытия позиций

Как было упомянуто выше, сила сигнала влияет на используемый в сделке объём для торгов и способ выставления заявок в стакан.

  1. Для сигнала Max уровня:
    • используется максимально допустимый объём для сделки по одному инструменту;
    • выставляется маркет-ордер «по рынку»:
      • по цене первого продавца для сделок на покупку;
      • либо по цене первого покупателя для сделок на продажу.
  2. Для сигнала High уровня:
    • используется уменьшенный объём от разрешённого для сделки по одному инструменту;
    • выставляется стоп-ордер:
      • по цене первого покупателя для сделок на покупку;
      • либо по цене первого продавца для сделок на продажу.
  3. Для сигнала Med уровня:
    • используется половина объёма, разрешённого для одной сделки;
    • выставляется стоп-ордер
      • по цене на 1 шаг выше первого аномального объёма покупателей (для сделок на покупку);
      • либо по цене на 1 шаг ниже первого аномального объёма продавцов (для сделок на продажу).

Цветовые схемы для правил открытия и закрытия позиций показывают последовательность применения всё более строгих ограничений при повышении силы сигнала.

Открытие и усреднение

  1. Сделка открывается только при наличии сигнала достаточной силы (качества). Обычно это Med, High или Max.
  2. Перед открытием проверяются лимиты по рискам на сделку.
  3. Допускается усреднение позиции, если выполняются условия:
  • просадка по инструменту в допустимых пределах;
  • сохранение достаточной силы сигнала после усреднения.
Базовые правила для открытия или усреднения позиций [Buy]

Удержание или фиксация прибыли

  1. Фиксация прибыли при достижении уровней: целевого (желаемого) или достаточного.
  2. Принудительное закрытие сделки, если вероятность достижения цели существенно снизилась.
  3. Ограничение убытков по стоп-уровням или превышению допустимого риска.
Базовые правила для открытия или усреднения позиций [Sell]

Правила управления капиталом

Почему важно управлять капиталом

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

Как устроены правила управления капиталом (Money Management Rules)

Базовые правила достаточно простые и нацелены на постоянный рост стоимости портфеля:

  1. Закрыть все позиции в портфеле при достижении общей суммарной прибыли выше установленного уровня.
  2. Закрыть убыточные позиции, за счёт некоторого числа прибыльных позиций, если убыток превышает допустимый порог.
  3. Управлять свободным денежным кешем:
    • при отсутствии сигналов на покупку временно перевести свободные средства в фонды ликвидности с ежедневной капитализацией;
    • при необходимости что-либо купить, вернуть часть средств из фондов ликвидности.

Процедуры Money Management Rules выполняются автоматически по расписанию — обычно 1–2 раза в день.

Почему используется вероятностная оценка и нечёткая шкала

Не стоит полагаться на «чёткие» прогнозы

Рынок по своей природе — это система с высоким уровнем неопределённости: рынок нестабилен, подвержен случайным колебаниям (в том числе из-за фейковых новостей) и аномальным ценовым скачкам. Даже при наличии сильного сигнала невозможно гарантировать 100% результат и достижение целевой цены. Поэтому вместо жёстких предсказаний в аналитических системах принято строить вероятностную оценку достижения цели.

Зачем нужна вероятностная оценка:

  • число отражает не факт достижения цели, а «степень уверенности» в её достижимости;
  • можно фильтровать только наиболее надёжные сделки.
  • снижается доля рискованных решений и минимизируется человеческий фактор.

Как используется нечёткая шкала

Вероятности переводятся на уровни нечёткой шкалы:

Несущие множества для уровней нечёткой шкалы вероятностей

Несущие множества приблизительные и могут пересекаться. Для корректной интерпретации используется «фазификация» — оценка степени принадлежности к каждому уровню.

Сама универсальная нечёткая измерительная шкала при этом может выглядеть так:

Универсальная нечёткая измерительная шкала с уровнями: Min — «минимальное», Low — «низкое», Med — «среднее», High — «высокое», Max — «максимальное» значение. Для её построения используются несущие множества и различные виды функций принадлежности: гиперболическая, колоколообразные и параболическая

Фильтрация силы сигналов

Имея нечёткую оценку силы сигнала её легко скорректировать в зависимости от вероятности достижимости цели:

Коррекция силы сигнала в зависимости от вероятности

Пример простейшего фильтра сигналов:

signalFilter = {
    "Max": {"Max": "Max", "High": "High", "Med": "Med", "Low": "Low", "Min": "Min"},
    "High": {"Max": "High", "High": "Med", "Med": "Low", "Low": "Min", "Min": "Min"},
    "Med": {"Max": "Med", "High": "Low", "Med": "Min", "Low": "Min", "Min": "Min"},
    "Low": {"Max": "Low", "High": "Min", "Med": "Min", "Low": "Min", "Min": "Min"},
    "Min": {"Max": "Min", "High": "Min", "Med": "Min", "Low": "Min", "Min": "Min"},
}

Практическое использование алгоритма

Торговая система, построенная на вероятностной оценке достижимости цели и нечётких шкалах:

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

Такой подход:

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

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


Дополнительные материалы к статье