<HELP> for explanation

Рынок

Рынок | Учим нейросеть угадывать закрытие часа фьючерса РТС


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

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

 

Сорри за звук сразу ((((
Надо менять микрофон…
avatar

Svips

а как осуществлено преобразование цен во входные биты?
avatar

inc

inc, В библиотеке есть метод AddValueToEntry, туда даете число, и библиотека уже сама его преобразовывает в биты.
avatar

Svips

inc, Цена 159000 в бинарном виде будет как 100110110100011000, инженерный калькулятор в виндовс может помочь как это работает.
avatar

Svips

Svips, только «програмист» а не «инженерный»
avatar

inc

inc, )) ну это обычное преобразование систем счисления.
avatar

Svips

Правильно я ли я понял что у вас по сути она подобрала коэффициенты к уравнению вида F(X) = k1*x1 + k2*x2 + k349*x349 +k350*x350? Очень похоже это curve fitting
avatar

BiTrader

BiTrader, )) Мне сложновато мыслить подобными уравнениями ) Так как в сети 2 слоя, в первом 3 нейрона у каждого из которых по 350 входов, во втором слое 1 нейрон у него 3 входа. В итоге получаем что сеть подобрала значения к 350*3 + 3 = 1053 весам данной сети. То что вы записали в уравнении, это похоже только на обучение первого слоя, в итохе должно быть F(X1), F(X2), F(X3), и дальше F(Xвых) = F(X1) * k21 + F(X2) * k22 + F(X3) * k23. Если в ваших терминах.
avatar

Svips

Svips, под k21 я понимаю второй слой первый нейрон и тд
avatar

Svips

Svips, оч интересно, пишите еще! спасибо
krasoffka, На профит )
avatar

Svips

последний раз подобные окошки видел лет 10 назад
Александр Дрозд, Да, консоль — быстро просто производительно. Некогда работать над интерфейсом, даже над отлавливанием и проганием защит от дурака, как например в этом видео, не верно указан размер данных, не верно указан флаг в конфиг файле… Ибо таких прог в день можем написать от 1 до 10, так как идеи генерятся очень быстро, и все надо проверить, каждую нужно прогнать…
avatar

Svips

Svips, 350 входов на нейрон, повторяются ли входы у нейронов, или другими словами одни и те же данные поступают на несколько нейронов? просто не думал что их может быть настолько много, и правильно ли я понимаю что обучение сети это некий алгоритм оптимизации позволяющий найти такие коэффициенты, при которых сеть будет давать безошибочные ответы нейросети на обучаемых данных, потому как прямым перебором все растянулось бы на значительно долгий период?
krasoffka, не совсем понял, что значит повторяются ли входы у нейронов? У каждого нейрона во входном слое свои 350 входов, на все 3 нейрона подаются один вход в 350 бит.

350 это еще мало, и сеть маленькая… это просто для примера, что бы обучение быстро прошло.

Да, это некий алгоритм оптимизации, он «стандартизирован» и хорошо описан. Их есть несколько. Простыми перебором без вариантов.
avatar

Svips

Svips, эмммм… например на 1 вход 1 нейрона подается значение выражения a>b, в других нейронах есть ли на входе это же значение выражения a>b. извиняюсь за может не корректную формулировку
krasoffka, )))) если мы говорим про первый слой нейронов, то да. Т.е. например у нас 2 нейрона в первом слое, у них по 4 входа и 1 нейрон во втором слое у него получается 2 входа так как ниже 2 нейрона. Входной вектор тоже в этом сулчае должен быть равне 4рем. У нас есть входные данные: 0101, подаем их на первый нейронв Н1 = 0101, а так же на второй нейрон Н2 = 0101, эти 2 нейрона дают на выходе, Н1 = 1, Н2 = 0, в итоге мы имеем вход для нейрона вторго слоя 10, и подаем его Нвтрсл = 10, и этот нейрон выдает на выходе 0 — шортим )
avatar

Svips

Хочу разочаровать.

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

В вашем случае сеть просто запомнила все образцы.
Это легко проверить подав на вход сети данные которые не использовались в обучении.
avatar

habanera

habanera, Все верно вы говорите. У сети конечно есть собственная память. Но маленькая поправочка. В сети всего 4 нейрона. Входных данных больше 320… В видео я подавал данные которые не участвовали в обучении, и сеть давала как правильные так и не правильные ответы, после чего дообучалась. Если не ошибаюсь, то даже в плюсик можно было отторговать работая по ценам открытия\закрытия баров. Но в любом случае я с вами согласен. Чем больше данных для обучения, тем выше вероятность, что сеть нашла алгоритм, чем запомнила нужные входы. Это видео для демонстрации, и никак не претендует на реальную работу. Желание дать больше 1000 баров и писать видео несколько недель нет ))) Ну вы понимаете…
avatar

