Блог им. MrFly

ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА

ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА

ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
В мире полу-мистического граалестроение бытует несколько устоявшихся аксиом. Авторитетные гуру внушали их на протяжении многих лет, как заботливые родители, детям, дабы обезопасить «нерадивых» от лишних шишек.

Одним из таких утверждений является то, что количество параметров должно быть минимальным, а лучше, чтобы их не было совсем. Статья будет интересна алгоритмистам и тем, кто хочет разобраться с устойчивостью результатов.
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
(вводная болтовня)

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

Также, я не имею в виду «псевдо-индикаторы» которые не имеют никакой предсказательной силы и индикаторы, которые используются таким образом, что не могут принести никакой пользы. Допустим, что мы игнорируем все вышеперечисленные «параметры» (которые можно формализовать), и еще множество других. Но значит ли это, что они больше не оказывают влияние на результаты нашей торговли? 

Равны ли все параметры по своей сути? Можно ли утверждать, что значимость параметра скользящей средней такая же, как у ImpliteVolatility, времени до экспирации, дельте, параметрам мани или риск-менеджмента, показателям стакана, открытому интересу, показателям из отчета COT, волатильности и.д.?

Выходит, что должен быть какой-то критерий, с помощью которого можно вычленить объективно существующие параметры, после чего их никак нельзя будет игнорировать.
Примеры скрытых параметров, которые присутствуют практически в каждой стратегии:

  • тайм-фрейм, если мы работаем по time-frame свечкам (если же используем другие виды свечек, то параметров может становиться и больше); 
  • показатели риск-менеджмента и мани-менеджмента, если вы ничего про это не слышали, то все равно вы его используете, просто хаотичный и не формализованный;
  • Если трейдер, чертит уровни, то у них приличное число жестких параметров, если конечно трейдер хочет быть уверен в свое стратегии, а не заниматься самообманом! Также и с треугольниками и фибоначи и всеми видами паттеров.

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

ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
После осознания, того факта, что мы живем в океане неопределенности и даже не видим тех параметров, от которых мы бежим и пытаемся откреститься нужно выбрать стратегию поведения.
На мой взгляд лучше научиться работать с проблемой, чем ее игнорировать. Сегодня мы разберём один из способов определения, какой параметр на самом деле влияет на результат, какие параметры максимизируют нам прибыль и какие диапазоны параметров для нас предпочтительнее.

ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
(Ближе к практике)
Первое что нам понадобится — это формализованная стратегия, которая генерирует эквити.
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
(Делается в WealthLab/TsLab)

Нам понадобится:

  • универсальный показатель успешности стратегии, с помощью которого можно сравнивать стратегии между собой (на выбор читателя);
  • бесплатная программа RapidMiner либо язык R и среда для работы с ним (также БЕСПЛАТНО).

Способность генерировать таблицы стабильности(HeatMap), о которых я писал в одной из статей.
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
Проводим оптимизацию стратегии:

  • желательно чтобы окно оптимизации включало большое количество различных фаз рынка;
  • желательно проводить полный перебор, если слишком накладно, то очень подробную генетику или SWARM >=70% результатов.

 ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
Далее, нам нужно отсечь параметры, которые меньше всего влияют на результат, зафиксировать эти параметры в максимально устойчивой и одновременно прибыльной области. Таким образом, мы исключаем эмоции и домыслы по поводу параметров и получаем цифры, которым точно можно доверять.

Как я писал ранее, для таблиц стабильности нудны данные оптимизации стратегии на 2-х параметрах, возможен и 3-ий параметр, с небольшим разбросом 3-10 значений. В этом случае мы сможем построить несколько таблиц стабильности и выбрать одну из них, например по среднему значению всего полотна.
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
Наиболее действенное решение для определения степени воздействия предикторов на результат — это использовать специальные алгоритмы для dataMining и машинного обучения. Сегодня мы разберём один из самых известных и эффективных — это Random Forest (Интересные ссылки по теме, под Вашим лайком).

Итак, RandomForest и подобные алгоритмы помогут нам определить ЗНАЧИМОСТЬ (Importence) того или иного параметра стратегии.
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
RapidMiner — написан на C#- он значительно быстрее R и имеет больше параметров для настройки, но при наших объемах данных (в примере миллион прогонов) майнер «падает» при работе больше чем 60-ти деревьев. К плюсам можно отнести, что он загружает все ядра процессора и не нужно учиться программировать!

