rss

Профиль компании

Финансовые компании

Блог компании TSLab | Поговорим немного об оптимизации?!

Приветствую.

Не станем углубляться в философию оптимизации своего алгоритма, и для чего нужен бектест. Могу сказать свое мнение — оптимизировать можно, но только делайте это правильно. В своей практике, бектестинг для меня играет крайне малую роль при создании алгоритма. Но все же некие аспекты и зависимости можно выделить.
Для начала хотелось бы показать как вообще это выглядет все в рамках 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 сценариев, и наблюдать слабые и сильные зоны параметров, и возможно от каких либо отказаться, а какие то продолжат работу.

 Пишите свои наблюдения и замечания, а так же пожелания!) Спасибо.

  • обсудить на форуме:
  • TSLab
★18
28 комментариев
А вот эта трёхмерная поверхность результатов она в какой версии появилась?
avatar
ch5oh, 2.1 помоему) 
то сам алгоритм. Очень слабый. Его нужно насыщать фильтрами

Слабый алгоритм никакими фильтрами сильным не сделать, просто подгоните под историю и все.
Слабый алгоритм надо выбрасывать и писать сильный :)

Дмитрий Овчинников, ну… слабый алгоритм это когда сделали точки входа, начальные и все) развивая его, дорабатывая мани и риск мененжментом, уже можно что то выжать.) в остальном же да, согласен.

Для меня research при создании и анализе стратегии — ключевой фактор в эффективности всего мероприятия.

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


>> «6 Близкие параметры, но далекие результаты.»

Пожалуй, больше всего задел ухо этот пункт. Прыгающие туда сюда результаты при небольших изменениях параметров могут быть и будут и это не признак чего-то плохого. Опять же, возвращаясь к тому, что написал в начале: да, эмпирически это правильное правило, т.е. если ты будешь так делать, ты убережешь себя от всякого нехорошего, ну мало ли ты берешь самый прибыльный прогон и в бой его. Но при этом таким топорным методом ты себя ограничиваешь. Тут конечно нет конкретики, может я не до конца понял, что имеется в виду, но в моей картине мира соседние прогоны (соседние по значению некоторого параметра) могут отличаться очень сильно, прыгать очень сильно — все-таки стохастический процесс, надо скорее смотреть зависимость результата от параметра, не на паре соседних значений, а на всем диапазоне значений. Можно тупо усреднить результирующую метрику (PF какой-нить, например) на плавающем окне и посмотреть что происходит. Шипы при усреднении уйдут, будет видна глазом закономерность или её отсутствие. Если есть сомнения о наличии закономерности можно проводить доп. эксперименты, крутить данные по-разному и т.д. Ну а если закономерность выявлена — понять из какого диапазона брать значения уже не проблема.

avatar

Replikant_mih, Параметр параметру рознь. 1пункт в стоплоссе который дает мега прибыль и -1 пункт дающий мега убыток — подгонка.

если же близкий шаг 1% а следом шаг 2% то тут они не так и близки))

нельзя ко всему подходить «в лоб» многие вещи зависят от самого алгоритма, от того как он устроен и какие параметры для него значимы а какие нет.

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

Микаелян Саро, Дело не только в шаге. В стохастической вселенной случайная величина как-то распределяется, например, нормально. Соответственно, даже если есть закономерность результат может попасть в любую точку этого распределения. Т.е. если при 1 +100, а при 2 -100 — это может быть частью нормы. Мне гораздо больше инфы даст 100 прогонов с шагом 1 пункт чем 2 прогона с шагом 1%.
avatar
Replikant_mih, Ситуации разные же. нельзя все под одну гребенку. У каждого свой опыт работы и торговли))
Микаелян Саро, Это да), главное не попасться в ловушку не увидеть общее за частоколом частностей).
avatar
Микаелян Саро, вот в этом комменте ключ к успеху,
но пост получился совсем не об этом.
avatar
Пунктов много, некоторые не совсем понял, я попробую сформулировать свои:
1. Выбор правильного тикера и рынка (например, торгуются тренды и правильных тикеров для этого не так много).
2. Тест на истории за 5 лет минимум.
3. Количество сделок от 50, а лучше 100.
4. Выбор по таким критериям, как лучшее соотношение прибыль в год/макс. просадка, минимальная просадка в днях и оценка кривизны эквити.
5. Ну и прибыльность при различных значениях параметров.     
avatar
Мейстор Эймон, просадка внутри одного алгоритма для вас критична?
Микаелян Саро, я торгую больше тренды. И системы часто уходят в просадку в одни и те же периоды времени. Поэтому да.
avatar
чем вам in sample и  out of sample не нравится, все вопросы сразу отпадут
Кол-во сделок. Для себя выбираю системы от 1000 сделок, не меньше! Период тестирования — не менее 5 лет, лучше 10! Мои системы имеют несколько параметров, потому да, диверсификация по параметрам работает, проверено лично на 6-ти летнем отрезке реальной алго-торговли!)
avatar
SenSoR, каждое слово плюсую! в 2016 году алгоритм хороший работал с 35 сделками в год где-то и историей бектеста 10лет  — гнался за редкими сделками думал это выгодно и круто, но после того как в марте 2016 среднесрочные тренды ушли на нашем рынке начал сливать.
в итоге пересмотрел подход и ушел на 100+ сделок, т.е. ловить более мелкие тренды стал.
и также тестирую на 10+ лет ибо смысл в алгоритме, который работает 2 года из 10)
кстати при тестинге за 10+ лет круто смотреть график эквити — находил конечно же кучу параметров, когда условно 2 года круто 3 в минус потом 1 год круто 4 в минус. Поэтому многие и нарываются так — протестирую два последних картала и запускают…
avatar
Виталий, 100+ сделок — переподгон. 500+ сделок — тоже переподгон. 1000+ сделок уже статистика, хотя и тут может быть переподгон для более глобального масштаба графика)
avatar
SenSoR, 100+- это в год
а на тесте 1300+-было
и с чего это с 35 на 100 переподгон? так-то более мелкие тренды система стала ловить совсем другие, т.е раньше заходить и раньше выходить, в боковике активнее пилиться туда сюда
avatar
SenSoR, математической логики в вашем комменте ноль.
1000 — она и в Африке 1000.
avatar
VladMih, Я использую в тестах своих систем минимум 1000 сделок. Имхо для меня это работает и приносит прибыль, и мне неважно имеет это математическую логику или нет. Я просто в предыдущем своем комменте забыл вставить слово «Имхо» 
avatar
SenSoR, 
во-первых, здесь обсуждается не одна (ваша) система, а принцип;
во-вторых,… Есть еще и в десятых, но не вижу смысла спорить с человеком, который в бурной радости от профитности своей ТС сделал глобальные выводы и наслаждается ими. 
Поверьте — это пройдет, вопрос времени. Я тоже такой был.