Svips

Svips, Забыл добавить. Информация в нейронной сети запоминается не в нейронах, а в синапсах.
В вашей сети 320*4 = 1280 синапсов.
habanera, верно. Только 320*3 = 960 и плюс 3 синапса выходного нейрона = 963
avatar

Svips

habanera, еще для эксперимента, оставил в сети всего 1 нейрон, и запустил обучаться на тех же 320 барах. Тоже обучилась. Дольше обучалась, но обучилась )
avatar

Svips

habanera, Еще поправка ) входных данных больше 400
avatar

Svips

Сейчас сеть сказала что в 12:00 цена будет ниже 158810… посмотрим.
avatar

Svips

Svips, угадала )) Сейчас гляну где будет цена в 13:00
avatar

Svips

Svips, говори что бар будет красным, т.е. цена в 13:00 будет ниже 158760
avatar

Svips

Лучшая нейронная сеть — это твоя голова!
avatar

Joystick

Joystick, +1, жаль что в ней есть эмоции ))))
avatar

Svips

Svips, а если их нет? Эмоций в голове…
Joystick, но с токой головой соревноваться почти не реально=(
Svips, скажите, а если скормить сети данные не за 2 месяца за более? Есть в этом толк?
Александр Шевченко, Конечно, так и нужно делать.
avatar

Svips

Очередная наука про подгонку исторических данных под реальность :)
avatar

astic

astic, Скорее автоматический поиск закономерностей ))
avatar

Svips

Svips, не занимайся ерундой не для того они предназначены :)
avatar

astic

astic, ну пока эта ерунда не плохо себя показывает — www.dirextrade.com
avatar

Svips

Какие имеются статистические доказательства того, что представленная нейросеть способна работать на новых данных?
Сергей Рожков, выше приведенный сайт.
avatar

Svips

Сергей Рожков, но там естественно далеко не представленная нейросеть, а гораздо сложнее. Видео, это просто демонстрация возможностей.
avatar

Svips

Сергей Рожков, в своем ЖЖ нет нет пишу что да как происходит…
avatar

Svips

Это не доказательство. Как минимиум слишком короткий период наблюдений. Случайный (random, броуновское блуждание) алгоритм вполне может и не такие графики сделать на коротком периоде. Я надеюсь это не результаты исторического моделирования хотя-бы?
Сергей Рожков, Согласны, что 4 недели это не срок. Но это только то время, которое мы показали публично. До нового года робот успешно торговал 3 месяца. Посмотрим сколько он еще продержится без переобучения. И естественно это не результаты исторического моделирования, это сделки робота в реальном времени, можете последить и убедиться. У нас достаточно опыта, что бы понимать то что результаты теста на истории в алготрейдинге ничего общего не имеют с реальной работой того же алгоритма на тикающем реалтайм рынке.
avatar

Svips

Svips, т.е. сеть уже больше трех месяцев работает без переобучения, я правильно понял? это принципиальная позиция или просто экперимент? т.е. в реальной работе вы планируете постоянное переобучение или все-таки фиксацию обученной сети на какие-либо промежутки времени?
Каленкович Алексей (enki), Да, сеть уже больше трех месяцев работает без переобучения. Это не принципиальная позиция, пока результат ее работы устраивает мы ее не переобучаем. Как только начнет лосить больше чем надо, запустим на обучение.
avatar

Svips

sam063rus, не знаю, еще не было прецедентов )))))) Но думаю так как у него хорошо получается тянуть позы, то если уж встанет в нужную сторону то возьмет все )))
avatar

Svips

Svips, не было прецедентов с какого времени? когда начали реально торговать
Каленкович Алексей (enki), да, небыло в данных на которых она обучалась и на которых она работает сейчас в реальном времени на реальном рынке. Торгует с конца прошлого года.
avatar

Svips

Svips, результат вполне ожидаемый. характер рынка за последние несколько месяцев не менялся. интересно было посмотреть как поведет себя сеть за сентябрь 2012. именно эта сеть. или она при обучении видела те данные и полностью на них оптимизирована?
Каленкович Алексей (enki), Да, обучалась на данных 2012 года. На них же и стартанула торговать с 10-го месяца. Получается что обучена на данных (грубо) с 01.01.2012 до 01.10.2012. С тех пор работает и показывает положительную динамику с удовлетворительными просадками. Можно конечно ее запустить на обучение, что бы она уже приняла во внимание все свои косяки за этот период времени, но блин сколько это займет времени, неизвестно. Пробовали пусть ради теста, в итоге после двух недель беспрерывного обучения еще не дошла до 100% сигналов.Поэтому пока не трогаем. Но думаю еще пару недель, и придется поставить параллельно обучаться. А эти «знания» продолжат торговать.
avatar