Загружаем данные
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
Данные должны выглядеть следующим образом:
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
Находим в поиске RandomForest (либо другой алгоритм):
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
Пример дерева решений
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
Основная наша задача выявить степень влияния каждого из параметров на результат, для этого воспользуемся функцией
Weight by Importence.
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
(Интересные ссылки по теме внизу статьи)

Анализируем результат
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА

ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
R загружает только 13% процессора. Для тех, кто не торопится — это удобно, можно параллельно выполнять какие-то другие задачи. Также, есть возможность обучать и 1000 деревьев, что было протестировано, но ждать нужно дня 3 (на нашем объеме данных), как я уже упоминал выше Rapid Miner может работать некорректно при использовании всего лишь 70-ти деревьев.

Загружаем данные
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
Отделим независимые параметры от зависимых и запустим Random Forest
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
Получим результат
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
Плюсом R является еще и то, что Excel просто не может обработать столько строчек, как в нашем примере. Как правило, данные нужно подготовить, и здесь нас выручает R.
Таким образом, удобно использовать R для создания датасета, но быстрее провести анализ в RapidMiner, их можно использовать в связке.
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
(рис. — Ошибка Excel, в случае большого количество данных для анализа)
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
Особенностью Random Forest в Rapid Miner является то, что здесь множество  настроек от которых зависит результат:
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
Имеется подробная справка по каждому из пунктов.

Параметры следует подбирать под задачу, поверхностный анализ выявит только самые очевидные зависимости
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
(это гифка, смотрим тут, напишите комент, как ставить гифки please)
Так как Rapid Miner работает очень быстро, мы можем подобрать настройки, таким образом, чтобы добиться требуемой глубины.
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
В результате того, что деревья у нас случайные, а их количество невелико, можно сделать несколько прогонов для уверенности и посмотреть консолидированные показатели!
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
Таким образом, выявили, какие параметры имеют большую значимость, и можем определить устойчивую положительную область каждого параметра, сначала разберём менее важные!

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

ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
Следующий параметр имеет уже 6 возможных вариантов. Смотрим гистограмму средних значений и видим нормальное распределение — это хорошо, так как, рынок в часто меняется, но стратегия не начнет сливать слишком сильно и резко.
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
Далее остается 3 параметра.

Из 3-его параметра можно взять 10 значений и построить таблицу стабильности(HeatMap) с каждым из параметров. Либо как я показывал выше, построить гистограмму по средним значениям основной метрики и с лучшим из них построить таблицу стабильности.
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
Таблица стабильности стратегии (HeatMap)
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА

Итак, сегодня мы

  • научились проводить исследования с помощью алгоритмов для DATAMINING, на примере RandomForest(деревьев решений) 2-мя различными БЕСПЛАТНЫМИ способами (Rapid Miner и RStudio);
  • Обозначили то, что параметры не равнозначны. Имеют различную прогностическую способность и соответственно разное влияние на результат;
  • Выяснили, как уменьшать количество параметров таким способом, чтобы максимизировать устойчивость  положительных результатов стратегии;
  • Научились выявлять самые устойчивые параметры стратегии с помощью таблиц стабильности.
ДАТАМАЙНИНГ(Rapid Miner & R) УМЕНЬШАЕМ ПАРАМЕТРЫ РОБОТА
(от этого зависит то, как часто я буду выдавать новый материал!)

Сообщество единомышленников  <<ЗДЕСЬ>>
(вступающим подарок+ много полезного)


Видео инструкция для начинающих в RapidMiner

Видео инструкция по RandomForest
Почему RF один из ведущих алгоритмов Machine Learning
RapidMiner Расширяем функционал с помощью R!!!

Про RandomForest в R читаем здесь







 








































★60
32 комментария
А какая цель поста?
Самокритичный трейдер, хочу побольше толковых людей для общения мой скайп — horoshij_den
(обо мне — в профиле)
avatar

Николай!

Спасибо за такой фундаментальный труд!

Очень интересно! Надо осваивать

