Секреты TSLab | Торговые роботы | События
19 Дек

Оптимизация торговых систем в TSLab и грабли 1.

В связи с валютными войнами не сразу взялся за новую статью. И не сразу родилась тема статьи. В конце концов, было решено пролить свет на то, что есть такое оптимизация торговых система в TSLab, показав самые популярные грабли в этом деле. Я помню, во времена wealthlab 5.0, как пользователи умоляли сделать, наконец, оптимизатор торговых систем (да, его тогда не было еще в wealthlab новой ветки). Да и сейчас, вижу как оптимизация используется во зло, а не во благо, и сам грешил этим в свое время. Так что сегодня будет тотальная оптимизация и никаких гвоздей.

Оптимизация торговых систем в TSLab. Типичная ситуация.

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

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

О: Мужик! У меня идея гениальной стратегии! Она сделает меня миллионером. Нет! Миллиардером! Нет! Долларовым миллиардером! В общем, я порву рынок как тузик грелку.

С: Да ладно тебе. Ты каждый раз задвигаешь такую речь, но пока что я не ощутил себя в бентли.

О: Ну я тебе о-твечаю что на сей раз все будет ОК. Мы сделаем всех. Вот, смотри что я тут накидал. Это нано-блин-технологии трейдинга!

Оптимизация торговых систем в TSLab и грабли 1

Рисунок 1. Скрипт, который будем тестировать.

 

С: Ничего особенного не вижу. Очередной “грааль” за 10 баксов пачка.

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

оптимизация торговых систем в TSLab и грабли 1

Рисунок 2. Доход скрипта на сбербанке.

оптимизация торговых систем в TSLab и грабли 1

Рисунок 3. Результаты скрипта на сбербанке.

 

С: Я бы не стал торопиться с выводами. Трендовая стратения да с таким показателем профитных сделок? Что-то тут не чисто. Ты откуда взял такие результаты, собственно?

О: Ну откуда откуда? Взял оптимизатор, запустил, получил результаты. Далее выбрал лучшее что было и все дела. Вот.

С: Учу тебя, учу, а толку все нет. Давай посмотрим гистограмму распределения результатов оптимизации. Она уже покажет кое что.

О: Ладно. Раз ты настаиваешь. Сейчас подкручу в R один скрипт. Готово. Делаем экспорт в excel результатов оптимизации и вуаля. Смотри.

оптимизация торговых систем в TSLab и грабли 1

Рисунок 4. Распределение результатов оптимизации по сбербанку.

 

С: Что и требовалось доказать. Видишь? У тебя почти все результаты в отрицательной зоне, а значит мы наблюдаем мощный подгон результатов. Лишь небольшая часть плоскости параметров дает профит. А ты выбрал лучший вариант, он расположен в самом правом столбце. Вероятность реализации такого сценария думаю сами видишь :). Он минимален. Шаг вправо, шаг влево, и прощай депозит. Даже нет смысла более глубоко копать и разглядывать все под лупой. Уже сейчас видно. Идея не рабочая.

О: Вот вечно ты везде лезешь и все портишь. На сей раз я не дам тебе загубить идею на корню. Иди в баню. Без тебя обойдусь.

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

 

Н: Началось. Теперь двое суток  придется не спать из-за этих двоих. Чего им вечно больше всех надо? Шли бы на работу, 8 часов отсидел и домой. Зарплату получил и спишь спокойно. Вот мог бы, дал бы обоим по голове.

 

Случайно блуждание и генерация котировок

С: Чтобы показать тебе всю бредовость твоих идей, придется нам немного погрузиться в мир случайных чисел и собрать свои случайные котировки. Они, конечно не будут имитировать реальные котировки, но будут совершенно случайными. Предлагаю использовать следующий алгоритм генерации котировок:

  1. у нас есть 3 состояния: +1, 0, -1 и эти состояния равновероятны.
  2. у нас есть исходная цена инструмента, пусть это будет 100 или любое другое число.
  3. генерируем случайное число от 0 до 1.
  4. в зависимости от полученного числа определяем куда будет движение. если выпало 1, то двигаемся в +1.
  5. создаем 1 тиковую сделку. Ее цена равна исходная цена (или цена предыдущего тика) + направление. В текущем случае это +1.
  6. создаем так 600 тиковых сделок.
  7. пакуем эти тики в одну свечу таймфрейма 1M.
  8. создаем так мнооого свечей. Столько сколько нужно.
  9. вводим в генератор понятие выходных дней и начала и конца сессии. То есть в 10 по мск начало и в 23.45 конец.
  10. полученную последовательность приводим к нужному шагу цены. Для сбербанка к 0.01.

О: Хорошо. Давай сделаем это все. Хочется верить, что время будет убито не зря.

 

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

оптимизация торговых систем в TSLab и грабли 1

Рисунок 5. Генератор случайых чисел.

 

Н: Как видим, ГСЧ создает хорошее равномерное распределение. Так же проводились тесты и не было обнаружено повторяющихся последовательностей. Сам генератор представляет собой лучшее из возможных генераторов псевдослучайных чисел.

оптимизация торговых систем в TSLab и грабли 1

Рисунок 6.Распределение приращений полученных случайных котировок.

 

оптимизация торговых систем в TSLab и грабли 1

Рисунок 7. Q-Q график сгенерированных котировок и нормального распределения.

 

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

Рисунок 8. Котировки случайного блуждания.

 

