Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 135
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В течении какого времени?
Я так понял, ваш код в статье уже подходит для симуляции торговли по найденным точкам и им как раз можно воспользоваться. ) Это здорово.
Ну, скажем, за пару суток работы машины (или за неделю). Какой-то обозримый срок, скажем так.
Я так понял, ваш код в статье уже подходит для симуляции торговли по найденным точкам и им как раз можно воспользоваться. ) Это здорово.
Ну, скажем, за пару суток работы машины.
Сам алгоритм рабочий и не требует (если сильно не придираться) доработки, а вот участок кода с идеальным зз можно в принципе использовать как имитацию торговли с небольшой доработкой.
За пару суток? - нет, думаю гораздо быстрее можно получить хороший результат, часов или даже минут. В статье поиск шел что то около нескольких секунд, но там было 100 баров. В Вашем случае будет подольше конечно. Экспериментально можете подобрать количество эпох так, что бы получить результат с заданной точностью уложившись в заданное время.
Сам алгоритм рабочий и не требует (если сильно не придираться) доработки, а вот участок кода с идеальным зз можно в принципе использовать как имитацию торговли с небольшой доработкой.
За пару суток? - нет, думаю гораздо быстрее можно получить хороший результат, часов или даже минут. В статье поиск шел что то около нескольких секунд, но там было 100 баров. В Вашем случае будет подольше конечно. Экспериментально можете подобрать количество эпох так, что бы получить результат с заданной точностью уложившись в заданное время.
Так. Спасибо. Я буду пробовать. Хочу сгенерить входы для минутных баров на всей истории. И подставить в свой эксперимент.
Отличная работа вами проделана. А то, что идеальные входы не обязательно совпадают с логикой ЗЗ - это нетривиальный и важный вывод.
Так. Спасибо. Я буду пробовать. Хочу сгенерить входы для минутных баров на всей истории. И подставить в свой эксперимент.
Отличная работа вами проделана. А то, что идеальные входы не обязательно совпадают с логикой ЗЗ - это нетривиальный и важный вывод.
И Вам спасибо. На выделенное жирным мало кто обращал внимание, почему то...
Хочу добавить. В статье идет оптимизация ИЗЗ с учетом среднего спреда для инструмента, но по прошествии времени я теперь склоняюсь, а можно сказать - уверен, к мысли, что оптимизацию нужно проводить без спреда, а тестовые торговые прогоны считать уже со спредом.
И Вам спасибо. На выделенное жирным мало кто обращал внимание, почему то...
Хочу добавить. В статье идет оптимизация ИЗЗ с учетом среднего спреда для инструмента, но по прошествии времени я теперь склоняюсь, а можно сказать - уверен, к мысли, что оптимизацию нужно проводить без спреда, а тестовые торговые прогоны считать уже со спредом.
LSTM мы рассмотрим позже.
Пока что мы с коллегой пришли к R^2 0.2 на тесте. Несколько сверточных фильтров и несколько нейронов в полносвязном слое. По идее, там рекуррентность не нужна. Нужно правильное вычленение фичей.
Пока по моей задаче результаты такие (все оценки R^2 на тестовом множестве):
ARIMA: 0.14
MLP (fully connected NN): 0.12-0.15
GBM: 0.1
Convolutional Net (simple, not developed well): at least 0.2
Таким образом, смоделированная зависимость действительно оказалась не такой простой и популярные методы не справляются. Будем улучшать сверточную сеть.
Если все-таки у кого-то есть время попробовать решить задачу (какой-нибудь рекуррентной сетью), то прошу поделиться результатом.
Пока по моей задаче результаты такие (все оценки R^2 на тестовом множестве):
ARIMA: 0.14
MLP (fully connected NN): 0.12-0.15
GBM: 0.1
Convolutional Net (simple, not developed well): at least 0.2
Таким образом, смоделированная зависимость действительно оказалась не такой простой и популярные методы не справляются. Будем улучшать сверточную сеть.
Если все-таки у кого-то есть время попробовать решить задачу (какой-нибудь рекуррентной сетью), то прошу поделиться результатом.
Еще поработал над своей задачей. Использовал также сверточную НС с полносвязными слоями наверху.
Самый лучший полученный результат R^2 на тесте - 0.23.
Похоже, это потолок. Наращивание сложности сети уже не дает ничего. Но выход сети не совершеннен. Это точечный график отклик против модели. Ожидается узкое наклонное облако. По факту видно, что сложная функция отклика не полностью моделируется сетью (скачки не опознаны). Функция, выдаваемая сетью, намного более гладкая, чем я закладывал.
Может у людей, знакомых с НС не понаслышке будут мысли, как можно смоделировать такую сложную функцию (пример):
Наращивание кол-ва слоев, нейронов?
По факту, без подготовки входных переменных, все популярные методы слились. Свертка действительно потенциально может выудить нужные фичи (интегрированием, дифференцированием, нелинейным сглаживанием) и на них НС уже обучается нормально. В этом сила свертки.
Кстати, господин Перервенко в своей статье про нейронные сети ничего не сказал про такой тип сетей. Ну, я нашел только одно упоминание на всю статью. А можно было бы раскрыть вопрос применимости к временным рядам (вдумчиво).
Алексей
Вы, главное, побольше входов давайте.
И обучения примеров.
Вы, главное, побольше входов давайте.
И обучения примеров.
Чем больше нейронов в скрытом слое - тем более сложную функцию можно описать нейронкой, вам нужно больше скрытых слоёв и нейронов в них.
Но дальше проблема будет в том что нейронка использует последовательные сложения и умножения (и например сигмоиды для активационной функции) для описания цели, то есть явно получится не ваша оригинальная функция, а некая апроксимация. И вполне может оказаться что эта апроксимация будет запоминать какие-то особенности в тренировочных данных, из-за чего не будет правильно работать на новых данных. Поэтому иногда нужно останавливать обучение, смотреть уменьшилась ли ошибка на тестовой выборке, и продолжать обучение дальше если всё хорошо. В какой-то момент ошибка на тестовых данных начнёт расти, тогда обучение нужно полностью остановить.
Ещё, выход нейронки ограничен активационной функцией. Для популярных - сигмоида это (0;1), relu - [0;inf). Целевые значения нужно прошкалировать в другой интервал, ваши выходы в интервале (-7;7) просто недостижимы для многих пакетов.