Блог им. Saro

Оттачивание алгоритма и фильтрация разных рыночных ситуаций

Приветствую всех!

 

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

После того как собрал алгоритм, внес в него не мало коррективов, в частности закрываю тейком, это позволило сэкономить чутьчуть денег, так как алгоритм «случайно» мог достигнуть равновесной цены, и при закрытии по рынку могли сталкиваться с ситуацией когда равновесная была достигнута в пике и далее рынок сильно отскочил от него. Понятно что тейком, внес новый риск что сделка может не закрыться по расчетной цене, но благо это можно обойти ожидая новую равновесную цену (я в своем алгоритме предусмотрел ситуацию, если тейк не сработает то на след баре крыть по рынку).

Итак теперь график эквити выглядет так 

Оттачивание алгоритма и фильтрация разных рыночных ситуаций

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

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

Не менее важно смотреть на размер убытка.

Итак по Эквити обозначил проблемные зоны, которые нужно постараться уменьшить

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

Далее переносимся на график, и ниже будут обозначены проблемные зоны непосредственно с графика.

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

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

Но, остается самая бесячая проблема

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

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

Часть проблем удалось решить, как и уменьшить сильные просадки. Да, естественно приходится жертвовать частью прибыли, но это вопрос лишь приоритетов, кому что важнее. 
К слову ничего не мешает оба варианта использовать в работе но с разным обьемом денег, это уже философия.
Извините за слишком длинную(из-за картинок) статью, надеюсь мысли были полезными.

★38
37 комментариев
Вот за такие посты я все еще читаю СмартЛаб.
avatar
те же грабли у меня
avatar

Класс! Отличный пост.

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

avatar
Да, я тоже)) Вообще мне кажется, что Саро гений в Тс лабе и логике и ему не нужны никакие советы)) 

Дмитрий. А, Спасибо на добром слове. 

На самом деле, это естественно не так) Каждый человек всегда смотрит на картину под своим углом, не под одним углом а именно под своим. Это очень сложно перебороть и попытаться увидеть что либо в совершенно, или хотя бы отчасти, в другом искажении. Именно потому люди делятся мыслями, чтобы посмотреть со стороны на то что делаешь. Но в любом случае, мыслей обычно много и все разбросанны настолько, что не донести их другим, потому это делается частями, когда и как «осинит»)

Правда не удавалось следить именно за повествованием применительно к конкретной стратегии — эту информацию я воспринимал как ветер в ушах ну или бла-бла-бла)), но это вообще не помешало уловить смысловую нагрузку текста касаемо способов и алгоритмов работы со стратегией.
avatar
руками больше заработаешь. реально!!! Я этой мути столько переписал
avatar
Oleg Only Algo, но пока не начнёшь писать роботов понимание о рынке долго ждать придётся, тут как бы нужная вещь эти алгоритмы
avatar
Oleg Only Algo, и особенно тслаб — полезная штука
avatar
Oleg Only Algo, Легкое ощущение диссонанса) — ник и сообщение)
avatar
Replikant_mih, в 2016, когда волатильность стала не та — выключил свой надежнейший алгоритм, который каждый год в плюс до этого работал в хороший. Попытался подстроить, но стабильного результата так и не нашёл и решил торговать руками по тому же алгоритму, но с учётом внешнего фона, новостей и интуиции. Результаты лучше. Но стратегия прибыльная ОБЯЗАТЕЛьно должна быть, иначе слив сто процентный
avatar
Oleg Only Algo, Все-таки даже интуиция это не неведомая связь с космосом, по большому это тоже мыслительный процесс, только подсознательный. Я к тому, что если руками торгуется хорошо, а алгоритмически не очень — это говорит о сложностях с формализацией стратегии, условно говоря «недоработал», «недожал». Ну а в целом согласен.
avatar
Oleg Only Algo, руками обычно нет времени и тем более нет нервов. терпеть убытки или недополученную прибыль это сложно. А так всегда можно сказать, что робот лошара, а я не при делах))
Микаелян Саро, терпеть убытки или недополученную прибыль так же тяжело, это же деньги 
avatar
Oleg Only Algo, ой не знаю не знаю)), у каждого по своему, у меня наоборот, руками не получалось, а вот через алго, даже несложные системы трендовые, удается зарабатывать, пусть немного, но плюс, а руками не получалось.
Эти кривые в посте выше out-of-sample построены? Если нет, то выглядит как жесткий фитинг…
avatar
MegaZoiD, Нет, это я онлайн строил, без замашек на годовые или декадные результаты. в частном примере данный алгоритм не могу представить чтобы работал раньше (размах цен совершенно другой был и соответственно точки входа нельзя рассматривать такие же. Но можно замахнуться и построить алгоритм через относительные значения, чтобы в итоге не играло роли стоил раньше сбер 6000, а теперь 16000

Раньше не надо, надо позже:)

Я к тому, что если вы его разрабатываете/оптимизируете/учите, например, на барах 2015 года и ранее, то кривые (результат out-of-sample) должны строить на барах позднее 2015 года, чтобы в этих данных не было пересечений.

avatar

MegaZoiD, это понятно, но зависит в любом случае алгоритм зависит от рынка. это нельзя не учитывать. Понятно если трендовые алгоритмы то без аутофсемпл невозможно проверить идею (ну разве что на личном опыте пару лет торгуя) но фьючерс на ммвб слишком молод и он все еще развивается (надеюсь на это) и хоть он лишь ориентир, но все равно два года назад это была «пустая» бумага с «пустыми» барами. 

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

Микаелян Саро, да безусловно вы можете работать, как вам удобно. Факт в том, что вы занимаетесь оверфитингом, как я понял. На мой взгляд, потеря времени.
avatar
MegaZoiD, Правильно ли я понимаю, что алгоритм разрабатывая вы используете данные допустим 2014года и далее уже смотрите результат в текущем времени? Или речь именно за тестирование?

Микаелян Саро, да, есть понятие training set, где вы подбираете параметры, веса, фильтруете убыточные кейсы и т.д., есть validation set, где вы тьюните гиперпараметры модели и test set, где вы смотрите и оцениваете результат стратегии. Если на test set модель не разваливается, то можно фитить дальше:)

Мне каажется, это какие-то очевидные вещи ...

avatar
MegaZoiD, если честно, всегда работаю в обратном направлении) естественно кроме трендовых систем.
Как всегда качественный пост. Однозначно в избранное! =)
avatar
А теперь для качественности и осмысленности результатов добавьте хотя бы пару предыдущих лет к полученной эквити:)
avatar
сбербанк 15ти минутка поресечение цены закрытия со скользящей средней… фикс сумма 1мио



avatar
ves2010, ага, они всё же уверены, что надо заниматься переподгонкой:)

Но по правде тут со сбером всё не так гладко, ибо средняя в 0.13% в реальности при этом же объеме в 1 мио станет средней менее 0.1%, а это ой как маловато будет, если убрать 2008 и начало 2009…
avatar
Sergey Pavlov, у афтора средняя  вообще 0.07%… ну и в реальности среднюю можно легко поднять до 0.3-0.4% 
avatar
ves2010, мы же не писосами меряемся, да? Это материал для ознакомления и никак не попытка хвастаться зеленными холмами! Вопрос средней доходности это ж очень субъективный! Сравнить среднюю у контртренда и тренда не логично! Так же не логично сравнивать алгоритм на минуте и 15 минутах, другой размер доходности на сделку! А главное цель статьи образовательная прежде всего
Микаелян Саро, эээ не горячись… я как бы намекаю что сбербанк торгуется элементарно и просто… как и си… гораздо интереснее боты в ри, миксе и луке… имхо самый трудный это лук… 
avatar
ves2010, не горячусь, это диалог, все хорошо! Лично для меня сложнее Газпром и наверное втб! Но из всех бумаг интереснее остается ри, слишком много ему уделял внимания потому проще его укратрить и придумать новый сценарий для робота! Считаю если когда нибудь смогу стабильно заработать на Газпроме, тогда буду себя называть профессионалом в трейдинге! Пока что только любитель!
Саро, разрешите задать простенький вопрос: не могу разобраться как сделать, чтобы алгоритм не открывал сделки с 18.45 до 19.05.
это примерный скрипт
буду благодарен, если подскажите :)
avatar
Man, Чтобы не открывал в указанное время, нужно писать логический фильтр, который будет дополнительным условием открытия позиции. В фильтре указанно будет Время>=100000 и время<184400 (тут нужно учитывать таймфрейм,) и время > 190500 И Время<=234900
Микаелян Саро, Спасибо, большое! Все получилось.
avatar
ves2010, как это сделать?
avatar

теги блога Микаелян Саро

....все тэги



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