Марат

Читают

User-icon
72

Записи

46

О практической пользе transformer для торговли на бирже

 Введение

     Многие datascientists, желающие использовать ML на финансовых рынках, прочитали толстые книжки об инвестировании, может даже создавали модели с учетом прочитанного. И наверняка знают как правильно оценить полученные модели с точки зрения ML. Разобраться с этим необходимо, чтобы не было мучительно больно, когда прекрасная модель на бумаге, превращается в генератор убытков при практическом использовании. Однако оценка эффективности модели ML на бирже, довольно специфическая область, тонкости которой раскрываются только когда вы погружаетесь в процесс. Под процессом я понимаю трейдинг с частотой совершения сделок гораздо чаще «пара сделок в месяц, в течении полугода». Существует множество подводных камней, о наличии которых вы даже не подозреваете, пока смотрите на трейдинг извне. Я попробую вольно изложить свои мысли на данную тему, я покажу метрики, условно разбив их на 3 группы и обьясню их смысл, покажу свои любимые и о чем нужно подумать, если вы хотите практически использовать модели, а не повесить их на стеночку в красивой рамочке. Представлю метрики в табличном и графическом виде, показав их взаимосвязь. Сравню показатели моделей в виде «какую модель выбираю я» и «что выбираете вы» и кто тут больше ошибается. Для любителей кодов, приведу реализацию всего подсчитанного, так что можно сразу применить прочитанное для оценки своих моделей. Я не буду тут говорить о борьбе с переобучением или регуляризации или стратегиях кросвалидации — оставлю это на потом. Здесь мы начинаем со списка уже спрогнозированных сделок, с помощью transformer о которой я писал в прошлой статье. Поэтому данный текст будет его логическим продолжением, где я оценю модель с точки зрения ее практического использования.



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

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

  Таки собрался дописать вторую часть своих результатов применения трансформеров для предсказания на российском фондовом рынке. Может и хорошо что не спешил, так как пафос первой части о трансформерах дающих какие то уникальные результаты по сравнению с другими архитектурами нейросетей, оказался несколько преувеличенным, по крайней мере LSTM дал вполне сравнимый результат с трансформерами. Потом я попробовал градиентный бустинг, дерево решений и вновь получил схожий результат. Так что подавайте в нейросеть правильные признаки и многие модели покажут положительный результат. Тем не менее, раз я начал с трансформерах, и так как их архитектура хорошо отражает рынкок, о них и продолжу. 
  Для любителей вопросов о «таймфреймах, на чем обучал, какие акции, что в качестве таргета, какие параметры, время удержании позиции» итп итд. Акции МосБиржы, из числа наиболее ликвидных. Данные у меня с 2011 до 2021 (и это увы необходимость, так как именно с 2011 года время работы биржи стало 9 часов). Прогнозы строил следующим образом — выкидывал один год (это out-sample), а из оставшихся делал разбивку на train и test. Таким образом получил 10 одногодичных прогнозов. Для меня важно получить доходность на сделку пусть поменьше, но чтобы прибыльность подтверждалась на как можно большем диапазоне, и на всех акциях. Такое чтобы для каждой акции своя модель — для меня неприемлемо. И само собой никаких убыточных годов, как минимум. Знаю многие меняют системы каждые 3 года и для них это нормально, я предпочитаю вылавливать аномалии которые работают десятилетиями. Тут я никого не учу, рынок сам рассудит.    



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

Практическое использование нейросетей на рынке 1.

