sergeygaz
sergeygaz личный блог
01 апреля 2019, 12:44

Как я искусственный интеллект торговать научил

Однажды великий гуру трейдинга и знаток анекдотов Александр Михайлович (который Герчик) в одном из своих семинаров рассказал про один случай, когда он пытался алгоритмизировать работу с уровнями и нанял целого математика, чтобы тот разработал мат.аппарат и запрограммировал сигналы для отбоя/пробоя. Целый математик бился над задачей как рыба об лед, но, видимо, математик он был так себе и поэтому задачу решить не смог.

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

Потом времена ушли далеко вперед и появился Искусственный Интеллект (ИИ), который легко решает эту задачу, даже без понимания, как оно должно работать.
Собственно, ИИ появился еще лет 50 назад. Но в те давние времена (уже почти былинные), когда и трава была зеленее и небо голубее, компьютерное железо было не способно решать задачи такого уровня. Сегодня ситуация изменилась.

ИИ сейчас развивается семимильными шагами.
У всех сейчас на слуху глубинное обучение, нейронные сети и прочий мэшинг лёнинг.
ИИ уже обыгрывает человека в шахматы, ИИ умеет определять, кто изображен на картинке. Доисторический ИИ давно умел распознавать дорожные знаки, а современный ИИ уже умеет водить машину без водителя.
ИИ уже умеет понимать человеческую речь и умеет переводить с любого языка на любой.
ИИ уже может узнать человека по его лицу.
ИИ уже сегодня может выдержать 5-тиминутный тест Тьюринга, а лет через 7 сможет пройти его полностью.


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

Однажды у меня возникла идея: а не прикрутить ли ИИ к торговле и не обыграть ли мне это казино биржу?
Ведь ИИ сможет определять тренды и паттерны за меня, обучаясь самостоятельно.

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

Во-первых, я открыл для себя такой гениальный язык, как Python.
Как думаете, сколько строчек занимает программа на питоне для распознавания текста из картинки? 4 строки!
А программа на питоне, читающая данные из Excel, выполняющая их фильтрацию и выводящая гистограмму? 6 строчек!!
В какой еще полноценной программе, работающей и на Windows и на Маке и на Линуксе, вы сможете нарисовать синусоиду всего за 5 строк кода?!

Во-вторых, для питона разработана огромная куча библиотек, в том числе мощнейшая библиотека для машинного обучения от самого Google, позволяющая строить нейронные сети всего за 30-40 строчек кода.


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

В итоге получилась модель, которая получает на входе примерно 30 параметров и предсказывает цену актива в следующем временном периоде.

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

Из интересного:

— Логику принятия нейросетью решений объяснить нереально. Модель каким-то образом видит известные мне паттерны. Плюс она видит что-то еще, мне непонятное.

— Уровни таки работают (Тимофей, привет!). За все виды уровней не скажу, но проверенная мной пара вариантов — да.

— Технический анализ в отрыве от фундаментала — работает

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

