Перейти к содержимому

Мб робота сделать который это предсказывает

  • автор:

Торговый робот с использованием нейросетей

Сделан в рамках соревнования Хакатон «Финам Trade API» по созданию торговых систем на основе открытого торгового API «Финама».

Как сделать торгового робота с искусственным интеллектом?

Искусственный интеллект (англ. artificial intelligence) — это способность компьютера
обучаться, принимать решения и выполнять действия, свойственные человеческому интеллекту.

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

Эта тема последовательно раскрывается в этой статье, сразу приведу основные этапы по созданию такого торгового робота:

1) получение исторических данных по торговым инструментам;

2) подготовка датасета из этих исторических данных по определенной логике для нейросети;

3) обучение нейросети и выбор лучшей обученной модели по параметрам loss, accuracy, val_loss, val_accuracy;

4) проверка предсказаний сделанных нейросетью;

5) проверка подключения к API Финама;

6) определение торговой логики для открытия позиций;

7) запуск live стратегии с использованием выбранной лучшей модели обученной нейросети с нашей торговой логикой.

Почему я выбрал использование нейросетей для торгового робота?

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

для прогнозирования поведения фондового рынка в целом,

для осуществления предсказаний поведения цены отдельных акций и/или фьючерсов и других инструментов

для поиска определенных торговых формаций на графиках цен

Широкое применение искусственного интеллекта очень активно развивается на Западных рынках, на Российском всё только начинается.

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

или не работают

или чего-то для их работы постоянно не хватает.

По крайней мере лично мне ещё ни разу не встретились полноценно работающие примеры.

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

Какие есть скрытые цели?

Т.к. этот пример торгового робота с использованием нейросетей хорошо документирован и последовательно проходит через все этапы:

получение исторических данных по акциям;

подготовка датасета с картинками формаций из графика акций по определенной логике;

обучение нейросети и выбор лучшей обученной модели по параметрам loss, accuracy, val_loss, val_accuracy;

проверка предсказаний сделанных нейросетью;

проверка подключения к API Финама;

запуск live стратегии с использованием выбранной лучшей модели обученной нейросети;

записано обучающее видео как запускать и работать с этим кодом, выложенное на YouTube и на RuTube.

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

По крайней мере появился +1 рабочий пример использования нейросетей для аналитики цен графика акций.

Тем самым, станет больше роботов с использованием искусственного интеллекта,

это повлечет большую волатильность нашего фондового рынка;

большую ликвидность за счет большего количества сделок;

и соответственно больший приток капитала в фондовый рынок.

Зарабатывает ли сейчас этот робот?

Торговая стратегия заложенная в этом роботе не даст ему заработать, т.к. мы открываем позицию по подтвержденной нейросетью формации на графике (т.е. когда нейросеть предсказывает, что вероятно будет рост), но мы не ждем роста и закрываем позицию через +1 бар старшего таймфрейма. Как вариант, можно заходить в сделку 1 к 3 или 1 к 5 со стоп-лоссом. Т.е. ждать профита или стоп-лосса.))

Установка

Самый простой способ:

Или через PyCharm:

нажмите на кнопку Get from VCS:

создаем новый проект для торгового робота

Вот ссылка на этот проект:

вставьте эту ссылку в поле URL и нажмите на кнопку Clone

клонируем код торгового робота

Теперь у нас появился проект торгового робота:

код робота, теперь нужно установить необходимые библиотеки

Установка дополнительных библиотек

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

так же их можно установить такой командой

Обязательно! Выполните в корне вашего проекта через терминал эту команду:

для клонирования библиотеки, которая позволяет работать с функционалом API брокера Финам.

P.S. Библиотека finam-trade-api — тоже позволяет работать с API Финам, просто для тестов я использовал обе.))) А для live торговли FinamPy.

Теперь наш проект выглядит вот так:

проект торгового робота

Начало работы

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

Настроить конфигурационный файл my_config\trade_config.py

В нём можно указать по каким тикерам ищем формации и обучаем нейросеть (training_NN), и так же указать по каким тикерам торгуем (portfolio) используя обученную нейросеть. Остальные параметры можно оставить как есть.

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

Исторические данные для обучения нейросети мы получаем с MOEX. Т.к. получаем их бесплатно, то есть задержка в полученных данных на 15 минут.

Для этого используется файл 1_get_historical_data_for_strategy_from_moex.py

Полученные исторические данные сохраняются в каталоге csv в CSV файлах.

загруженные данные для H1 и D1 для Сбербанка и ВТБ

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

подготовка датасета с картинками формаций из графика акций по определенной логике:

на картинке рисуется цена закрытия и две скользящие средние — картинки рисуются для младшего таймфрейма

если на старшем таймфрейме закрытие выше предыдущего закрытия, то такой картинке назначаем класс 1 иначе 0

