Блог им. igor13
Решили провести небольшой тест — на примере простейшей стратегии проверить, какие будут результаты, если заниматься “тупой” подгонкой стратегии. Стратегия — пересечение 2 скользящих средних(SMA). Метод анализа/тестирования — Walk Forward Analysis, чтобы долго не расписывать, что это такое, посмотрите короткое видео — https://www.youtube.com/watch?v=f_7LKRfVpng&t=1s. Мы несколько лет используем именно этот метод анализа стратегий. Инструмент на котором будем тестировать — наш любимый фьючерс Si.
Исходные данные:
— исторические данные фьючерса на курс рубль/доллар;
— трендследящая стратегия на двух простых скользящих средних(лонг при пересечении быстрой скользящей медленную снизу вверх, переворот в противоположном случае); Таймфрейм стратегии — 5 мин, стартовый депозит — 1 млн рублей, вход по рынку, объем лота для входа в сделку — на весь депозит без плеча, комиссия 10р на круг на контракт.
— TSLab 1.2
Пример сделок:
История с 17.06.09 по 30.11.18 .
2 подхода:
1- с фиксированным скользящим окном;
2- с постоянно увеличивающимся периодом In-Sample.
Во всех тестах, для торговли OoS будет выбираться лучший параметр по Фактору восстановления на предыдущем отрезке IS.
Подход 1.
Рассмотрим несколько периодов для фиксированного окна, чтобы проследить как меняются результаты от количества данных IS. Периоды оптимизации возьмем кратными половине года. В году порядка 245 торговых дней.
Тест 1.1 — окно с периодом 122 дня — In-Sample(IS) и 1 календарный месяц Out-of-Sample(OoS), старт торговли OoS c 1.01.2012г .
Результаты теста:
Подход 2.
Тест с постоянно растущим окном. Исходные данные с 17.06.09 по 31.12.11- In-Sample(IS) и 1 календарным месяцем Out-of-Sample(OoS), старт торговли OoS c 1.01.2012г. Каждый месяц, к нашему IS периоду будет добавляться прошедший месяц, т.е. размер данных для подгонки постоянно будет увеличиваться.
Несколько замечаний и выводов которые мы сделали:
1.В обоих случаях были участки по несколько месяцев, где лучшие параметры оставались неизменными. При методе с фиксированным окном параметры меняются чаще.Например, после какого-то сильного тренда(как в апреле сего года), фикс окно подстраивало параметры стратегии, а для большого окна этот тренд не внес существенных изменений, параметры остались прежними и не менялись почти 2,5 года — с 01.09.2016.
2.Окно оптимизации от полутора до 2,5 лет достаточно для определения стабильных параметров стратегии(для данной стратегии), при условии ежемесячной оптимизации.
Плюсы оптимизации с фиксированным окном:
Параметры всегда учитывают последние изменения рынка.
Мы можем выработать методологию отбора параметров для работы стратегии, что по нашему мнению является одной из важнейших составляющих торговой стратегии.
Минусы:
При неправильном выборе окна есть возможность выбора нестабильных параметров. Что если стабильное окно, будет сильно меняться со временем? Как это отслеживать?
Плюсы оптимизации на всей истории:
Будут отобраны параметры, которые работали на протяжении всей истории.
Минусы:
100%-я подгонка под кривую.
Сильное влияние старой истории, каждый новый месяц вносит все меньшее и меньшее влияние.
Оптимизация на всей доступной истории — не что иное, как 100% подгонка параметров. Подгонка под последнюю актуальную историю, та же подгонка, но под меньший период и с постоянной заменой истории. Думаю почти всем алготрейдерам извесстно(либо они слышали), что подгонка параметров это плохо, это одна из основных проблем алготрейдеров, такие параметры не будут работать в реальной торговле и т.д и т.п.
Но нам не понятно, почему они не должны работать следующий период времени? Объясните пожалуйста доступно. Да, да, история не повторяется в точности, уже 100 раз пройдено(кем?), это аксиома и известно всем на свете. Мы все это слышали, читали, знаем. Но, тесты и наша реальная торговля показывает, что именно подгонка под историю и позволяет зарабатывать. А как еще выбрать параметры для стратегии, кроме как проверки ее на истории?
Есть мнение.
Например, если в ваш пример взять исходные данные не котировки, а случайное блуждание, то есть неплохая вероятность, что применение Walk Forward Optimization будет красивую картинку прибыльности.
Вот почему:
web.archive.org/web/20180109065455/http://управление-капиталом-отзывы.рф:80/
«Ну и напоследок скажу кратко про две компании, занимающиеся алгоритмическими торговыми системами. Это
»Аист-Инвест" (Игорь Шепелев) и ИК «Форум» (Александр Горчаков). Обе компании активно пиарятся и размещают
рекламу по ДУ. В работе используют схожие трендовые роботы, работающие на фьючерсе Доллар/рубль.
Результат роботы с «Аист-Инвест» – за 9 месяцев «слито» 4млн. из 10млн. Один раз выводилась прибыль в
размере 165 тыс. руб. Результат работы с ИК «Форум» (их робот стоял на моём счёте в БКС) – за 6 месяцев
«слито» 2млн. из 10млн. Один раз был вывод прибыли в размере 370 тыс. руб. Т.к. я сам добровольно остановил
торговлю при недостижении оговореной просадки (по «Аист-Инвест» – 50%, по ИК «Форум» – 35%), то формальных
претензий к ним нет. Но зарабатывать с этими компаниями не получится. Январь-февраль 2016г.
характеризовались повышенной волатильностью по Si, но их системы быстро растеряли накопленную прибыль и
ушли в глубокий «минус». В июле моё терпение лопнуло. Кстати, на сайте «Аист-Инвест» публично отображаются
результаты их торговли. Имейте в виду, что к реальности они не имеют никакого отношения."
Вряд ли можно ЭТО назвать Стратегией (хоть какой-то), но то, что вы вытворили дальше, однозначно заставляет напрячь мозг.
У меня это не привело ни к чему хорошему, поэтому дам ссылку на ваш пост своему программисту. Просто задом чую, что в этом что-то есть )
1. Зачем использую волкфорвард? Чтобы ответить на единственный вопрос: изначально оверфитинг и фигня, или за этим что-то есть. Работает — значит что-то здравое есть, можно пытаться использовать.
2. И вот если робастность в нулевом приближении подтверждена волкфорвардом, я беру в работу лучшие параметры по максимально возможному периоду.
Все ))
Торговать через амиброкер + квик можно. Есть прилады и прочее, но я не пользовался, поэтому тут надо на Амисайте посмотреть www.amisite.ru и еще на Пауке есть про это
Нулевое приближение (подтверждения) означает, что подтверждает, но не доказывает.
Если параметра всего два, можно построить трехмерную поверхность прибыль/параметры и глянуть глазками, не на остром ли пике мы расположились, широко ли плато положительных решений.
Если параметров больше, то надо либо смотреть попарные связки, либо иначе кластеризовать решения на разных интервалах данных...
А можно не смотреть все это, а прогнать форвард — коли нет жутких провалов эквити, скорее всего параметры нормально кластеризуются, можно торговать.
с учетом проскальзывания и комиссии
проверил, дневки. Там ПФ на лучших параметрах в районе 4. И ни на каких параметрах не было просадки меньше 5%, наверно Вы что-то все-таки не учли. Да и в начале статьи указаны исходные данные(тф-5мин), а для подобного теста на дневках слишком мало данных
такая же стратегия как у автора, только параметры по дефолту
инструмент usdrub_tom
если выставить параметры ma другие, то будет уже ближе к 4 ПФ
По мне так гораздо больше изюма зарыто в области «как по результатам оптимизации отбирать оптимальные значения параметров», чем в области «как именно аутофсэмплить».
Делая WFO, мы просто оцениваем, или — другими словами — понимаем, насколько хорошо работает данный подход к выявлению оптимальных значений показателей. И делаем это более менее реалистично.
Ну типа: если просто оптимизация и в бой — это: я подогнал, а теперь в бой и хер знает, как оно будет. WFO это: а как будет эффективность если я буду подгонять, и потом в бой — т.е. как будет если я буду постоянно переоптимизировать, или каков будет вероятный сценарий если я даже один раз сделаю.
Не, это не то что надо. Да, самый переоптимизационный треш это снимет, но всё равно это мелочи.
но на счет форварда не согласен. Стратегия, показывающая хорошие результаты при подгонке на всей истории(даже с углом роста эквити под 45%) не всегда пройдет форвард тестирование — что говорит о том, что система не устойчива. А устойчивую систему можно пускать в бой с большей вероятностью, что не поседеешь через пару-тройку месяцев))
Если вы подгоните и отфорвардите стратегию, то рано или поздно (скорее рано), она выйдет из расчетных показателей риска/доходности. Но если продолжить гонять ее виртуально, то точно так же, рано или поздно (после стабильного слива или топтания в зоне убытков), она снова начнет стабильно плюсовать какое-то время. Но при этом вы ничего не подгоняли и не форвардили. Вот собственно и все. Тут конечно можно долго и упорно рассуждать о том, что параметры рынка вернулись к прежним значениями и все-такое… но нет-с :)
Эмм, и с такими знаниями вы еще пытаетесь чужими деньгами управлять? я ничего не попутал?
2. На последний вопрос ответ однозначен: подобрать рабочие параметры можно только грамотным тестированием на истории.
1. Да, видимо так и получается.
2. Мы тоже так думаем и представить иного способа пока не можем, всё, так или иначе сводится к истории. Остаётся упражняться как раз в грамотности тестирования…
умножение у нас аддитивное, сложение тоже.
почему оптимизация окнами — не аддитивная?
докажете, что нет, тогда можете умничать, это про может просто потому что ваш тестер-оптимизатор загибается на большой истории считать, поэтому решили «рационализировать» оптимизацию на всей истории.
немного смягчу месседж: всё зависит от конкретного оптимизатора, как он считает fitness функцию, приводит ли параметры к размеру периода, или выигрывать всегда будут куски, которые банально исторически больше.
кмк ваш оптимизатор как раз приводить к размеру периода умеет плохо, поэтому walkforward выиграла.
плюс мне понравилось то, что написал bocha, что всё-таки лучше «подгонять» под всю историю, чем окнами.
скажем так, я не согласен с тем, что оптимизация на всей истории — это 100% подгонка под историю, а оптимизация окнами — нет. и то и другое — одинаковая подгонка под всю доступную историю, только оптимизация окнами ещё и хуже подгоняет.