Поиск неэффективностей: Что нужно знать о создании стратегий для торговли на бирже

f5ad47d551f246118911faf0a732e927.jpg

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

На вкус и цвет


По сути, есть два основных метода построения стратегий онлайн-трейдинга. Первый ориентирован на определенную модель, второй — на интеллектуальный анализ данных. В первом случае мы имеем дело с понятием неэффективного рынка. Метод включает работу с психологией трейдеров, экономикой, микроструктурой рынков, а также любыми внешними явлениями, которые могут оказывать влияние на цены акций. Неэффективность ведет к аномалиям кривой цен или возникновению определенных паттернов колебаний цены, которые можно попытаться предсказать и использовать в торговом алгоритме. Среди стратегий, основанных на определенной модели, можно вспомнить стратегию следования тренду, mean reversion (возвращение к среднему значению), ценовые циклы и кластеры, статистический арбитраж и сезонность.

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

Интеллектуальный анализ данных в чистом виде работает иначе. Он используется для исследования паттернов ценовых изменений и построения по ним определенного алгоритма. Какие причины вызвали изменения на рынке здесь не так важно. Важно, чтобы они продолжали действовать и в будущем. Такой подход привел к появлению систем трейдинга с использованием самообучающегося софта. Самый популярный прием в данном случае — метод подбора, проб и ошибок, использование свечных паттернов, регрессии, автокорреляции, метода k-средних, нейронных сетей, дерева принятия решений.

Преимущества анализа данных в том, что вам не нужно гадать о состоянии рынка. Недостаток: все эти методы обычно выявляют кучу случайных паттернов и следом генерируют кучу бесполезных стратегий. Отделить случайные паттерны от тех, что действительно оказывают влияние на состояние рынка — задача не из простых. В настоящий момент неизвестно об успешных трейдинговых системах, построенных исключительно на анализе данных.

Кто умнее: трейдер против рынка


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

Вот три основные гипотезы, касающиеся неэффективности рынка, о которых вы, наверное, уже слышали:

  • Гипотеза A: рынки работают эффективно. Цены зависят от реальных событий (например, от публикации годовых отчетов компаний) и отражают реальную стоимость активов. Все трейдеры обладают полнотой информации, действуют оперативно и рационально. Скачки цен отсутствуют, изменения не несут в себе данных для прогнозирования. Техническая система трейдинга бесполезна. В ее основе будет лежать принцип удачи.
  • Гипотеза B: рынки неэффективны, но их неэффективность не дает преимущество частным трейдерам. Только крупные фирмы и хедж-фонды могут эксплуатировать такую неэффективность, обладая большим капиталом, быстрым и дорогим железом, опытными аналитиками и экспертами-математиками. Начать играть на их поле означает превратиться в легкую добычу для таких компаний.
  • Гипотеза C: Неэффективности рынков достаточно, чтобы хватило всем. В данной ситуации размеры компаний — это уже не преимущество, а недостаток. Крупные фирмы и хедж-фонды слишком неповоротливы. Все эти ресурсы, включая переоцененных аналитиков и гениев со слишком большими зарплатами, не способны вас опередить, если вы хорошо усвоили правила игры.


Мало кто сегодня все еще верит в первую гипотезу. Рынки не ведут себя рационально и эффективно. Примеров можно привести сколько угодно. Чаще всего стоимость компаний далека от их «реальной» стоимости. Но даже в такой ситуации можно разглядеть некоторые паттерны. Рынки реагируют быстро и жестко, следуя слухам и новостям. Но, если информация менее определенная и требует минимальной интерпретации, скорость реакции заметно снижается. Рассмотрим типичный пример такого поведения рынка:

Кейс швейцарского франка


В сентябре 2011 года Национальный банк Швейцарии установил ценовое ограничение для швейцарского франка. Идея была в том, чтобы защитить туристическую индустрию и экспорт на фоне переоцененного курса. Лимит был установлен на уровне 1,20 для пары EUR/CHF (евро/франк).

Вообще, ценовое ограничение — очень редкий шаг и весьма показательный пример неэффективности рынка. Все это можно немедленно перевести в крайне выгодную, почти безрисковую трейдинговую систему. В нормальной ситуации можно ожидать решительную реакцию рынка, когда пара EUR/CHF приближается к значению 1,20. Но на практике реакция была сильно растянута во времени.

Безусловно, Швейцария — странное место на карте Европы. Большинство трейдинговых компаний США знают лишь, что здесь делают качественные сыр. Или они не заметили решения Национального банка, или европейские офисы этих компаний забыли об этом доложить. Письмо с новостью добиралось через Атлантический океан три месяца, борясь по пути с пиратами, бурями и штормами, пока, наконец, не достигло Нью-Йорка.

Так что можно предпринять, зная о ценовом ограничении? Лишь к январю 2012 года у крупных игроков на рынке появилась идея. И она заключалась не в разработке торговой системы, в том, чтобы просто скупать франки для оказания давления на соотношение валютной пары EUR/CHF.

413290e692bc4f6a8f206e6a69ab770f.png

Изменения цены пары EUR/CHF в сентябре 2011 — августе 2012