Я уже писал о попытке применить нейросети, и вердикт был неутешительным, с точки зрения практического трейдинга. Я усердно (более менее) прокачивал свои скилы в машинном обучении, учился программировать, в качестве данных используя котировочки, но особой перспективы не видел. Но я оказался не прав, и в конечном итоге, у меня в нейросеть на фондовом рынке получилось.   
Но давайте не сразу к прогнозированию и зарабатыванию денег, сначала рассмотрим другой вариант практического применения нейросетей. 
Нейросеть как черный ящик.
Допустим есть у вас рабочий алгоритм, который показал свою эффективность на протяжении 10 лет реальной торговли. Вопрос как его продать, не раскрывая секреты трейдерской кухни? А почему бы не использовать неинтерпретируемость нейросетей, превратив ее слабости в ее силу? Эта мысль приходила мне раньше, но реализация подкачала, до ума эту мысль я довел недавно, благо потребность возникла. Схема очень простая, у нас есть сырой ряд, из которого нужно посчитать нужные признаки (признаки это и есть мои трейдерские секретики), эти признаки настолько хороши, что подав их в простенькую модель машинного обучения мы получим хороший результат. Но как скрыть алгоритм расчета признаков? А все просто, мы на вход в нейросеть подаем котировочки, а на выход в качестве таргета — наши секретные признаки, таким образом поставив перед нейросетью задачу калькулятора. Подчеркну, тут мы ничего не прогнозируем, признаки находится внутри временного ряда. Это первый этап. На втором этапе мы занимаемся уже прогнозированием, используя полученные признаки. 

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

О фундаменте замолвим слово.

В последнем посте я попробовал оценить в качестве предикторов показатели деятельности компаний, и кое что вполне так оказалось не бесполезным. Теперь воспользуюсь макроэкономическими показателями. Как пишут заграничные авторы — «вдохновила на это меня этот текст», правда лицезрение кода погрузило меня не печаль, у меня, который  ни разу не программист, из глаз потекла кровь глядя как автор все это оформил, кашмаар.
Для меня неясен вопрос когда данные OBDE становятся общедоступными — через месяц, через два, через три...?! Судя по сайту, сейчас уже выложены данные за март, однако непонятно окончательные ли они, или (как это часто бывает в западной статистике) предварительные, и они еще несколько раз будут пересмотрены. Поэтому я приведу 4 соотношения данных и изменения котировок — месяц в месяц, и с разрывом в 1, 2, 3 месяца. Показателей много, но пока наиболее интересным (как и у автора вышеуказанного текста) выступает CLI — composite leading indicator, то есть опережающий, что нам для прогноза самое то. Есть разные CLI, приведу разбивки по Amplitude adjusted (CLI) 'OECD + Major Six NME':

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

О ценности экономических показателей американских компаний для трейдинга.

В конечно счете вся работа алготрейдера сводится к поиску предикторов и раз я научился что то там программировать на Питоне, парсить и нашел сайт где можно выкачать фундаментальные данные по американским компания за 10 лет, то почему бы не глянуть на зависимость котировок от этих самых показателей. Я этого никогда не делал, так как на заре своей трейдерской деятельности подражал трейдерам, которые о фундаментальном анализе отзывались весьма пренебрежительно. И сейчас никаким фундаментальным анализом я конечно не займусь, я оценю так сказать на глазок, полезность фундамента самым простым способом — возьму год, возьму какую то конкретную отрасль и разобью массив на 3 группы, в зависимости от того относились ли индикаторы деятельности к числу лучших, худших или средних. И гляну по усредненным данным насколько отличалась динамика акций у трети лучших по сравнению с третью худших. 
Взял за 10 лет, акции входящие в нынешний SP500, показателей около 60. Получил такое:
О ценности экономических показателей американских компаний для трейдинга.

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

На память.

