Марат

Читают

User-icon
75

Записи

46

ML - to be or not to be. Part 2.

Ну вот значит мы получили, что если переусложнить модель, то можем найти черную кошку в черной комнате, даже если ее там нет. Но RF позволяет еще и оценить значимость той или иной фичи, и даже получить пороговые значения, по которым RF и принимает решения. Напомню что в качестве смысловой фичи у нас выступает Week. Когда Week от 1 до 4 (что символизирует дни от понедельника до четверга), то вероятность события 1 и 2 50/50. То есть белый шум. А вот когда 5 (пятница), то с вероятностью 60% наступит событие 1, то есть вот та самая неэффективность которую мы и ищем на рынке.  
 С помощью команды feat_importances = round(feat_importances.nlargest(10), 3) выводим самые важные по мнению RF фичи. Сначала выводим по итогам трейни на первых 10 тысяч данных и… о ужас:
46    0.134
67    0.095
4     0.090
60    0.071
15    0.069
week  0.068
26    0.067
2     0.065
53    0.065
84    0.058
  Week у нас всего лишь на 6 месте с ничем не примечательными коеффами важности, а во главе фича «46», которая между нами говоря никакого смысла и не имеет, ибо случайно сгенерированный ряд. Обьяснить это можно только одним-фича week детерминирует наш таргет на 52%, что совсем не густо, а фича 46, была сгенерированна так что ее ценность случайно оказалась выше. Ну то есть мы все понимаем что если посадить макаку торговать, то будет она торговать в ноль, но если посадить 1 млн макак и каждой дать по терминалу, то наверняка среди 1 млн окажется парочку «макак-гуру», которые в силу случайности покажут длинную серию успешных трейдов (я кстати думаю что также обьясняется появление гуру среди людей), а если посадить за комп 1 млрд макак, то наверняка парочка вообще не совершит неправильных кликов, и это будет «макака-Баффет», все будут смотреть ей в рот, удивляться ее гениальности, а «макака Баффет» откроет блог и начнет давать советы как торговать правильно. Ну вот и в нашем пример, так получилось, что макака под номером «46» случайно понажимала кнопки правильней и RF назвал ее особо ценной.

( Читать дальше )

ML - to be or not to be

