Прогнозирование

биржевых цен для трейдеров

Метрики прогнозирования


На сколько можно доверять прогнозам нейросетей на этом сайте?

Как можно понять, что нейросети данного сайта дают качественные прогнозы?

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

Для ответа на эти вопросы нужно смотреть на метрики прогнозирования и метрики данных.

Проблема оценки работы нейросети

На первый взгляд кажется, что тут нет никакой проблемы. В самом деле, кажеется же, что нужно просто посмотреть, как нейросеть прогнозирует на исторических данных биржевых котировок. И всё сразу же станет ясно. Мы увидим "на глаз", что одна нейросеть дает более точные прогнозы, а другая менее точные.

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

А в реальности с методом "на глаз" вы, скорее всего, столкнетесь с тремя проблемами:

  • Может получиться так, что одна нейросеть будет лучше прогнозировать в одни времена, а другая в другие времена. Вам придется подсчитывать, какая нейросеть дает больше правильных прогнозов, первая или вторая.
  • Может получиться так, что одна нейросеть очень хорошо прогнозирует направление цены, вверх или вниз, но плохо прогнозирует её значение, а другая нейросеть, наоборот, хуже прогнозирует направление движения цены, но когда прогноз направления цены у неё правильный, то она очень точно определяет значение цены. Спрашивается, какая нейросеть лучше? Ответ не так очевиден, как может показаться на первый взгляд.
  • Может получиться так, что прогнозы одной нейросети преуменьшают изменение цены, а прогнозы другой нейросети, наоборот, преувеличивают изменение цены. Опять вопрос, какая нейросеть лучше? Ответ тоже не очевиден.

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

Поэтому для оценки сделанного прогноза нужно смотреть на метрики прогнозирования.

Что такое метрики

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

На данном сайте для оценки прогнозировании используется два вида метрик:

  • Метрики качества прогноза
  • Метрики качества данных

Метрики качества прогнозирования

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

Здесь для некоторых трейдеров, возможно, оказались непонятными две фразы: "обучающие исторические данные" и "тестовые исторические данные". Разберемся, что это такое.

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

  • Обучающие данные. Это первые по времени 80% всех введенных котировок. Они используются для обучения нейросети.
  • Тестовые данные. Это последние по времени 20% введенных котировок. Они используются для тестирования обученной нейросети.
  • Так вот нейросеть обучается на обучающих исторических данных, а метрики качества прогнозирования вычисляются на тестовых исторических данных.

    Почему так, а не иначе смотрите следующий раздел "Особенности обучения нейросети". Или пропустите его, если вам не интересны основы работы нейронных сетей.

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

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

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

    Это как ученик в школе, который вызубрил наизусть два примера на умножения: 56 x 42 = 2352 и 39 x 18 = 702, но не знает общий принцип перемножения двух чисел. Такой ученик не сможет перемножить, например, 64 x 73, так как он этот пример не вызубрил. Поэтому на экзамене этот ученик быстрее всех других учеников перемножит числа 56 x 42 и 39 x 18, но не сможет перемножить 64 x 73.

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

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

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

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

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

    Поэтому метрики тестовых данных применимы и к интересующему нас прогнозу на будущем фрейме.

    Список метрик качества прогнозирования

    • Корень среднеквадратичного отклонение прогнозов от реальных значений RMSE
    • Коэффициент детерминации R2
    • Вероятность верного прогноза направления PCDP
    • Пофреймовая прибыль PFP
    • Уверенность в прогнозе CCP

    Метрики качества данных

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

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

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

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

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

    Список метрик качества данных