Вам не кажется что происходит нечто глобальное вот прямо сейчас? Ну или может происходить. Мне нравится выражение — в капле отражается море. Вот вам пример капли. Мы все знаем Мюнхенскую речь Путина в 2008 (или каком там году). Но вот примерно в то же время я стал свидетелем разговора, где один наш клиент рассказывал о том что Россия не может уже производить танковые стволы, вот в СССР могли, а «современная Россия» не может. Будь я поумней, я бы тогда подумал не о нашем «технологической деградации», а о том «а почему это в государстве вдруг стали проводить ревизию того что мы можем, а чего нет в военной сфере?!». Ну так вот, в наше время эта самая капля очень странная. Сначала из информационного пространства исчезли некоторые каналы. А листая сегодня ленту ютуба наткнулся на выпад Соловьева в сторону Познера. А тут еще наш алюминиевый олигарх наехал на Набиуллину с ее «антинародным поднятием ставки ЦБ». Ну это капля, а море это геополитический расклад 21 века, где 2 экономические системы, на каждую из которых приходится по 30% мирового ВВП (вместе с сателлитами) входят в неизбежный клинч. И если в этом конфликте Россия выступает на стороне Китая, то первым делом будет происходить зачистка всех этих экономических и политических и информационных атавизмов оставшихся из 90-х когда предполагалось, что Россия будет встраиваться в Западным мир. Если так, то попытки балансирования России, остаться в драке в стороне закончились, и в Пекине могут откупоривать бутылки с шампанским. Ну а почему нас это может касаться? Да потому что одним из таких бесполезных атавизмов из 90-х является московская фондовая биржа. В принципе, только в США биржа играет важную роль экономике, в других странах предпочитаю наполнять реальный сектор деньгами через банковскую систему. Впрочем биржу могу и оставить, в качестве «интеллектуального казино», ну нужно же будет чем то занять население. Помните фантастическую мелодраму «Она», там главный герой «работает» (прости господи) тем кто пишет любовные записочки за других. А что вы хотите?! Другой работы просто нет. ИИ, роботизация мать его. А еще был у меня сон, где я был свидетелем ядерной бомбардировки, от первого лица. Такой же сон о войне был у моей массажистки лет 5 назад. Ну тут остается только развести руками — женская интуиция острей мужской на 5 лет… Лет 15 назад я думал — «в какое скучное время мы живем», ну а теперь… мдя.   

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

Сантименты на американском рынке. Продолжение. 2.

