Блог им. mirovan

Поэтапное проектирование торговой системы

Очень часто для проектирования торговой систем встает вопрос — «С чего начать и как найти грааль ?». Попробую в данной статье рассмотреть разработку торговой системы по шагам, начиная от идеи и до оценки её качества.
 
Шаг 1 – идея
На первом этапе возникает проблема – где взять идею для построения торговой системы. Такой поиск грааля может продолжаться очень долго. Однако идея без реализации – это ничто. На самом деле, идей для построения торговых систем в интернете более чем достаточно, как говориться, на любой вкус и цвет. Вы можете использовать классический технический анализ, свечной анализ, исследовать паттерны, воспользоваться индикаторами или осцилляторами. В общем, средств для построения торговой системы предостаточно, тем более что множество торговых идей лежит в открытом доступе, абсолютно бесплатно. К примеру, сайт robostroy.ru, где разработчики торговых систем выкладывают идеи стратегии.

Вернемся к идее торговой системы. Воспользуемся одной из самых простых ситуаций на рынке – анализом high/low свечей.
 
Будем входить в лонг при пробое наибольшей из N предыдущих свечей относительно текущей, будем входить в шорт при пробое наименьшей из N предыдущих свечей.
Хочу отметить, что начальные правила торговой системы могут (и должны) меняться в процессе проектирования торговой системы, причем, как это часто бывает, из одной начальной идеи, могут появиться еще несколько независимых торговых систем.

 
Шаг 2 – выбор инструмента, таймфрейма и начальных параметров
Для разработки торговой стратегии воспользуемся историческими данными фьючерса на индекс РТС, как самого техничного и ликвидного инструмента на российском рынке. В качестве таймфрейма будем использовать 5 минутный интервал свечей. Исторические данные возьмем с 2008 года до 2012 – как данные отражающие интересные стадии – падение (2008), рост (2009), флет (2010). В качестве проскальзывание будем использовать 50 пунктов на сделку и 5 рублей в качестве комиссии на трейд.
Для каждого трейда определим риск на сделку в размере 3%.
Пусть начальным значением N (количество просматриваемых свечей/баров относительно текущей назад) будет 10 свечей.
 
Шаг 3 – первоначальное кодирование идеи
Итак, первоначальные правила торговой системы заданы, перейдем сразу к этапу написания кода. На этом этапе, для меня, важно выявить либо статистическое преимущество, либо определить участки рынка, где торговая система будет показывать прибыль, и в дальнейшем искать такие участки.
Сразу при кодировании отсечем первый час торгов и ограничимся только дневной сессией.
Выход из позиции будет либо по стоп-лосу, либо в конце дня.
После первичного программирования торговой идеи, я обычно запускаю оптимизатор, не для того чтобы подогнать параметры и свести систему к прибыльной, а для того чтобы увидеть – есть ли в системе какое-либо статистическое преимущество.
Поэтапное проектирование торговой системы
Рис 1. Оптимизация параметра «Количество просматриваемых баров»

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

 
Подробнее на robostroy.ru
 
 
Шаг 4 – изменение параметра выхода из позиции
Изменим параметра выхода по стоп-лосу. В качестве стоп-лоса для позиции лонг будем использовать минимум из N просматриваемых свечей, для позиции шорт – максимум N просматриваемых свечей.
Как видно на рисунка 2, кривая доходности с параметром по умолчанию N=10 поменялась на положительную, пусть и очень низкодоходную.
Поэтапное проектирование торговой системы
Рис 2. Кривая доходности после изменения правил выхода из позиции

Если взглянуть на множество параметров N, то оптимизатор показывает положительный результат на большинстве значений.
 
 
Шаг 5 – удержание позиции в течение нескольких дней
Проанализировав визуально сделки, я сделал предположение, что можно сделку не закрывать в конце дня, а удерживать в течение нескольких дней. Таким образом, будем закрывать сделку либо по стоп-лосу, который определен на предыдущем шаге (шаг 4), либо в конце торговой недели в пятницу в 23.45.
Посмотрим на доходность торговой системы, построенной с этими правилами.
Поэтапное проектирование торговой системы
Рис 4. Кривая доходности после удержания позиции до конца недели

Как видно кривая доходности изменилась значительно. Теперь взглянем на гистограмму распределения параметра N.
Поэтапное проектирование торговой системы
Рис 5. Оптимизация с удержанием позиции до конца недели

Как видно из данной гистограммы, в качестве параметра N можно взять любой из диапазона 5-60 и кривая доходности будет примерно одинаковая везде. Поэтому для улучшения качества торговой системы, нужно искать оптимальные правила выхода.
Подробнее на robostroy.ru
 
При этом необходимо учесть, что при переносе позиции через ночь, стоп-лосс не может срабатывать на первой свече. Это сделано для того чтобы учесть проскальзывание и подгонку системы, т.е. наша задача рассмотреть самый худший вариант.
 
 
Шаг 6 – добавление трейлинг стопа
Как видно большинство сделок были закрыты в диапазоне от -5% до 0%. Подумаем, как можно сократить число убыточных сделок. Каждый день в 23.45 будем передвигать стоп-лосс на уровень половины положительной динамики цены внутри дня. 

Подробнее на robostroy.ru
 
 
Шаг 7 – добавление дополнительного параметра
Поэтапное проектирование торговой системы
Рис 8. Кривая доходности и кривые дохода по лонгам и шортам.

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

Подробнее на robostroy.ru
 
 
Шаг 8 – Удержание позиции до «стопа»
Давайте подумаем, а зачем вообще закрывать позицию по тейк-профиту (в нашем случае в пятницу)? Почему бы не дать прибыли течь, не забывая об убытках. Попробуем рисковать уже заработанной прибылью, по следующему правилу — в пятницу (в 23,45) будем переносить стоп-лосс на половину разности величины нашего риска и текущей прибыли.
 
