Pull to refresh

Comments 48

Увеличится ли эффективность прогнозирования поведения цены финансового актива нейронной сетью, при включении результатов анализа событийного потока в состав модели данных?»

Нет не увеличится.
Причин несколько. Одна из главных: индукция не работает для системы финансовых активов.
В общем случае, поведение сложной реальной системы невозможно предсказать.
1. Обычно не учитываются сложные связи между элементами модели.
Например, важны связи между элементами системы. Но их определить невозможно по имеющейся информации. Восстановление структуры системы по ее отклику всегда дает неограниченное количество возможных вариантов структуры системы.
2. Обычно используются упрощенные аналитические модели 1 порядка. Для задачи о финансовых рынках такие модели не применимы. Совсем неприменимы.
А аналитически (через логику и рассуждения) построить можно только простейшие модели структуры системы первого порядка. Реально на поведение такой сложной системы влияют события более высоких порядков.
3. Учитывается статическая структура системы, а в реальности она динамическая. Причем изменяются элементы системы, их связи, поведение элементов.
И это только про статические модели системы. Еще сложнее построить структуру моделей в динамике (изменение во времени).
4. Не учитываются эффекты возрастания сложности (и потеря адекватности) модели системы при введении новых параметров.
Использование значимых параметров — тоже плохой вариант. Сложность поведения модели системы при добавлении одного параметра может вырасти на несколько порядков. Причина: нелинейные связи или нелинейное поведение хотя бы нескольких элементов.

Это только самое простое.
Самое главное: зачем придумывать и развивать неверные направления моделирования? Эти вопросы уже лет 30 отработаны, проверены — не работает. Даже на нейросетях и прочем хайпе — не работает. Неверный подход. Это как измерять температуру «пространства» в космосе. Можно использовать разные методы, получить результаты от -150 до +4 С. Но непонятно температуру чего измеряют?
Или использование градусника для измерения скорости. Не тот инструмент!!!
Рекомендую начинать работу в этом направлении хотя с анализа уже использованных методов для этой темы. Особенно доходчиво объясняется эта тема у моего любимого писателя — Николаса Талеба. В его серии книг «Инсерто» («Одураченные случайностью» и далее).
Можно начать с Каннемана «Думай медленно, решай быстро». Тогда становится понятно, почему именно большинство людей почти всегда неправильно подходят к моделированию сложных систем. Так устроен разум человека, особенно если нет охоты мыслить. Тогда используется система 1, которая находит быстрые, простые, логичные, очевидные неправильные решения.

Спасибо за рекомендованную литературу.


Было бы странно не согласиться с приведёнными тезисами. Однако путь на «плечи атлантов» необязательно должен идти исключительно через теории, часто возводимые некоторыми в степень догм. Бывает просто-напросто увлекательно убедиться на практике, что все работает именно так, как теорией предусмотрено. А если повезёт — в процессе такой «проверки мира на прочность» ещё и что-нибудь новенькое найдётся.


Мое копье, несмотря на незначительный положительный результат, которого удалось достичь, как и тысячи копей до этого, осталось сломаным на этом поле битвы. Но это не повод принципиально обходить поле битвы стороной.
Я получил колоссальное удовольствие просто от самого процесса исследования. Быть может кто-то, найдёт для себя нечто полезное в моей работе. Быть может (и я на это очень надеюсь), кто-то вдохновится ей пойдёт дальше, добившись куда более значительных результатов. И речь не обязательно про прогнозирование котировок.


В моём представлении практика, определяемая неудержимым любопытством — существенная часть прогресса. А к прогрессу хочется быть причастным.

«Мое копье, несмотря на незначительный положительный результат, которого удалось достичь, как и тысячи копей до этого, осталось сломаным на этом поле битвы.»
Надо было реально показать «незначительный положительный результат», тогда бы это вранье прошло незамеченным.

Я далёк от механики нейросетей, но изучал довольно плотно технику торговли таких финансовых инструментов. Вы идёте не тем путем. Биткоины это чисто скальперский инструмент. Более фундаментальный и прогнозируемый же инструмент этофьючерс на индекс РТС с его открытым интересом и его производными (число сделок на открыиме/закрытие и суммарная позиция покупателец/продавцов). А так же его поводыри. Это Сишка и MOEX10.

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

Ознакомлюсь с большой радостью) Всегда открыт к конструктивной дискуссии. Если не затруднит — напишите мне в личку.
ОФФ.
использование градусника для измерения скорости. Не тот инструмент!!!

Смотря как использовать. Есть датчики скорости потока воздуха для вентиляции где для определения скорости используют термометры!.. Вот даже статья была с описанием есть: habr.com/ru/company/efo/blog/280031

Выходы сети биткоина плохо подходят для такой аналитики как минимум потому, что они никак не связаны с объемами торговли. Ведь торговые сделки на бирже не связаны с транзакциями в сети. Биржа торгует виртуальными циферками, а транзакции возникают лишь при выводах и вводах денег.


Обычные объемы торгов более показательны.


Ну и многослойная полносвязная сеть, имхо, не очень подходит для анализа временнОго ряда. Для таких задач больше подходят рекуррентные сети.


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


Однако, боюсь, в конечном счете это сведется обратно к кормлению сети свечами с ожиданием угадывания t+1 свечи.

О! Да это же сам автор вдохновившей меня статьи! Приятно находиться в вашей компании, сэр) *снял шляпу в приветственном жесте

Что касается выходов сети биткоина, как плохого выбора для аналитики по той причине, что торговые сделки на бирже не связаны с транзакциями сети — здесь я позволю себе подискутировать. Я исходил из предположения, что участники биржевых торгов представляют собой большое разнообразие. Это не только спекулянты в чистом их виде, но и представители обменников, активные трейдеры на таких ресурсах, как localbitcoins, платежные агрегаторы и иные, с позволения, «пространственные арбитражники». Все они вынуждены калибровать свои позиции при торговле со своими клиентами. Эти операции находят свое отражение как в транзакциях в сети биткоина, так и, частично, в биржевых торгах.
Если под этим углом посмотреть на работу, то можно сказать, грубо, что мы пытались выяснить насколько активность таких участников торгов влияет на биржевой курс актива.

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

Ну, исследование, есть исследование. А отрицательный результат тоже результат.

Автор ответьте, пожалуйста, а сколько фич было на входе при обучении нейросети? Т.е. сколько элементов во входном векторе и сколько самих векторов???
Нашел на вашем гитхабе следующую инфу:
1. всего данных для обучения — 2500
2. в каждом по 5 фич.
Но, мне кажется с такими данными и такой конфигурацией нейросети невозможно получить прогноз который вы рисуете. Или я не прав?
И еще вопрос, в статье упущена главная инфа — какие данные и за какой период подавались нейросети для обучения? В приведенной табличке цена имеет только один знак после запятой, как такое может быть??? Прогноз с такой же точностью?
Автор, по структуре нейросети проясните, пожалуйста. Я правильно понял, что в ней 5 слоев из которыз 4 по 32 нейрона, один 16 и выходной 1?
Какая активация у выходного слоя?
В табличке «датафрейма» странные данные в колонке «Change%», они не связаны с другими колонками, это изменение чего?
График прогноза просто потрясающий! Невероятно крутой прогноз да еще и с шагом 1 день!!! Только что бы можно было поверить в эту сказку надо ответить на главный вопрос — что скармливалось нейросети?
Если это секретное know-how тогда хотябы укажите за какой период и какое количество фич в каждом векторе.
Уточню вопрос. Вы на гитхабе показываете табличку с входными данными. Вы их построчно скармливали сети для обучения или объединяли в пулы? Вопрос простой, но важный, по ответу можно будет понять выбор конфинурации нейросети.
Внимательно изучил ссылку на гитхаб, вот инфа которая спрятана за демагогией:
1. для работы используется самая простая нейросеть («Hello world»), да еще и неправильно сконфигурированная;
2. входные данные — четыре цены дневной свечи + объем + изменение цены (более примитивный набор трудно придумать);
3. обучние на 2500 примеров.
4. прогноз на 1 свечу.
В результате фантастический по точности прогноз показанный на графике!

Хабр! Как здесь может быть такое вранье???
Добрый день.
Приятно потрясен, что статья вызвала у вас такой активный отклик) Пройдемся по пунктам.

1. Представленная нейросеть ни в коем случае не претендует на статус «state-of-art». И если вы готовы поделиться своими взглядами в отношении более, по вашему мнению, грамотной ее конфигурации, я буду рад с ними — взглядами — ознакомиться.
2. Входные данные — дневные цены Open, Close, High, Low, объемы торгов, дневное изменение цены и, что немаловажно, информация об объемах выходов транзакций сети биткоин. Ну, вы же читали статью? Мы там «Годзиллу» искали.
3. Все верно.
4. Если быть более точным — прогноз на цену закрытия следующего дня.

В результате суровый лик реальности не оставил никаких шансов на фантастику. Прошу, ознакомьтесь с результатами работы внимательнее. Они далеки от фантастических.

Ну а что касается «вранья» — вы, следуя вашим заявлениям, уже исследовали проект на GitHub. Думаю, вам не составит труда запустить представленный там код собственноручно и воочию убедиться в воспроизводимости результатов.
Опять демагогия ))
"Представленная нейросеть ни в коем случае не претендует на статус «state-of-art»" — она даже не претендует на работоспособность.
Ваша сеть + входные данные не могут дать такой результат как на графике, даже близко!
Более того, такая конфигурация не покажет признаков обучаемости.
Запустите уже и узнаем :) Всем интересно.

Но соглашусь, что происходящее на графике больше похоже на глубокую переобученность.
переобученность не может отражаться на этом графике, вы тоже эксперт?
Да запустите уже у себя и напишите статью-ответ. С анализом. С выводами. Разве это не интереснее, чем наезды в комментариях? Ну правда, раз уж занялись всерьез этим вопросом.
Это не переобучение. Это просто случайность. Возьмите 100 случайных чисел, постройте их график. Потом возьмите эти 100 случайных чисел и случайно прибавьте к каждому число, например, от -5 до 5. И постройте график новых 100 чисел поверх старых. Графики точно так же будут близки друг к другу. И именно это и делает модель — предсказывает следующую точку по одной предыдущей. Не удивлюсь, что простая baseline-модель «завтра цена будет как сегодня» дала бы большую точность. Короче, модель и рассуждения совершенно мимо.
Но за старание можно плюсик поставить. Чтобы не просто критиковать, то могу посоветовать смотреть на кривые обучения и давать их в качестве иллюстрации, а не табличку с последними 5 эпохами, а также чуть лучше освоить pandas — читать код больно, многие вещи, которые сделаны в 5+ строк кода делается одной.
И именно это и делает модель — предсказывает следующую точку по одной предыдущей.

Посмотрел внимательнее. Согласен. До этого по-диагонали мельком пробежал, каюсь.
За конструктив — спасибо.
Соглашусь. Не сравнить результаты с «наивным предиктором» — кощунственное упущение. Исправлюсь.

Я как-то подобным баловался, и точность прогноза следующей свечи получилась просто невероятная, 99.99% или в районе того. Когда порадовался и распланировал, на что буду тратить миллиарды, решил всё же разобраться. Оказалось, что я нормировал N-1 значений по среднему из N значений (последнее из которых и должна была предсказывать сеть). Сеть научилась выводить это значение из получающегося отклонения от истинного среднего между N-1 значением. Но фокус занятный получился, который ещё раз напомнил, что нейросеть — это просто такой инструмент, который (как и традиционные программы) делает не то, что ты хочешь, а то, что ты ей прикажешь. В общем, будет срезать углы максимально, лишь бы достичь результата, но необязательно тем путём, который ты ожидаешь.

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

Интересно накинуть sentiment-analysis на все популярные новостные ленты о блокчейнах и поймать хоть какую-то корреляцию с ценой. Пытался это делать своей биологической нейросетью — ничего не ловится, вернее, изменение цены всегда влияет на новостной тон лент, но не наоборот.

изменение цены всегда влияет на новостной тон лент, но не наоборот.

Ага. В этом и прикол: выходные данные (курс чего-то завтра) и входные данные (курс текущий, аналитические параметры) взаимозависимые в реальности. То есть в реальности всегда идет не действие, а взаимодействие. Если это не учитывать — то возникает ошибка номер 3.
Ошибка номер 2: моделирование в статике, а не в динамике.
Ошибка номер 1: не понимание разницы между мало-мерной репрезентацией системы и много-мерной реальной системой.
Ошибка номер 0: применение математического аппарата для построения моделей реального мира без доказательства адекватности этого аппарата решаемой задаче. Кто и почему решил, что для задачи моделирования финансовых систем можно применять статистику, вероятностные модели, да и сами нейросети?
То, что статистику (и эконометрику) нельзя применять для такого класса задач доказано более 50 лет назад, Бенуа Мандельбро. И потом были сотни исследований.
Вероятностные подходы — финансисты и экономисты не понимают их и не умеют ими пользоваться. Пример: вероятность по ансамблю (группе) данных путают с вероятностью по времени.
Про метрологию (что меряем? как? каковы оценки достоверности данных?) тоже никто не думает.
Нейросети для анализа и синтеза временных рядов применять можно. Только результат будет в рамках этих временных рядов. Прогноз (по сути сложная корреляция) имеющихся данных по курсу биткойна и уровня осадков в Монголии может быть всегда найдена. Причем чем больше выборка — тем более вероятность такой корреляции. Но она ничего не значит, она случайная.
Прогноз курса (и поведения сложных систем) невозможен! Никак, никакими методами. От слова «совсем». Даже если научится решать n-полные задачи. Даже если применять всю вычислительную мощность всех компьютеров в мире.
Не тот инструмент для этой задачи.
Это не я все придумал! Я только привел несколько соображений от Николаса Талеба. Прочитайте! И не «делайте людям нервы»…
Прогноз курса (и поведения сложных систем) невозможен! Никак, никакими методами. От слова «совсем».

Угу. Если речь идет об «идеальном сферическом маркете в вакууме». А если речь идёт о явно сильноманипулятивном рынке (где есть огромный дисбаланс распределения ресурсов), каковым сейчас и является биткойн, то возможно что Вы не так уж правы))

Интересно сравнить ваш предиктор vs martingale модель:
close{t+1} = close{t} + \varepsilon_{t}
Т.е. оценка цены закрытия следующего дня — цена закрытия текущего дня плюс шум. Подозреваю он будет точнее, чем все эти навороты с нейросетями)

Представьте, что вы нашли алгоритм устойчивого получения высокой доходности с рынка. Фактически, это денежная машина. Какая вероятность того, что вы броситесь этим делиться?

Общей концепцией, в общем-то можно поделиться. Идея не стоит ничего. Концепция — ничто без реализации. А реализация у таких вещей, обычно, сложнее, чем представленный в статье код.

Зачем? Какая мотивация показать, где копать?

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

У вас, случайно, нет ответа на вопрос, зачем некоторое время назад Тесла открыла все свои патенты по электромобилям для всех желающих, включая конкурентов?

Есть. Только это совсем другое. Хотя бы то, что патенты изначально открыты… Впрочем, я не могу помешать верить в чудо

Впрочем, я не могу помешать верить в чудо

Дело не в этом. Просто мир сложнее, чем вам представляется.
Мотивация простая- похвастаться) Люди- такие люди: хлебом не корми, дай почесать чсв))
Представьте, ...

Представил. Это не сложно.
Сложнее проверить, что мое представление как-то соответствует реальности.
Если программа работает в автоматическом режиме значительное время, без вмешательства человека — значит действительно это алгоритм.
Если же надо периодически что-то «допиливать» руками — тогда это не алгоритм, а еще один костыль для трейдера.
Кстати, если кто-то используя программу получил один раз доход — это не доказательство корректной работы. Просто обычно нет информации, что 1023 человека из 1024 получили убытки используя эту программу. Случайное предсказание из 10 шагов дает такой результат.
Схема известная: посылаете 1024 человекам 512 предсказаний «рост» и 512 «падение».
В реальности курс упал. Повторяете то же самое для тех 512, кому прислали «падение» на 1 шаге. И так все 10 раз подряд. В конце остается один человек, которому вы точно предсказали 10 раз рост или падение курса биткойна. Продаете ему свою программу: он будет уверен, что она работает, ведь 10 раз точно — это не случайность! Не случайность для него.
Профит.
Прежде чем бросаться нейросетями, всегда нужно пробовать простые линейные модели. Они легко интерпретируются, так что вы легко выясните, что лучше всего цена на сегодня прогнозируется ценой за вчера, а все остальные данные модели и нафик не нужны.
Если рассматривать не цены на рынке, а какие-то другие данные из разряда «временные ряды», то там ещё могут быть всякие интересности типа сезонности и там можно строить модели типа ARIMA/SARIMA/ARIMAX и т.д., которые выводят таргет за сегодня через таргет и его усреднение за некие предыдущие периоды. На биржевых котировках эти модели, к сожалению, не работают от слова совсем.
Здравствуй Хабр! Читаю тебя около 4 лет.
Ув. автор статьи, Вы вообще не поняли о чем пишет Ваш оппонент в замечательной и остроумной статье «Мечтают ли нейросети об электроденьгах?». Суть статьи в последнем пункте раздела заключение (для Вас укажу конкретно пп.11 ).
Ну и для тех кто все равно не понимает, что же можно исследовать в фин. временных рядах — там очень мало нужных данных! Все что там есть это проверка Вашей стратегии, а не предсказание будущего!
Специально для AnkyDu77 попробую «объяснить на пальцах»… отстранимся от мира финансовых воротил и вернемся в добрые игры, пусть это будут шахматы.
AnkyDu77, Вы пытаетесь с помощью нейросетей угадать какой сделает следующий ход соперник, согласитесь, что так не работают шахматные программы!
Признаться, я не эксперт в архитектуре шахматных программ. Тем не менее, я попытаюсь предположить как выглядит ключевой компонент логики, лежащей в основе подобного ПО.

Шахматы — игра с фиксированным набором правил и очень большим, но все же конечным количеством возможных комбинаций ходов. Количество комбинаций, ведущих в выигрышу или проигрышу под влиянием стратегий игроков друг на друга с течением времени игры существенно сокращается. Это открывает возможность к построению выигрышной стратегии по принципу:

«Если я схожу таким образом, это оставляет для моего оппонента такой-то ряд возможностей. Если будет реализована возможность (а) я схожу следующим образом, что для оппонента откроет ряд возможностей (а1), если возможность (б), то у оппонента будут возможности (б1)… », и так далее.

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

Более того, если мы будем регистрировать набор возможных стратегий для каждого состояния доски во время игры, мы получим не что иное, как многомерный временной ряд, анализ которого как раз имеет своей целью построение выигрышной стратегии.
Это к тому, что временной ряд временному ряду — рознь. Fell-x27 в своей — здесь я с вами абсолютно согласен — замечательной статье говорил об анализе одномерных временных рядов, построенных на основе значений цен актива за предыдущие периоды. Я в своей работе предпринял попытку поэкспериментировать с составом анализируемых данных. Этот состав описан в статье. Там же приведены и результаты.

При этом с вами сложно не согласиться относительно небольшого количества полезных данных, содержащихся в общедоступных источниках. Чтобы найти существенную связь между данными в них содержащимися и процессом ценообразования, нужно изрядно попотеть, применяя часто нетривиальные подходы. А если принять во внимание, что рынок система динамичная — те правила, что работают сегодня, могут утратить свою актуальность завтра — задача становится многократно сложнее, чем блестящая игра в шахматы. Но именно по этой причине рассматриваемая задача становится такой привлекательной)
Просто замените строго детерминированную игру «шахматы» на стохастическую, но, при этом, зависящую от навыка игрока игру «покер» и все встанет на места.
да — шахматные программы именно что стремятся рассчитать следующих ход соперника, исходя из (а) текущей расстановки фигур на доске и (б) собственного множества возможных ходов с тем, чтобы получить информацию для расчета последующей выигрышной стратегии.

я тоже не знаю как работают шахматные программы
но суть игры в шахматы получить преимущество, а не угадать какой ход сделает соперник
Так и в контексте статьи и самих рыночных данных — не нужно искать прогноз, нужно делать ходы (открывать и закрывать ордера) с целью (надеждой? ) получить преимущество… но при таком подходе возникает другая проблема трейдинга, проблема в увеличении риска.
Ну а предсказывать рынок — наибесмысленейшее занятие, т.к. цена всегда ходит в 2 стороны — и вверх и вниз, но когда? насколько длительно? а когда прогноз считать недействительным? — тут вопросов всегда больше чем ответов, да и не может быть этих ответов, если опять «на пальцах» — то примерно как: Вы учите нейросеть управлять автомобилем смотря в зеркало заднего вида — согласитесь, что это бессмысленно на новых данных
Only those users with full accounts are able to leave comments. Log in, please.