Cтал потихоньку видеть разницу между американским и российским рынком. Понятие интуитивное и наверно наивное и может даже не верное, так как опыт у меня исключительно внутрироссийский. Успешный трейдинг в Америке — это найти фишку которая выстрелит и сидеть на ней. Все эти неэффективности которые кто то пытается выловить техиндикаторами или линиями или еще чем то еще — давно уже там уничтожены  с точки зрения эффективного трейдинга. Эффективного в смысле дающего заработать на хлеб с маслом. На росбирже торгуется определенное число фишек, никто особо не выстреливает из ниоткуда и не падает в ноль, то есть искать какие то новые компании, которые взлетят, негде, да и незачем (пишу сие на фоне позавчерашнего взлета ТМК хехе), зато в наших 20+ более менее ликвидных фишках есть неэффективности, из которых можно извлекать прибыль. Поэтому мой российский подход для американского не годится (хотя допускаю что для определенной категории акций, не очень проторгованных, какие то хорошие неэффективности и можно найти). Хорошо, как найти это фишку которая выстрелит? А тут уж как вам душа скажет, хотите ковыряйте фундамент, хотите теханализ, хотите читайте отчеты и пытайтесь понять зайдет или нет новая услуга, хотите еще что, благо биржевая инфраструктура в США развита как нигде в мире и вы можете найти любую информацию о любой компании, в структурированной и удобной для анализа форме. И получив эту гору информации, перед вами свободное творчество — запускайте свои нейросетки и ищите, ищите, ищите, нечто что позволит вам выйти на истории, в привлекательную для вас кривую equty, а затем помолясь и перекрестившись пробуйте использовать сие в реальной торговле. И такой подход большой плюс для тех кто хочет побольше изучить всякие методы машинного обучения, то есть для меня. 
Пока я в NLP, это значит берем текст: отчеты, мнения, твиты, итд итп и получаем его количественные оценки, с точки зрения сантиментов например, или схожести одного текста к другому. Ну а дальше по схеме — фичи есть, прикручиваем какой то инструмент машингленинга. И самое  неожиданное, применив даже самый наивный подход оценки сантиментов, я получил положительный результат.  
В последний раз, получив положительный результат для 7 раздела отчета К-10, я решил увеличить выборку, и плюнув, начал прогонять К-10 полностью, увеличив выборку с 2000 отчетов до 4000. Ну и получил примерно такой же, соотносящийся с логикой результат: если в отчете негатива побольше, компании растут поменьше и наоборот. Заодно получил ответ на странную зависимость доходности от размера отчета — в значительной части это обьясняется тем что компании сектора Information Technology или Health Care имеют склонность писать небольшие отчеты, а например сектора Materials или Financials побольше, только вот так получилось что за последние 10 лет первые вырастали в среднем на +20% а последние на +15%. Если учесть секторальную принадлежность, то все равно окажется что компании меньше льющие воду в 7 разделе 10-К, имеют динамику акций лучше, но это будет уже разница не в 7%, а в 2%.
Все это я получил используя National Research Council Canada (NRC) affect lexicon. Напомню такой лексический подход до жути прост, берется текст и считается сколько в нем позитивных слов, негативных, «слов доверия», «слов страха» итп итд Но помимо него есть другие библиотеки слов, Lexicon Loughran and McDonald. Его минус, в том что там в нет словарей по 8 эмоциям, а только по 2 — позитив/негатив (ну почти), а я уже выяснил что ловить по этим признакам нечего. Так что Loughran and McDonald пролетели мимо.
Дальше решил попробовать Bert, очень популярная моделька, которая переписала рекорды в распознавание сантиментов в тексте. Но это уже другой подход, тут уже в чистом виде машинное обучение. Я попробовал и базовый Bert и finBert, получил оценки по шкале позитив/негатив, и на 10К и на 10Q. Не берусь судить насколько точно они оценили сантименты, но не обнаружил что из позитивных отчетов следует позитивная динамика акций, а из негативных -негативные. 
Ну и наконец попробовал третий вариант: представляем текст в векторном виде (превращаем его в цифры), ставим лейблы в зависимости от динамики в течении следующего дня: (Close/Open -1)*100 ну а дальше любой метод из машинного обучения. В чем отличие от finBert? Ведь и там и там мы текст превращаем в цифры мосле чего используем машинное обучение.
Ну вот например у нас есть твит: «Охренеть, завтра Гугл попрет как ракета!». Ожидания написавшего явно позитивные, но рынку в общем то плевать, и мы практикующие трейдеры это отлично знаем. Ну а Bert плевать что там на рынке в реальности, он тупо оценивает сантименты текста. Оценивает умно, с учетом контекста, преодолевая игру слов, сленг итп итд. И обучился Bert оценивать тональность текста на примерах где в качестве лейблов использовались оценки человека — позитивный текст или негативный. Для finBert брались финансовые тексты, где лейблы проставляли видные экономисты, я использовал вариант finBert, которая обучалась на 10К (ну как утверждал ее автор). Так вот, вся разница в лейблах. Я в качестве лейбла взял реакцию рынка, поэтому твит: «Охренеть, завтра Гугл попрет как ракета!», этот сверх позитивный твит, получит отметку негативного,  если на следующий день акции Гугла упадут. И получив на трейне лейбл «негативный», он на тесте будет все схожее с такого рода твитом оценивать как негативное для роста завтра. Вот и вся разница. Ну и плюс в том что Bert очень мощный инструмент, действительно оценивающий контекст, а я взял просто по пролетарски — TFID + sklearnкий MultinomialNB, то бишь наивный Байес. Дешево и сердито. Да тут можно было что то посолидней, типа LSTM, да что угодно, но думаю думаю смысла усложнять не было. По идее можно было даже создать свой «MaratBert», обучив монстра на рыночных лейблах... 
Помимо использования разных подходов я конечно химичил и с разными базами данных. Например решив увеличить выборку, взяв отчеты 10Q, это то же что и 10K но квартальный. Попробовал брать из отчетов только предложения где есть отсылка на ожидания, риски итп итд. Попробовал вместо отчетов SEC взять stocktweets. 
Много что перебирал, но в конечном счете самое интересно получил оценивая stocktweets наивным Байесом. Еще раз подчеркиваю, оценивал не сантименты. Нашел в сети базу stocktweets для 5 фишек. И получил такой вот результат на тесте:
Сантименты на американском рынке. Продолжение. 2.



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

Сантименты на американском рынке. Продолжение.