Когда мы используем методы ML, получая унылые результаты при прогнозе, мы точно не знаем кто в этом виноват и что делать. Ведь вариантов может быть несколько:
1. ML говно
2. Данные говно
3. Рынок говно
4. Все вместе или попарно говно
5. Ты говно
6. Весь мир говно
  Последние варианты рассматривать не будет, конструктивно остановимся на первых. «Данные не те». Ну правда, метод может быть хорошим, рынок может по устойчиво демонстрировать прежние тенденции, но так как мы модель скормили мусором, то ничего кроме мусора не могли получить при прогнозе. Под мусором я понимаю размер данных и бессмысленные фичи. «Рынок не тот». Не в том смысле, что я весь такой Д`Артаньян, а вот рынок подкачал, а в том что тенденции сменились, ну вот 10 лет была одна манера поведения рынка, а потом в силу геополитики или макроэкономике или каких то институциональных изменений рынок изменился, и то что раньше было вкусно, питательно и сытно, нынче конкурирует с подбрасыванием монетки. «Метод не тот». А тут у нас типа руки растут из жопы и мы не понимаем как вообще все это работает, что такое валидация, тесты, подгонки, метрики качества. Где надо нейросети мы использует бустинг, где надо бустинг используем нейросети. Меня интересует больше ответ на вопрос «а этот ML вообще что то на фондовом рынке может?!» и чтобы ответить на него я сделаю так, чтобы не было никаких проблем ни с данными ни с рынком, то есть чтобы виновник сразу был очевиден.

( Читать дальше )

Пространные рассуждения о ML

 Если вы посмотрите на выступление какого то гуру ML или разработчика софта под это дело, то высокий шанс увидеть мекающее и бекающее существо, рассуждающее в духе «ну мы точно не знаем как это работает, но эмпирически мы получили что вот если взять куриную косточку смешать ее с пеплом единорога и трижды ударить в бубен, то результат получится очень даже ничего...». ML новая область и многим фишкам применяемым там, нет какого то четкого математического обоснования. 
 Я само собой тоже шаманю, бью в бубны. Например-стоил ли взять максимально большой набор данных для train или лучше брать последние как наиболее актуальные. Или например работа с фичами-допустим посчитал я модельку для первых 2 лет, оказалось что так и так наиболее актуальны из них 10. Стоит ли в следующий train брать только их, или стоит опять брать полный набор фичей. Как насчет порога вероятности? Для модельки с одними параметрами, порог в 55% будет самое то, для другой лучшим будет 57,5%. Я не говорю о гиперпараметрах в самих модельках. То есть если прикинуть все возможные комбинации, то мы получим сотни если не тысячи  вариантов, и сразу возникает вопрос о подгонке. Впору забить на все эти ML и вернуться  к старомы доброму надра… ию в WealthhLab. 

( Читать дальше )

Практическое использование RF на российском фондовом рынке.

Так как  насчет практического применения ML? Как вообще это выглядит?!
 А выглядит это так, что 80% времени data scientist тратит на работу с данными, чтобы потом загнав их в модельку мобильно получить прогноз.   Вообще, предполагалось что такой мощный инструмент как нейросети сможет работать с сырыми данными, то есть загонишь в нейросеть обычную котировку, а дальше могучие нейроны похимичат, сгенерируют кучу фичей и найдут нужную их комбинацию (на самом деле никаких фичей нейросети на создают, но можно представить). Ну вот например такое явление как большой ГЭП, важный показатель? Еще какой! В сырых данных он содержится, то есть можно помечтать что если мы создадим очень сложную нейросеть, то она сможет вытащить это значение самостоятельно. Что такое ГЭП нейросеть конечно не знает, но путем манипуляций с весами она найдет, что когда меняется циферка в дате то образовавшийся большой разрыв в цене имеет большое влияние для хорошей аппроксимации.
 Мечты, мечты. Пока все что я видел в результате скармливания нейросети сырах данных-это слезы, боль и убожество. В общем мы пойдет другим путем. Мы не будет скармливать модели сырятину и мусор, мы постараемся кормить его качественно чтобы удои увеличивались и все такое.
Есть такое понятие как в ML как feature engenering. Наверно единственное более менее креативное что остается человеку в этом бездушном мире машинного обучения. А уж коли мы ведем речь о RF, то сам бог велел заняться этим, RF знаете ли не нейросети, там даже теоретически сырятина в данных не приветствуется. Вот этим мы и займемся.
 Откуда же нам взять эти фичи и главное как? Тут каждому воля вольная. Например можно сдув пыль с WealthLab использовать старичка как генератора фичей. Кто не знает в него вшито около полусотни известных индексов и еще столько же, но с неизвестным кодом. А еще можно запрограммировать свои фичи. По своему «знанию и разумению», своих «знаний и разумений» я накопил много, но почти все они из разряда «все эти технические индикаторы не стоят ничего». Зато кое что из своего показали свою небезнадежность. В общем на первый случай я сгенерировал около 17 своих фичей, затем ранжировал их для каждой стоки, итого 34 фичи. Стоки брал из числа 20 самых ликвидных отечественных фишек с 2010 года по март 2018, что дало 50 тысяч дневных наблюдений. Прямо сказать не густо, но что есть. Тем более речь идет о демонстрации силушки RF.
 Вот набор моих фичей:

Week               49303 non-null int64
GEP                49303 non-null float64
Min10              49303 non-null float64
Cl/High            49303 non-null float64
Cl/Low             49303 non-null float64
Cl/w_High          49303 non-null float64
Cl/w_Low           49303 non-null float64
wdif               49303 non-null float64
dif                49303 non-null float64
Vol20/Vol200       49303 non-null float64
tHigh%             49303 non-null float64
tLow%              49303 non-null float64
tHigh%-tLow%       49303 non-null float64
Cl/SMA21           49303 non-null float64
Cl/SMA5            49303 non-null float64
SMA5-SMA21         49303 non-null float64
Cl/(minSMA)        49303 non-null float64
Cl/(maxSMA)        49303 non-null float64
l_Min10            49303 non-null int64
s_Min10            49303 non-null int64
l_gep              49303 non-null int64
s_gep              49303 non-null int64
l_cl/high          49303 non-null int64
s_cl/high          49303 non-null int64
l_cl/low           49303 non-null int64
s_cl/low           49303 non-null int64
l_wdif             49303 non-null int64
s_wdif             49303 non-null int64
l_SMA5-SMA21       49303 non-null int64
S_SMA5-SMA21       49303 non-null int64
L_Cl/(maxSMA)      49303 non-null int64
S_Cl/(maxSMA)      49303 non-null int64
L-tHigh%-tLow%     49303 non-null int64
S_tHigh%-tLow%     49303 non-null int64


( Читать дальше )

Модные приговоры

Оке. Что именно я сгенерировал?!
Как я уже писал мое видение рынка это меняющиеся периоды случайного блуждания со вспышками какой то детерминированности, которые трейдер стремящийся к извлечению профита (а не чего то там еще) и должен торговать.

А как вообще подход в торговле я использую? А тут нужно вспомнить тех самых отцов-учителей которые лет 20 назад изрядно наследили на просторах инета. Атаман, Юра.… всех не упомнишь, но и не важно. Их конкретные подходы для российского фондового рынка оказались бесполезны, зато подход оказался понятным, логичным и что самое главное подходящими для меня. То есть сидишь ты такой с компьютером в обнимку, чего то там считаешь, ищешь закономерности (неэффективности, тут каждый может назвать как захочет), а затем исходя из предположения что эта закономерность продлится еще какое то время, начинаешь использовать на рынке. В чем природа возникающих закономерностей интересна для тех кто хочет понять суть рынка, а тем кто хочет просто рубить бабло наверно не очень. Но если откинувшись в кресло немножко пофантазировать можно вспомнить о таких природных явлениях имеющих числовые оценки как «золотое сечение»,  персистентность, толстые хвосты, нормальное распределение. Можно пофантазировать на тему что толпа (а фондовый рынок хоть он и фондовый прежде всего рынок, то есть толпа людей)  в какие то критические моменты ведет себя шаблонно. Что есть какие то переходы в разные состояния рынка которые можно обсчитать. Что гуру и всякие теханализы с волнами Элиота создают паттерны поведения итп итд. Все это заполировать понятиями точка бифуркация, нелинейность, хаос… а можно на все это плюнуть и просто искать закономерности. Это не требует ни ума, ни какой то прозорливости или образования. Это как искать в куче сена иголку-кому то повезет и он найдет ее сразу, кому то нет, он будет искать ее долго, может всю жизнь, ну а кто то вообще не найдет. Все само собой IMXO.



( Читать дальше )

Как я использовал модные методы прогнозирования на фондовом рынке.

Лет 20 назад была модной темой нейросети, и в частности в приложении к прогнозированию на фондовом рынке.  Вообще, нейросети были придуманы в далеких 60 прошлого века, но как это часто бывает от теории до реализации прошли многие году. Если нейросети в других сферах нашли свое место, то о применении нейросетей для успешного трейдинга я честно говоря не слышал. Этому может быть два обьяснения-для фондовых рынков неросети неприменимы (вообще или пока), либо кто сумел их правильно применить, по понятной причине не стал писать об этом кандидатские, а ничтоже сумняшеся стал рубить бабло.

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

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



( Читать дальше )

EPFR кто на кого смотрит

На рынке есть разные теории о куклах, умных нерезидентах и прочих рептилойдах который двигают рынок куда и как хотят, не давая заработать честным спекулянтам.
Знание о том приходят от иностранцев деньги на росрынок или уходят позволяет зафиксировать небольшую возможность для профитной торговли (а большой обьем притока или оттока позволяет увидеть прирост волатильности и обьемов). Но профитность настолько мала что особо на ее счет заморачиваться не стоит. Тем более данные о притоках день в день имеют только подписчики услуги и то не факт что она обновляется онлайн. А если попробовать приложить открытые данные о притоках/оттоках, то мы быстро убедимся что там нет вообще ничего ценного. 
Интересно, а может все дело в том кто на кого смотрит?!
Может это не нерезиденты создают волну на нашем рынка, а мы, а нерезиденты ничтоже сумняшеся пристраивают свои баксы на наш рынок стоит ему показать рост?!  
Берем динамику рынка по Micex, группируем и смотрим что будет с притоками на следующую неделю:

( Читать дальше )

EPFR

Продолжаю. 
Логично предположить что при сильном оттоке/притоке денег нерезидентов по данным EPFR, волатильность на отечественном рынке увеличится, как и обьемы. 
Данные для 6 голубых фишек. Группирую данные по притоку/оттоку до ±50 млн и от ±200 млн.

/>
 ±50 Колич  Обьем    /%/  ± 200 Колич  Обьем    /%/
2010 388 727 1,36 2010 90 956 2,54
2010 246 849 1,66 2010 504 979 1,76
2010 630 449 1,05 2010 90


( Читать дальше )

Следует ли за притоком средств нерезидентов рост российского рынка?!

Есть данные EPFR которые демонстрируют приток или отток на отечественный рынок капиталов зарубежных фондов. По обывательской логике все просто-пришли деньги на наш рынок-рынок растет. Ушли-рынок падает.

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

Сгруппировал отток/приток по размеру и получил для FRTS:

Названия строк

Колич

   Profit %

   ±

   EPFR

-276



( Читать дальше )

Тестим свечные паттерны от Татарина30

Эти системки мне неизвестны от слова «совсем». Так что потираю потные ладошки в ожиданиях расширения кругозора и будущего профита.
Тут формализовать чуть сложней, так как свечки сами понимаете...
В моей формализации системка выглядит так:
1. Дневная свеча позавчера <-2% (от клоза до открытия)
2. Дневная свеча вчера >2%
3. Взял случаи когда две свечи сильно друг от друга не отличаются: одна свеча не может быть по модулю больше другой более чем в 1,5 раза.
4. Так как котирки только 15 минутные, убираю первый бар из торговли.
5. Пробоем вчерашнего дня считаю закрытие клоуза выше вчерашнего хая
6. Открытие ниже хая вчерашнего дня
7. Время в позиции 30 минут. 
Берем только первые фишки дня которые выполнили условие. Получаем:
/> /> />
Названия строк Колич    Profit %
2010 22 -0,23


( Читать дальше )

теги блога Марат

....все тэги



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