Для этого используется файл 2_prepare_dataset_images_from_historical_data.py

Полученные картинки сохраняются в каталоге NN\training_dataset_M1 в подкаталогах классификаций 0 и 1.

классифицированные картинки по нашим условиям

Наконец-то есть датасеты для обучения нейросети )) Теперь обучаем нейросеть

Используем сверточную нейронную сеть (CNN)

Для этого используется файл 3_train_neural_network.py

Лог обучения нейросети находится в файле 3_results_of_training_neural_network.txt

Сходимость нейросети находится в файле 3_Training and Validation Accuracy and Loss.png

При обучении нейросети файлы моделей сохраняются в каталог NN\_models

обучение нейросети

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

Выбор лучшей обученной модели происходит по параметрам loss, accuracy, val_loss, val_accuracy

Training and Validation - Accuracy and Loss

Выбранную модель нужно вручную сохранить в каталог NN_winner под именем cnn_Open.hdf5

Теперь нужно сделать проверку предсказаний сделанных нейросетью на части классифицированных картинках

Для этого используется файл 4_check_predictions_by_neural_network.py

Как говорится просто проверить — что Ок

проверка предсказаний нейросетью по нашим наборам

Наконец-то делаем проверку подключения к API Финама, чтобы мы смогли торговать

Для этого используется файл 5_test_api_finam_v1.py — используем FinamPy для тестов

и файл 6_test_api_finam_v2.py — используем FinamTradeApiPy для тестов

Как получить токен API Финам:

Зарегистрироваться в сервисе Comon https://www.comon.ru/

В личном кабинете Comon получить токен https://www.comon.ru/my/trade-api/tokens для выбранного торгового счета

Скопируйте и вставьте в файл my_config\Config.py полученный Ключ API и номер торгового счета (пример конфиг файла здесь: my_config\Config_example.py)

Теперь мы готовы запустить торгового робота в live режиме

Не забываем про Ключ API и номер торгового счета, уже должны быть прописаны в файле my_config\Config.py

запуск live стратегии осуществляется с помощью файла 7_live_strategy.py

в строке 266 этот параметр days_back отвечает за сколько дней назад взять данные, если запускаете скрипт в понедельник или после выходного/праздничного дня, то увеличьте это значение

days_back = 1 # на сколько дней назад берем данные

строку 206 можно раскомментировать, чтобы скрипт например не запускался, если рынок не открыт (выходные и праздники не учитывает)

await self.ensure_market_open() # проверяем, что рынок открыт

конфигурация торгового робота находится в файле my_config\trade_config.py хотелось бы указать, что т.к. мы берем исторические данные из MOEX, а не по API Финам (т.к. такой функционал будет реализован позже), то доступные тикеры для аналитики и скачивания данных необходимо подбирать вручную.

live режим работы торгового робота

Теперь можно запускать и смотреть, а предварительно лучше посмотреть видео по работе с этим кодом , выложенное на YouTube и на RuTube

Внимание

Некоторые файлы содержат строку: exit(777) # для запрета запуска кода, иначе перепишет результаты это сделано специально, чтобы случайно не перезаписать данные, её можно закомментировать, когда будете тестировать свои модели и свои настройки.

P.S. В коде стратегии не реализована проверка на доступность денежных средств на счете для входа в сделку.

Код тестировался на M1=>M10 и M10=>H1 , для других таймфреймов необходимо создавать большее число обучающих выборок.

Работоспособность проверялась на Python 3.10+ и Python 3.11+ с последними версиями библиотек.

Спасибо

FinamPy: Игорю за библиотеку, которая позволяет работать с функционалом API брокера Финам.

FinamTradeApiPy: DBoyara за библиотеку, асинхронного REST-клиента для API Finam.

tensorflow: За простую и классную библиотеку для работы с нейросетями.

aiomoex: За хорошую реализацию получения данных с moex.

Важно

Исправление ошибок, доработка и развитие кода осуществляется автором и сообществом!

Роботы предсказывают человеческие намерения

У людей есть способность понимать цели, желания и убеждения других, важнейший навык, который позволяет нам предвидеть действия людей. Достать хлеб из тостера? Вам понадобится тарелка. Подметать листья? Я возьму зеленый мусорный бак.

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

В новой статье , получившей награду за лучшую статью на Международной конференции ACM/IEEE по взаимодействию человека и робота (HRI) , исследователи компьютерных наук Университета Южной Калифорнии в Витерби стремятся научить роботов предсказывать предпочтения человека в сборочных задачах, чтобы однажды они могли помочь во всем, от создания спутника до сервировки стола.

