Болею, простуда, температуры почти нет — думаю, что в адеквате.) Чем-то серьезным заниматься явно не хочется, а писать посты на СЛ легко и приятно.
Последнее время на СЛ стало много постов об искусственном интеллекте (ИИ) и нейросетям (НС). Про ИИ я ничего не знаю, от слова совсем — мне это не по погонам, а в НС простой структуры что-то понимаю. Даже прочитал одну книгу — читал аж 3 месяца. А что вы хотите, почти 1000 страниц, сплошная математика, описаны перцептроны, SVM, машины Больцмана, рекуррентные, сверточные НС и пр. «простой» структуры. «Простой», в смысле без наворотов и вывертов. Сама такая «простая» НС может содержать хоть бесконечное число элементов. Саму книгу рекомендовать не буду — оч много математики и, чтобы разобраться, нужно как минимум 3-4 курса ВУЗа.
Но что написано в книге — «НС, как правило не применяется самостоятельно и хорошо решает узкоспециализированные конкретные задачи в составе сложных систем». © Цитирую по памяти.
Т.е., в дополнение к НС, нам еще нужно неплохо разбираться в смежных областях для построения системы, а также уметь выделить и сформулировать задачу для самой НС в составе системы и подготовить для НС данные. М… да, нехило так получается. Никому не рекомендую таким заниматься.) Мне можно, мне это интересно.)
А давайте, все же, попробуем что-то конкретное на НС для трейдинга, скажем, прогнозирование котировок фьючерса на 5 минут вперед, благо у меня имеется
рояль в кустах некий задел из моих же старых топиков о НС.
Сначала попробуем решить задачу прогнозирования котировок напрямую, непосредственно НС. Для этого возьмем перцептрон с 15 входами и одним выходом, около 100 нейронов. На вход будем подавать нормированную последовательность Close 1м свечей, на выходе у нас будет прогноз.
Некоторые для подачи на входы НС ищут какие-то предикторы (по сути, индикаторы) — этого нам не надо, 1-2 дополнительных слоя и НС при обучении самостоятельно построит необходимые ей предикторы (индикаторы), при условии, разумеется, что поставленная НС задача имеет решение.
Итак, делаем, обучаем, получаем результат.
По х — прогнозируемое значение на 5 минут, по у — реальное значение.
Ну, да, ежу понятно, что ни фига эта наша НС не прогнозирует. Решение для такой задачи похоже отсутствует. Ну, да, нас предупреждали, что — «НС, как правило не применяется самостоятельно и хорошо решает узкоспециализированные конкретные задачи в составе сложных систем». ©"
Хорошо, последуем советам классиков и попробуем применить для прогнозирования котировок на 5 минут вперед этот же перцептрон, но в составе системы. На вход НС будем подавать те же 15 котировок Close свечей 1м, с выхода будем брать прогноз, с тем отличием, что этим процессом будет управлять система.
Обучаем, получаем результат.
Опаньки, вот вам и прогноз на 5 минут вперед. В составе системы это уже работает
по х — прогноз на 5 минут, по у — реальное значение. по x,y — нормированные значения приращений котировок за 5 минут.
Технология, естественно, не раскрывается, know how, однако. Топик написан исключительно с целью показать, что даже простые решения с НС могут реально работать с рыночными временными рядами.
Сразу отвечу на вопрос, использовалось ли это в реальных ТС — Нет, не использовалось и в обозримом будущем не планируется.
ЗЫ Как обычно в моих топиках, комментарии модерируются автором. Пишите по делу и не задавайте глупых вопросов.)
А ещё есть второй вопрос: второй график получен на том, что сеть не видела в процессе обучения или это график, включающий данные, на которых она оптимизировалась?
И третий: отличается ли дисперсия этого прогноза от дисперсии прогноза нуль в изменении цены?
Результаты нереалистичные, 99% вероятность ошибки.
Предположим мы берем предикты (ось Х) только от 5 и более. По Графику видно, что там дофига точек в этот отрезок попадает, и на графике невооруженным глазом видно, что все эти точки больше 0. Т.е. мы на репрезентативной (большой) выборке получим winrate 100% — не, так не бывает).
PS Если вы знакомы с Питон делается просто.
Есть одномерный массив Close — C за N месяцев.
Тогда входные последовательности НС будут Cin = C[i-14:i+1], На выходе НС имеем Сpredict[i]. Выход для контроля +5 минут — Creal = C[i+5].
Кошку можно и завести.)