avatar
Какие показатели качества эквити Вам нравятся? 
avatar
SergeyJu, мне нравятся обобщенные показатели, своего рода beanchMark по которым можно сравнить разные стратегии! Например, мне нравится показатели ровности Equity, Но они не максимизируют на прибыль. Recovery улучшается с количеством лет(продолжительность данных в тесте) — что также не адекватно! Поэтому показатели нужно объединять. Я использую свои показатели. Ну а вообще — их очень много. Могу рассказать он них в скайпе, или в одной из след статей, но это не приоритет сейчас)
avatar
Николай Флёров, я использую аналог рекавери. Среднегодовую доходность делю на оценку риска. В качестве оценки риска беру что- то связанное с просадкой, например, максимальный ДД, или среднее 10 максимальных ДД, ну и так далее
avatar
SergeyJu, да =), совершенно верно)) Я делаю аналогично! в Wealth — это сделать довольно просто)
avatar
Николай Флёров, а если у Вас выбрано 10 или 100 систем, как строите портфель?
avatar
Спасибо за труды! Очень полезная статья, приду домой, буду майнить)
avatar
Вы не хотите говорить о параметрах эквити ваших роботов? Примерные ориентиры, если можно.
avatar
Кан Делябр, спасибо за комментарий! Я приверженец работы портфелем роботов! Я пока не продаю роботов, как начну, Вы узнаете все характеристики! Если есть что-то спросить, можно писать в скайп (horoshij_den).
avatar
Все это пустой разговор без проверки на Out Of Sample. Увы, но жизнь такова, что это потом не работает. Я не смог заставить системы работать трендовые. Они утонули ©. Сейчас на последней стадии миграции в HFT (была год назад эта стадия, но тогда не смог зайти)
avatar
ELab, при должном тщании — будет работать и без аутофсемпл. 
Более того, рэндом форест так устроен, что в нем аутофсэмпл зашит по построению. 
avatar
SergeyJu, а ты попробуй прогнать в R? Фишка в том, что если твои данные не дискретны, а есть зависимые наборы, то твое исследование можно в ведро выкинуть. А данные у тебя вероятно не дискретны, а зависимы. 
avatar
ELab, спасибо за Ваши комменты!)) неверное вы не дочитали статью, я не пропагандирую торговать по RandomForest. Теоретически это можно устоить, и библиотеки на C# есть, но большой вопрос — что туда подавать на вход!? И в совокупности — это нетривиальная задача получается, не каждому по плечу!))
avatar
Николай Флёров, ну почему не торговать? ))) просто нужно данные дискретные готовить. в вашем примере, вероятно, данные не дискретны. поэтому исследование может быть неточным. чтобы проверить любую гипотезу нужно в том же R прогнать данные не из набора для обучения. В 99% процентах случаях набор N зависит от набора N-1. Сам через это прошел.
avatar
ELab, интересно Вы используете понятие «дискретно»...
Я пишу на языках более низкого уровня, чем R. И как-то справляюсь. Вам, наверное, R-ы мешают.
avatar
SergeyJu, вы не поняли о чем я говорю. ну ладно. 
avatar
ELab, зато Вы поняли, что к незнакомому человеку правильнее обращаться на Вы. 
Что до подготовки данных для рэндом форест, то там есть простая уловка — надо брать не случайные отсчеты, а интервалы, достаточно длинные. Не акцентировал внимание, потому что мне это казалось очевидным.
avatar
Хороший материал! Пиши еще!!!
avatar
Чёрный кот, благодарю! мотивирует))
avatar
друзья, спасибо большое за комментарии! Постараюсь писать чаще!
мой скайп: horoshij_den
avatar
Не разобрался, но интересно)
avatar
Николай, спасибо! Редко, но метко.
avatar
спасибо
avatar

Странно: сейчас на сайте РапидМайнера указано, что бесплатная версия ограничена размером в 10 тысяч строк и 1 процессор.

Первая платная версия стоит 2 500 долларов в год.
Примеро 200 $/месяц == 12 тыр/мес

И при этом лимит всего-навсего "100 тысяч строк и 2 процессора".

Пруф

avatar

И почему-то на SourceForge уже нет ссылок для скачивания...

Вы не могли бы указать ссылку для скачивания опенсорсной версии?

avatar
ch5oh, приветствую, спасибо за коммент)
бесплатны по-моему все версии кроме текущей
yadi.sk/d/yx3M6aUHwNJeR — вот версия которой пользуюсь я)
avatar

Николай Флёров, большое спасибо! Интерфейс сделан приятно, но надо ещё разбираться неслабо.

 

Может быть, чтобы Ваш пример был полон, Вы могли бы выложить файл с подготовленными входными данными?
Чтобы можно было импортнуть его и проделать это упражнение в RapidMiner самому?
Возможно, отдельным постом?

 

Потому что уже чувствую, что от первого базового урока до полноценного анализа пространства эквити надо ещё ого-го какой путь проделать...

avatar
Бесполезная трата времени. Альфа в закономерности, на которую трейдер никак не может повлиять. Если она исчезнет из-за изменения структуры рынка, то никакие правильные параметры не помогут. А если закономерность не меняется, то хватает и  легкой оптимизации.
avatar

теги блога Николай Флёров

....все тэги



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