И только тогда вы вернетесь к моим предыдущим комментарием — начнете над ними думать. Человек так устроен — он не хочет ничего менять в своих взглядах пока его устраивает результат. А часть, как вы, вообще считает, что обрел истину и она непоколЕбима. ))))
avatar
VladMih, Я тоже не собирался спорить о чем-либо, уж поверьте) Тем более с завсегдатаем смартлаба, у которого написано тонны комментов, и часто негативных). И я не радуюсь своим системам как ребенок, т.к. уже прошел через горечь потерь. Я в первую очередь практик и постоянно учусь и совершенствую свои системы, что бы стать лучше. На смартлабе и так очень редко что-либо пишу, а в этом посте просто высказал свою точку зрения на количество сделок в тестировании систем, отчего получил недружелюбный выпад с вашей стороны. Давайте лучше закончим. В который раз убеждаюсь, что лучше быть безмолвным наблюдателем смартлаба, чем участвовать в бессмысленных дискуссиях. Удачи вам)
avatar
SenSoR, да, вам здесь точно лучше не писать.
Не умеете общаться в русле даже своей же темы, предпочитаете переходы на личности, да еще и мелочно, чисто по-женски: «Ах, у вас комментарии негативные». 
Да, негативные есть и их много — что из того? Я ж не написал, что у вас уши большие — я ваши взгляды критиковал!
Не нравится критика, ну так и сидите себе под веником.
И под моим ЧС.
avatar
Виталий, естественно, более короткие тренды (а еще лучше — свинги, грубо говоря — остатки импульсов) ловить проще
или, как минимум, надежней.
Здесь на первое место выходят либо трал, либо целеоопределение.
avatar
SenSoR, где взять 1000 сделок для долгосрочной стратегии?
В этом вопросе подсказка где искать грааль.
avatar
VladMih, Тут не подскажу. У меня более быстрые стратегии, так что 1000 сделок в статистике набрать не сложно)
avatar
SenSoR, читать учитесь. Или думать над прочитанным.
Я не просил подсказать, а НАОБОРОТ — давал подсказку ВАМ.

Открою маленький секрет (уточню подсказку) — можно набрать ЛЯМ сделок, но в будущем робот будет сливать «как все», если в него не заложено нечто более важное. И таких примеров тьма.
avatar
Саро, очень много вопросов к этому посту, поэтому не плюсую.
Это впервые за всю историю нашего знакомства, ты знаешь.

оптимизировать можно, но только делайте это правильно
Сразу со старта задаешь ноту о том, что оптимизация по сути предосудительна и лишь если она очень правильная (какая???)… В общем «если нельзя, но очень хочется, то можно».
Может ты и не хотел так сказать, но я хорошо знаю русский. Язык.

Не подгоняйте свой алгоритм под рынок.
Не согласится только идиот. НО…
Что предлагается для решения этой проблемы?
делать бектестинг и следом форвард тест.
А еще сгенерить случайные котировки… Вообще бред.
Форвард понимаю! Но кто считает форвард панацеей, те вообще дебилы. Извини, не обижайся — это про вообще.
Если сравнивать оптимизацию с форвардом, то для меня чисто логически более надежной выглядит оптимизация с включением «вашего» форварда. Потому, что у неё больше шансов удержаться в рынке дольше, чем без включения в оптимизацию последнего участка рынка.

Дальше даже читать не стал. Еще раз извини.
И надеюсь, что этот коммент воспримешь конструктивом.
Лично к тебе отношусь за ши бись. Точка. )

PS: не пропусти 2 моих следующих (по времени) коммента (выше) —
в них четкий ответ на все возможные вопросы.
avatar

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

....все тэги



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