В статье много букв, так что для самых нетерпеливых в конце сделал важные выводы, прочитав которые, я надеюсь, появится желание прочитать и все остальное.
На выходных много думал, про трейдинг и судьбы мира, а в результате понял одну очень важную вещь, которая кардинально изменит мой подход в разработке торговых систем. Это с одной стороны очень простая вещь в своей сути, но очень сложная для понимания неподготовленному человеку. Если по прочтении у вас останутся вопросы — перечитайте еще раз или задавайте вопросы в комментариях.
В любом случае — я на 99% уверен, что вы не читали об этом нигде прежде, и я уверен, что это перевернет и ваше представление о разработке торговых систем.
Итак, давайте попробуем разобраться как обычно происходит разработка и тестирование торговых систем. Не имеет значение какая идея лежит в основе системы, это может быть и технический анализ, и какой угодно другой подход.
На первом этапе вырабатываются четкие формальные правила, определяющие каким образом система подает сигнал на открытие позиции, управление объемом открытой позиции, стоплоссы и тейкпрофиты и т.п. Более продвинутые трейдеры на этом же этапе активно изучают возможности по управлению капиталом, результаты от реинвестирования, время и величину максимальной просадки.
Далее полученная система тестируется на исторических данных.
Исходя из полученных результатов система модернизируется, уходит в корзину, оптимизируется.
Далее, если все хорошо наступает этап торговли на реальных деньгах.
Друзья (в этом месте я рискую нажить себе смертельных врагов из числа производителей софта для разработки и тестирования торговых систем)!
Все ваше тестирование на исторических данных абсолютно бесполезно! Любые результаты полученных на основе прогона системы не значат ничего, они являются всего лишь следствием случайности. Ниже я объясню подробно почему это так.
Самая главная причина, из-за которой все и происходит —
дисперсия. Прочитайте это слово про себя, а потом повторите еще трижды: дисперсия, дисперсия, дисперсия.
Именно дисперсия убивает всякий смысл в тестировании торговых систем. Дисперсия множит на ноль все усилия по оптимизации торговых систем в классическом смысле. Дисперсия приводит ваши результаты из вида: «На основе исторических данных, при реальном использовании система дает за год 10.000 пп. прибыли», в вид: «На основе исторических данных, при реальном использовании система дает за год 10.000 пп. плюс/минус 15.000 пп. прибыли».
Просто вдумайтесь. Вы тестируете систему на исторических данных. Получаете результат +10.000 пп. прибыли. Но в реальности это означает, что запустив ее в следующем году, вы можете получить, как 25.000 пп. прибыли, так и 5.000 пп. убытков!
А теперь представьте себе, что вы тестировали систему. Получили результат в 5.000 пп. убытока, и отправили ее в корзину. Но это на самом деле, могла быть та же самая система, которая давала на других данных 10.000 пп. прибыли!
Давайте попробуем понять почему так происходит, как велико влияние этой самом дисперсии и как сделать чтобы исключить это влияние.
Как я уже написал выше — не имеет значение, на что именно опирается ваша торговая стратегия. В общем виде можно допустить, что открывая позицию вы с некоторой вероятностью заработаете деньги. А с некоторой потеряете. Давайте для простоты расчетов представим себе, что у вас есть торговая система, которая в 60% случаев приносим вам 500 пп. прибыли, а в 40% случаев убыток в 500 пп. (тут очень важно понимать, что эти %, получаются НЕ на основе исторических данных, это полученное неизвестно откуда, абсолютно достоверное знание).
Давайте теперь смоделируем, как могут развиваться события, при торговле по этой системе на протяжении 100 сделок.
Я использовал тестер на основе датчика случайных чисел, который с вероятностью 60% плюсует 500 пп. к нашему результату, и с вероятность 40% вычитает те же 500 пп.
Наше подсознание сразу же подсказывает нам вот такую картинку:
Вы бы взяли такую торговую систему в работу?
Вроде бы, мы имеем неплохое матожидание, система должна давать хороший профит. И действительно, достаточно часто (чаще других вариантов) так и происходит.
Но теперь взгляните на другие варианты развития событий:
На всех этих картинках изображены результаты работы ровно той же торговой системы! Во всех случаях мы имели 60% вероятности заработать 500 пп., и 40% вероятности потерять.
Вы бы взяли такую торговую систему в работу, если ваш тестер показал бы вам подобный график эквити?
Конечно же в большинстве случаев, наш виртуальный помощник, которого я использую для отрисовки этих графиков показывает какую-то среднюю картинку:
Вроде бы и рост есть, и просадка присутствует.
Но (!). Вы никогда не знаете точно (если, конечно, вы не занимаетесь этим вопросом специально), какую из этих картинок покажет ваше тестирование на основе исторических данных.
Вполне возможно, что бешенная прибыль, которую вы видите на графике — просто напросто банальная случайность. Так сложилось.
А возможно, что торговая система, которая отправилась в корзину на прошлой неделе — просто неудачница. Просто так сложилось, что на отрезке истории, где вы ее тестировали (а может даже двух или трех, запросто!) ей банально не повезло.
Надеюсь, если вы дочитали до этого места, мне удалось донести до вас простую мысль — влияние дисперсии на результат тестирования системы на исторических данных велико. Очень велико. Оно намного больше чем вы когда-либо думали.
То же самое понимание, можно теперь перенести и на процесс оптимизации торговой системы. В большинстве случаев, историческое эквити торговой системы улучшается, не из-за реального улучшения матожидания вашей системы (60/40 которое мы с вами взяли в качестве базы), а просто в следствии влияния дисперсии: «Просто так сложилось».
Я сейчас вспоминаю, что в одной из прочитанных мною книг (вроде бы это было у Талеба в «Черном лебеде», ровно такая мысль о том, что мы склонны сильно недооценивать роль случайности в нашей жизни, кто не читал
обязательно к прочтению). К сожалению, до сих пор я не встречал нигде такого простого и доступного объяснения этой идеи применительно к процессу тестирования и оптимизации торговых систем.
Ну, ок. Я взорвал вам мозг, и ваше представление о базовых подходах. Давайте теперь попробуем понять, что с этим делать и какие выводы из этого следуют:
- Тестирование системы на исторических данных ничего не значит в 99% случаев. Нельзя принимать результаты исторического тестирования на веру, если вы не учитываете влияние дисперсии на них.
- Для того, чтобы понять насколько сильно влияние дисперсии на результат, необходимо знать истинное значение матожидания для вашей торговой системы. Откуда его получить? Я не знаю. Но точно знаю, что использовать для этого данные тестирования на исторических данных — ошибка. Возможно специалисты по математической статистике помогут, но для меня это пока загадка. Что же делать теперь!? В принципе, значение матожидания, полученного на основе исторических данных будет постепенно приближаться к истинному значению с ростом количество сделок на тесте. Но нужно понимать, что это очень приличный рост. Для большинства торговых систем на нашем рынке этот подход не возможен в принципе, из-за короткой истории рынка, и постоянно меняющейся конъюктуры рынка. Так, например, для нашего с вами примера (60/40) дистанция в 1000 сделок по прежнему может давать результаты отличающиеся в разы (!): И кому верить в таком случае? На более-менее стабильный результат можно выйти если увеличить дистанцию до 10.000 сделок:Но такой объем данных для тестирования на российском рынке на вменяемом таймфрейме просто не существует. Обычная система, построенная на часовиках, например, за всю историю сделает максимум несколько сотен сделок, а значит перенесет вас в область очень большой неопределенности. Теперь выкиньте из истории неадекватный 2008 год, годы ранее 2006 (из-за принципиально другой конъюктуры) и вы поймете что даже систему на 15-ти минутках невозможно нормально протестировать.
Именно поэтому я и говорю: тестирование торговых систем на истории абсолютно бессмысленно.
Что с этим делать? Ума не приложу.
берем систему, тестируем-оптимизируем на данных 2007 года. а потом запускаем на аутофсемпл.
если система маломальски выжила (с допустимыми просадками) до текущего момента — думаю можно полагать что тестирование проведено верно и внезапных -25000п там не будет.
если мы говорим о системе из надроченых мувингов то да. она поломается на следующей же сделке.
это у вас просто системы какие то совершенно идиотские
А если серьезно, то смотри в нинзде моделирование по монте-карло: smart-lab.ru/blog/92735.php
(хинт — оно работает не только на истории реальных сделок)
Не в данных дело. Как раз в своем выступлении на конференции по алготрейдингу в ноябре прошлого года я кратко затронул эту тему. Все можно получить (или не получить, т. е. отбросить идею системы), если в первую очередь озаботиться устойчивостью эквити. Приведенный Вами пример для случайного блуждания как раз и затрагивался в том выступлении. Это ж просто закон арксинуса.
И ведь нигде ни-ни об этом! Хотя бы кто словом обмолвился. А нет, продолжают парить про тестирование систем, оптимизацию и прочую фигню.
(Ц)
Действительно нигде. Ни в Доме 2, ни в комеди-клаб, ни в твиттере. Просто тайное знание. Книга мертвых.
Джек Швагер «Технический анализ. Полный курс.» Глава 20. Тестирование и оптимизация торговых систем почитать не пробовали?
Вы к таким откровениям пришли, когда увидели плато на их системах, алгоритмизированных вами? Или ваши клиенты, а за одно и вы, дисперсию победили? :)
Испытаний у Вас ровно столько сколько раз алгоритм, получив новые данные, предлагал позицию на будущий промежуток до появления новых данных.
Нет, количество тестов равно количеству принятых решений о сохранении или изменении позиции. Сделки — это только второй случай.
1. Анализировать надо не сделки, а эквити по тем тактам, когда принималось одно из двух решений:
-сменить позицию;
— сохранить позицию.
В статистике сделок второй случай выпадает полностью, а он равнозначен первому с точки зрения доходности.
2. Прежде, чем отбирать оптимальные параметры по доходности-риску, надо проверить устойчивость их работы на разных исторических периодах, чтобы отбросить случайный отбор лучших вариантов в те моменты, когда рынок не отличался от случайного блуждания (а доля таких периодов по моим данным достигает 60% времени).
Или я ошибаюсь?
Смотря какое соотношение выборочного среднего и дисперсии. Только, ИМХО, дисперсии недостаточно.
Да вроде моя обзорная видеолекция по теории вероятностей и статистике лежит в открытом доступе (где в одном из своих давних топиков ЗДЕСЬ я давал на нее ссылку). И применительно к тестированию систем все есть в открытых вебинарах
www.ilearney.com/elearning/details.php?ID=5181
А упоминавшееся видео с конференции здесь
www.youtube.com/watch?feature=player_embedded&v=knsqY4diDyc
Надо будет подкорректировать правила включения системы…
Действительно, это напомнило мне одну торговую систему, график эквити которой визуально напоминал график синусоиды: доход и убыток поочередно менялись местами на протяжении длительного времени. Очевидно туда следовало добавить правила управления активацией системы (стоп/старт торги) для преобразования графика эквити из синусоиды в возрастающую прямую (аналогично преобразованию переменного напряжения в постоянное), этакий «эквити-конвертер»!
Интересная тема получается! Кроме риск-менеджмента (управление соотношением риск/прибыль) и мани-менеджмента (управление капиталом), в обиход трейдера следует ввести еще одно понятие: «эквити-менеджмент» — управление активностью торговой системы для выравнивания кривой доходности.
сигналы действительно перемещаются во времени, появляются новые сигналы внутри стандартного таймфрейма, но какие-то сигналы исчезают…
Не думаю, что это правильно. Хотя идея постоянной переоптимизации на всей истории и выбором на ближайший период до следующей переоптимизации лучших параметров, высказанная один из моих слушателей, мне показалась интересной. Но я ее не применял.
Если «почему?» относилось к «не применял», то причина банальна: мои программистские «навыки».
2) тогда при кол-ве баров N как оценить стат.значимость результата теста, если стратегия совершила T сделок?
(как насчет p-value?)
1. Да
2. Надо строить побарную эквити и смотреть ее характеристики. Какие? Ну тут надо целую лекцию читать, потому что их много и у каждого есть свои плюсы и минусы.
Из характеристик — например: (общий профит) / (СКО отклонений эквити от МНК линейного тренда эквити). Как думаете? Можно чуть весами поиграться.
Но показатель необходимого количества сделок всё-таки неясен. При прочих равных, конечно, отдадим предпочтение тому варианту, где сделок больше. Но, предполагаю, что этот показатель более важен даже, чем некоторые другие. Вопрос количественной оценки.
Далее, вы можете попытаться диверсифицировать риски путем создания портфеля систем, использовать систему с целью автоматизации каких-то действий или просто расчитывать на удачу, ожидая, что рынок ближайшее время изменится не сильно, и система какое-то время будет работать. Никаких других вариантов, мне думается, нет.
OUT-OF-SAMPLE
но в дальнейшем обсуждении это проигнорировалось…
ну что же, вольному воля…
«Самая главная причина, из-за которой все и происходит — дисперсия. Прочитайте это слово про себя, а потом повторите еще трижды: дисперсия, дисперсия, дисперсия.»
А я знаю даже ещё лучшее слово-заклинание:
Дезоксирибонуклеиновая!
действует с той же эффективностью, что и «дисперсия».
Во-первых, такой подход отчасти применим для систем
без обратной связи.
Во-вторых, рынок не может быть любым, в отличие
от случайного генератора. Например, очень редко
бывает часовая свеча вверх на 2%, а следующая
вниз на 4%.
Тестирование на истории — это тестирование
на математическом ряде взаимокореллируемых
значений, которые совсем не любые.
У рынка есть вполне измеряемые параметры:
— процент гепов;
— размеры гепов;
— отношение ширины диапазона текущей свечи
к ширине диапазона следующей свечи;
— длина «хвостов»
и др.
Нужно оценивать текущий рынок на предмет выхода
его за статистические рамки.
Выдача вероятности 60/40 никак не связана с рынком.
Вы просто считаете это возможным и всё. На сколько
такое предположение реально не проверяется.
условий. Большинство систем дают различные
результаты на различных рынках.
Допустим в тренде она сидит, а в боковике пилится.
У неё не может быть постоянного соотношения
прибыль/убыток. Есть лишь мгновенное значение
этого показателя.
Что собственно вы-практик и подтвердили своим постом.
— прекратить оптимизировать. оптимизация = подгонка
— смотреть, как система вела себя именно в разные исторические периоды и ПОЧЕМУ
почему именно 10 000 испытаний, а не 100 000 или не 8 888?
а результат говорит о том, как ведёт себя идея, положенная в основу тестируемой системы, в разных рыночных условиях.
«если ваша выборка содержит меньше 10.000 испытаний, это все мартышкин труд. Результат ни о чем не говорит.»
а если в выборке 10001 испытаний? или 9999?
раз уж зашла речь о количестве испытаний —
вы знакомы, например, с понятием доверительного интервала?
1-йвопрос был риторический, ответ нужен был на 2-й вопрос.
да ладно, арбитража на всех хватит, ну на всех, то есго вообще торговать способен =)
вон, Лемми говорил, что вроде 70 пар торгует комодов, а ещё баскеты, а ведь он не голдман и не морган
плюс, из таких явных есть, навскидку:
торговля импульса на новостях,
для сингл стоков торговля фундаментально-подсчитанной цены
— на валютах — да, тренд в йеновых кроссах. ну так и в чем проблемы встать именно туда? слишком просто? ))
— но кроме валют еще много чего есть вообще-то. в никкей замечательный тренд полгода уже. среди 500 самых ликвидных акций не менее сотни с прекрасными, понятными трендами. без крошева и месива.
инструментов же много
конечно зря что грааль запалили но все же, за откровенность спасибо!
… но здесь аФтар использовал научный подход. В сущности — ещё одно доказательство ттиоремы Ферма :) которую многие уже считают аксиомой :)
сделайте рандомное (_каждый_раз_ разное) продолжение истории… и тестите на выживаемость — будет вам дисперсия.
это как анекдот:
Друзья, помогите, я задрот FOREX!
По выходным, когда биржи закрыты, я включаю закачку какого нибудь популярного торрент файла и пытаюсь анализировать график скорости =(
Подробнее здесь forum.clusterdelta.com/showthread.php/1183-Применение-нейросетевых-технологий-в-трейдинге/page10
То есть любая система требует периодической переоптимизации под текущее состояние рынка. И здесь важно подобрать периоды обучения и оптимизации — в зависимости от инструмента и ТФ на котором работаете: интрадей, среднесрок, и т.д…
Одной фразой невозможно дать конкретную рекомендацию или решить вопрос, над которым бъёшься не один год. и не ты один, а тысячи…
А.Г уже 100 раз наверно писал что у рынка есть три состояния, это случайное блуждание, где вероятность заработка 0.5 и тренд с контрендом, то есть торговать надо в двух случаях максимум это тренд и контр тренд, ну вот объясните на хера лезть туда где можно просрать деньги, че вас так в случайное блуждание тянет?
Т.е. вы умнее 99% людей? Как по вашему, с учетом дисперсии насколько корректно этот интервал определен?
«Ну, ок. Я взорвал вам мозг, и ваше представление о базовых подходах. » Так взорвем его вам тоже — никакой общепринятый подход не работает и не может работать для извлечения альфы из рынка. И никакая система на наборе простых правил не будет колбасить вечно деньги.
Нет, в целом нормальная статья, лучше многих на СЛ, но эмоциональный окрас нездоровый какой-то.
начал с апломба, закончил уже проевшей плешь банальностью.
но людям никогда не надоест пережевывать простые истины, банальности и питать иллюзии в поиске граалей, индикаторов и торговых систем.
все в наших руках как и наши депозиты :))
но пока хватает везения не сливать больше чем «заработал», надежда питает дальнейшую удачу.
с другой стороны богом можно называть разные субстанции, даже эфемерные и не материальные без формы.
>> «Я использовал тестер на основе датчика случайных чисел»
Таким макаром можно загубить что угодно, хоть ПДД: «для расстановки дорожных знаков я воспользовался генератором случайных чисел, и машина часто попадает в тупик». Рынок неслучаен, и торговая система является набором правил для какой-то корреляции с ним (пусть незначительной).
инструмента, а ликвидность даже в одном инструменте в разные периоды времени разная соответственно и результат будет совершенно непредсказуем.
К примеру в определенный момент возникает новый фонд который скупает акции определенного сектора — пока он действует он оказывает сильное влияние на рынок, как только он выходит из игры рынок меняет параметры. И как вы этот элемент заложите в свою стратегию — никак, отсюда и разброс случайной величины.
от себя могу добавить: тестировал своих роботов на дистанции (2008-2013) — в год робот делает около 3000 сделок, итого: около 15000 сделок. все года в плюс.
но! дисперсия ужасающая, даже на такой дистанции и выборке (15К сделок) — еквити может держаться в минусе около 6 месяцев. психологически это тяжело (хотя за каждый год — эквити плюсовое и на всей дистанции), и не говорит, что в следующие 15000 сделок тенденция в плюс сохраниться.
так что я считаю, 15000 сделок недостаточно для тестирования торговой системы (моей системы). какое количество достаточно? я не знаю. например в покере, насколько помню, какие-то примерные результаты можно давать начиная от 50000 рук (холдем), в омахе выборка будет значительно больше. вот и думайте. рынок, кмк, еще менее предсказуем чем омаха. такие дела.
мало того, Он ещё и МУТАБЕЛЕН...» (с)…
прикольное сочетание, алго трейдер психиатр, это точно залог гроаля:D
я просто решил зайти и почитать самый рейтинговый пост…
Выводы правильные. Но их делают все, кто торгует первый год (ну мо быть 2-3 и те кто не занимался алготорговлей)…
Можно по конкретнее Ваши выводы?
Однако.
Я к тому — что эти «прописные истины» давно известны… И новаторства нет… Ну ни грамма…
Не понимаю…
Почти во всех стратегиях отличный рост на исторических данных и шикарный слив на последних 2-3 годах реальной торговли.
Система с размером стопа равным размеру профита
дает случайный результат в будущем, не зависимо
от результатов в прошлом, если соотношение
количества прибыльных сделок к убыточным
не превышает 60 к 40.