Блог им. afecn19

CNN+wavelet

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

CNN+wavelet
Более 200 эпох нейросетка вообще ничего цеплять не могла, даже на трейне, болтаясь практически вокруг 50% угадайки. Тормознулось обучение на 7 часу обучения, по валидации. 

А это матрица, так хорошо знакомая всем машинленингистам пишущих на пайтон:
CNN+wavelet
По диагонали угаданное. В общем на тесте угадали 66,5%, на валидации 56%, а на тесте, что нас интересует больше всего — 60%.

То есть как бы и правда при падении и при росте частоты разные?! И мы типа это выловили?! Может быть, но это не точно. Смущает что картинки вейвлет преобразования выглядят жутко похожими:

CNN+wavelet

То есть преобразовывают в частоты разные графики, а на человеческий взгляд, картиночки выглядят одинаково. И визуально никаких периодов не выявлено. Но это на человеческий взгляд, если посмотреть на матрицы с цифрами, то можно увидеть что они разные, то есть формы на рисуночках одинаковые, но цифры за ними разные стоят.
Лейблы я ставил только два: рост и падение, а сами понимаете бывает рост на +0,1% и бывает падение на -0,1%, что практически одинаково. Поэтому если использовать оценки уверенности нейросети то получим более интересную картинку:
CNN+wavelet
Как видим если убрать случаи, когда нейросеть уверенно в своем решении  менее чем на 55% («50/50»), то как раз получим случаи со слабо выраженной динамикой. И наоборот, когда сеть уверенна в прогнозе на более чем 57,5%, то там и точность 67,87 (для роста) и 100-23,9  (для падения) и движение в предсказанную сторону более выраженное.

Как то так.

★1
12 комментариев
Браво, аплодирую стоя. Мне кажется ваш пост — издевательство над головами местной публики )) 
А вы что вообще хотели показать? Как круто вы овладели методами machine learning применительно к анализу временных рядов ??
Ну, вы хотя бы написали какой именно ряд (инструмент) исследуете, где зависимость то ищите ?
Если хотите, то можем пообсуждать… Вы с какой целью вейвлет преобразование применяли?
avatar
Alexey, все же написано. проверял гипотезу есть ли разница в частоте когда фишки растут и когда падают. а котировки это голубые фишки отечественные

avatar
Марат, 
уж простите меня, ваш пост начался с утверждения, что вы занялись бессмыслицей. И после этого утверждения сплошная бессмыслица у вас.
Вот, например, вы пишите: «есть или нет разница в цикличности при росте фишки и падении». Тут вам следовало пояснить разницу в чем вы ищите: в длине цикла или еще каких то характеристиках. Далее вам следовало пояснить, где вы цикл то ищите? Сам рост не может быть цикличным, а вот в временном ряду, который растёт, может быть цикличная компонента. Аналогично про падение. Вы представляете временной ряд как сумму компонент, одна их которых цикличная. Верно или у вас другая логика ?
Название инструмента, который вы исследуете нужно писать обязательно. Т.к. поведение разных инструментов разной. Нужно четко указать какие даты временных рядов вы берете. Во-первых, интересно. А, во-вторых, кто-то может захотеть повторить ваши исследования.
Но самое спорное, это применимость ко всему этому CNN. Нет, ну если очень хочется, то применить можно.
Вообще правильные статьи на такие темы имеют достаточно стандартную структуру и должны содержать определения и допущения на хорошем математическом языке.

avatar
Alexey, вот жеж отчитали. данные брал с 2008 до 2020, за вычетом неполных недель. ряд как сумму компонент не представлял да и нет там никакой цикличностей на неделях. по крайней мере ниже годичных циклов ничего не видел. разность инструментов меня не интересует, меня интересует их схожесть, единственно разбиваю фишки на голубые и «все остальное». на «правильную статью» не претендую ни разу. и покажите ваши статьи и результаты, любопытно посмотреть

avatar
В чем делаете вейвлет-преобразование?
avatar
ch5oh, на пайтон. есть библиотека pywt и scaleogram. Последняя буквально одной строкой кода строит скалограмы
avatar
плюсанул пост!
Люблю когда люди не просто пишут отсебятину, а делятся результатами своих исследований!
Где то у вас ошибка, вейвлет преобразование для таких графиков не может выглядеть одинаково. Особенно странно выглядят лучи, который из верхних углов расходятся. Как будто вы координаты местами перепутали при вызове функции
avatar

1. Почему займемся бессмыслицей? Результат вроде же норм). Или это из-за этого вэйвлета? Я просто не до конца понял, что это за хренована, видимо обучение после преобразования не позволяет это использовать в торговле?

 

2. А я когда недавно с нейросетями игрался останавливался на 1-3 эпохах, не до конца понимал, как они работают. У меня получалось, что лучшие результаты после 1-2, на 3-й уже начинают падать, возможно это какие-то локальные больше колебания, надо попробовать подольше погонять, дороговато, конечно, по времени на CPU нейросети обучать).

 

3. По табличке с пробами — странное какое-то представление данных. Я делаю так (и это намного наглядней и как-то логичней) — определяю пороги вероятностей и и считаю результаты общие для шорта и лонга, т.е. если порог 0.55, например, я смотрю долю верно спрогнозированных шортов и лонгов в общем (естественно, я смотрю лонги, по которым нейросеть на 0.55+ уверена, что это лонг, а шорты те, где нейросеть на 0.55+ уверена, что шорт).

avatar
 Щас глянул на график целевой метрики — какой-то он не здоровый по-моему)), по трейну белый шум, по отложенной стабильный рост, может подписи местами перепутаны просто)) — это было бы реалистичней).
avatar
Replikant_mih, верно. трейн и валидацию местами перепутал. и никто ведь не заметил

avatar
Марат, С поведениях на первых 200 эпохах тоже какая-то очень странная история по-моему)), я в нейросетях ещё не супер-спец, но это тоже выглядит очень странным моментом.
avatar

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

....все тэги



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