Svips

Svips, немного непонятно ваше стремление к 100% обученности сети. думаю лучше искать другие критерии для оценки. например ввести fuzzy logic в оценку качества предсказаний (это уже пошли «мои секреты»). в прошлом году как раз собирался вернуться к нейросетевым исследованиям. надеюсь что в ближайшее время все-таки начну. спасибо за ваш «пинок под зад», еще острее дали почувствовать перспективность НС в которой я вобщем-то никогда и не сомневался.
Каленкович Алексей (enki), Да, тоже приходим к тому, что на больших массивах данных достичь 100% просто нереально, или на это уйдет очень много времени в подборе топологии сети и ее обучении. Гораздо легче остановиться на каком-то приемлемом коэффициенте ошибки и не допускать что бы ее значение росло.

Рады что это вас с мотивировало, от части для этого и создавали топик, ведь интересная тема, а народ не придает ей должного значения. Нейросети скоростными поездами управляют, а тут какой то рынок быхххх… )))
avatar

Svips

Просто понимая, насколько сложна задача, которую вы пытайтесь решить, хотелось бы получить более-менее адекватное доказательство успешности системы в будущем (как доказывают статистические гипотезы, не обязательно академически строго, но хотя-бы увидеть попытку).
Сергей Рожков, Ну… доказательств нет. Если вас это устроит )))) Сами бы хотели получить эти данные. И единственный для нас способ, это вот так запускать стратегию торговать 1-5 контрактами и смотреть что будет. Все графики доступны на сайте, статистика тоже. Вот и посмотрим через год, как оно…
avatar

Svips

Svips, а как вы определите, какой срок наблюдений будет достаточным? Почему год, а не меньше или больше?

Не слишком ли вы легко расстрачиваете собственные ресурсы на эксперимент длинною в год, не имея предварительных вероятностных оценок того, что нейросеть способна работать на новых примерах (обобщать)? Ну типа того, что с надежностью 0.95 доходность системы лежит в границах (-5%,+15%) при следующих допущениях… Допущения можно обсуждать, критиковать, но это уже хоть какая-то опора.

Расскрою «страшный» секрет, из-за того, что на рынках существуют кросс-зависимости между инструментами и времеенные зависимости (все-таки рынок это временной ряд) мы имеем реально примерно 12 независимых испытаний. Именно 12 (группируем результаты по месяцам), а не столько, сколько совершено сделок. Внутри месяца зависимости нельзя игнорировать.
Сергей Рожков, Мы не определяем какой срок будет достаточным. Мы как и все алготрейдеры, когда видим, что система дает деньги, сразу вешаем ее на реальный счет и «доим» ее пока дает… Единственное наше приемущество или недостаток, так это то, что мы не знаем алгоритма наших систем, ибо нейросеть это настоящий черный ящик. Но как только нам что-то не нравится мы запускаем ее на обучение на всех данных с которыми она когда-либо сталкивалась и никогда не уменьшаем их количество. Т.е. не движемся окном или фреймом. Только для новых топологий или входных данных мы можем сократить этот интервал данных но не менее чем последние 6-9 месяцев. Если за этот срок она дает 100% сигналов, то дальше идет реалтайм, если там ее результаты устраивают, то пускается на реальный счет и так по кругу.
avatar

Svips

Ребят, всем кто не знает что такое нейросеть, а узнать хочется и понять как она работает, рекомендую прочитать это kond-mariya.narod.ru/nauka.html Что бы вы хоть отдаленно понимали о чем я говорю в ответах. И могли задавать более правильные вопросы. Спасибо.
avatar

Svips

Вот еще отличный материал: habrahabr.ru/post/40137/
avatar

Svips

Интересно, а почему часовики? 10-ти минутки, например, не пробовали монетизировать?
avatar

kashtan1

kashtan1, ))) мы пробовали много чего. Тут часовики просто для примера. Под них есть уже чуть разработанная база как и что давать сети, что бы она смогла смозговать… На них так же было удобно показать как сеть угадывает следующий бар, и что значение его вполне монетизируемо даже на такой кривой сети. Может если не лень будет, завтра даже запишу видео посчитав ПЛ по ценам открытия закрытия часовиков.
avatar

Svips

kashtan1, не то что бы 10-минутки, но и часовики для нейросети на данных OHLC слишком примитивны. Я вот буквально на выходных гонял нейросети для вычисления закрытия на понедельник фьючерса S&P500 и вот что получилось:

Немного поясню: 9 секторов (через биржевые фонды) и биржевой фонд на выходе (как аналог фьючерса S&P500)…
Как итог — ошибки порядка 0.5-1.5% для дневных данных
Ну, как я понимаю, алгоритму все равно 10 мин или час, если OHLC на вход подается, но при таком же %% удачных предсказаний на 10 мин кривая доходности еще красивее была бы
avatar

kashtan1

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

Svips

Svips, Сеть угадывает направление. А какие особенности стратегии робота, результаты торговли которого выложены на сайте? Открывается в начале дня, закрывается вечером? Оптимизируются стопы, размер позиции и как она набирается? Что еще кроме направления «считает» сеть?
Владимир С., Робот на сайте — скальпер, сеть получает определенные данные на вход, и «говорит» будет рынок расти или падать, исходя из этого робот держит позицию.
avatar

Svips

Svips, А вероятность определения цены актива сетью низкая? Пытались это делать? Какие результаты? Пару лет назад видел простую сеть, которая определяла close следующего часа на акциях Газпрома. Фикция это или нет сказать не могу точно)
Владимир С., Это возможно, но очень сложно. Пытались, что то получалось, но слишком много сил и времени на это уходило. Не делаем это сейчас.
avatar

Svips

Svips, Смотрели ли вы на софт по сетям? Он не пригоден в принципе, поэтому написали свой?
Владимир С., Несмотрели. Пользуемся только своими разработками.
avatar

Svips

Svips, Что еще подаете на вход?) Объем, сантимент? Намекните хотя бы)
Владимир С., Это закрытая информация )))) Используем только данные цен.
avatar

Svips

Да, очень интересное видео. :) Никогда не писал ничего на основе нейронных сетей, но всегда было интересно попробовать. Кто его знает даст ли это стабильные прибыли в трейдинге, но все равно ж интересная штука. :)
avatar

KMiNT21

KMiNT21, Штука не просто интересная, а завораживающая ))) Особенно когда первый раз удается обучить сеть на истории на 100% и потом она пару дней выдает 90% сигналы… ум… потом уже никакой способ анализа рынка не устроит. )))
avatar

Svips

Svips, а что, если нацелится на другой конечный результат? Не 1/0, а на вероятный процент изменения цены? Т.е., пусть первый бит — это будет знак + или -, а остальные Х бит — это коэффициент? Правда, как это «в лоб» сделать — я пока не представил.

Или, как вариант, высчитывать коэффициент итерациями по минутным данным. Пример:

В текущем варианте часовых данных получили ответ из «черного ящика» 1 или 0. Далее — через минуту берем новую порцию данных и снова получаем 1/0 (например, для второго сети, которая обучена на минутах). Через минуту — еще. И в реал-тайм пересчитываем вероятность и выдаем пользователю результат. А он — или ждет дальнейших итераций, или принимает решение… как-то примерно так, что ли…
KMiNT21, Конечно можно как угодно уже кружить. Более того, можно этой же сети, что в видео, давать данные не по закрытию часа, ка каждую минуту, и она будет сообщать как закроется текущий час. Идей очень много. Жаль что только на их проверку уходит очень много времени… А если на выходе сети больше оного бита, так вообще…
avatar

Svips

Svips, первое, что приходит в голову глядя на вашего робота — надо на выходе выдавать не 0 или 1, а хотя бы 3 значения 0, 1 и скажем 2 — это находиться вне рынка, т.к. есть моменты на рынке когда лучше не торговать (если велика вероятность ошибки или высока цена ошибки)
cheralor, Возможно, но в это случае сложность возрастает в разы, а вероятность положительного результата уменьшается в разы. Так как имея на выходе больше 1 бита, сеть увеличивает время обучение. Более того, так как тут идет обучение с учителем, то что бы научить сеть выдавать, скажем 2, то нам самим надо знать когда это «2» уместно. А мы этого к сожалению не знаем. Или знаем с очень низкой вероятностью. Соответственно это только усложнит все, а результата не даст. В таком случае, если вы понимаете что сейчас не время торговать, легче просто руками выключить робота.
avatar

Svips


Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.

Залогиниться

Зарегистрироваться
....все тэги
Регистрация
UP