Приветствую.
Не станем углубляться в философию оптимизации своего алгоритма, и для чего нужен бектест. Могу сказать свое мнение — оптимизировать можно, но только делайте это правильно. В своей практике, бектестинг для меня играет крайне малую роль при создании алгоритма. Но все же некие аспекты и зависимости можно выделить.
Для начала хотелось бы показать как вообще это выглядет все в рамках TSLab.
Два примера — на первом рисунке дефолтно созданный алгоритм под простые индикаторы, RSI 20 поверх SMA20. Купили когда индикатор близок к 100, продали когда близок к нулю. Никаких фильтров и усложнений (так нужно для данного поста). Так же для примера показана таблица результатов под 400проходов. От 5 до 100 с шагом 5 для каждого индикатора. (тоже лишь для примера). В ней можно усмотреть что количество отрицательных результатов — довольно маленькое. (удачный пример, не более)
На втором рисунке уже прооптимизированный и немного другой вид 3D графика. На точках, проще понимать распределение доходности в зависимости от выбора параметра. Соответственно зеленные точки — профит, красные, убыток.
Ниже правила, которые я выработал для себя
1 Не подгоняйте свой алгоритм под рынок. Прибыль на истории не гарантирует доход, в реальных торгах. Первая причина — машина подбирает параметры по уже известной истории, которая не изменится. Вторая — не известно как изменится рынок завтра. Мы не говорим даже о глобальных изменениях трендов, что на самом деле естественно для любой ценной бумаги. Так же может измениться техническая сторона, размер комиссии, шаг цены, стоимость шага цены и другие косты.
Один из методов обойти проблему — делать бектестинг и следом форвард тест. Так же можно сгенерировать случайные котировки для своей бумаги и прогнать тест на произвольных котировках.
2 Анализируя, таблицу результатов оптимизации, оценивайте не только прибыльные параметры, но и убыточные. Недостаточно наблюдать за положительной статистикой, так как может оказаться, что ваш алгоритм эффективен только в 1% случайных параметров, а 99:% статистики — отрицательная. Потому, лучше всего либо оптимизировать параметры поэтапно — либо вести также и статистический анализ результатов.
3 Метод подбора параметров для оптимизации. Например, создавая алгоритм — я обычно сам задаю параметр. К примеру понимая, что объем торгов в 10 000лотов за час, на ликвидном тикере это очень мало, не стану указывать подбор параметра с 1 до 1000000, а укажу значение от 40к до 100к с шагом 5000. Если понимаю, что мне важна средняя за большой период, то глупо будет оптимизировать этот параметр от 1 до 200, и тд.
4 Не верить, слепо, результатам. Если мы делаем оптимизацию, то не нужно только статистикой пользоваться. К примеру мне под мои риски, не подходит стоп на сделку, в размере 2%. Но я могу проанализировать результаты, для оценки, могу ли я изменить, что то, и принять такие риски. (ну например если таким образом удастся снизить количество убыточных сделок подряд, и более серьезную просадку по счету, исходя из серии убыточних сделок).
5 Количество сделок, должно быть достаточным для анализа. Самое важное для меня, это количество сделок. ДА, для длинных трендов, когда сделки совершаются не каждый месяц, сложно собрать статистику. И в таком случае я обычно беру алгоритм, адаптирую под локальные тренды, и смотрю, как «теоретически» будет выглядеть система, при большом количестве сделок. Хотя бы 100 сделок в год. Иначе большинство машин, могут подогнать статистику на 10 сделок — купил продал и все — профит. А если тикер в хорошем тренде, то не опередить алгоритм, сценарий купил и держи.
6 Близкие параметры, но далекие результаты. Если например, мы наблюдаем, что при изменении параметра на один шаг — результаты сильно разнятся — то скорее всего, эти параметры не подходят для оценки качества и устойчивости алгоритма. Например, период индикатора 70 дает профит 1000$ а период 65 дает убыток 200$ то сам алгоритм. Очень слабый. Его нужно насыщать фильтрами и модулями управления денег и рисков.
7 Диверсификация своей торговли, разными вариациями параметров. Итак, мы сделали большое количество бектестов, и можем выделить себе некий набор параметров, удовлетворяющих нашим требованиям. Дальше не обязательно выбирать какие то конкретные параметры. Можно запустить 2-5-10 сценариев, и наблюдать слабые и сильные зоны параметров, и возможно от каких либо отказаться, а какие то продолжат работу.
Пишите свои наблюдения и замечания, а так же пожелания!) Спасибо.
Слабый алгоритм никакими фильтрами сильным не сделать, просто подгоните под историю и все.
Слабый алгоритм надо выбрасывать и писать сильный :)
Дмитрий Овчинников, ну… слабый алгоритм это когда сделали точки входа, начальные и все) развивая его, дорабатывая мани и риск мененжментом, уже можно что то выжать.) в остальном же да, согласен.
Для меня research при создании и анализе стратегии — ключевой фактор в эффективности всего мероприятия.
Обычно когда читаю как устроен этот процесс у того или иного алго-трейдера создается ощущение, что человек мало понимает в том, как именно работают процессы внутри, да, эмпирически многие приходят к правильным установкам, это позволяет им делать процесс работающим, но именно понимание внутреннего устройства редко встречаю. Вот и тут тоже. Ну все, минутка комплиментов закончилась)).
>> «6 Близкие параметры, но далекие результаты.»
Пожалуй, больше всего задел ухо этот пункт. Прыгающие туда сюда результаты при небольших изменениях параметров могут быть и будут и это не признак чего-то плохого. Опять же, возвращаясь к тому, что написал в начале: да, эмпирически это правильное правило, т.е. если ты будешь так делать, ты убережешь себя от всякого нехорошего, ну мало ли ты берешь самый прибыльный прогон и в бой его. Но при этом таким топорным методом ты себя ограничиваешь. Тут конечно нет конкретики, может я не до конца понял, что имеется в виду, но в моей картине мира соседние прогоны (соседние по значению некоторого параметра) могут отличаться очень сильно, прыгать очень сильно — все-таки стохастический процесс, надо скорее смотреть зависимость результата от параметра, не на паре соседних значений, а на всем диапазоне значений. Можно тупо усреднить результирующую метрику (PF какой-нить, например) на плавающем окне и посмотреть что происходит. Шипы при усреднении уйдут, будет видна глазом закономерность или её отсутствие. Если есть сомнения о наличии закономерности можно проводить доп. эксперименты, крутить данные по-разному и т.д. Ну а если закономерность выявлена — понять из какого диапазона брать значения уже не проблема.
Replikant_mih, Параметр параметру рознь. 1пункт в стоплоссе который дает мега прибыль и -1 пункт дающий мега убыток — подгонка.
если же близкий шаг 1% а следом шаг 2% то тут они не так и близки))
нельзя ко всему подходить «в лоб» многие вещи зависят от самого алгоритма, от того как он устроен и какие параметры для него значимы а какие нет.
например если взять корреляцию тикеров, да там 90% значений будут коррелировать, и если близкие значения будут давать разные результаты, то не факт что этот параметр значимый для алгоритма. ну так и во всем.
но пост получился совсем не об этом.
1. Выбор правильного тикера и рынка (например, торгуются тренды и правильных тикеров для этого не так много).
2. Тест на истории за 5 лет минимум.
3. Количество сделок от 50, а лучше 100.
4. Выбор по таким критериям, как лучшее соотношение прибыль в год/макс. просадка, минимальная просадка в днях и оценка кривизны эквити.
5. Ну и прибыльность при различных значениях параметров.
в итоге пересмотрел подход и ушел на 100+ сделок, т.е. ловить более мелкие тренды стал.
и также тестирую на 10+ лет ибо смысл в алгоритме, который работает 2 года из 10)
кстати при тестинге за 10+ лет круто смотреть график эквити — находил конечно же кучу параметров, когда условно 2 года круто 3 в минус потом 1 год круто 4 в минус. Поэтому многие и нарываются так — протестирую два последних картала и запускают…
а на тесте 1300+-было
и с чего это с 35 на 100 переподгон? так-то более мелкие тренды система стала ловить совсем другие, т.е раньше заходить и раньше выходить, в боковике активнее пилиться туда сюда
1000 — она и в Африке 1000.
во-первых, здесь обсуждается не одна (ваша) система, а принцип;
во-вторых,… Есть еще и в десятых, но не вижу смысла спорить с человеком, который в бурной радости от профитности своей ТС сделал глобальные выводы и наслаждается ими.
Поверьте — это пройдет, вопрос времени. Я тоже такой был.
И только тогда вы вернетесь к моим предыдущим комментарием — начнете над ними думать. Человек так устроен — он не хочет ничего менять в своих взглядах пока его устраивает результат. А часть, как вы, вообще считает, что обрел истину и она непоколЕбима. ))))
Не умеете общаться в русле даже своей же темы, предпочитаете переходы на личности, да еще и мелочно, чисто по-женски: «Ах, у вас комментарии негативные».
Да, негативные есть и их много — что из того? Я ж не написал, что у вас уши большие — я ваши взгляды критиковал!
Не нравится критика, ну так и сидите себе под веником.
И под моим ЧС.
или, как минимум, надежней.
Здесь на первое место выходят либо трал, либо целеоопределение.
В этом вопросе подсказка где искать грааль.
Я не просил подсказать, а НАОБОРОТ — давал подсказку ВАМ.
Открою маленький секрет (уточню подсказку) — можно набрать ЛЯМ сделок, но в будущем робот будет сливать «как все», если в него не заложено нечто более важное. И таких примеров тьма.
Это впервые за всю историю нашего знакомства, ты знаешь.
Сразу со старта задаешь ноту о том, что оптимизация по сути предосудительна и лишь если она очень правильная (какая???)… В общем «если нельзя, но очень хочется, то можно».
Может ты и не хотел так сказать, но я хорошо знаю русский. Язык.
Не согласится только идиот. НО…
Что предлагается для решения этой проблемы?
А еще сгенерить случайные котировки… Вообще бред.
Форвард понимаю! Но кто считает форвард панацеей, те вообще дебилы. Извини, не обижайся — это про вообще.
Если сравнивать оптимизацию с форвардом, то для меня чисто логически более надежной выглядит оптимизация с включением «вашего» форварда. Потому, что у неё больше шансов удержаться в рынке дольше, чем без включения в оптимизацию последнего участка рынка.
Дальше даже читать не стал. Еще раз извини.
И надеюсь, что этот коммент воспримешь конструктивом.
Лично к тебе отношусь за ши бись. Точка. )
PS: не пропусти 2 моих следующих (по времени) коммента (выше) —
в них четкий ответ на все возможные вопросы.