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

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



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

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

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

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

Блог им. afecn19 |Паттерны на 60 минутках

На 15 минутках вроде была парочка интересных паттернов, но рассудив что на 60 минутках их будет еще больше, пошел тудысь. Вообще, завозился с этими паттернами, хотя казалось используя питон, да еще и при готовой библиотеке — знай только на разны таймфреймах загоняй котировки в цикле и смотри результат. Вот с оценкой результатов и возникли проблемы. Какие критерии взять? В общем все свелось к ручному просмотру результатов применения тех или иных паттернов. Так что в качеств нейросети работал самая что ни на есть нейросеть-человеческий мозг. Стремился я к стабильности по годам и симметрии.
Отобрал я те что получше и решил прикинуть насколько они вообще годятся для реальной торговли. И тут оказалось что они часто пересекаются с теми системами что я уже использую, и если убрать дни когда я и так в рынке, то для оставшихся дней результаты использования паттернов скромны. Так что по второму циклу я запустил тестирование паттернов для периодов когда мои системы были пассивны. И оказалось что если раньше вполне такими рабочими на 60 минутках казались пара десятков, то сейчас речь идет о 5-6, да и их результаты… ну такие. 

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

Блог им. afecn19 |Мои "значки на танчиках"

Лет 12 назад, когда я впервые ковырял тему нейросетей на фондовой бирже, прочитал как кто то облапошился обучая нейросеть распознавать танчики. Нет, сеть результат показала, но как оказалось на картинке с танчиками был какой то значок, а где танчиков не было, значка не было и нейросеть научилась распознавать не танчики, а наличие отсутствие вот этого значка. Запомнилось мне это наверно, потому что это было единственное, что я тогда понял о нейросетях. 
И вот теперь я поймал свои «значки», когда пытался предсказать динамику, на основе CNN+вейвлетпреобразований. Тут подробней. Нет я не заглядывал в будущее, и не так знак поставил где то. Я не стал нормализовывать цены, ибо считал что для CNN не важно все это, картинки они ведь и в Африке картинки, и вот так выглядит картинка вейвлетпробразования для ВТБ с ее копеечными ценами за акцию и Норникель, с его десятками тысячами рублей за акцию:
Мои "значки на танчиках"

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

Блог им. afecn19 |CNN+wavelet = blue stocks forecast

После использования вейвлетов для классификации, я конечно сразу попробовал оценить ценность вейвлет для прогнозирования, но тестирование мягко говоря затянулось. Эпох я прогонял много, 600, а одна эпоха это минута. И оставляя нейросеть на ночь я забывал, то одно, то другое. Затем я стал пробовать разные learning rate, датасеты, архитектуры и обнаружилось что тот самый позитивный первоначальный результат (в виде 55% accuracy на валидации и over +75% на тесте) исчез, сеть не могла зацепить ничего, даже на тесте. В пятницу я решил в последний раз прогнать сеть и уже с 50 эпохи сеть начала уверенно обучаться. Обьяснение тому что на том же наборе данных, одна и та же сеть, то обучается, то необучается, у меня одно — каждый раз нейросеть начинает блуждать по гиперплоскости функции ошибки с разных мест, и при одном наборе весов застревает в зоне локальных минимумов, которые чуть-чуть лучше 50%, не в силах перескочить в область более низких минимумов. 
Данные все те же — голубые, отечественные. Тестирую на недельках, прогноз на недельку вперед. 

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

Блог им. afecn19 |CNN+wavelet

Займемся бессмыслицей. Никакого прогнозирования, просто попробуем методами вейвлет преобразований и CNN ответить на вопрос — есть или нет разница в цикличности при росте фишки и падении? Эллиот чертил 3 волны вверх и 2 вниз. Давайте почертим и мы.
Данные я взял недельные, от понедельника до пятницы, но с разбивкой по 15 минуткам, итого ряд в 175 элементов. Судя по прошлым результатам, мизерная длина, и никакой цикличности там нет. Но...«а вдруг?!». Ну а разбивка недельная, в надежде уловить недельную цикличность, все таки понедельник это «день тяжелый», пятница это «тяпницы», четверг это маленькая пятница. В общем каждый день недели уникален и помню какие то корреляции/антикорреляции даже были, вроде пятница и понедельник шли вразрез, а четверг и пятница шли вместе. Впрочем точно не помню.
Каждому ряду в 175 отчетов я присвоил лейбл (1 рост, 0 падение). Ряд прогнал через вейлет преобразование, получив квадратную картинку. Все это добро загнал в CNN и стал ждать чего нейросеть намутит. В теории, после вейвлет преобразования, на полученной картинке, не должно быть никакого намека на то росла фишка или нет. Следы наличия тренда присутствуют, но какого именно не указывается. Хотя это не точно. А вот точно что должны быть следы цикличности, и если при росте и падении цикличность разная то точность классификации должна быть больше 0,5… Хотя это не точно.  Ну нам жалко чтоли, попробовать? Пуская нейросетка крутит колесико. Крутило колесико нейросеть долго....:

CNN+wavelet



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

Блог им. afecn19 |CNN и финансовые TimeSeries

Есть такая CNN, сверточная сеть то бишь. На вход ей подаются картинки, на которых она учится отличать собачек от кошечек.  Меня это, относительно применения на фондовой бирже всегда привлекало.  

Сначала определимся какие рисунки подносим CNN. В качестве рисунков мы можем подать:

  1. Сырые ряды: цены, обьемы, индикаторы
  2. Индикаторы. То есть для каждого значения подсчитать набор тех.индикаторов и красиво оформить их в матрицу. Ведь что такое рисунок? Это всего лишь набор пикселей, каждый пиксель это значение какого то техиндикатора, чем он больше тем пиксель темней. Тут есть даже практическая реализация которой я частично и воспользовался. https://github.com/nayash/stock_cnn_blog_pub
  3. Представить сырые временные ряды в другой системе координат. Например GramianAngularField, где как пишут авторы больше информации. Так блин и пишут. Набиваете в гугле GramianAngularField и выпадает куча ссылок, но мне лично больше понравилась работа иранских товарищей https://arxiv.org/pdf/1810.08923.pdf


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

Блог им. afecn19 |Блеск и нищета нейросети. Part 5.

Продолжу изучение нейросетей. Для тех кто случайно наткнулся на этот пост, но не хочет ковырять предшествующие поясняю.
  Был сгенерирована табличка в 50 тысяч строк и 103 столбцов. Один столбец это даты, еще один — таргет, который мы пытаемся предсказать (событие 1 и событие 0). 101 столбец изображают фичи, из которых 100 случайные величины от 1 до 10, а одна осмысленная (Week) принимает значение от 1 до 5. Для week от 1 до 4 равновероятно событие 1 и 2, для Week = 5 вероятность события 1 = 60%, 2 = 40%.
 «Шо за фигня аффтор?!». Фигня не фигня, а я моделирую свое виденье рынка и своего подхода к поиску рабочих стратегий. Виденье рынка предполагает что рынок рандомно блуждает значительную часть времени (в моему случаи 80% времени), а оставшееся его можно описать несколькими хорошими фичами. Ну как описать? Не на 100%, ну а где то процентов на 60. Сравните с детерминированным подходом ученых столетней давности — «если нам дать все фичи и много много вычислительных мощностей мы вам все посчитаем, с точностью в 100% и для любого мгновения времени!». Понятно что после этого появилось много других идей, нелинейная динамика к примеру, которая именно предполагает принципиальную невозможность прогнозирования, а не потому что нам чего то в данных недодали. Ну и наконец постановка задачи: у нас есть 101 фича, и нам с помощью инструментов ML надо получить такой прогноз события 1, который бы бился с заложенной нами неэффектиностью. И тут не помогут завывания нейросетей-что мы «фичи кривые заложили, на которых совершенно невозможно работать!», что «просто рынок изменился!, не имезнился мы бы огого!». Нам совершенно плевать на accuracy на трейне и даже на тесте. Мы как тот глупый учитель, который может не очень то и соображает зато у которого на клочке  бумажки записан правильный ответ, а напротив него ученик, в очечках, но у которого почему то при всех сплетнях что он в уме может перемножить трехзначные цифры, при сложения 1+1, получается то 5, то 6 то -32. Не, конечно вариант что мальчик в очечках не так уж и не прав возможен, может он считал в невклидовых метриках к примеру, или перемножать он умеет а вот что такое складывание ему просто не сказали.

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

....все тэги
UPDONW