175 Комментариев
  • Anton Shabunin
    01 апреля 2019, 12:50
    Тема си   цифер (какое преимущество?) не раскрыта.
      • VladMih
        01 апреля 2019, 13:40
        sergeygaz, так хоть голый результат показали бы.

        — Технический анализ в отрыве от фундаментала — работает
        Зачёт! +100500
        Наконец-то у меня будет доказательство )))
        Впрочем, большинство роботов и до этого на 99% без ФА обходилось.
      • Андрей Герц
        01 апреля 2019, 19:52
        В итоге я создал нейронную сеть, которую обучил на 4 000 000 исторических котировках. Все по науке — обучающая выборка, валидационная, тестовая.    


        Вы правда думаете что до Вас этого еще никто не делал? А если делал, и ничего путного не вышла, то где здесь наука?



  • Pringles
    01 апреля 2019, 12:50
    Предсказать цену актива в следующем году или даже в следующем месяце можно, но точность будет крайне низкая

    такой прогноз любой аналитеГ без всякого ИИ сделает
  • Kapeks
    01 апреля 2019, 12:53
    лям баксов сделал?
      • Kapeks
        01 апреля 2019, 13:17
        sergeygaz, а ну ясно. тебя ждёт множество открытий.
          • Леха Майтрейд
            02 апреля 2019, 09:20
            sergeygaz, например что все твои открытия имеют нулевое мат. ожидание)).
            • Sergii Onyshchenko
              02 апреля 2019, 14:14
              Леха Мартьянов (my-trade), предлагаю проверить матожидание отбоя от зеленой (и оценить соотношение стоп-профит при отбое)



              ориг
  • Андрей К
    01 апреля 2019, 12:54
    А в продакшн вывели? И если не секрет, как быстро такая штука принимает решения?
      • Андрей К
        01 апреля 2019, 13:13
        sergeygaz, 
        А вот обучение модели это долго (расчет идет 5-8 часов).
        чисто для саморазвития. А обучение — это свой написанный софт или питоновские готовые примочки? Поддерживает ли эта штука многопоточность распараллеливание? 5-8 часов в один поток? 
          • Андрей К
            01 апреля 2019, 13:28
            sergeygaz, спс, обзорно понятно =)
          • Старый Маразматик
            01 апреля 2019, 15:31
            sergeygaz, как назвается движок от гугла?
            • Евгений Шибаев
              03 апреля 2019, 09:34
              Старый Маразматик, Google Colaboratory с бекэндом keras+tensorflow
    • ¯ \ _ (ツ) _ / ¯
      01 апреля 2019, 13:22
      Андрей К, sergeygaz, для продакшен питон не подходит. Главная причина НЕ типобезопасный. 
        • ¯ \ _ (ツ) _ / ¯
          01 апреля 2019, 14:04
          sergeygaz, у вас айтишное оправдание " у меня все работает"
          Что вы имеете в виду под «продакшен»? Разработка и работа системы только вами и для вас? 
          Я представляю это, как разработка десятком программистов для тысяч клиентов и работе с реальными счетами. Несомненно, исследования проводятся на Python, удобство этого языка глупо отрицать, но разработка системы в продакшн обычно делают на типобезопасном ЯП.
          • Пафос Респектыч
            02 апреля 2019, 08:50
            ¯ _ (ツ) _ / ¯, всё нормально подходит, как пример фонд MAN AHL — 25 кажется ярдов под управлением, вся разработка на Питоне, вообще вся. Не-ХФТ фонды вообще плотно применяют Питон, потому как исследования быстрее и проще внедрять при правильно выстроенном процессе.
            • ¯ \ _ (ツ) _ / ¯
              02 апреля 2019, 16:48
              Пафос Респектыч, А я и не отрицал удобство Python для исследований. Даже наоборот. 
              MAN AHL — вся разработка на Питоне, вообще вся.
              Вот прям вообще-вообще вся? Почему тогда они пишут:
              Our systems are almost all running on Linux and most of our code is in Java, with some Python and TypeScript.
              И ищут программистов Java, C#, pl/sql и ни одного питониста?
              • Пафос Респектыч
                03 апреля 2019, 08:48
                ¯ _ (ツ) _ / ¯, где они это пишут? Я сказал только за MAN AHL фонд, вообще Man Group большая и ищет кого только не. Просто знаю, общался, видел. Да, вся вообще, ну 98% может ) 
              • Пафос Респектыч
                03 апреля 2019, 08:56
                ¯ _ (ツ) _ / ¯, в предложении про исследования акцент был на том, что когда всё на Питоне, то результаты гораздо быстрее выкатывать в продакшен, улавливаешь?
    • _sg_
      01 апреля 2019, 15:37
      Андрей К, сетки принимают решения очень быстро, так как, в основным это операции сложения и умножения над double
  • trader_95
    01 апреля 2019, 12:54
    Какова доходность с момента боевого запуска на реальном счете в годовых?
      • старый трейдер
        01 апреля 2019, 14:16
        использую в качестве советника

        sergeygaz, поздравляю, уж думал, что один сетки хвалю.  
  • Astrolog
    01 апреля 2019, 12:57
    >> Предсказать цену актива в следующем году или даже в следующем месяце можно, но точность будет крайне низкая.

    ** в астрологии наоборот, труднее всего прогнозировать 5-ки (даже невозможно), а вот неделю или месяц… очень даже хорошо.

    Впрочем, даже не цену, а тенденцию роста или падения по числам.
    • Кухонный трейдер
      01 апреля 2019, 20:05
      Astrolog, в астрономии тоже трудно прогнозировать траектории на 5-10 лет, а вот то, что на Землю метеорит свалится в следующем месяце, можно спрогнозировать довольно точно.
  • ivanov petya
    01 апреля 2019, 13:00
    Интересно, как может точность повышаться с минимизацией фреймов.Чем ниже временной интервал, тем выше шанс попасть в квантовую суперпозицию.
    • Андрей Герц
      01 апреля 2019, 19:43
      ivanov petya, а если не существует этой квантовой суперпозиции? Где и кто ее доказал?
      • ivanov petya
        01 апреля 2019, 22:52
        Андрей Герц, учёные ещё не могут доказать базовых свойств веществ и материи… но в микромире всё довольно странно. если сравнить с чёрными ящиками, то есть сходство.
  • Панкратов
    01 апреля 2019, 13:02
    Несколько лет назад аж целый русский стартап открылся. Целых 2 программиста стали рынок прогнозировать. Точность предсказания была закрытия следующего дня  — 95%, космос просто, потом оказалось что ребята прогнозируют не прирост цены, а саму цену. Вот сегодня цена акции $100, а на завтра прогнозируют 97.5 -102.5 и в 95% случаев оказываются правы!!

    • trader_95
      01 апреля 2019, 13:09
      Ruslan Pankratov, ну зря смеетесь, после http://searchface.ru/ я слегка прифигел от возможностей ИИ
      • Андрей К
        01 апреля 2019, 13:16
        trader_95, зашибись, попробовал с резюме фотку, нарыло все на меня по инету =)))
      • Индекс оптимизма
        01 апреля 2019, 13:29
        trader_95, немного страшно стало.
        • trader_95
          01 апреля 2019, 13:59
          Индекс оптимизма, находит даже в кепке. Раньше ссылки на соц. сети выдавал, отключили. Искал девушек интересных профессий забавы ради, их мужей оленей можно найти, родителей. В общем сильная вещь это ИИ)) 
    • Niktesla (бывш. Бабёр-Енот)
      01 апреля 2019, 19:20
      Ruslan Pankratov, у меня знакомый, спец по нейросетям, несколько лет назад мне такое же абсолютно заявление выдал)))
  • Логику принятия нейросетью решений объяснить нереально.
    Не реально только тому кто не понимает как это работает. На самом деле все достаточно просто. Есть относительно небольшое число алгоритмов как работы нейрона, так и работы сети и для обучения/адаптации несколько штук. 

    Ну и самое главное. Нейросети в современном представлении это даже близко не ИИ так что не надо их путать. 

    И да, оно у вас или не работает или работает только на рынке определенного характера. 


      • sergeygaz, Есть конкурентные сети, однослойные, многослойные, комбинированные, ансамбли, лидирующие, с памятью состояния и без, со сбросом и без, комбинированные. И это сети, сами нейроны тоже просты до безобразия все они представляют из себя персептрон но отличаются только функцией активации и наличием/отсутствием обратной связи и сбросом. Понять ее логику — очень просто, достаточно подтянуть мат часть.

        Что касается вашей нейросети то давайте посмотрим на ее потенциал с точки зрения математики.

        У вас есть паттерны — формализовать условия при которых патерн будет 100% работать не может никто. Тот же ГИП он может сработать, а может и нет, уровень может сработать а может и нет. Т.е. гарантированная вероятность работы паттерна не превышает 1/2, ну допустим вам удалось привязать внешние условия и паттерн срабатывает в 2/3 случаев. 
        Нейронная сеть не может гарантированно (100%) распознать паттерны, так как их внятно нельзя формализовать — в случае ГИП одно плечо может быть выше/ниже, голова может выделяться сильно или нет в ширину все это может быть 100 свечей а может и 10. Ну т.е. в лучшем случае распознование будет давать результат а 2/3 (это я очень оптимистичен), а теперь перемножим невнятный паттерн, на негарантированное распознавание и получим 44% при очень оптимистичном сценарии (и паттерн у вас рабочий и сеть тоже но вместе не алё).

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

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

        Я писал диссертацию по системам управления на нейронных сетях, и соблазн применить их в торговле у меня тоже был. И я их тоже делал. 

         

        • Машковский Евгений
          01 апреля 2019, 14:06
          Свин Копилкин (Дмитрий), тоже показалось, что мнение дилетанта, много эмоций и мало конкретики у топикстартера.
          • Машковский Евгений, Глядя на ТС я вспоминаю себя на 2м курсе, когда нейросети еще небыли мейнстримом, и для того чтобы сделать сеть надо было паять ПЛИС или покупать контроллеры и проектировать под них обвязку (ну для очень богатых можно было купить матричные контроллеры с аппаратной эмуляцией нейросети) — моделировать на обычных компьютерах было очень тяжело и долго. 
            Тоже все казалось очевидным и очень легким, но жизнь все расставила по своим местам — реализации оказались очень и очень тяжелыми и не всегда рабочими. 
            • Машковский Евгений
              01 апреля 2019, 19:54
              sergeygaz, сколько лет работаете с нейросетями в применении к трейдингу?
          • sergeygaz, У вас не ИИ, а нейронная сеть. Между ИИ и нейронной сетью разница примерно такая же как между шестеренкой и вами. 

            Ну да Бог с ним. Если вас устраивает работа — дерзайте, не ошибается тот кто ничего не делает. Вы главное не возлагайте слишком много надежд и денег.  
              • sergeygaz, тем что не творчески, а статистически. Это истекает из принципа роботы НС.
                  • sergeygaz, да. Только журналисты называют нейросети распознающие сети искусственным интеллектом. Классический случай:


                     
                    • П М
                      01 апреля 2019, 19:55
                      Свин Копилкин (Дмитрий), неправда. Распознавание образов — классическая задача искусственного интеллекта. То что сейчас она решается на раз-два, не значит что она такая лёгкая. Просто люди привыкли. 
                      а это чудо на самом деле. Когда ребёнок посмотрев пару картинок, т.е. мазков на плоском листе, научается отличать бабочку от кошки, а стул от кресла, то это и есть распознавание образов. Ребёнок Спинозой не становится. Но тем не менее это чудесная задача решена, вне-алгоритмическим путём.
                      экспертные системы — вторая задача искусственного интеллекта.
                      тоже решённая.

                      я не в восторге от журналистов, но тут вы на них наговариваете.
                      • ПBМ, Вы не правы. Распознавание образов это отнюдь не задача для искусственного интеллекта. Она решается, в некотором приближении, и классическими методами. Это не  более чем статистическая задача, если понимать принцип работы нейросети. Но если этого не понимать, то это становится «чудом», таким же как самобеглые повозки без лошадей, и летающие стальные птицы.
                        • П М
                          01 апреля 2019, 21:20
                          Свин Копилкин (Дмитрий), да вы кажется тут пытаетесь доказать что самый умный по сравнению с. 
                          интересная игра. удачи! 
                          • ПBМ, Упаси меня боже доказывать кому-то что-то. Особенно верующим в плоскую землю и во вред прививок. 
        • Niktesla (бывш. Бабёр-Енот)
          01 апреля 2019, 19:26
          Свин Копилкин (Дмитрий), угу… если товарищ своим воображением не представляет что он ищет и как будет работать сетка, то скорее всего не сможет адекватно подобрать архитектуру и сложность сети, и в итоге после счастливых победоносных тестов где-то потом в бою скорее всего вскроется жопа...  а может и не вскроется...  ))
  • Yodo
    01 апреля 2019, 13:11
    я так понимаю вы Keras использовали? а какую архитектуру взяли?
  • Replikant_mih
    01 апреля 2019, 13:25
    Ну круто чё). Вряд ли ML сам по себе будет преимуществом в трейдинге при текущей степени его доступности. Но вот в совокупности с каким-то ещё преимуществом может прилично выстрелить. Рад, если у вас это получилось.
    • Андрей К
      01 апреля 2019, 13:30
      Replikant_mih, 
      при текущей степени его доступности.
      а что не так? платный?
      • Replikant_mih
        01 апреля 2019, 13:31
        Андрей К, Наобот) — обучения есть, библиотеки — есть.
  • monko
    01 апреля 2019, 13:34
    «точность модели на тестовой выборке получилась весьма высокой». ключевое слово -тестовой )
      • sergeygaz, — Предсказать цену актива в следующем году или даже в следующем месяце можно, но точность будет крайне низкая. ну а на какой еще выборке ее проверять?
        Выборки- это замечательно! Но нужно вносить элемент неожиданности. Например всё чётко, а вот 25 декабря 18 года, на нефти, когда весь мир отдыхал, а мы торговали цена реально шла на НОЛЬ! И я был в позе. Просто меняйте исторические данные делая неожиданные нереальные ямы или пики, а ИИ пусть предсказывает. )))  Пусть цену Si предсказывает )))) Ну и когда всё освоите проведите стресс -тест, при включённом оборудовании выдерните вилку из сети и понаблюдайте за ИИ в этот момент. Если ИИ пройдёт два таких простейших теста, то можно думать о внесении денег на депозит.
          • sergeygaz, Элемент неожиданности запрограммировать в ИИ нельзя.
            А у человека можно. До сих пор помню заморозку вкладов в 90-х., дефолт 98 и 2008 годы. ИИ должен знать, что всегда может прилететь.
        • Кухонный трейдер
          01 апреля 2019, 20:23
          Диванный аналитик-практик, если на ноутбуке решается, акк выручит. А вот если сеть оборвать и заменить на медленную мобильную… Или исходные минутки заменить часовиками…
  • Гриша
    01 апреля 2019, 13:48
    а в какой среде работаете? направьте пожалуйста с чего начать?
  • Schurik
    01 апреля 2019, 13:50
    Так вы задачу регрессии решали, предсказывая цену в следующий момент времени? На каком примерно таймфрейме получились хорошие результаты?
      • Schurik
        01 апреля 2019, 15:51
        sergeygaz, надеюсь, R^2 смотрели на тестовой выборке? Он одним числом показывает, является ли прогноз статистически значимым.
          • Schurik
            01 апреля 2019, 18:05
            sergeygaz, проверьте R^2, это одна строчка кода. А то величина ошибки — вещь весьма субъективная. Кажется, что ошибка невелика, а на самом деле, никакой статистической значимости прогноза нет и в помине. Предсказывать именно саму цену (или иными словами изменение цены) даже с горизонтом 1 минута видится крайне сложной задачей. Статистика R^2 сразу же покажет, есть что-то в вашем прогнозе или это иллюзия…
  • Логарифм Интегралыч
    01 апреля 2019, 13:51
    недавно я выучил c# до нужного уровня
    потому что c# компилируемый

    и даже бэйсик компилируемый с прошлого… века

    зато год не интересует питон
    потому что питон не компилируемый

    и не понимаю как применять
    не компилируемые языки программирования
      • Логарифм Интегралыч
        01 апреля 2019, 14:13
        мой выбор:

        1bas=1exe & 1cs=1exe
        без установки оболочек

        ведь C# есть внутри Win7 FrameWork

        и ещё есть онлайн компиляторы
        принимающие 1-страничные проекты
    • CloseToAlgoTrading
      01 апреля 2019, 14:09
      Логарифм Интегралович, что касается tensorflow, то у них есть апи для с/с++, обучаете свою модель на питоне, потом пользуете ее где угодно, в целом удобно :) сам еще правда не пробовал. 
      Но питон и правда нынче хорош… и быстр.
  • wrmngr
    01 апреля 2019, 13:54
    Грааль на персептроне? Хм, звучит не очень свежо…
  • Машковский Евгений
    01 апреля 2019, 14:01
    Ближе к практике, думаю розовые очки потрескаются изрядно.
  • CloseToAlgoTrading
    01 апреля 2019, 14:07
    Что у вас там за нейронная сеть которая на 30 фичах 5 часов считает? O_o… тем более если вы GPU использовали… хотя у всех железо разное )
    Так я так а что вы на выходе то получали? цену на каком расстоянии? 

    возьмите lightGBM и не нужны вам никакие нейросети, более чем уверен с вашим подходом результат на тестах быдет лучше.
      • Михаил
        01 апреля 2019, 17:05
        sergeygaz, можно подумать сеть не уходит в переобучение. Для этого валидацию и делают, чтобы понят, реальную точность и степень переобучения. 
        Если вы фичи сами выдумываете и используете обычную сетку с полносвязными слоями с большой долей вероятности лучше сделать на деревьях. Сеть нужна, если вы сырые котировки пихаете и используете какую-то нетривиальную архитектуру вроде автокодировщиков для извлечения признаков из сырого сигнала. 
  • _sg_
    01 апреля 2019, 15:33
    Лет примерно 10 назад я тоже пытался обучать нейросети. Был такой нейрошел 2.
    Так вот. Я тоже засовывал в сетку кучу параметров Это были и индикаторы широко используемые, некоторые номинальные переменные итд.
    Естественно обучал. Обучение по времени длилось несколько дней. 
    Accuracy была очень приличная.
    На выходе она давала модель, которую можно было прикрутить к Easy Language для Омega Research в виде индикатора и использовать в реальной торговле.
    Самое интересное было потом. Сетка начала мне давать сигналы. Робот начал их исполнять. И тут я на себе в полной мере ощутил «прелесть» торговли с использованием сети. Да, сеть дает сигналы, но сигналы эти совершенно непонятные. То есть объяснить и понять зачем и почему сеть выдает такой сигнал человеку НЕВОЗМОЖНО. Ведь модель — это всего лишь голые веса — ничего не говорящие человеческому сознанию. Поэтому для человека (для меня) сигналы, которые она выдавала выглядели ну очень непонятно, спорно и двусмысленно. Я поторговал с этими сетками примерно месяц. Получил небольшой минус и закончил этот аттракцион.
    Наверное, время пришло попробовать еще раз.
    Но все равно, я очень хорошо помню своё ощущения, когда я видел сигналы от нейросетки в то время. Ощущение, прямо скажем, не из приятных.


    • Friendly Deep Space
      01 апреля 2019, 22:45
      _sg_, небольшой минус по итогу при точном исполнении всех сигналов НС? А бэктест за тот же период сигналы там же дает?
      • _sg_
        01 апреля 2019, 23:06
        Friendly Deep Space, то что некоторые ордера не исполнялись — это нормально — это рынок.
        Главный минус, который был тогда, это то что Вы не знаете почему именно этот сигнал формируется. Казалось бы на ровном месте или совсем «поперек» против всех и вся. Очевидно, что сеть нашла какие-то состояния, зависимости, закономерности для входов, которые мне показались не столь очевидными, как хотелось бы.

        Сеть обучалась по схеме «с учителем», то есть по моим ответам.
        Протестировать БаскТестом я не смог, потому что я закладывал в модель несколько таймфреймов. А скрестить в BackTeste на Omege несколько таймфреймов не представлялось возможным.

        В результате на реале я не увидел ейдж.

        Единственное, что я бы отметил положительного — это то, что сеть торговала в более удачное время, чем обычные системы. То есть она, плутовка, понимала, что лучше торговать с утра, чем на Америке.
  • SergeyJu
    01 апреля 2019, 15:35
    30 параметров — это что, хотя бы навскидку, приблизительно
      • SergeyJu
        02 апреля 2019, 11:50
        sergeygaz, сократить число параметров не пытались? 
          • SergeyJu
            02 апреля 2019, 12:50
            sergeygaz, Вы проверяли, что сокращение любого одного из 30 параметров ухудшает? 
              • SergeyJu
                02 апреля 2019, 18:05
                sergeygaz, я об этом же. Я всегда пытаюсь (а) понять силу влияния каждого фактора (б) по возможности сократить их число. 
                Сейчас больше 3-4 не рискую использовать, опасаясь переподгонки. 
                  • SergeyJu
                    02 апреля 2019, 18:19
                    sergeygaz, роботы, однако. Когда параметров мало, робота можно писать хоть в машинных кодах. 
  • Rayven
    01 апреля 2019, 15:45
    Билли, нам нужны пруфы. Пруфы и стейты. :)
    С ними ваша статья будет иметь больший вес, чем «а вот один парень на смартлабе написал...» 
  • Roki
    01 апреля 2019, 15:48
    Автор, приведите примеры работы системы, пожалуйста.
  • neophyte
    01 апреля 2019, 15:56
    Точность резко повышается при минимизации таймфрейма

    Закономерно. Диспесия процесс СБ растет пропорционально корню квадратному из длительности временного интервала.
  • smit
    01 апреля 2019, 16:19
    Хотя бы структуру слоев нейросети насписал.

    Я тоже смотрю на нейросети.
    Обучается оч. быстро на исторических данных, но на тестовом дата сете не очень. 
      • smit
        01 апреля 2019, 17:10
        sergeygaz, совсем нет.
        Там есть место для «хитростей»
        Топологию сети смысла скрывать нет.
      • smit
        01 апреля 2019, 18:21
        sergeygaz, 
        это сама котировка, объемы, исторические срезы и ряд индикаторов
        вот это уже  информация о системе
  • Александр Элс
    01 апреля 2019, 16:38
    Интересна тема программирования. Как научиться нейросетки на питоне юзать? Какой у вас опыт?
    • smit
      01 апреля 2019, 17:11
      Александр Элс, я юзаю Tensorflow c Keras
    • _sg_
      01 апреля 2019, 17:48
      Александр Элс, 
      Вы можете очень быстро освоить «Machine Learning». Изучить все современные алгоритмы. Научиться их правильно применять. Все тропинки здесь уже протоптаны. Обучальщиков сеток тьма. Но это Вам ничего не даст.
      Главное — это необходимо научиться правильно СТРОИТЬ МОДЕЛИ.
      Это уже ближе к «Data Science». А вот это уже — искусство. А чистый «Machine Learning» — ремесло.
        • _sg_
          01 апреля 2019, 17:52
          sergeygaz, 
          да есть у меня прошлый опыт на эту тему.
          На практике (на своих деньгах), так сказать, прочувствовал.
          Никогда не забуду.
      • Replikant_mih
        01 апреля 2019, 21:31

        _sg_, Блин, буквально сегодня случился аналогичный инсайт — если все библиотеки так доступны — должно быть какое-то другое конкурентное преимущество. Тут как в HFT — либо ты на острие технологий и быстрее остальных, либо же ты умнее. Т.е. если ты юзаешь стандартные библиотеки ML — ты должен быть умнее. И тут меня осенило, что у меня может быть конкурентное преимущество здесь, потому что искусство, модели — это намного больше про меня, чем математика. 

         

        Кстати, как по ощущениям — насколько много математики в ML если юзать стандартные библиотеки, в смысле требуется ли от тебя знание математики?

         

        Так перекладываю ML из дальнего ящика в средний ящик)).

        • _sg_
          01 апреля 2019, 22:40
          Replikant_mih, 
          Маchine Learning можно перекладывать уже в Первый ящик, потому что ничего сложного там нет.
          Достаточно будет знания ОСНОВ линейной алгебры (матрицы, вектора, операции с ними, собственные значения итд), ОСНОВ статистики, матанализ основы. Сейчас уже тензоры в моде — Погуглите «Tensorflow».

          Но в принципе вся математика от Вас скрыта в функциях.
          А все разновидности ML имеют вполне схожие схемы и технологии применения.

          Ниже приведу пример кода обучения Сверточной Нейронной Сети, специально для Вас, чтобы Вы увидели, что математики, как таковой,  в нем нет. Только последовательность функций.

          # Загружаем данные
          (X_train, y_train), (X_test, y_test) = cifar10.load_data()
          # Размер мини-выборки
          batch_size = 32
          # Количество классов изображений
          nb_classes = 10
          # Количество эпох для обучения
          nb_epoch = 1
          # Размер изображений
          img_rows, img_cols = 32, 32
          # Количество каналов в изображении: RGB
          img_channels = 3

          # Нормализуем данные
          X_train = X_train.astype('float32')
          X_test = X_test.astype('float32')
          X_train /= 255
          X_test /= 255

          # Преобразуем метки в категории
          Y_train = np_utils.to_categorical(y_train, nb_classes)
          Y_test = np_utils.to_categorical(y_test, nb_classes)

          # Создаем последовательную модель
          model = Sequential()
          # Первый сверточный слой
          model.add(Conv2D(32, (3, 3), padding='same',
          input_shape=(32, 32, 3), activation='relu'))
          # Второй сверточный слой
          model.add(Conv2D(32, (3, 3), activation='relu', padding='same'))
          # Первый слой подвыборки
          model.add(MaxPooling2D(pool_size=(2, 2)))
          # Слой регуляризации Dropout
          model.add(Dropout(0.25))

          # Третий сверточный слой
          model.add(Conv2D(64, (3, 3), padding='same', activation='relu'))
          # Четвертый сверточный слой
          model.add(Conv2D(64, (3, 3), activation='relu'))
          # Второй слой подвыборки
          model.add(MaxPooling2D(pool_size=(2, 2)))
          # Слой регуляризации Dropout
          model.add(Dropout(0.25))
          # Слой преобразования данных из 2D представления в плоское
          model.add(Flatten())
          # Полносвязный слой для классификации
          model.add(Dense(512, activation='relu'))
          # Слой регуляризации Dropout
          model.add(Dropout(0.5))
          # Выходной полносвязный слой
          model.add(Dense(nb_classes, activation='softmax'))

          # Задаем параметры оптимизации
          sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
          model.compile(loss='categorical_crossentropy',
          optimizer=sgd,
          metrics=['accuracy'])
          # Обучаем модель
          model.fit(X_train, Y_train,
          batch_size=batch_size,
          epochs=nb_epoch,
          validation_split=0.1,
          shuffle=True,
          verbose=2)

          # Оцениваем качество обучения модели на тестовых данных
          scores = model.evaluate(X_test, Y_test, verbose=0)
          print(«Точность работы на тестовых данных: %.2f%%» % (scores[1]*100))

          И Фсё — вот вся «сложность» 

          • Replikant_mih
            01 апреля 2019, 23:15

            _sg_, Спасибо! Действительно выглядит не сильно страшно). Действительно, достаточно высокоуровнево.

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

            • _sg_
              01 апреля 2019, 23:24
              Replikant_mih, 
              https://www.kaggle.com/competitions  — вот здесь все Обучалкины соревнуются за вознаграждение. Код решений полностью открыт. Это хороший ресурс для изучения ML.
              • Replikant_mih
                01 апреля 2019, 23:31

                _sg_, Ага, спасибо. Но туда, наверно, нужно когда уже немного разобрался). 

                А вам чего не хватило чтобы оседлать ML для целей финансовых рынков? — того самого элемента искусства?

                • _sg_
                  01 апреля 2019, 23:38
                  Replikant_mih, тогда (2005 — 2007) технологии были недостаточно развитыми, чтобы без геморра, можно было использовать NN. А потом был 2008 год. Да и работа основная отнимала много времени.
                  А сейчас я планирую к этому вернуться.
  • chizhan
    01 апреля 2019, 16:44
    Нейросети к биржам еще в 90-е пытались прикрутить. Не понимаю чего нового нынче.
  • Roman Ivanov
    01 апреля 2019, 16:45
    Судя по всему, получен обычный курвефиттинг (зевает)
  • Dmitryy
    01 апреля 2019, 17:24
    По каким ресурсам питон изучали? Что порекомендуете? 
  • Сергей Сергаев
    01 апреля 2019, 17:52
    Теперь осталось чтоб этот ИИ спиз… л несколько ярдов у своего хозяина (типа как у Грефа) и свалил в виртуальную реальность 
  • Tomm
    01 апреля 2019, 18:23
    с 1 апреля, что ли 
  • XXM
    01 апреля 2019, 18:57
    Знатный прикол, зачет! Александр Михайлович,  три класса церковно-приходской, Искусственный Интеллект (ИИ), Тьюринг.
    А вот это — самое то:
    Предсказать цену актива в следующем году или даже в следующем месяце можно, но точность будет крайне низкая.
    Самое главное — то, что не вошло в текст, даже между строк: точность предсказаний цены на следующий день! Уверен, она высокая.
  • Иван Файртрейдов
    01 апреля 2019, 20:05
    тема с ии это следующий этап раскорячинга обычных зависимостей.
    скажем простая исследовательская задача:  возьмте все гепы из 10 проц квантиля и наверняка найдете какуюнибудь закономерность в поведении цены в следующие 10 минут. проблема с ии довольно хорошо известна та самая изъезженная нестационарность — причин для этого миллион — выходные, сдвиг времени, приход внешних денег, всякие события и тд и тп но если зачеррипикить определенные куски вручную можно сгладить эту самую нестационарность слегка. возможно глубокие сетки и могут работать в разных фазах рынка но как то лень не позволила поисследовать как следует
  • Pacak
    01 апреля 2019, 20:37
    Я же правильно понимаю, что это — первоапрельская шутка?!
    Я уже сегодня попался на одну, так что достаточно :)
  • sortarray sortarray
    01 апреля 2019, 20:52
    Во-первых, я открыл для себя такой гениальный язык, как Python.
    Как думаете, сколько строчек занимает программа на питоне для распознавания текста из картинки? 4 строки!

    если исползовать сахар и либы, там и одна строка может быть, что толку то? Это не говорит о «мощности»

    Напишите короче на питоне вот это

    Observer := Object clone
    
    Observable := List clone do(
       register := getSlot("push")
       notify := method(message, self foreach(observer, observer update(message)))
    )
    Newspaper := Observable clone do( addNews := method(news, notify(news)))
    
    Citizen := Observer clone do(
       create := method(name, self clone lexicalDo(name := name))
       update := method(message, writeln( name .. " узнал следующее: " .. message))
    )
    
    newspaper := Newspaper clone
    
    newspaper do(
       register(Citizen create("Иван"))
       register(Citizen create("Василий"))
       addNews("Наблюдатель - поведенческий шаблон проектирования")
    )
    • sortarray sortarray
      01 апреля 2019, 20:53
      sortarray sortarray, вот питоновский вариант

      from abc import ABCMeta, abstractmethod
      
      class Observer(metaclass=ABCMeta):
          """
          Абстрактный наблюдатель
          """
      
          @abstractmethod
          def update(self, message: str) -> None:
              """
              Получение нового сообщения
              """
              pass
      
      class Observable(metaclass=ABCMeta):
          """
          Абстрактный наблюдаемый
          """
      
          def __init__(self) -> None:
              """
              Constructor.
              """
              self.observers = []     # инициализация списка наблюдателей
      
          def register(self, observer: Observer) -> None:
              """
              Регистрация нового наблюдателя на подписку
              """
              self.observers.append(observer)
      
          def notify_observers(self, message: str) -> None:
              """
              Передача сообщения всем наблюдателям, подписанным на события
              данного объекта наблюдаемого класса
              """
              for observer in self.observers:
                  observer.update(message)
      
      class Newspaper(Observable):
          """
          Газета, за новостями в которой следят тысячи людей
          """
      
          def add_news(self, news: str) -> None:
              """
              Выпуск очередной новости
              """
              self.notify_observers(news)
      
      class Citizen(Observer):
          """
          Обычный гражданин, который любит читнуть с утра любимую газетку
          """
      
          def __init__(self, name: str) -> None:
              """
              Constructor.
      
              :param name: имя гражданина, чтоб не спутать его с кем-то другим
              """
              self.name = name
      
          def update(self, message: str) -> None:
              """
              Получение очередной новости
              """
              print('{} узнал следующее: {}'.format(self.name, message))
      
      if __name__ == '__main__':
          newspaper = Newspaper()                 # создаем небольшую газету
          newspaper.register(Citizen('Иван'))     # добавляем двух человек, которые
          newspaper.register(Citizen('Василий'))  # ... ее регулярно выписывают
          # ... и вбрасываем очередную газетную утку
          newspaper.add_news('Наблюдатель - поведенческий шаблон проектирования')
  • Сергей Кузнецов
    01 апреля 2019, 21:00
    Это 1 апреля или серьезно?
  • Deamon
    01 апреля 2019, 21:46
    что там Ваша нейросеть про завтрашний SI говорит?
  • ezomm
    01 апреля 2019, 23:07
    Корреляция размера свечи и объема решает.Маленький додж и маленький объем.Большая марибоза и большой объем.Это две крайности.Остальные формы промежуточные.Но если нельзя предсказать объем, то и нельзя предсказать цену. Мораль — если перемены гармоничны(объем предсказуем) можно торговать, а если не гармоничны, то торговать опасно.Простой пример аллигаторы Вильямса .3 частоты должны найти резонанс ради тренда, иначе боковик. Дам подсказку для улучшения аллигаторов.Тренд любит нечетные серии, а коррекция -четные серии новых перемен. Числа на спирали квадрата 9 Ганна нам в помощь, но только в рост.В падение простая арифметика.Не четные потому что есть срединная фаза где объем максимален.Относительно этой точки цено график(импульс) симметричен в прошлое и будущее.Я не программист, но торгую и читаю 25 лет.Это мои мысли.Еще книга Чарльза Миллера -циклы и волны в компьютерном моделировании… -нам в помощь.В идеале цена есть сумма четных гармоник с коэф-м 4 .



  • MadQuant
    02 апреля 2019, 03:47
    Если уж вам питон понравился, то представляю что будет, когда научитесь писать на R. Впрочем, если все ограничивается только нейронками и не лезете в линейную алгебру — может и ничего.
    По поводу предсказания «цен» — так это ж неверно сформулированная задача, понятно что по любым «техническим» метрикам из машинного обучения вы там что-нибудь значимое выучите — например, что цены долгосрочно растут. Но с точки зрения торговли это будет результат ни о чем. Бэктест в студию, и если там будет Шарп хотя бы 2 — можно обсуждать.
  • Михаил К.
    02 апреля 2019, 08:15
    Нейросети часто хорошо справляются с поиском взаимосвязей между входными данными и результатом, но только если эта взаимосвязь есть! В противном случае на этапе тренинга сети получается подгонка (курвафиттинг). Именно поэтому нейросети в трейдинге не пользуются популярностью — им, как правило, скармливают ничего не значащий рыночный шум. Как результат — неработающие модели.

    По факту — что конкретно такого может найти нейросеть, чего не может обнаружить тренированный человеческий глаз? В рыночных данных на графиках полезной информации гораздо меньше, чем ничего не значащей чепухи. А нейросеть будет там что-то пытаться искать. И ведь найдет! Но работать это не будет.
      • Михаил К.
        02 апреля 2019, 12:24
        sergeygaz, я согласен, но, еще раз — только при условии, что в исходных данных (точнее, в динамике изменений исходных данных) есть связь с динамикой изменений результата. Явная или скрытая — нейросеть ее найдет. Но если никакой связи нет — будет подгонка под историю. И дело в том, что в тех данных, что обычно скармливают нейросетям (значения индикаторов, цены открытия/закрытия) нет прогнозной ценности. Отсюда и результат соответствующий. 
  • plustreider
    02 апреля 2019, 08:30
    И не забудьте в заложить в свою систему твиты Трампа !  
  • Abstract
    02 апреля 2019, 12:21
    В итоге я создал нейронную сеть, которую обучил на 4 000 000 исторических котировках.

    С этого момента поподробнее. Какие котировки, как шёл процесс обучения и какой таймфрейм использовался?
      • Abstract
        03 апреля 2019, 10:57
        sergeygaz, коротко ответь, развёрнутого ответа не нужно. 
  • Андрей К
    02 апреля 2019, 14:55
    Перечитал сегодня еще раз комменты. Правильно ли я понял, что эти сети принимают решение и извне, разрабу, очень сложно объяснить почему принято такое решение? То есть будет сигнал на трейд, а почему не ясно. Правильно ли я понял?
  • day0markets.ru
    02 апреля 2019, 16:16
    Вы на классификацию или на регрессию обучали? Какая разница в обучающей и тестовой?
      • jur line
        15 апреля 2019, 00:39
        sergeygaz, sergeygaz  в ваши 30 параметров входило обучения мувингов? Интересен ваш опыт именно в этом направлении.  Наработанные алгоритмы у меня на языке примитивном для метастока. Я когда-то так и не осилил нейросети. Не знаю, смогу ли сейчас вернуться к этому. Зависит от вашего ответа
          • jur line
            15 апреля 2019, 14:36
            sergeygaz, какой индикатор вы использовали для обучения,?
            можете в личку написать, а то я не имею рейтинга?
      • ivanov petya
        01 октября 2019, 14:23
        sergeygaz, а подскажи, почему нет информации про использовании глубокого обучения с подкреплением в трейдинге?? это же должно работать на практике??
  • Mister X
    02 апреля 2019, 16:29
    я думаю ваша сеть не может этого smart-lab.ru/blog/530433.php
      • Mister X
        02 апреля 2019, 16:59
        sergeygaz, это все ищут, только на этом и можно заработать
  • Cyber
    03 ноября 2019, 23:07
    4000000? у вас сеть не переобучилась? 

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн