Блог им. afecn19
Оке. Что именно я сгенерировал?!
Как я уже писал мое видение рынка это меняющиеся периоды случайного блуждания со вспышками какой то детерминированности, которые трейдер стремящийся к извлечению профита (а не чего то там еще) и должен торговать.
А как вообще подход в торговле я использую? А тут нужно вспомнить тех самых отцов-учителей которые лет 20 назад изрядно наследили на просторах инета. Атаман, Юра.… всех не упомнишь, но и не важно. Их конкретные подходы для российского фондового рынка оказались бесполезны, зато подход оказался понятным, логичным и что самое главное подходящими для меня. То есть сидишь ты такой с компьютером в обнимку, чего то там считаешь, ищешь закономерности (неэффективности, тут каждый может назвать как захочет), а затем исходя из предположения что эта закономерность продлится еще какое то время, начинаешь использовать на рынке. В чем природа возникающих закономерностей интересна для тех кто хочет понять суть рынка, а тем кто хочет просто рубить бабло наверно не очень. Но если откинувшись в кресло немножко пофантазировать можно вспомнить о таких природных явлениях имеющих числовые оценки как «золотое сечение», персистентность, толстые хвосты, нормальное распределение. Можно пофантазировать на тему что толпа (а фондовый рынок хоть он и фондовый прежде всего рынок, то есть толпа людей) в какие то критические моменты ведет себя шаблонно. Что есть какие то переходы в разные состояния рынка которые можно обсчитать. Что гуру и всякие теханализы с волнами Элиота создают паттерны поведения итп итд. Все это заполировать понятиями точка бифуркация, нелинейность, хаос… а можно на все это плюнуть и просто искать закономерности. Это не требует ни ума, ни какой то прозорливости или образования. Это как искать в куче сена иголку-кому то повезет и он найдет ее сразу, кому то нет, он будет искать ее долго, может всю жизнь, ну а кто то вообще не найдет. Все само собой IMXO.
Но вот из этого самого IMXO и появилась у меня идея поюзать тему ML, плюс тема соскочить с фондового рынка и заняться чем то более полезным, тем более на мой опять же скромный взгляд, мир вступает в эпоху когда фондовый рынок (как и вся финансовая сфера) уже перестанет быть чем то интересным, а уж для нашей страны, все это «интеллектуальное казино» под названием «российский фондовый рынок», вообще может первым пойти под нож когда наши правители наконец то решат избавиться от наследия поражения в холодной войне и прикрыть эту лавочку по выкачиванию ресурсов из России.
Впрочем это лирика. Как сказал литературный герой — «Ближе к телу как сказал Мопассан»… Значит если весь поиск эффективных стратегий это тупой перебор разных комбинаций фичей, то почему не использовать нашего железного друга, который как раз туп, зато очень быстро считает, еды не просит и может работать от рассвета до заката. Тем более спилив пальцы юзая связку WealthLab+Exell, я вовсе не хочу опять потратить годы жизни на поиск парочки дельных моделек с приличными показателями выхлопа, перейдя на американский рынок. Да и вообще так получилось что все мои результаты достигались использование новых технических инструментов. Наука и инженерия рулят в общем.
Осталось только выбрать нечто подходящее.
Что предлагает нам ML?
Нейросети. Тема модная, слов нет, все про них слышали. Тем более если лет 15-20 назад все юзали примитивные персептроны те что многослойные, то сейчас вот тебе и RNN, вот тебе CNN, вот LSTM, вот чего то там еще. И все, имеют свою архитектуру что и позволяет реализовать разные идеи.
Вот например на рынке нас интересует для прогноза не только последние значения всяких фичей, но и то как они пришли к этому состоянию, то есть позавчерашние и недельные значения. То есть нас интересует память, история. Вот нейросетщики тебе выкатывают LSTM, в которой реализована эта идея. Хочешь просто искать комбинацию фичей которая даст верный прогноз-вот тебе многослойный персептрон. А если ты хочешь оперировать образами состояния вот тебе CNN. А если тебе вообще не охота работать с цифрами и ты хочешь картинками оперировать, то тем более тебе CNN. Нарезаешь миллион картинок «голова-плечи», «тройное дно», «отскок дохлой кошки» итд, помечаешь их как надо, обучаешь сеть и вуаля-теперь сама нейросетка будет распознавать новые графики относя их в нужную группу (я кстати именно этим и хотел заниматься, но как то руки не дошли). А в чем гешефт? А в том что никакой субьективности, это когда один трейдер видит отскок, другой тренд, а третий дохлый хвост от дохлой кошки. А когда на три трейдера 4,5 мнения то считай никакого мнения то и нет и метод для работы на фондовом рынке никуда не годный.
В чем минусы нейросеток лично для меня?
1. Черные ящики. Ну да, есть всякие приблуды которые позволяют заглянуть под капот, но в общем это все терра инкогнита. Сказала тебе нейросетка покупать, а почему покупать, а кто ее знает… Свято верующим в мощь нейросеток и «науку» это может и пофиг, а мне бы хотелось получить результат что то вроде: «покупаем потому что Гэп был положительным, тренд падающий, а обьемы выросли в 2 раза».
2. Нейросетки требуют много много данных. Качественный скачок обычно происходит не когда мы используем какую то наворочено новую сетку, а когда в качестве добавки для нашего прожорливого друга используем данные раз в 10 больше чем было. А откуда их взять то на фондовом рынке!? У нас тут все ограниченно.
3. Я стремлюсь к ограниченному числу фичей (не больше трех) для прогноза, ибо все дальше на мой взгляд это просто подгонка, а нейросетка хочет много много фичей, и будьте уверенны она все их примет, все пристроит и получит Accuracy под 99%. А когда мы начнем это использовать на практике мы будем долго плакать.
Такие в общем мои, чисто субьективные пристрастия их моего представления что такой хорошая модель и что такое рынок.
Одним словом мне нужна интерпретируемость, чтобы я мог ручками все это пощупать, и задать ограничения столь дорогие моему сердцу.
А если мы все методы ML разложим на графике интерпретируемость/эффективность, то получим безусловного лидера, того что RandomForest зовется.
И для моего подхода для поиска моделек оно самое то. Ведь RF делает тоже самое что делал я в поиске какой то закономерности-выбирает фичу, находит порог, выводит значение, еще все это и иллюстрирует! То есть наверно многие задумывались над простыми бинарными вопросами типа — «а вероятность вырасти завтра будет выше если накануне мы выросли, или ниже?!», «а если обьемы выросли это к падению или росту?!», «а если фишка выросла больше чем все остальные за месяц, то это хорошо или плохо!?». Простейшие задачи бинарной классификации, которые можно протестить ручками в Wealth, но RF сделает это все быстрей, ну раз в 10000000. Ну а так как фичей можно придумать тысячи, а комбинаций из трех фичей это уже тысячи да в 3 степени, и это только при одном пороге, а фичи могут ведь сами принимать не категориальные, а вещественные значения, то мы получаем какое то огромное число комбинаций, которое наш несчастный Wealth нам посчитать ни в жизнь не поможет.
Впрочем пост я начал с вопроса генерации данных. А сам растекся по древу.
Так вот что там с моим искусственным датафреймом который я хочу подсунуть нейросетке, RF, Gboost, kNN?
А все просто. Я сгенерировал ряд, где в качестве таргета использовал 1 или 0, а в качестве пары десятков фичей ряды из совершенно рандомных значений. Но что я зверь какой то, чтобы предлагать спрогнозировать 1 или 0 на основе белого шума?! Нет, я сгенерировал один ряд ряд осмысленный — день недели. И когда тяпница я задал, что вероятность наступления 1-60%, а 2-40%. То есть классическая задача которую я решаю, под мое виденье что такое рынок: 80% белый шум, а в 20% случаях есть некоторая неффективность в размере 60 против 40 на получение конкретного значения.
Давно это было, деталей не помню, но получилось что ML могет, в том смысле что нашли они эту неэффективность, хоть я ее усердно прятал в бессмысленных фичах. Ну и RF как то что визуализирует, нарисовал мне красивую картиночку где показал-вот мол, так и так, если пятница то тут не 50 на 50, а по другому. А вот насколько помню нейросетка подкачала, видимо найдя того чего там и не было. Впрочем лучше всех был Boosting, который рассматривают как развитие RF с одной большой, но неприятной для меня заминки-не интерпретируем.
Само собой я воодушевился. Шанс найти железного раба который все сделает за тебя это наше ближайшее будущее, я считаю и меня оно вдохновляет.
to be continued
а то текст сливается
** вот потому и стала актуальной тема:
smart-lab.ru/mobile/topic/562878/
Прозрачность аналитики: миф или реальность?
К примеру, Баффет требовал прозрачности бизнеса, лично разбираясь в управленческих моделях каждой выбранной им компании.
В моем понимании в классическом подходе к ML 2 проблемы:
1) Попытка прогнозировать сильно зашумленную величину (если вообще не полностью рандомную)
2) Попытка сделать из говна конфетку. Если нельзя объяснить (самому себе) почему на сете предикторов алгоритм должен работать, то и сетка тоже не сможет (при том количестве данных которое доступно сейчас) ничего адекватного добиться. Это как учить робота передвигаться в комнате с окном по положению юпитера на звездном небе. Вот как раз от этого пункта и идет желание залезть и посмотреть чему оно там вообще научилось :)
>>«Сказала тебе нейросетка покупать, а почему покупать, а кто ее знает…»
Ну, если бы сеть говорила: «Чувак, зуб даю, продавай квартиру, входи на все плечи + бери кредиты в оффлайне и тоже на все плечи» — тогда да. А тут же ж все можешь контролировать, все верифицировать и т.д. Если ты понимаешь что под капотом в модели, понимаешь что подавал, то примерно понимаешь какого плана закономерности и т.д. Видишь метрики, разброс и т.д., можешь все контролировать.
А сейчас, если работает, ну и хер с ним, наверное. Это как ноут с которого пишу. Понятия не имею какие-нюансы в основе работы лежат и то как операционка работает.
А если костёр разводишь, тоже хер пойми что за процессы идут. Ок физик скажет, но поверхностно, ибо никто не знает глубины. Но огонь опасен. Но всё равно пофигу, знаем как примерно себя ведёт.
>> «В чем минусы нейросеток лично для меня?
1. Черные ящики.»
Для меня подобные минусы нивелируются тем, что я вижу результаты модели на OOS, в целом или в зависимости от предиктнутой вероятности, например.
>> «Простейшие задачи бинарной классификации, которые можно протестить ручками в Wealth, но RF сделает это все быстрей, ну раз в 10000000»
Да, тоже один из углов, код которым смотрю на модели вида случайный лес и градиентный бустинг — делать то же, что делал бы сам «классическими методами», но эффективней, как бы новый уровень. Там настаром уровне очень много рутин, а тут берешь то, что в стратегии обычной сделал бы условием, делаешь признаком и таких толпу загоняешь и дальше обучаешься и смотришь кто чего стоит из признаков, ну и готовые стратегии в виде моделей тоже на выходе получаешься. Но так да, юзать можно по-разному — хошь интерпретируешь и вытаскиваешь обоснованные кирпичики для построения обычных стратегий или прямо в виде ML и юзаешь. У меня внутренних «зажимов» по поводу интерпретируемости нет, собственно, выше описал чем заменяю, так что мне больше нравится в ML форме прям и торговать.