Приветствую всех!
Данная статейка просто изложение в тексте моих мыслей при создании алгоритма. Пусть это будет продолжение предыдущей статьи о том как собирал свой велосипед.
После того как собрал алгоритм, внес в него не мало коррективов, в частности закрываю тейком, это позволило сэкономить чутьчуть денег, так как алгоритм «случайно» мог достигнуть равновесной цены, и при закрытии по рынку могли сталкиваться с ситуацией когда равновесная была достигнута в пике и далее рынок сильно отскочил от него. Понятно что тейком, внес новый риск что сделка может не закрыться по расчетной цене, но благо это можно обойти ожидая новую равновесную цену (я в своем алгоритме предусмотрел ситуацию, если тейк не сработает то на след баре крыть по рынку).
Итак теперь график эквити выглядет так
Понятно вроде бы красиво, но бывают слишком крутые просадки. Иследующим шагом стало изучение ситуаций, при которых алгоритм лосит.
На что обращать внимание? главное смотреть не только на размер убытка который приносит позиция, но и на то, как она вписывается в концепцию всей стартегии. То есть должна ли быть такая сделка в принципе или нужно искать фильтр, который избавит нас от ненужных сделок, и при этом минимально скажется на нужных нам сделках.
Не менее важно смотреть на размер убытка.
Итак по Эквити обозначил проблемные зоны, которые нужно постараться уменьшить
И нужно обращать внимание не только на просадки, но и на зоны «перепроизводства» и «застоя».
То есть, если алгоритм слишком много заработал и перестал так приносить денег, значит это была случайность, которая в будущем может оказаться убытком. Зоны застоя, чаще говорят о том что или алгоритм делает слишком мелкие сделки либо рыночная ситуация не позволяла заработать по алгоритму.
Далее переносимся на график, и ниже будут обозначены проблемные зоны непосредственно с графика.
Определил для себя главную проблему. Ситуация в которой Сбер идет в разнобой с ммвб и этот процесс продолжительный. И пока что решить конкретно эту проблему не смог. Есть конечно идеи анализировать не только движение сбера и ммвб, но и ртс, так как заметил что если сбер не идет за одним то 100% идет за другим. И если данную проблему удастся решить, то в след статье опишу как добился этого.
Острота проблемы заключается не в том, что это убыточная позиция а в том что она слишком долгая. продолжительность 500баров, хотя обычные сделки в пределах 50-100баров.
Но в поисках решения этой проблемы обратил внимание на самый важный элемент в стратегии — корреляцию. Понятно что теоретически профит там где будет обратная корреляция, то есть сбер сильно отклонился от ммвб и нужно совершать срочно сделку с расчетом на то что ммвб перетянет сбера. Но оказалось в цифрах все наоборот.
Как и на первых двух скринах, так и на третьем, если обратить внимание на выделенные зоны, то понятно что если корреляции нет, то лучше не торговать в принципе. Вообще всегда на график старайтесь выносить все, участвующие в открытии позиции, данные, так намного проще анализировать проблемы.
Итак отфильтровал сделки только если кореляция больше нуля. Логика работает таким образом, если сложилась неэффективность рыночная то я ее сейчас смогу отработать только если бумаги движутся в одном направлении. НО важен еще момент добора позиции (в предыдущей статье упоминал добор) чем больше мы наберем позицию, тем больше рискуем, и в данном случае добор осуществляется только при корреляции выше 0.9 (если в теме не очень разбираетесь, кореляция от -1 до 1 меняется где -1 обратная корреляция, а 1 прямая, и чем ближе к 1 тем лучше, остальное можно в википедии почитать). таким образом алгоритм теперь добирает позицию чаще в плюс чем в минус. именно это решение было самым полезным как я считаю. то есть можно рисковать при первом входе, но каждый новый вход нужно делать с меньшим риском.
Но, остается самая бесячая проблема
Ситуация в которой и корреляция хорошая, но сделка идет в убыток. Причина естественно в том что Сбер растет быстрее ммвб. Эту проблему постараюсь тоже решить (пытаюсь придумать логику, в которой алгоритм будет анализировать направление движения двух бумаг, и если обе идут в одном направлении то сделки открывать только в этом направлении. в частном примере там можно было бы открывать лонг, если возникает сигнал, а шорт игнорировался бы, или же закрылся раньше. Посмотрим что получится (если получится)
Кроме этого есть обратная ситуация когда обе бумаги идут в одну сторону и ммвб перетягивает сбер в свою сторону
И эту ситуацию (золотую жилу) стоит лучше отрабатывать, например удваивать донабор, или увеличивать в прогрессии каждый следующий добор. НО эту ситуацию пока не реализовал, так как нужно для начала научиться правильно анализировать направленность рынка. Другими словами решение проблемы предыдущего скрина, поможет решить и текущую.
Итог, к чему привели текущие фильтры
Часть проблем удалось решить, как и уменьшить сильные просадки. Да, естественно приходится жертвовать частью прибыли, но это вопрос лишь приоритетов, кому что важнее.
К слову ничего не мешает оба варианта использовать в работе но с разным обьемом денег, это уже философия.
Извините за слишком длинную(из-за картинок) статью, надеюсь мысли были полезными.
Класс! Отличный пост.
Видна логика работы с идеей, со стратегией, и это вам не закодил, прогнал в оптимизатре, выбрал лучший вариант, а обоснованный алгоритм, всё логично, сначала ищешь резервы, затем способы их реализации. На мой взгляд именно в таком ключе и надо работать с идеями и стратегиями. Ну и результат (разница начального и конечного графиков) налицо.
Дмитрий. А, Спасибо на добром слове.
На самом деле, это естественно не так) Каждый человек всегда смотрит на картину под своим углом, не под одним углом а именно под своим. Это очень сложно перебороть и попытаться увидеть что либо в совершенно, или хотя бы отчасти, в другом искажении. Именно потому люди делятся мыслями, чтобы посмотреть со стороны на то что делаешь. Но в любом случае, мыслей обычно много и все разбросанны настолько, что не донести их другим, потому это делается частями, когда и как «осинит»)
Раньше не надо, надо позже:)
Я к тому, что если вы его разрабатываете/оптимизируете/учите, например, на барах 2015 года и ранее, то кривые (результат out-of-sample) должны строить на барах позднее 2015 года, чтобы в этих данных не было пересечений.
MegaZoiD, это понятно, но зависит в любом случае алгоритм зависит от рынка. это нельзя не учитывать. Понятно если трендовые алгоритмы то без аутофсемпл невозможно проверить идею (ну разве что на личном опыте пару лет торгуя) но фьючерс на ммвб слишком молод и он все еще развивается (надеюсь на это) и хоть он лишь ориентир, но все равно два года назад это была «пустая» бумага с «пустыми» барами.
Это не значит что я как либо отрицаю необходимость «краш-тестов», сделается это после обкатки на небольшой выборке, и это откроет новый ряд вопросов. если сразу получить 20проблем то их разом не решить — чаще сваливаешь алгоритм в долгий ящик. — но в любом случае это условности, ведь каждый работает как ему удобно.
Микаелян Саро, да, есть понятие training set, где вы подбираете параметры, веса, фильтруете убыточные кейсы и т.д., есть validation set, где вы тьюните гиперпараметры модели и test set, где вы смотрите и оцениваете результат стратегии. Если на test set модель не разваливается, то можно фитить дальше:)
Мне каажется, это какие-то очевидные вещи ...
Но по правде тут со сбером всё не так гладко, ибо средняя в 0.13% в реальности при этом же объеме в 1 мио станет средней менее 0.1%, а это ой как маловато будет, если убрать 2008 и начало 2009…
это примерный скрипт
буду благодарен, если подскажите :)