«Работая с людьми, робот должен постоянно угадывать, что человек будет делать дальше», — сказал ведущий автор Херамб Немлекар, доктор компьютерных наук Университета Южной Калифорнии. студент, работающий под руководством Стефаноса Николаидиса, доцента компьютерных наук. «Например, если робот считает, что человеку понадобится отвертка для сборки следующей детали, он может получить отвертку заранее, чтобы человеку не пришлось ждать. Таким образом, робот может помочь людям закончить сборку намного быстрее.»

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

Ученые : люди и роботы вместе более эффективны

Делать прогнозы

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

Однако в этом новом исследовании исследователи обнаружили сходство в том, как человек собирает разные продукты. Например, если вы начинаете с самой сложной части сборки дивана Ikea, вы, вероятно, проявите тот же такт при сборке детской кроватки.

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

Робот «наблюдал», как человек выполняет задачу, используя камеру, расположенную прямо над зоной сборки, глядя вниз. Для обнаружения частей, управляемых человеком, система использовала AprilTags, похожие на QR-коды, прикрепленные к частям.

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

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

Укрепление доверия

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

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

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

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

Быстрое изучение предпочтений

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

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

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

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

Dmitriy Nyu

Машинное обучение у всех на слуху, и я тоже решил попробовать свои силы в этом деле.

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

В качестве платформы для разработки, я выбрал R — язык и я бы сказал даже целый фреймворк. Другой альтернативой я рассматривал Python, но у меня есть проблемы с установкой некоторых пакетов, поэтому я отказался от него.

Процесс состоит из пяти шагов:

  1. Постановка задачи/вопроса
  2. Подготовка данных
  3. Подбор алгоритма
  4. Тренировка модели
  5. Тестирование модели

При этом, процесс итеративный, и часто приходится возвращаться к тому или иному предыдущему шагу. На сайте godesigner.ru есть возможность создать проект, в котором заказчик может вернуть себе вознаграждение дизайнерам, если ему не понравился результат. В целом, это не очень круто, потому что хотелось бы, чтобы все заказчики уходили довольными. Зная о том, что клиент может вернуть деньги, можно например превентивно с ним связаться и что-то предпринять. Вопрос был сформулирован так «На основе имеющихся данных о свойствах проектов и статистике возвратов предсказать, будет ли проект возвращён?». Сразу скажу, что я не был уверен, что по данным это можно определить, потому что данных немного и я не был уверен, что это вообще реально сделать.

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

  • Категория
  • Номер заказчика
  • Награда
  • Количество платных доп. опций
  • Количество оставленных оценок
  • Количество оставленных комментариев
  • Количество дней на конкурс
  • Флаг возврата

В целом, после фильтрации получилось немного строк, годных для тренировки — 852 строчки, совсем не Big Data. Тем не менее, я продолжил процесс, дальше стал выбирать алгоритм. Тип обучения у нас — обучение с учителем, задача из разряда классификации (нужно предсказать бинарное значение). Выбор пал на Random Forest, был написан следующий скрипт и запущен тренировка с выводом результатов:

Вот результат тренировки:

Из этой статистики можно сделать вывод, что вторая модель гораздо более подозрительная — она предсказывает возвраты намного чаще, вероятность — 62%, но делает это за счёт гораздо большего количества ложных подозрений проектов без возвратов. Какая из моделей лучше? Сложно сказать однозначно, они обе достаточно плохие, но наверное в определенных ситуациях вторая может подойти, потому что с практической точи зрения она даёт больше шансов среагировать на возможный возврат и предотвратить его.

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

Робот прогнозирует действия робота-партнера, наблюдая за ним

Робот прогнозирует действия робота-партнера, наблюдая за ним

Инженеры из Колумбийской школы инженерных и прикладных наук (США) создали робота, который научился предсказывать будущие действия и цели своего робота-партнера исключительно на основе визуальных наблюдений, «поставив» себя на место другого робота. Эта «теория разума роботов» может помочь роботам более интуитивно взаимодействовать с другими роботами – и людьми, сообщает пресс-служба вуза. Подробно о результатах исследования рассказано в журнале Nature Scientific Reports.

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

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

Над манежем установили робота-наблюдателя, который сверху видел все зеленые круги (и те, которые были скрыты красным квадратом от робота в манеже). В течение двух часов он наблюдал за своим партнером и начал предугадывать его цель и путь. В конечном итоге ему это удалось в 98 из 100 случаев в различных ситуациях: неважно, хорошо или плохо он видел своего партнера.

«Наши первые результаты очень впечатляют, – говорит Боюан Чен, ведущий автор исследования. – Наши результаты демонстрируют, как роботы могут видеть мир с точки зрения другого робота. Способность наблюдателя поставить себя на место своего партнера, так сказать, и понять, мог ли его партнер видеть или не видеть зеленый круг с его ракурса, возможно, является примитивной формой сочувствия».

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

From $34/Day — Car Rental HPN With Zero Terminal Shuttle