В данный момент меня не интересует эквити системы, мне важно уменьшить просадку системы и количество убыточных сделок, посмотрим получилось ли у нас это:
Поэтапное проектирование торговой системы
Рис 10. Распределение прибыли при переносе стоп-лоса в конце недели

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

 
ШАГ 9 – Оценка системы
Так или иначе, тестирую торговую систему на истории, мы пользуемся подгонкой. Существуют разные алгоритмы оптимизации (полный перебор на истории, метод Монте-Карло, форвардное тестирование, генетический алгоритм и т.д.), но ни один из этих алгоритмов не способен смотреть в будущее. Поэтому нужно адекватно оценивать систему.
Первое на что я обращаю внимание – это доходность.
Второе – плавность кривой доходности.
Третье – просадка системы.
Далее я смотрю на параметры тестирования – Profit Factor, Win Rate, Loos Rate, Average Profit.
Причем первым трем параметрам я отдаю наибольшее внимание, предпочтение конкретному параметру из трех, я не могу отдать, т.к. они равнозначны для меня и использую их только в совокупности.
Попробуем воспользоваться оптимизацией и найти оптимальные параметры.

Подробнее на robostroy.ru
Таким образом, для выбора оптимального параметра необходимо рассмотреть другие значения оптимизации.
Поэтапное проектирование торговой системы
Рис 12. Таблица результатов оптимизации

На рисунке 12 результаты отсортированы по Net Profit, т.е. по доходу. Красным цветом я отметил оптимальные значения. Как ранее было сказано, оптимальный параметр будет выбран из диапазона самых устойчивых значений от 45 до 54. Выберем среднее значение параметра из этого диапазона, в данном случае это значение 50. При этом Profit Factor в данной системе больше двух, что многие считают довольно хорошим значением.
Довольно неплохой график, по которому видно, что максимальная просадка составляет 14%. Посмотрим на доходность по годам.
Поэтапное проектирование торговой системы
Рис 14. Доходность по годам

Ну и, конечно же, нужно обратить внимание на кривую доходности.
Поэтапное проектирование торговой системы
Рис 15. Кривая доходности

Кривая доходности довольно плавная, нет резких падений. При этом система удерживала шорт почти весь период падения в 2008 году, это видно в таблице трейдов (Рис 16). А одна сделка, выделенная фиолетовым цветом принесла доход в размере почти 67% и продолжалась 3 месяца.,

Посмотреть полный текст статьи и код торговой системы для Wealth Lab
 
★21
20 комментариев
макс, ты давай заканчивай граали то палить ;)
avatar
sanches, :)
Как сказал Элдер «Каждый сольет деньги по своему» :))
Спасибо
avatar
Что-то обещанного кода торговой системы я по ссылкам не увидел :)
avatar
jug, 15 минут и выложим обязательно :)
Максим Милованов, увидел, спасибо!
avatar
jug, выложите код куда нибудь плиз, а то там региться надо.
avatar
nfxzhzh, что за фокус?
Коды выложены
avatar
1 низкая средняя сделка
2 торговля внутри гэпов по лимитникам
3 рефинансирование
4 низкая доходность
5 боковик дительностью в год
6 не стабилен
avatar
ves2010,
«боковик длительностью в год» — это свойство трендовой стратегии: не зарабатывать в боковике (а 2010 год — это и есть «отдых» от тренда 2009)
«не стабилен» — почему? сильных просадок нет, все в меру))
avatar
Кот Матроскин, все крайне просто…
сделай проверку на стабильность — переоптимизацию-подгонку
1 смени таймфрейм на больший-меньший
2 посмотри 3-4 бумаги при тех же настройках
3 возьми пару бумаг пох каких типа бакс-евра или гамак и протесть лет за 10
если во всех случаях профитность сохраняется и дродаун в пределах 20% — торгуй
avatar
ves2010,
Год назад тестил похожую пробойную систему. Лучше всего показал себя Сбер, остальные похуже, но порядок цифр был один и тот же.
Правда, период был с 2008. Но больше брать и не вижу смысла (по нашему рынку). И уже не вспомню детали просадок. Но в целом, система более-менее стабильна. Тренд ловит, на флэте либо боковик, либо чуть-чуть сливает. Но это уже особенность трендовой системы.
avatar
nfxzhzh, да тот же мартингейл (построенный с умом) является прибыльной контртрендовой стратегией, правда все трендовые его обходят.
nfxzhzh, я бы не относился так строго к опубликованной стратегии- результаты для публичной стратегии неплохи, дают пищу для размышлений, и вполне подходит, как заготовка для дальнейшей работу. Вообще, я бы хотел поблагодарить Максима за те материалы, которые он выкладывает периодически — видно, что это плоды продолжительного труда, а не результат 5-ти минут работы генетического оптимизатора и пересечения индикатора x с индикатором y — который разваливается на 1-м баре out-of-sample. Вообще, имхо, результаты работы алготрейдера на 90% заимствованы в той или иной степени из чужого опыта( конечно переработанного) — поэтому праведный гнев многих авторов — не пали грааль!- я бы трактовал не иначе как- я вот подглядел идейку — а все остальные пусть останутся слепыми :). И кстати — среди идей в инете есть и контртрендовые страты без излишней подгонки работающие на РФР :)
avatar
nfxzhzh, jug, всё верно, никто и не говорит что нужно торговать эту систему. Просто я показал как я вижу разработку ТС, не претендуя на правильность моих взглядов.
Максим Милованов, выложите код куда нибудь плиз, а то там региться надо.
avatar

теги блога Максим Милованов

....все тэги



UPDONW
Новый дизайн