тестирование

Ошибки при тестировании акций США.

Многие при тестировании систем для американских акций не придают значения тому, что в их тестах отсутствуют выбывшие по разным причинам, акции. И совершенно зря, так как результаты сильно различаются.
На картинке слева тест одной из систем за 9 лет без учета выбывших акций, а справа с учетом. Видно что годовая прибыль различается в 3 раза, а коэффициент Шарпа в два раза. Ну и остальные показатели и коэффициенты тоже сильно различаются.

Для чего тестировать

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

Когда-то давно, когда только начал играть на биржах, мне говорили — “ну как ты можешь торговать, у тебя нет системы, торговля это не твое, без системы ты все равно сольешь… разработай свою систему…”. Я честно не знал что такое система и как ее можно разработать, но в этом не признавался и говорил что у меня есть система, да и сам в это верил — думал, что если торгую, это уже и есть система. Потом прочитал что оказывается система это очень просто — цена выше ЕМА — покупай, ниже ЕМА — продавай. Я посмотрел на графике — и точно, смотрится крайне логично, потому что когда цена над ЕМА, она растет, а когда под ЕМА — падает. Я понял что нашел грааль, теперь зарабатывать будет очень просто. И я начал торговать по ЕМА с периодом 21 на валютной паре EURUSD. Первая сделка закрылась по стоп-лоссу, но я не переживал, я знал что у меня грааль. Я еще не знал что такое пила, но постепенно стал это чувствовать, когда несколько сделок подряд закрылись в минус. Я засомневался….. и решил проверить грааль на исторических данных вручную. Тестировал несколько дней и убедился что грааль сливает…. Кстати, мне очень повезло что в то время еще не были столь распространены семинары, методички и форумные дискуссии с зомбированием о пользе вырабатывания железной дисциплины и слепой веры в правильность метода, где основные постулаты риск/ревард не менее 1:3 и стоп 5 центов — типа, если будешь придерживаться, рано или поздно озолотишься. Представляю, что бы было если зомбирование поразило еще неокрепшее сознание начинающего спекулянта.

К счастью, мне попалась программка, на которой можно было проверить какие результаты закодированная система показывала в прошлом на выбранных инструментах. У меня уже в то время были разные идеи, и очень много, примерно 1000 :). Представьте, сколько лет надо было бы потратить в реальной торговле, или, на крайний случай на демо, чтобы убедиться в их неработоспособности на почти эффективном рынке. А если слепо придерживаться дисциплины, то сколько денег надо было бы слить. А при помощи программы, после приобретения навыков кодирования торговых сигналов, этот процесс займет, максимум, 1 день. И все. И можно со спокойной совестью эти идеи отбросить и не торговать.

Кто-то скажет — не всегда надо слепо придерживаться системы так как система не сможет предусмотреть того что может человеческий мозг. Например, если цена вдруг пошла против позиции — закрывайся не думая, независимо от того что там говорит система — ведь все просто, надо только следить за ценой. Это, кстати, очень распространенное мнение. Я тоже, кстати, в это когда-то давно верил, пока не стал постоянно замечать что если бы не занимался самодеятельностью, а строго следовал системе, то прибыль была бы значительно больше. И эта болезнь продолжалась относительно долго, было очень трудно от нее излечиться. Даже и сейчас иногда подмывает “улучшить” систему в некоторые моменты. Ну, а то, что при наличии системы требуется постоянно следить за ценой, просто говорит о отсутствии четких правил входа и выхода из позиции.

В общем что я хотел сказать — то что тестирование, это не то, как многие считают: “хватит тестать, трейдать надо”, “математическая самодостаточность”, “искусство ради искусства”, “вся жизнь за тестами пройдет”, “Резвяков не тестирует”, “теоретики” и т.п. Это, в первую очередь, огромная экономия времени. Почему 98% трейдеров сливают деньги? Если бы они протестирвали свои фикс-идеи на прошлых данных и убедились в их несостоятельности, они бы просто не ставили деньги на это и, поэтому бы появился шанс их(деньги) сохранить.

З.Ы. Все вышеперечисленное не относится к очень опытным игрокам. Они на то и опытные потому что прошли через все тернии и они уже сами как программа для тестирования — тестирование проходит у них в голове мгновенно со скоростью, несравнимой со скоростью компьютера и программы. Честь и хвала им :)

Ответы на вопросы Палыча

Юрий, когда у Вас была пресс-конференция, Вы казали что можно задавать вопросы прямо здесь.

Да, конечно.

