[Исследования и прогнозы в IT, Машинное обучение] Нейросети и трейдинг. Часть 2: набор «сделай сам»
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В прошлой статье я описал как получилось добится от нейросети предсказания тренда на реальном рынке. Статья вызвала интерес, но оказалось, что на главный вопрос ответа нет. А вопрос простой и прямолинейный — «Где доказательства?». Действительно, тема нейросетей в трейдинге обсуждается много, есть публикации, ей посвещены ветки на профессиональных форумах. Но сколько ни погружайся в тему, сколько ни общайся со специалистами, остается впечатление, что все это какая-то ускользающая иллюзия. Нет ничего реально работающего, ничего такого, что хотя бы отдаленно, но реально могло связать нейросеть и прогноз движения цены. Отсюда и обоснованное мнение сообщества, что движение цены не поддается прогнозированию в принципе, а все эти разговоры ни о чем.
Предлагаю развеить эти сомнения раз и на всегда и перевести дискурс из области «может предсказывать или не может» в область «хорошо предсказывает или плохо». И сделаем мы это простым, быстрым и наглядным способом. Я дам готовый инструмент и каждый сможет получить результат на своем компьютере. Поможет нам в этом бесплатный проект GoogleColaboratory. Это открытая платформа для совметной разработки, все вычисления происходят на серверах Google, всё взаимодействие через браузер, регистрация не нужна.
Код для нашей работы открыт и уже заряжен в GoogleColab. Результаты обучения нейросети для каждого будет индивидуальные. Это связано с тем, что начальные веса раздаются случайным образом и результаты немного отличаются. Так же учтите, что история котировок представляет из себя очень зашумленные данные, поэтому качество обучения низкое, но достаточное для того, что бы увидеть как будет прогнозировать нейросеть. Прогноз должен получиться примерно на уровне хорошего индикатора.
Единственное где мы сократим наш путь — это сбор данных на истории торговой пары. Сбор производится приложением к MetaTrader5, процесс не сложный, но требует навыков работы с тестером в MetaTrader5. Подробная инструкция потянет на отдельную статью, поэтому используем заранее подготовленные данные для пары Евро/Доллар (тем, кто пользуется MT5 я по запросу могу дать этот Expert). Убедиться в том, что заранее подготовленные данные «не подглядывают вперед» и не подсказывают нейросети, можно будет на последнем этапе когда перейдем к тестированию реальным рынком.
Начнем…
GoogleColaboratory
Наш «ноутбук» в GoogleColab можно найти по этой ссылке. Не забудьте сначала залогинится в свою учетную запись на Google (или Gmail).
Копируйте «ноутбук» себе.
Теперь нужно последовательно запускать все блоки сверху вниз.
1. Установка библиотек
На этом этапе установится TensorFlow и другие библиотеки. Процесс закончится сам, ничего делать не требуется.
2. Загрузка и подготовка данных для обучения
На этом этапе будет загружен датасет, а так же подготовлены отдельные массивы данных для обучения и тестирования. Датасет собран для пары EURUSD за период с начала 2015 года до сегодняшнего дня, шаг сбора данных — свеча M6. Последние 2 недели — тестовый участок. Данные в датасете — это набор из сотен тысяч строк каждая из которых примерно такая
0.32,0.26,0.00,0.43 ... 0.66,0.25,0.24,0.05,0,1,1600144440,1.189240
Предикторы идут через запятую, поля 3 и 4 с конца — это правильный ответ куда пошел тренд (0,1 — вниз; 1,0 — вверх). Второе поле с конца — id свечи. Последнее — цена на открытии свечи. Для обучения последние два поля не используются.
3. Обучение и тестирование модели
При первом запуске оставьте настройки нейросети по умолчанию. Обучение будет проходить в пять заходов пока не будет получен приемлемый результат. В случае успешного обучения появится примерно такая таблица:
+------------+---------+----------+-------------+------------+
| Ответ сети | Выиграл | Проиграл | Выиграл (%) | Свечей (%) |
+------------+---------+----------+-------------+------------+
| 0 | 7174 | 7173 | 50 | 100.0 |
| 2 | 6956 | 6731 | 50 | 95.4 |
| 4 | 6430 | 6224 | 50 | 88.2 |
| 6 | 5867 | 5630 | 51 | 80.1 |
| 8 | 5250 | 5065 | 50 | 71.9 |
| 10 | 4636 | 4450 | 51 | 63.3 |
| 12 | 3964 | 3772 | 51 | 53.9 |
| 14 | 3330 | 3152 | 51 | 45.2 |
| 16 | 2758 | 2539 | 52 | 36.9 |
| 18 | 2198 | 2012 | 52 | 29.3 |
| 20 | 1700 | 1544 | 52 | 22.6 |
| 22 | 1298 | 1167 | 52 | 17.2 |
| 24 | 958 | 825 | 53 | 12.4 |
| 26 | 699 | 517 | 57 | 8.5 |
| 28 | 446 | 278 | 61 | 5.0 |
| 30 | 246 | 127 | 65 | 2.6 |
+------------+---------+----------+-------------+------------+
Ответ нейросети — это бинарная классификация где [0 1] это «вниз», а [1 0] — «вверх». Но нейросеть никогда не отвечает целым значением, ее ответ, в зависимости от степени «уверенности», может быть типа [0.4 0.6]. В таком ответе нейросеть считает, что цена пойдет вниз, но не очень уверенна, а в ответе [0.1 0.9] тоже вниз, но уверенности намного больше. Вот как выглядит массив реальных ответов:
[[0.5084921 0.49150783]
[0.3930727 0.6069273 ]
[0.4930727 0.50692725]
...
[0.5189831 0.48101687]
[0.27955987 0.7204401 ]
[0.476914 0.5230861 ]]
Поле таблицы «Ответ сети» — это разница внутри этого бинарного ответа умноженная на 100. Очевидно, что эта разница характеризует «уверенность» сети в своем прогнозе. В итоге, после умножения на 100, мы имеем значения в диапазоне от 0 до 100. Теперь можно брать не все ответы, а выбирать только те, в которых нейросеть имеет значимую «уверенность». Что бы понять на сколько ответ влияет на результат прогноза, тестовый участок проверяется на правильность прогноза при разных уровнях этой «уверенности». Каждая строка таблицы — это проверка при новом большем значении «Ответа сети». Чем выше фильтр «Ответа сети», тем меньше ответов, но тем они качественнее. Это видно по полям «Выиграл» и «Проиграл». Процесс останавливается когда ответов (Сигналов) становится меньше 1% от всех тестовых данных.
Если при одном проходе сеть не обучилась просто перезапустите этот блок (данные заново подгружать не надо).
4. Результаты на торговом графике
Запустите этот блок. Тут все очевидно, на графике торговой пары из тестового набора отрисовываются сигналы нейросети, зеленый вверх, красный вниз.
5. Тестирование на реальном рынке
При этой проверке подгружаются данные для нейросети которые создаются по ходу добавления новых свечей в реальном времени. Т.е. последний вектор полученных данных создан на открытии свечи, в нашем случае нулевой свечи М6. Эти данные, естественно, не содержат правильного ответа, сети предлагается сделать реальный прогноз. Убедится в том, что вектора не подменяются по ходу их движения в историю можно раскомментировав строку print(data) и сравнив значения конкретной строки при входе и спустя некоторое время.
def get_from_ennro(symbol, tfm, dim, lim):
...
# print(data)
...
Сигналов на реальном рынке может и не быть. Так бывает когда волатильность меньше чем на тестовом участке, в этом случае нейросеть не видит точек для входа.
Выводы
Да! Качество прогноза не годится для открытия позиций. Но мы такую задачу и не ставили, главное, что нейросеть обучается и что то распознает на графике, угадывает тренд, ее прогноз очевидно не хаотичен. Обратите внимае, что мы использовали простейшую конфигурацию нейросети — Sequential Dense с 2мя слоями и всего 10 эпох для обучения. Тут есть куда развиваться дальше.
Решения качественно улучшающие прогноз уже есть, но о них в следующей статье.
===========
Источник:
habr.com
===========
Похожие новости:
- [Open source, Управление сообществом, Исследования и прогнозы в IT, Карьера в IT-индустрии, Биографии гиков] Цифровой гуманизм Питера Хинченса
- [Управление проектами, Монетизация IT-систем, Исследования и прогнозы в IT, Agile, Карьера в IT-индустрии] Agile без идеализма. Когда и как Agile работает. Политэкономический памфлет
- [Open source, Машинное обучение, Программирование, Разработка робототехники, Робототехника] Приглашаем на конкурс разработки open-source пакетов на Robot Operating System
- [Анализ и проектирование систем, Проектирование и рефакторинг, 1С-Битрикс, Исследования и прогнозы в IT, Бизнес-модели] Автоматизация взаимодействия дилеров и отдела продаж в крупном предприятии
- [Big Data, Машинное обучение] Как извлекать ценность из данных с помощью аналитической платформы от Factory5
- [Amazon Web Services, Машинное обучение] Настройка среды Amazon SageMake на локальной машине (перевод)
- [Машинное обучение] Алгоритм тегирования (классификации) менеджеров: как это выведет аналитику на новый уровень
- [Python, Математика, Машинное обучение, Научно-популярное, Мозг] Новый способ изучения психотропных веществ с помощью ЭЭГ и нейронных сетей
- [IT-инфраструктура, Информационная безопасность, Исследования и прогнозы в IT] «Ростелеком-Солар»: 90% IT-систем российских госструктур могут взломать киберхулиганы
- [Python, Машинное обучение] OpenVINO становится «серебряной пулей» хакатонов по компьютерному зрению
Теги для поиска: #_issledovanija_i_prognozy_v_it (Исследования и прогнозы в IT), #_mashinnoe_obuchenie (Машинное обучение), #_neural_network, #_mashinnoe_obuchenie (машинное обучение), #_nejroseti (нейросети), #_trejding (трейдинг), #_issledovanija_i_prognozy_v_it (
Исследования и прогнозы в IT
), #_mashinnoe_obuchenie (
Машинное обучение
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 13:07
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В прошлой статье я описал как получилось добится от нейросети предсказания тренда на реальном рынке. Статья вызвала интерес, но оказалось, что на главный вопрос ответа нет. А вопрос простой и прямолинейный — «Где доказательства?». Действительно, тема нейросетей в трейдинге обсуждается много, есть публикации, ей посвещены ветки на профессиональных форумах. Но сколько ни погружайся в тему, сколько ни общайся со специалистами, остается впечатление, что все это какая-то ускользающая иллюзия. Нет ничего реально работающего, ничего такого, что хотя бы отдаленно, но реально могло связать нейросеть и прогноз движения цены. Отсюда и обоснованное мнение сообщества, что движение цены не поддается прогнозированию в принципе, а все эти разговоры ни о чем. Предлагаю развеить эти сомнения раз и на всегда и перевести дискурс из области «может предсказывать или не может» в область «хорошо предсказывает или плохо». И сделаем мы это простым, быстрым и наглядным способом. Я дам готовый инструмент и каждый сможет получить результат на своем компьютере. Поможет нам в этом бесплатный проект GoogleColaboratory. Это открытая платформа для совметной разработки, все вычисления происходят на серверах Google, всё взаимодействие через браузер, регистрация не нужна. Код для нашей работы открыт и уже заряжен в GoogleColab. Результаты обучения нейросети для каждого будет индивидуальные. Это связано с тем, что начальные веса раздаются случайным образом и результаты немного отличаются. Так же учтите, что история котировок представляет из себя очень зашумленные данные, поэтому качество обучения низкое, но достаточное для того, что бы увидеть как будет прогнозировать нейросеть. Прогноз должен получиться примерно на уровне хорошего индикатора. Единственное где мы сократим наш путь — это сбор данных на истории торговой пары. Сбор производится приложением к MetaTrader5, процесс не сложный, но требует навыков работы с тестером в MetaTrader5. Подробная инструкция потянет на отдельную статью, поэтому используем заранее подготовленные данные для пары Евро/Доллар (тем, кто пользуется MT5 я по запросу могу дать этот Expert). Убедиться в том, что заранее подготовленные данные «не подглядывают вперед» и не подсказывают нейросети, можно будет на последнем этапе когда перейдем к тестированию реальным рынком. Начнем… GoogleColaboratory Наш «ноутбук» в GoogleColab можно найти по этой ссылке. Не забудьте сначала залогинится в свою учетную запись на Google (или Gmail). Копируйте «ноутбук» себе. Теперь нужно последовательно запускать все блоки сверху вниз. 1. Установка библиотек На этом этапе установится TensorFlow и другие библиотеки. Процесс закончится сам, ничего делать не требуется. 2. Загрузка и подготовка данных для обучения На этом этапе будет загружен датасет, а так же подготовлены отдельные массивы данных для обучения и тестирования. Датасет собран для пары EURUSD за период с начала 2015 года до сегодняшнего дня, шаг сбора данных — свеча M6. Последние 2 недели — тестовый участок. Данные в датасете — это набор из сотен тысяч строк каждая из которых примерно такая 0.32,0.26,0.00,0.43 ... 0.66,0.25,0.24,0.05,0,1,1600144440,1.189240
Предикторы идут через запятую, поля 3 и 4 с конца — это правильный ответ куда пошел тренд (0,1 — вниз; 1,0 — вверх). Второе поле с конца — id свечи. Последнее — цена на открытии свечи. Для обучения последние два поля не используются. 3. Обучение и тестирование модели При первом запуске оставьте настройки нейросети по умолчанию. Обучение будет проходить в пять заходов пока не будет получен приемлемый результат. В случае успешного обучения появится примерно такая таблица: +------------+---------+----------+-------------+------------+
| Ответ сети | Выиграл | Проиграл | Выиграл (%) | Свечей (%) | +------------+---------+----------+-------------+------------+ | 0 | 7174 | 7173 | 50 | 100.0 | | 2 | 6956 | 6731 | 50 | 95.4 | | 4 | 6430 | 6224 | 50 | 88.2 | | 6 | 5867 | 5630 | 51 | 80.1 | | 8 | 5250 | 5065 | 50 | 71.9 | | 10 | 4636 | 4450 | 51 | 63.3 | | 12 | 3964 | 3772 | 51 | 53.9 | | 14 | 3330 | 3152 | 51 | 45.2 | | 16 | 2758 | 2539 | 52 | 36.9 | | 18 | 2198 | 2012 | 52 | 29.3 | | 20 | 1700 | 1544 | 52 | 22.6 | | 22 | 1298 | 1167 | 52 | 17.2 | | 24 | 958 | 825 | 53 | 12.4 | | 26 | 699 | 517 | 57 | 8.5 | | 28 | 446 | 278 | 61 | 5.0 | | 30 | 246 | 127 | 65 | 2.6 | +------------+---------+----------+-------------+------------+ Ответ нейросети — это бинарная классификация где [0 1] это «вниз», а [1 0] — «вверх». Но нейросеть никогда не отвечает целым значением, ее ответ, в зависимости от степени «уверенности», может быть типа [0.4 0.6]. В таком ответе нейросеть считает, что цена пойдет вниз, но не очень уверенна, а в ответе [0.1 0.9] тоже вниз, но уверенности намного больше. Вот как выглядит массив реальных ответов: [[0.5084921 0.49150783]
[0.3930727 0.6069273 ] [0.4930727 0.50692725] ... [0.5189831 0.48101687] [0.27955987 0.7204401 ] [0.476914 0.5230861 ]] Поле таблицы «Ответ сети» — это разница внутри этого бинарного ответа умноженная на 100. Очевидно, что эта разница характеризует «уверенность» сети в своем прогнозе. В итоге, после умножения на 100, мы имеем значения в диапазоне от 0 до 100. Теперь можно брать не все ответы, а выбирать только те, в которых нейросеть имеет значимую «уверенность». Что бы понять на сколько ответ влияет на результат прогноза, тестовый участок проверяется на правильность прогноза при разных уровнях этой «уверенности». Каждая строка таблицы — это проверка при новом большем значении «Ответа сети». Чем выше фильтр «Ответа сети», тем меньше ответов, но тем они качественнее. Это видно по полям «Выиграл» и «Проиграл». Процесс останавливается когда ответов (Сигналов) становится меньше 1% от всех тестовых данных. Если при одном проходе сеть не обучилась просто перезапустите этот блок (данные заново подгружать не надо). 4. Результаты на торговом графике Запустите этот блок. Тут все очевидно, на графике торговой пары из тестового набора отрисовываются сигналы нейросети, зеленый вверх, красный вниз. 5. Тестирование на реальном рынке При этой проверке подгружаются данные для нейросети которые создаются по ходу добавления новых свечей в реальном времени. Т.е. последний вектор полученных данных создан на открытии свечи, в нашем случае нулевой свечи М6. Эти данные, естественно, не содержат правильного ответа, сети предлагается сделать реальный прогноз. Убедится в том, что вектора не подменяются по ходу их движения в историю можно раскомментировав строку print(data) и сравнив значения конкретной строки при входе и спустя некоторое время. def get_from_ennro(symbol, tfm, dim, lim):
... # print(data) ... Сигналов на реальном рынке может и не быть. Так бывает когда волатильность меньше чем на тестовом участке, в этом случае нейросеть не видит точек для входа. Выводы Да! Качество прогноза не годится для открытия позиций. Но мы такую задачу и не ставили, главное, что нейросеть обучается и что то распознает на графике, угадывает тренд, ее прогноз очевидно не хаотичен. Обратите внимае, что мы использовали простейшую конфигурацию нейросети — Sequential Dense с 2мя слоями и всего 10 эпох для обучения. Тут есть куда развиваться дальше. Решения качественно улучшающие прогноз уже есть, но о них в следующей статье. =========== Источник: habr.com =========== Похожие новости:
Исследования и прогнозы в IT ), #_mashinnoe_obuchenie ( Машинное обучение ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 13:07
Часовой пояс: UTC + 5