Николай Флёров
Николай Флёров личный блог
29 сентября 2016, 15:26

ДАТАМАЙНИНГ(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 читаем здесь







 








































32 Комментария
  • Самокритичный трейдер
    29 сентября 2016, 15:30
    А какая цель поста?
  • IgorMushtriev
    29 сентября 2016, 15:38

    Николай!

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

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

  • SergeyJu
    29 сентября 2016, 15:51
    Какие показатели качества эквити Вам нравятся? 
      • SergeyJu
        29 сентября 2016, 18:06
        Николай Флёров, я использую аналог рекавери. Среднегодовую доходность делю на оценку риска. В качестве оценки риска беру что- то связанное с просадкой, например, максимальный ДД, или среднее 10 максимальных ДД, ну и так далее
          • SergeyJu
            29 сентября 2016, 19:09
            Николай Флёров, а если у Вас выбрано 10 или 100 систем, как строите портфель?
  • Ярослав З
    29 сентября 2016, 15:55
    Спасибо за труды! Очень полезная статья, приду домой, буду майнить)
  • Кан Делябр
    29 сентября 2016, 16:58
    Вы не хотите говорить о параметрах эквити ваших роботов? Примерные ориентиры, если можно.
  • ELab
    29 сентября 2016, 18:30
    Все это пустой разговор без проверки на Out Of Sample. Увы, но жизнь такова, что это потом не работает. Я не смог заставить системы работать трендовые. Они утонули ©. Сейчас на последней стадии миграции в HFT (была год назад эта стадия, но тогда не смог зайти)
    • SergeyJu
      29 сентября 2016, 18:33
      ELab, при должном тщании — будет работать и без аутофсемпл. 
      Более того, рэндом форест так устроен, что в нем аутофсэмпл зашит по построению. 
      • ELab
        29 сентября 2016, 18:41
        SergeyJu, а ты попробуй прогнать в R? Фишка в том, что если твои данные не дискретны, а есть зависимые наборы, то твое исследование можно в ведро выкинуть. А данные у тебя вероятно не дискретны, а зависимы. 
          • ELab
            29 сентября 2016, 18:59
            Николай Флёров, ну почему не торговать? ))) просто нужно данные дискретные готовить. в вашем примере, вероятно, данные не дискретны. поэтому исследование может быть неточным. чтобы проверить любую гипотезу нужно в том же R прогнать данные не из набора для обучения. В 99% процентах случаях набор N зависит от набора N-1. Сам через это прошел.
        • SergeyJu
          29 сентября 2016, 18:54
          ELab, интересно Вы используете понятие «дискретно»...
          Я пишу на языках более низкого уровня, чем R. И как-то справляюсь. Вам, наверное, R-ы мешают.
          • ELab
            29 сентября 2016, 19:00
            SergeyJu, вы не поняли о чем я говорю. ну ладно. 
            • SergeyJu
              29 сентября 2016, 19:06
              ELab, зато Вы поняли, что к незнакомому человеку правильнее обращаться на Вы. 
              Что до подготовки данных для рэндом форест, то там есть простая уловка — надо брать не случайные отсчеты, а интервалы, достаточно длинные. Не акцентировал внимание, потому что мне это казалось очевидным.
  • Чёрный кот
    29 сентября 2016, 23:39
    Хороший материал! Пиши еще!!!
  • maratufa
    30 сентября 2016, 06:20
    Не разобрался, но интересно)
  • Marcello
    30 сентября 2016, 09:14
    Николай, спасибо! Редко, но метко.
  • Павел Дуков
    02 октября 2016, 13:51
    спасибо
  • ch5oh
    05 октября 2016, 12:40

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

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

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

    Пруф

  • ch5oh
    05 октября 2016, 14:17

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

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

      • ch5oh
        07 октября 2016, 10:50

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

         

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

         

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

  • Alrom
    16 октября 2016, 15:01
    Бесполезная трата времени. Альфа в закономерности, на которую трейдер никак не может повлиять. Если она исчезнет из-за изменения структуры рынка, то никакие правильные параметры не помогут. А если закономерность не меняется, то хватает и  легкой оптимизации.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн