System Development Framework 2.0

Прошло более четырех лет с тех пор как я опубликовал свой первый пост про System Development Framework, и прошло более шести лет с тех пор как я прочитал ту самую ветку на EliteTrader, наверное пришло время собрать и проанализировать, как эволюционировал этот фреймворк в моей торговле, что изменилось, что работает и что нет.
Эти строки я пишу больше для того, чтобы систематизировать в своей голове знания и подходы, которые я выработал за последние 5 лет, надеюсь они смогут помочь другим трейдерам что-то улучшить в своей торговле. Сразу предупреждаю: не ждите готовых решений или предложений о покупке. Это всего лишь идеология, которая помогала мне последние годы выдирать профит у рынка, и спасаться от убытков, даже когда все летело в тартарары, когда одна за одной системы деградировали и умирали я не получал убытков к которым бы не был готов, все было в рамках расчетов.

Идеология System Development Framework

System Development Framework – это технология разработки, тестирования и исполнения торговых систем. Как в любом хорошем отлаженном бизнесе, где все бизнес процессы понятны и формализованы, в трейдинге тоже можно и нужно формализовать подходы, минимизировать человеческое вмешательство. В реальной жизни есть два подхода к производству: можно производить уникальный штучный товар под каждого клиента, а можно создать массовое производство и сделать много похожих продуктов, но временные и человеческие затраты на единицу продукции у массового производства несравнимо ниже, чем у аналогичного предприятия производящего уникальные продукты.
По пути массового производства иду и я со своим SysDev Framework, я не хватаю с неба звезд в плане понимания рынка и его участников, но я достаточно далеко продвинулся в этом. Тем не менее я постоянно работаю над тем, чтобы уменьшить свои трудозатраты на технические вещи (бэктестинг, исполнения трейдов, аудит, риск менеджмент), для того чтобы максимально сосредоточиться на понимании рынков, исследованиях рыночных неэффективностей, поиске интересных (не общедоступных) данных. Как только пришла идея, и она хоть как-то формализована, она подается на вход механизму, на выходе которого получается торговая система, готовая к торгам.

Читать далее…

Быстрые HFT парни против умных

Где-то в начале 2010 года, когда в памяти людей воспоминания о кризисе 2008-го были еще свежи, всплыла тема HFT или High-Frequency Trading. Трейдинговые ресурсы пестрили заголовками о баснословных прибылях HFT, на ЛЧИ побеждали люди сделавшие из 50 000 рублей – 6 миллионов, а на ФОРТСе внедряли новую систему Plaza2. В то время Ваш покорный слуга размышлял по какому пути ему пойти, рубить капусту со скоростью 10 000 заявок в секунду, или 5 заявок в день. С одной стороны последние 3 года я тесно был связан с арбитражем, с другой с 2009 года в моей голове зародился тот самый System Development Framework, о котором я уже много говорил в своем блоге и о котором предстоит еще больше рассказать.

Вопрос встал ребром: развитие через IT-trading (шлюзы, оптимизация ПО, бесконечный кодинг) или “дедовским способом” с Excel’ем в руках, уделяя больше внимания поиску эджа. И я пошел вторым путем! В этом посте хочу провести небольшой анализ “за” и “против” каждого направления в трейдинге.

HFT: за и против

Читать далее…

Простой способ визуализации Edge

Многие задаются вопросом: что такое Edge торговой системы и как его померить. Еще в 2010 году я описал алгоритм EdgeTest’a на основе алгоритмов монте-карло. Но буквально вчера, просматривая один блог, я поймал себя на мысли, что автор изобрел простой и гениально эффективный EdgeTest.

В этом посте MarketSci описывает одну стратегию. Но суть не в стратегии, а в представлении графика Equity, где есть 2 варианта развития событий: прирост капитала в моменты удержания позы, и во все другие дни.

30

Если система может извлекать из рынка неслучайную компоненту, фильтруя случайную, то скорее всего она обладает Edge. С другой стороны метод не формализуемый, но очень простой и элегантный.

Перенесено из старого блога

О рыночной неэффективности

Тема конечно философская, попробую развернуть…

Как мне представляется у любого финансового инструмента есть fair value, при этом в любой момент времени параллельно существует множество уровней fair value в зависимости от времени их реализации. Задача рынка в любой момент времени найти тот самый fair value для short-term, mid-term, long-term, существует теория аукциона которой касался автор метода Market Profile – Peter Steidlmayer. В ней подробно расписано и классифицировано каким образом рынок ищет уровень fair value.

Что такое неэффективность рынка, как мне кажется тут 2 варианта:
1. Когда рынок после поступления новой информации или новых денег, начинает движение к новой fair value от старой
2. Когда рынок достаточно отклонился от fair value и начинает возврат к ней, т.н. mean reversion

При чем это 2 взаимоисключающих рыночных поведения, как тренд и контр-тренд.

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