Делюсь результатами. Напомню что я создал базу американских фишек входящих в SP500, выкачал для них отчеты 10-К с 2010 года, из которых достал 7 пункт «managements discussion and analysis of financial condition and results of operation». По идее должен был получить около 5000 текстов, но в парсинге 7 пункта и заключалась самая большая заковыка. В общем на финишную прямую вырулилось только около 2000 отчетов. 
Для каждого отчета я получил оценку сантиментов, по 10 эмоциям и по каждой из них, разбил свои 2000 отчетов на три ровных группы — с максимальными значениями, минимальными и средними. И для каждой из этой группы глянул на сколько изменилась цена акции через 250 торговых дней, после опубликования отчета. 
Вот корреляционна матрица между эмоциями (+ длина отчета).
Сантименты на американском рынке. Продолжение.


Как видим между позитивными и негативными эмоциями корреляция +0,4. Что может показаться странным, если предположить что они противостоят друг другу. Однако, тут видимо другая логика — есть отчеты где составившие их буквально сыпят эмоциями, и отчеты выдержанные в более строгом стиле. Даже предположу как это получается. Вот допустим много негативного в отчете, что обьекетивно — компания не на высоте, или рыночная ситуация аховая, понятно что по законам маркетинга такое никто не купит, поэтому в лучшем стиле манипулирования, негатив обильно разбавляется позитивными словечками и на выходе потенциальный инвестор получает некую сбалансированную баланду.  Вот вам и положительная корреляция долей позитивных и негативных слов в тексте. 

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

Как начать изучать сантименты на фондовой бирже

Так вот о сантиментах на фондовой бирже. 
Вот вам лайхак как быстро что то сделать (про качество мы ничего не говорим, просто как вообще начать эту тему). Ну раз так, то начнем с англоязычного сегмента, ибо там информации и готовых скриптов завались. Да, как известно в любой теме можно потонуть, если копать очень глубоко. Но мы же трейдеры нас в общем интересует не программирование, а извлечение профита с помощью программирования. Так что к черту NLP и давайте не будем морочить голову слишком погружаясь в теорию.
Какие пункты я вижу:
1.
Первая задача это достать данные для анализа. Сначала я подумал о твитах. Популярная тема, наверняка много готовых кодов по выкачке, поисковики наверно есть неплохие,  готовых баз на все случаи жизни итп итд. И главное — мы ведь используем железного болвана там где человеческий мозг может утонуть в потоке информации, ну так вот ам и твиттер. Но начав копать, очень скоро обнаружилось что твиттер это такая большая пребольшая куча… эээ… мусора, а не какой то источник информации. Кстати забавно, когда я регился на твиттер, то в качестве рекомендуемых твиттеров мне предлагали исключительно твиттеры так скажем оппозиционные, если это можно так назвать. Та же история кстати в ютубе, я все больше и больше чувствую себя в каком то интернет концлагере, где тебе пихают строго определенные каналы, авторов, видение. Ну да ладно. Твиттер помойка,  так откуда качнуть новости? Есть openblender, оттуда можно что то качнуть более качественное, ну там разворотики WallStreet, а вот тут

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

NLP, сантименты, фондовый рынок.

Решил покопаться в парсинге и сантиментах. То бишь пишем код, который цепляется к какому то сайту, выкачивает оттуда новости, а затем на ее основе делаем сантимент анализ и строим какие то прогнозы. Полистал иностранную литературу (на русском ничего не нашел, если у кого есть ссылки — кидайте), и нашел 2 схемы оценки сантиментов для фондовых рынков. Первое это Natural Language Processing, которые на основе ЛИНГВИСТИЧЕСКОГО анализа оценивают текст — позитивный он, негативный, или нейтральный.  Вторая схема — когда ты читаешь новости и вручную ставишь лейблы — позитивные это новости для фондового (или какой то конкретной бумажки) или негативные. А затем векторизация и уже на новых новостях железный болван ставит лейблы сам. Из прочитанного мною, нигде в заключении вроде не писали о каких то позитивных результатах, но чтобы не стоять на месте и узнать что, то новое, разобрать эту тему все равно будет полезно.
Все что я пишу очень сыро и пишу в том числе чтобы самому структурировать для себя эту новую тему и получить отклик от людей которые этим занимались.

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

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

....все тэги



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