“У меня будет вопрос по тестированию. Опишите, если не затруднит, в нескольких предложениях процесс тестирования и оптимизации. В литературе рекомендуют весь период тестирования разбивать на несколько интервалов и тестировать систему отедельно на каждом из них.

Приходит в голову идея, в программе кодируются входы, выходы, запускается тест, анализируются результаты. В литературе рекомендуют правильно. Например, параметры для системы подбираются на интервале 2000-2007 года, а потом если результаты получаются неплохие, тестируется участок на интервале 2007-2010 года. Если на этом интервале получаются отрицательные результаты, значит параметры просто подогнали и система не внушает доверия. Если же на этом интервале результаты получились такие же хорошие, то есть надежда что система будет работать и в будущем. Интервал тестирования должен включать в себя различные состояния рынка — медвежий, бычий рынки, пила, высокая, низкая волатильность. Потом необходимо проверить сделки вручную, хотя бы сделок 50. Часто после такой проверки обнаруживается что система довольно хитро смотрит в будущее из-за особенностей конкретной программы тестирования.

А еще. Как тестируете входы, стопы, выходы. Все по отдельности и затем только объединяете в систему. Или же сначала “придумываете” систему и потом тестируете ее целиком.

Бывает по разному, в зависимости от идеи. Например, если ловим моментальное изменение цены, то и выход должен быть сразу когда движение выдыхается, так как идея системы — моментум. Если же идея — ловить большие движения полностью, то и выходы по трейлингу.
А–а-а понял, Вы наверное имеете в виду потестировать выходы при случайных входах и входы при случайных выходах? Нет, это я очень редко делаю и только в целях специализированных исследований. А так вообще сразу тестирую систему полностью, где входы и выходы соответствуют идее системы.

Как оцениваете результаты тестирования и как сравниваете системы между собой по результатам такого тестирования.

Первым делом смотрю эквити протестированной системы и по ней все видно. Она должна быть плавная, без больших просадок. Из коэффициентов, смотрю все что возможно, но если расположить их по важности то будет так:

Коэффициент восстановления
Коэффициент Шарпа (для портфелей)
Средняя прибыль в одной сделке
Профит-фактор

Не нравится когда отношение прибыльных/убыточных сделок меньше 40%. И, соответственно, когда величина средней убыточной сделки значительно превышает величину средней прибыльной сделки.

Есть такая книга – Р.Колби “Энциклопедия технических индикаторов рынка”. Обращали на нее внимание? Там автор вкратце описывает процедуру тестирования, а затем приводит результаты тестирования различных систем и индикаторов в программе MetaStock.

Да, но давно, поэтому уже не очень помню. Если не ошибаюсь, там просто тестируются различные индикаторы поодиночке? Я тоже в свое время протестировал все доступные индикаторы. Но их лучше комбинировать — одни в качестве фильтров, другие как спусковой крючок. Но с каждым днем рынки становятся все эффективнее и традиционные системы на индикаторах становятся, наоборот, неэффективными :)

А еще процедуру тестирования и индикаторы описывает в своей книге “Компьютерный анализ фьючерсных рынков” Ч.Лебо.

Да, помню, эту книгу я прослушал в наушниках на пробежках по парку года четыре назад. Она мне понравилась — автор правдиво пишет, золотых гор не обещает.

Уже проштудировал все что только можно. А с какой стороны подойти к тестирование так в полной мере и не уяснил.

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

Закрывать ли позицию если она не растет какое-то время?

На днях состоялась у меня творческая беседа с биржевым трейдером из Москвы под ником osmar92 (оригинал здесь), которая вдохновила меня на проверку одной идеи, подсказанной уважаемым osmar92.

——————————————————————————————————
osmar92
: Я предпочитаю перезайти много раз, ликвидируя позицию, если думаю, что я прав в оценке.

JC: А не бывает в этом случае так, что лосс от частых предоплат превысит, наконец состоявшийся, удачный трейд, в котором Вы оказались правы? :)

osmar92: Конечно такое может быть, но это insurance на возможную потерю. Лучше сделать меньше из за издержек, чем оказаться в приличном минусе. Задача ведь не делать много, а часто и понемногу.
То, что делает опытный трейдер не может быть копировано малоопытным поскольку опыт подсказывает, что нужно делать в конкретной ситуации. Я лишь привел этот подход как иллюстрацию, что не нужно цепляться или как говорят marry a trade, возможностей хватает. Соскочи где не сработало и ищи в другом месте.
Ведь начинающие цепляются и стоят в losing position пока петух не прокукарекует.
На ваш вопрос я могу контр вопрос задать. А что если я соскочил правильно и нашел еще более удачный трейд. который сработал в 2 раза лучше предыдущего, вместо того , чтобы досиживать в нем.

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