Несколько примеров стратегий зарабатывающих на неэффективностях:

  1. Арбитраж – самый простой вариант спот-фьючерс, там базис имеет некую справедливую цену, и ходит в канале. Арбитражеры продают выше, а покупают ниже "справедливой" цены базиса и имеют прибыль. Самый простой и показательный пример mean reversion edge.
  2. Скальпинг и фронтраннинг – тут отрабатывается fair value, на уровне микроструктуры рынка.  В плоть до того что fair value, для скальпера является средняя цена м/у bid и ask, они выставляют одновременно заявки на покупку и продажу – котируют спрэд и на этом имеют свой edge. Это как частный случай скальпинга.
  3. Спекулятивные направленные системы – тут имхо самый сложный случай, т.к. очень сложно определить fair value. Мне кажется мерилом эффективности системы тут должен являться тайминг, т.е. рынок должен начать движение в нужную сторону с высокой вероятностью сразу после захода в трейд. При этом важно представлять себе сколько система будет в рынке, т.е. должен быть некий дискретный time-stop, после истечения которого мы выйдем. 
  4. Инвестирование и трендовые системы – тут анализируется самый долгосрочный fair value, я считаю, что для этих подходов использование только ценовых данных OHLCV, будет неэффективным. Нужны неценовые данные и подходы, например фундаментал или межрыночный анализ, глобальный сентимент и прочее. 

Edge Test

В прошлом посте я дал определение термину edge торговой системы, сейчас пришло время определиться с методами и инструментами определения – обладает ли система edge либо это простое стечение обстоятельств.

Для начала немного истории, в далеком 2006 году ваш покорный слуга, слабал портфель системок которые  давали хорошие результаты на том рынке. Все было хорошо, до начала 2007 года, когда рынок вошел в боковик и системы начали сливать. Естественно бычий тренд с 2000 года, вселил веру в свою гениальность и прочее. Но вопрос вот в чем, можно  ли было предотвратить закономерный fail для этих несовершенных систем? Понятно, что было такое время что зарабатывали банальные средние, или популярная система NRTR (от konkop), но в дальнейшем их рынок поломал через коленку.

Для любой системы необходимо определить имеет ли она edge. Действовать нужно в 2х направлениях:

  • На этапе проектирования
     
  1. Идея – должна базироваться на использовании рыночных неэффективностей. Грубо говоря нужно понимать за счет кого система будет зарабатывать деньги, и кто будет помогать нам драйвить цену в нужную нам сторону. Для понимания сути таких вещей как сентимент, стат. преимущество (edge) можно почитать в ветке Поговорим о паттернах или поискать посты на пауке и невесте человека по имени Атаман
  2.  Данные – данные на которых обкатывается система, должны содержать все рыночные фазы. Для Российского рынка считаю представительным период 2007-2010 годы, можно захватить и 2006 при желании. Для американских стоков, важно чтобы выборка содержала delisted stocks, и не забывать о такой вещи как survivorship bias.
  • На этапе тестирования
  1. Количественные параметры системы – NetProfit, Max/DD, Sharpe, PF, Risk-Reward-Ratio, %Win, Avg. Trade и пр. метрики доступные в любом пакете для тестирования систем Ami, WL, TS и пр.
  2. Качественные параметры edge системы – именно о них хочу поговорить. Этот подход определяет обладает ли испытуемая система умением извлекать неслучайную прибыль из случайного процесса, либо это очередной бычий тренд и  никакой гениальности.

Edge Test



Механизм тут достаточно прост для понимания, в принципе его несложно будет реализовать любому программисту. Суть его основывается на моделировании методом Monte-Carlo, случайной выборки сделок и сравнения ее с результатами системы которые выдал тестер.

Алгоритм действия:

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

2. Теперь на всем промежутке с начала тестирования и до конца (напр. с 2007 до 2010) откладываем равные отрезки времени, эквивалентные периоду тестирования который был нами выбран (напр. квартал)

3. Для каждого такого периода нам необходимо выбрать все сделки системы, например в 2 кв. 2008 года, система сделала 20 сделок, по 30 баров в каждой (если длина трейдов различается то мы должны это учитывать!)

4. Для простоты система торгует на 1 инструменте (напр. RI), теперь магия: берем тот же тайм фрейм, и тот же временной промежуток, и случайным образом откладываем на нем те самые 20 сделок (из п. 3) эквивалентной длины. Считаем промежуточный результат, и записываем на бумажку.

5. Повторяем процедуру из п. 4 от 10 000 до 100 000 раз

6. Ранжируем полученные результаты от меньшего к большему.

7. Считаем персентиль, я беру 70% лучших результатов (но тут индивидуально для каждого)

8. Если результаты системы по метрике лучше чем 70% случайных, поздравляю система прошла Edge Test на выбранном периоде.

9. Повторяем процедуру п. 3-8 для всех периодов на всей выборке.

На выходе, мой софт выплевывает следующую картиночку:

Разбивка по All/Long/Short, смотрю по ALL в основном, системка прошла средненько на грани фола 4й кв. 2007, и завалила 4й кв. 2008 года, это должно служить звоночком как минимум обратить внимание на систему как максимум принять решение о ее консервации. Тем не менее, у меня пока не было систем которые били EdgeTest 100 из 100, но я стремлюсь к этому :)

Важно:

  1. Для тестирования и сравнения необходимо использовать UnitSize, т.к. на одном периоде могут встречаться периоды низкой и дикой волатильности, соответственно результаты Monte-Carlo могут очень сильно "играть". Нужно понимать то что система заработала больше денег на высокой волатильности, совсем не говорит о том что она хорошо работает.
  2. Очень важный момент, Edge Test должен проводиться на системах без использования стопов/тейков, т.е. все входы и выходы должны быть проведены по Close или Open свечей. См. Стопы коварны

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

Edge торговой системы

В своих предыдущих постах я нередко упоминал термин edge относительно систем. Сегодня хотел бы остановиться на этом более подробно.

Для начала приведу несколько ссылок на мои посты 3х летней давности:

В поисках edge’a часть 1 (Главные вопросы)

В поисках edge’a часть 2 (Новый взгляд)

В поисках edge’a часть 3 (О рыночном времени)

В поисках edge’a часть 4 (Об эффективности)

Это скорее философские рассуждения, о том как стать не таким как все, и попасть в элиту (5%)  рынка, как представлялось 3 года назад.

Что же такое edge  – как мне представляется это устойчивое преимущество торговой стратегии над рынком.

Для примера можно взять:

  • Рулетку – казино имеет очень маленькое преимущество, около 5% по-моему, но это не мешает ему извлекать прибыль из игроков.
  • Блэк джек – существуют игроки умеющие правильно считать карты, тем самым они могут смещать преимущество в свою сторону и иметь профит уже с казино.

На рынке то же самое, не зря когда Декарт и сотоварищи придумывали тервер, они делали этого для применения в азартных играх.

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

Иметь системы с edge для моего System Development Framework очень важно, т.к. никакие оптимизационные процедуры и ММ не вытянут плохие системы, и не решат основную задачу которая стоит передо мной – стабильность результатов в long-run. Обычно системы без edge имеют "привычку" одновременно ломаться при изменении фазы рынка.

Главный и самый сложный вопрос…
Как определить что система обладает edge?

Качественно – система должна быть построена на использовании неэффективности рынка, и необходимо понимать кто будет драйвить рынок в нужную нам сторону и почему.
Количественно – тут чисто технический способ определения EdgeTest, в основе лежит сравнение результатов системы и случайной выборки сделок с рынка. Об этом способе расскажу в следующем посте…

В поисках edge’a часть 4 (Об эффективности)

Размышлял недавно над тем, как большинство трейдеров тестируют свои системы, в итоге пришел к выводу, что 80% из них свойственна одна общая модель поведения, что-то вроде:

1. Прикрепил индикатор, линию тренда, или прочел в книге очередного Бильямса о сетапе, или сам трейдер подметил закономерность.
2. Написал пару простых или не очень правил
3. Протестировал
4. Оптимизировал
5. Если шаги 2-4 не получились, повторил заново.

И так по кругу, до посинения – пока система не будет отброшена или не заоптимизирована до прибыли. Такой подход в принципе имеет право на жизнь, но у него есть один минус – НЕЭФФЕКТИВНОСТЬ. А точнее не эффективное использование времени трейдера на разработку. Почему? Причина, как я думаю, в том, что 80% идей идут в мусорную корзину, а лишь остальные 20% могут себя хоть как-то показать, следовательно 80% трудового времени уходит в пустую.
Читать далее…

В поисках edge часть 3 (О рыночном времени)

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

Но как-то в моей памяти всплыла одна интересная особенность Читать далее…

В поисках edge часть 2 (Новый взгляд)

Возвращаясь к терминам бизнеса, edge – конкурентное преимущество, это то, что не видят другие. В узком смысле это система, позволяющая стабильно получать прибыль. В широком же смысле, как я считаю, это особый тип мышления трейдера – именно та пропасть отличающая 90% обывателей от 10% настоящей элиты.

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

Хотя не все так плохо Читать далее…

В поисках edge часть 1 (Главные вопросы)

Нередко читая очередной форум или журнал по трейдингу, можно встретить непонятные выражения вроде «в этом методе мой эдж» или «никакого эджа здесь нет». Существует даже журнал: «Your Trading Edge».

Edge – (c англ.) переводится как пропасть, обрыв. Метафорически это та пропасть между людьми, которые зарабатывают и теми, кто теряет деньги на бирже. Любому трейдеру известно, что меньшинство выигрывает деньги у большинства. Но любой новичок Вам заявит, что именно он входит в эту самую элиту.

Очень люблю сравнивать трейдинг с бизнесом Читать далее…