От автора программы:
Это пояснение, касаемое процедуры бэктестинга в модуле Neural Net (для краткости - NN). Чтобы провести бэктестинг в NN, пожалуйста, скачайте утилиту
TS Utilities из
User Area; а также загрузите текущее обновление для Terra, и установите установите все это с параметрами «по умолчанию».
Сейчас мы подберем лучший тренировочный интервал для любой модели NN. Строим нейросетевую модель в NN обычным способом, а после приступаем к бэктестингу - жмем на эту кнопку:
Для примера я построил очень простую динамическую модель, и теперь мне нужно понять, какой глубины котировки мне нужно для обучения этой модели, чтобы получить лучшую прогнозную кривую
Теперь вам необходимо настроить интервал обучения нейросети. Нажмите эту кнопку несколько раз, сдвигая LBC случайным образом:
Вам нужно также выставить размер статистической выборки (sample size) больше чем на 30 единиц - другими словами, чтобы проверить эту модель, мы будем использовать 30-летнюю историю котировок.
В результате (это просто пример) мы получим таблицу примерно вот такого плана:
Здесь мы провели процедуру классического форвардного анализа (WFA), и получили ее результаты в табличном виде:
- когда выставляем LBC на 17 июня 2010 г (см. первую строчку в таблице под словом Correlation), используя последние 250 баров (1 год для EOD) для тренировки нейросети => и получаем прогноз на один год вперед с 17 июня 2010 г. по 14 июня 2011 г. Корреляция этого прогноза равна значению 0,162 (первая строчка, первый столбец).
- когда с той же самой LBC используем последние 2 года (500 баров), смотрим в таблице второй столбец, то получаем коэффициент корреляции прогноза в размере r=-0,322
- когда 3 года (750 баров перед LBC), то значение r=-0,448
И так далее.
Затем мы переносим LBC на год вперед, на дату на 14 июня 2011 года (смотрим вторую строчку), и делаем то же самое - смотрим, как NN прогнозирует будущий год (с 14 июня 2011 года по 11 июня 2012 года)
Всего для тренировочного интервала в 250 баров (если брать весь первый столбец) мы получили 7 положительных корреляций против 3 отрицательных. Усредненная корреляция у нас - av=0,144, медиана (med=0,038) равна 0,038
Важно: официально мы больше не поддерживаем данную утилиту для бэктестинга. Это технология 10-летней давности, я называю это «слепым тестированием на истории». Когда-то это было актуально, но на данным момент я считаю, что нам нужно сначала понять, что происходит внутри процесса; иначе, применяя только процедуры оптимизации, мы столкнемся с хаотичным поведением прогностической кривой: стоит изменить какой-то не очень важный параметр, и результат в прогнозе может резко изменится.
Справка:
В таблице используется коэффициент корреляции - значение av это для всего столбца, а r - только для определенного интервала тестирования.
AVR - average correlation (значение варьируется в диапазоне от -1..+1)- параметр, показывающий усредненное корреляционное значение для некоторого количества тестируемых интервалов (обычно в WFA-анализе). Например, мы протестировали 10 интервалов и вывели среднее значение из их показателей.
На практике эти значения означают:
1 - идеальное совпадение между некоторыми данными (например, между загруженными котировками и линией некоего цикла).
0 - отсутствие корреляции. Два набора данных никак не связаны между собой.
-1 - анти-корреляция, что означает, что прогнозируемые значения "отзеркаливают" фактически имеющиеся значения. Иначе говоря, один набор данных (линия прогноза, например) вступает в "зеркальный эффект" с другим (прогнозируемыми котировками).
Какая корреляция является достаточно валидной? Чем больше значение, тем лучше. Как правило, модели, которые мы анализируем, дают значение корреляции в 0,1-0,2. Иногда бывает больше, но такие результаты не являются стабильными. Для уверенности, что результат не является случайным, при расчете корреляции необходимо иметь достаточное количество ценовых баров.