Смысл был в том, что, когда цена достигает своего предельного значения, выгоду можно получить, пробив его. На кон была поставлена куча денег, терпения и сил. Начиная с мая 2012, цена EUR/CHF держалась предельно близко к значению 1,20. Но крушения ценового ограничения так и не произошло. В течение 2012 года Швейцария соорудила могучую стену в 200 млрд. долларов для защиты своего ценового ограничения. Все атаки были отбиты. В январе 2013 рейдеры ретировались.

b683f39aa26b405797acf50c54412803.png

Изменения цены пары EUR/CHF в сентябре 2012 — мае 2013

Ретировались, освободив путь для работы алгоритмических систем. В течение битвы 2012 года они вынуждены были оставаться в стороне. У частных трейдеров не было столько средств, чтобы вступить в игру. В январе 2013 первые умельцы начали использовать неэффективность рынка в свою пользу. Они применили метод Сетки (Grid Trade) –стратегию, основанную на волновом характере рынка, зарабатывающую на волатильности и не зависящую от направления цены. Это запустило станок для печати денег.

Алгоритм «печатный станок»


Сетка — это очень простая система. Она выставляет отложенные и краткосрочные ордера в фиксированных значениях выше и ниже текущей цены. Прибыль получается при отклонениях рынка. Ордера открываются и закрываются в случае, когда цена пересекает значения сетки в любом направлении. Гипотетически степень выигрыша здесь приближается к 100%, но на практике такого уровня добиться невозможно. Трейдеры обычно используют виртуальный механизм хеджирования, который открывает и закрывает позицию вместо того, чтобы открывать новую в противоположном направлении. Это увеличивает общую прибыль и позволяет контролировать потери. Так что процент выигрыша здесь колеблется на практике в районе 60%.

Вот пример скрипта на языке Zorro для подобной системы:

// вспомогательная функция, которая проверяет наличие условий для совершения сделки 
bool isFree(var Price,var Grid,bool IsShort)
{
  for(open_trades) {
    if(TradeIsShort == IsShort
      && between(TradeEntryLimit,Price-Grid/2,Price+Grid/2))
        return false;
  }
  return true;
}

// основная функция для торговой стратегии по паре EUR/CHF 
int run() 
{
  BarPeriod = 60;
  Hedge = 5; // activate virtual hedging

  var Grid = 20*PIP; // set grid distance to 20 pips
  var Close = priceClose();
 
// place pending trades at 5 grid lines above and below the Close
  int i;
  for(i = Close/Grid - 5; i < Close/Grid + 5; i++)
  {
    var Price = i*Grid;
// place short trades with profit target below the current price
    if(Price < Close && isFree(Price,Grid,true))
      enterShort(1,Price,0,Grid); 
// place long trades with profit target above the current price
    else if(Price > Close && isFree(Price,Grid,false))
      enterLong(1,Price,0,Grid);
  }
}


Сетка — типичная модель-ориентированная система. Она подразумевает, что некие условия рынка удерживают цену в определенном интервале. Например, ограничение не позволяет паре EUR/CHF опуститься ниже 1,20. Но и подняться слишком высоко цена также не может, учитывая факт, что Национальный банк Швейцарии должен будет в конечном итоге выкупить назад все франки, которые они продали ради поддержки определенного значения. Все это необходимые условия для применения Сетки. Без них это было бы обычной рулеткой, и пополнило бы список иррациональных трейдерских методов.

Вот пример применения метода для пары EUR/CHF от компании P&L в 2013 году:

2735d901568440948013a69afefece24.png

На графике можно наблюдать значительные колебания цены с существенными снижениями в январе и мае. Но по причине имеющегося предела, мы можем предсказать максимальные потери и просто держать достаточно средств на счету. В данном случае годовая выручка составила 130%, коэффициент Шарпа — 1,7. Практически никакого риска до того момента, пока не отменено ограничение цены.

Новости о данной стратегии распространялись весь 2013 год. Неудивительно, что многие участники рынка, частные инвесторы захотели запрыгнуть в уходящий поезд. Через три года после решения банка Швейцарии на рынке действовали уже тысячи подобных систем. В результате волатильность цены EUR/CHF неуклонно снижалась.

8801909e632f4151a4606935c0aa3d32.png

Волатильность — ключевое условие для метода Сетки. Чем ее меньше, тем меньше доход. Для того чтобы компенсировать его снижение, нужно вкладывать больше средств и сжимать сетку. Но у нас есть естественный предел. Размер сетки не может быть меньше выплат по сделке. К осени 2014 волатильность упала фактически до нуля. Это сопровождалось существенным падением цены, как будто кто-то из крупных игроков (скорее всего, сам Национальный банк Швейцарии) настойчиво продает евро и скупает франки в ожидании крупного события. Для частных трейдеров самое время выйти из игры. Дальнейшая судьба швейцарского франка всем хорошо известна. В январе 2015 ограничение по цене было отменено.

За пару минут цена EUR/CHF скатилась до значений существенно ниже 1,20. В отличие от ситуации, имевшей место четыре года назад, рынок отреагировал мгновенно. Многие пострадали. Самое интересное, что «реальное» соотношение пары, основанное на относительной покупательной способности каждой из валют, все это время держалось на уровне 1,50.

Выводы


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

© Habrahabr.ru