osmar92: В принципе верно.
Хотя мое видение, что даже может помочь вам в системном( в полном смысле этого слова, поскольку у меня тоже система), это если вы заходите в трейд, то он должен сразу производить результат. Исходя из моего опыта и статистики, обычно самые успешные трейды те, которые сразу начинают работать в нужном направлении, иначе точка входа будет неверной и следовательно систему нужно настраивать.
Мы же все разные, у разных людей полушария развиты по разному. Но будущее за интуитивными системами, основанными на математике и интуитивном моделировании. ТО, что пытаются назвать нейронными сетями, еще далеки от той самообучаемости и гибкости , которая присуща человеку

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

osmar92: Я более , чем уверен, что статистика будет на стороне того, что я сказал.

JC: Спасибо за идею :)

osmar92: не за что.
——————————————————————————————————–

Ну вот, начинаем тестировать идею о том, что если цена после открытия позиции за определенное время не прошла минимальное расстояние в нужном направлении, то позицию закрываем как потенциально неперспективную. Для входов давайте возьмем общепризнанную стандартную систему Aberration. Ее знают все — стандартная пробойная система, построенная на каналах Боллинджера. При пробое верхнего канала входим в лонг по бай-стопу, при пробое нижнего, соответственно, в шорт. Выход по стопу средней линии каналов Боллинджера, или , что тоже самое, по SMA c периодом как у каналов. Сама система есть тут
Модифицируем эту систему — если через N(1,2,3,4,5)  дней цена не пройдет M(1,2,3,4,5)%, то закрываем позицию  на следующий день на открытии как неперспективную. Оптимизируем параметры и найдем лучшее решение. Если же условие скорости роста цены выполняется, то закрываемся по условию, заданному системой — по стопу средней линии канала Боллинджера. Тестируем на портфеле всех ликвидных американских фьючерсов за последние 10 лет.

В результате, наиболее оптимальными параметрами стали — если за 5 дней цена не прошла 1%, то закрываем позицию. Это крайние параметры — самое большое количество дней и самый маленький процент. А чем дальше в лес, тем больше дров и самыми убыточными вариантами стали варианты с 1 и 2 днями с 5,4,3 процентами. То есть, чем больше у нас запросов на быстрый рост прибыли за короткое время после открытия позиции, тем больше мы получаем убыток, а чем снисходительнее к росту, чем терпимее к застою цены после открытия позиции, тем больше в дальнейшем зарабатываем. Получается все наоборот — результат не такой какой собирались получить, а обратный.
Вот рост эквити за 10 лет при условии что если за 5 дней после входа цена не проходит 1%, то закрываем позицию. Напоминаю, это лучший результат из тех, которые задавали.

Но лучший результат — это идеальный результат, поэтому надо выбирать средний чтобы приблизиться к реальности. А средний результат получится при условии — если цена за 3 дня после входа не прибавила хотя бы 2%, то закрываем позицию.

Ну и наконец, взглянем на результат, когда просто не учитываем никакие минимальные движения цены за определенное время после открытия позиции. Просто закрывается, как положено по системе по ползущему стопу (средняя линия канала Боллинджера). А цена пусть себя ведет в промежутках как желает — не обращаем на ее дерганья внимания. И получаем лучший вариант:

Вывод какой? Мой такой: предугадать, идет ли позиция против нас или за нас — невозможно. Сейчас идет против нас, через секунду может так взлететь в нашу пользу что мало не покажется. Или наоборот. Можно говорить что первый вариант бывает намного чаще, можно голословно утверждать наоборот, но лучше все-же проверить это, благо программ для этого дела сейчас различных развелось — только выбирай. А то ведь интуиция и подвести может…..

В данном случае домыслы о том остановилась ли цена и поэтому надо выходить, пошла ли цена против нас и поэтому требуется вмешательство, выросла ли цена настолько что пора брать прибыль и прочие субъективные фантазии — только вредят системе. Поэтому — открыли позицию, поставили стоп и выключаем компьютер чтобы руки не чесались улучшить систему. Включаем компьютер завтра, переставляем ползущий стоп и снова выключаем. И так каждый день :)

S&P testing

 Тестирование на истории (пока руками) системы, основаной на резких всплесках объема. Работает против тренда, тобишь на разворотах. Стоп: 6пп, профиты от 4 до 40пп.

смотреть тут

Вот пятничная сделка, которая также есть в статистике:

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

Пролистать наверх