Блог им. neophyte

SWT-робот: интересный эффект получается

SWT-робот: интересный эффект получается

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

И вдруг на поверхность всплывает тот самый факт множественности представлений стохастических трендов. Т.е. это самое непостоянство пролезло и в практику моей деятельности. Ну мне это перенести несколько легче. Я изначально был подготовлен к такого рода развитию событий, тем более, что неоднократно пробовал различные экспериментальные наборы фильтров, которые отличались от заложенных в базовую конструкцию индикаторов SWT-метода.

Так вот. Интересный эффект получается с фильтрами высокого порядка. И выявить это помог робот.

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

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

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

Я, твою мать, не вижу никакой разницы или вижу только запаздывание, а робот (неважно, что по моему алгоритму) и разницу видит и запаздывание ему не мешает, и все использует себе (и мне) на пользу.
Обидно, ничего не сделал, только зашел… © «Кавказская пленница».

И вот глядя на это безобразие я сижу и думаю, а не попробовать ли фильтры более высоких порядков, которые  еще больше повысят плавность хода волн и сгладят колебания, существующие сегодня на волнах, полученных фильтрами второго порядка.
Что меня останавливает? Быстродействием компьютера (вот уж не думал, что мне когда-нибудь придется с этим столкнуться). Но столкнулся уже при работе на фильтрах четвертого порядка. Если включить 24 инструмента одновременно с роботом на каждом, то все еще работает. Если добавить к ним индикаторы, тоже работает. А если включать терминал с уже сформированным профилем, в котором кроме роботов на графиках есть и индикаторы, то не факт, что терминал загрузится, а не зависнет, сцуко, навсегда.
И придется вызывать скорую помощь в виде диспетчера задач, чтобы прервать выполнение загрузки терминала и сделать новую попытку, которая будет более удачной, что тоже не факт.
Вот так то, «не всякая рыба селедка!» © А.Н.Крылов «Мои воспоминания».

Ну ладно, с лирикой покончим. Поговорим немного о результатах.

Вначале групповой тест.

Первое сканирование идет по векторам фильтрации:
— (0,0,1,1,1,1) — принимаются в расчет фильтры трендов до краткосрочного включительно;
— (0,1,1,1,1,1) — принимаются в расчет фильтры трендов до среднесрочного включительно;
— (1,1,1,1,1,1) — принимаются в расчет фильтры трендов до долгосрочного включительно.

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

И третий параметр — тест в пипсах по пятому знаку котировки.
Теста в пипсах в МТ4 нет, поэтому он сконструирован искусственно. Задается фиксированный объем сделки, так чтобы 1 доллар был равен одному пипсу. Это самый объективный тест при исследовании стратегий. Так как реинвестирование всегда немного искажает результативность торгового алгоритма в ту или иную сторону за счет манименеджмента. Нам же нужен эффект в чистом увиде, а ММ мы наложим потом, используя стандартные процедуры расчета оптимального объема позиции при заданной статистике результатов тестирования. На относительную просадку в этих тестах не стоит обращать внимания. Имеет значение профит фактор и статистика.

Итак, всего 18 комбинаций. Сначала тройкой сканируются векторы фильтрации при первом типе фильтра, затем при втором и при третьем. Затем процесс повторяется для фиксированного размера лота и результата в пипсах.

SWT-робот: интересный эффект получается

Что можно сказать по результатам теста.
Итак, исходный вариант с фильтром второго порядка неплох, но если мы не учитываем тренды старших уровней иерархии — среднесрочный и долгосрочный, то прибыль хотя и есть, но она меньше просадки.
С трендами старших уровней иерархии результат вполне приличный.
Переход к фильтру без краевых эффектов наложения частот резко улучшает результат для вектора фильтрации с учетом до краткосрочного тренда включительно (позиция 4 по сравнению с позицией 1). Прибыль уже сравнима с просадкой. Для двух других вариантов прибыль также растет, а просадка становится меньше.
Фильтр четвертого порядка дает немного меньшую прибыль по сравнению с фильтром второго порядка, полученным билинейным преобразованием, но посмотрите на профит-фактор, который в тестере обзывается словом прибыльность. И на просадку, которая тоже стала меньше. Такой профит-фактор стоит затраченных усилий.
Причина незначительного уменьшения прибыли в деньгах заключается в меньших объемах сделок, так как волатильность волн при использования фильтра четвертого порядка выше, а риски и стоп зависят от значения волатильности.
Для примера сравним три графика с разными типами фильтров:

SWT-робот: интересный эффект получается

Тип фильтра 0.


SWT-робот: интересный эффект получается

Тип фильтра 1.

SWT-робот: интересный эффект получается
Тип фильтра 2.

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

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

Больше обсуждать ничего не будем, приведем только результаты детальных тестов для каждого третьего прохода, что означает использование вектора состояния фильтров трендов (1,1,1,1,1,1) с учетом всех трендов, от внутридневного до долгосрочного (а в неявном виде и часового с базовым, которые влияют на учет коррекционной фазы используемых трендов), три варианта типа фильтра и тестирование в условиях фиксированного процентного риска 1% (первые три рисунка) и в пипсах (последние три).
При тестировании в пипсах торговля велась фиксированным объемом 1 лот, что давало 1 доллар на пятом знаке котировки. Т.е. результат тестов в долларах равен результату в пипсах. Обращать внимание на размер депозита и относительную просадку в последних трех тестах не нужно. Смотреть только абсолютные величины.


SWT-робот: интересный эффект получается

Тест в долларах. Риск на сделку 1%. Тип фильтра 0.

SWT-робот: интересный эффект получается

Тест в долларах. Риск на сделку 1%. Тип фильтра 1.


SWT-робот: интересный эффект получается

Тест в долларах. Риск на сделку 1%.Тип фильтра 2.


SWT-робот: интересный эффект получается

Тест в пипсах. Тип фильтра 0.


SWT-робот: интересный эффект получается

Тест в пипсах. Тип фильтра 1.


SWT-робот: интересный эффект получается


Тест в пипсах. Тип фильтра 2.

Что дальше.
Пока не знаю. Думать будем, что дальше.
Но уже и тех плюшек, что неожиданно свалились на голову, вполне хватает для хорошего настроения и удовлетворения от того, что когда-то давным давно заложенная возможность таки пригодилась и даже более того...
★2
10 комментариев
Больше обсуждать ничего не будем

ыхых.ну нет так нет
avatar
Туземец, так сказать нечего…Все еще в шоке…
avatar
Николай Скриган, а если этот метод на случайном блуждании запустить — найдёт тренды или нет?
avatar

Робота не пробовал, лень формировать массив. А метод отлично рисует все волны. Когда еще робота не было, лет 10 назад тестировали и это. Уже не помню зачем.
Но в принципе основные деньги робот делает на неэффективности. В периоды, когда нет сильных движений, потихоньку льёт. Это видно и из приведенных графиков.

А когда приходит тренд, отжимает его досуха и снова переходит в режим ожидания.

avatar
Николай Скриган, ну если лет 10 назад — то может быть самое время проверить снова? Ещё раз, медленно: случайное блуждание, например винеровский процесс, матожидание ноль — там нет трендов, нет неэффективностей, по определению. А SWT-метод — найдёт?
avatar
Zweroboi, тренды будут всегда именно потому что матожидание ноль, а энергия в полосе частот ненулевая. Это одно из следствий теории метода. Нулевое матожидание в таких условиях можно обеспечить только за счет цикличности. А хаос создается наложением разных циклов друг на друга.
avatar

Николай Скриган, да, верно, «тренды» будут, с этим никто не спорит. Случайное блуждание обязательно будет ползать вверх-вниз, и даже известно что со всё более возрастающей амплитудой. То есть «тренды» там будут ого-го!

Но фишка же в том, что предсказать невозможно ничего, если матожидание в каждой точке ноль.

Надо же как-то различать ситуацию, когда мы что-то можем предсказать, а когда нет?

avatar

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

Я может чуть попозже опубликую материал по этому вопросу, так как он достаточно трудоемкий...

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

avatar
Как прикручивал бы к тестированию 'случайные блуждания' я:
за исторический период составляется распределение последовательных изменений цены, случайные приращения выбираются затем из этой статистики случайным образом по их плотностям вероятности. Таким образом вы просто вероятностно перемешиваете исторические данные, сохраняя их распределение.
Если алгоритм и на таких данных даёт нужное, то он хороший… )
avatar
MS, ну прикрутите.Кто вам мешает? Точно не я.
avatar

теги блога Николай Скриган

....все тэги



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