С: Обрати внимание на то, что цена в конце почти совпадает с ценой вначале. Это не случайно. Котировок было создано несколько, но выбрали мы именно эти для того, чтобы исключить влияние трендовой составляющей на результаты. Если график будет идти только вверх, тогда мы рискуем получить прибыль просто за счет того, что вероятность на нашей стороне. Чаще всего рынок будет идти вверх, и даже случайные входы дадут профит. Мы, естественно, имеем локальные тренды и вверх и вниз, но глобально тренда нет. И свечек создано не просто много, их создано очень много. 10 лет  минутных баров. Этого хватит для нашей задачи.

О: И что с этим теперь делать? Я пока идею твою не понял, если она вообще имеется.

С: А теперь мы будем твой “грааль” проверять на этих котировках. Бытует мнение, и оно кажется доказано математически, что на случайных котировках невозможно заработать в долгосрочной перспективе. Логически, я с этим соглашусь. Практически, мы сейчас с тобой это и будем исследовать.

 

Н: О, боже! Это еще не конец :(.

 

PS: продолжение в следующей серии.


comments powered by HyperComments

$ergio
2015-01-30 11:35:01
Родион, подскажи, а если есть система, где допустим 10 оптимизируемых параметров, то правильно брать результаты оптимизации сразу по всем 10 параметрам и строить гистограмму (хотя это займёт очень много времени) или можно оптимизировать в разбивку по 2-3 параметрам и по каждым результатам смотреть гистограмму?
Andrey Dober
2014-12-20 10:16:18
Спасибо за статью, ждем продолжения. А оценкой стратегии путем распределения результатов оптимизации пользуюсь давно, реально полезная штука
ra81
2014-12-20 10:38:43
Жаль в тслаб нет штатной функции :). Приходится выкручиваться
Станислав
2014-12-22 21:45:17
А так можно любую статегию про тестить через Вар, что бы понять стоит ли ей далее заниматся::????
ra81
2014-12-23 08:41:54
да вполне любую. Однако нужно понимать, что если заведомо рассматривать неадекватный набор параметров, тогда и результат может быть не очень хороший. Для sma нет смысла рассматривать 1,2,3,4, и так далее периоды. Они заведомо неадекватные. ну и так далее. Есть более точные способы оценки, но это не в этой статье.
Станислав
2014-12-23 11:37:00
Нет родион не сма и не ема и уж не тем более адх, а скальперскую стратегию можно??
ra81
2014-12-25 18:28:53
Если стратегия вообще поддается тестированию на истории (в случае скальперской стратегии тут большой вопрос), тогда ее можно оценить таким способом. Гистограмма просто грубо показывает, какова вероятность что результат будет положителен при изменении параметров. Если всегда положителен, значит параметры по сути не являются тем что дает профит системе, а только лишь улучшая прибыльность за счет какой либо фильтрации или еще чего. Ну и если профит вылазит только в узком наборе параметров, тут как бы вопрос: а есть ли идея вообще? или просто курвафит голимый. Если взять систему с двумя параметрами, и отобразить все исходы оптимизации в виде плоскости, то будут видны впадины и вершины, гистограмма - есть проекция сей плоскости в двумерный график. И мы тупо видим как часто наши вершины БОЛЬШЕ нуля и как часто наши вершины НИЖЕ нуля. Все просто. Для двух параметров мы еще можем смотреть на плоскость, а для 3 и более? Нет. Только гистограмма.
ra81
2015-02-09 09:36:46
конечно, перебирать все параметры будет долго. Хотя если есть возможность, это стоит сделать. Далее можно посчитать простую корреляцию между параметрами и профитом. Так легко можно отсеять ненужные параметры. Часто бывает, что часть параметров не оказывают эффекта на результат, но кажутся полезными. Вот пример ситуации http://forum.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=67961#Post67961 Есть несколько параметров, но часть из них объективно не имеет влияния на профит. Ну незначительный эффект, которым стоит пренебречь.
trtr
2015-06-20 18:43:19
Отличная тема для новичка, но у меня вопрос, с помощью чего создать эти самые случайные котировки? В какой программе?
ra81
2015-06-21 10:40:38
Ни в какой. Берете и руками моделируете используя те навыки программирования которые у вас есть. Если нет никаких, То создать случайные котировки вы не сможете. Вообще, это более сложная процедура чем указано в данной статье. Здесь предлагается случайные, но не слишком похожие на рыночные. Рыночные котировки имеют кластеризацию волатильности чего тут нет. Но для нашей задачи вполне подходит.
Леонид
2017-01-03 21:15:41
Казино Вулкан раздают деньги сегодня http://cenforce100.ru/casino-vulkan.php
14
Июл
2017

Доверительное управление. Результаты в июне 2017 года.

Доверительное управление. Результаты в июне 2017 года. Июнь индекс РТС вновь провел преимущественно в боковых движениях, а… »

11
Июн
2017

Доверительное управление. Результаты в мае 2017 года.

Доверительное управление. Результаты в мае 2017 года. В мае “болтанка” индекса РТС продолжилась, на паре… »

7
Май
2017

Доверительное управление. Результаты в апреле 2017 года.

Доверительное управление. Результаты в апреле 2017 года. В апреле мы наблюдали очередной месяц “боковика” по… »

2
Апр
2017

Доверительное управление. Результаты в марте 2017 года.

Доверительное управление. Результаты в марте 2017 года. В марте волатильность на рынке несущественно выросла. Все… »

7
Мар
2017

Доверительное управление. Результаты в феврале 2017 года.

Доверительное управление. Результаты в феврале 2017 года. Февраль был самым коротким торговым месяцем, к тому же… »