Предсказание рынка на основе макроэкономических показателей - страница 51

 
Vladimir:
Я согласен, даже сам писал такое где-то здесь. Выбирать предиктор на всей истории, а потом использовать форвард тест из той же истории это само-обман, которым занимаются все, от трейдеров до учёных. Многие статьи написанные о предсказании экономики начинают с перечня выбранных предикторов, а потом сообщают "великолепные" результаты. Трейдеры выбирают стратегии например на основе отбоя или пробоя потому что "они работали в прошлом" и надеются что они будут работать в будущем и показывают форвард тесты из прошлого не понимая что их выбор самой стратегии был основан на их изучении ВСЕЙ истории, включая историю для форвард теста. Для меня форвард тестом моей модели ВВП и рынка будет будущее, поэтому открыл эту ветку - помещаю предсказания, смотрим как сбылись в реальном времени. Работа не закончена. Есть много идей по нелинейному преобразованию данных. Например, некоторые предикторы как например HOUST влияют на рост ВВП через какую-то пороговую функцию.

Нелинейность - это да.

А как подобрать нелинейную функцию? Перебором различных вариантов? Или просто использовать нейронные сети?  

 
Дмитрий:

Нелинейность - это да.

А как подобрать нелинейную функцию? Перебором различных вариантов? Или просто использовать нейронные сети?  

Вы можете также попробовать Random Forest, он проще в использовании и также моделирует нелинейности.

Пример:  https://www.quora.com/How-does-random-forest-work-for-regression-1

Вид полученной функции также можно оценить встроенными средствами. 

How does random forest work for regression? - Quora
  • www.quora.com
I think the first step would be to understand how decision trees work in a regression problem. You might be aware of CART - Classification and Regression Trees. When dealing with regression problem you try to predict real valued numbers at the leaf nodes which would look something like this for singular scale feature: Now the question comes how...
 
Alexey Burnakov:

Вы можете также попробовать Random Forest, он проще в использовании и также моделирует нелинейности.

Пример:  https://www.quora.com/How-does-random-forest-work-for-regression-1

Вид полученной функции также можно оценить встроенными средствами. 

Спасибо, случайный лес мне знаком
 
Дмитрий:

Нелинейность - это да.

А как подобрать нелинейную функцию? Перебором различных вариантов? Или просто использовать нейронные сети?  

Вот давайте думать вместе. Я хотел выбрать простую ступенчатую функцию:

out = -1 if input < threshold, +1 if input > threshold

где threshold это наш неизвестный порог, разный для разных предикторов. Например, для приращений S&P500 и GDP порог = 0, т.е. сами падения этих показателей важны а не пресечения какого-то порога. Для остальных экономических показателей не так просто. Порог нужно подбирать. Моделирование может выглядеть таким образом:

1. Определяем тип данных: растущие (S&P500, GDP,...) или диапазонные (уровень безработицы, фед ставки,...) путём сравнения значений в начале и конце истории - нужно подумать о робастном автоматичском методе определения данных.

2. Если данные растущие, то заменяем их на приращения x[i] - x[i-1]. Если диапазонные, то не изменяем.

3. Выбираем моделируемый выход, например приращения (рост) ВВП и применяем к нему ступенчатую функцию с нулевым порогом, т.е. рост ВВП заменяется на бинарный ряд +/-1.

4. Начинаем перебирать все предикторы и их задержанные версии на предсказательную способность таким способом. Берём предиктор или его приращения в зависимости от пункта 2, измеряем его диапазон по всей истории, делим этот диапазон например на 10 и получаем 9 порогов. Применяя каждый из 9 порогов, заменяем данный предиктор на бинарный ряд +/-1, и подсчитываем количество +1 и -1 нашего предиктора совпавших с +1 и -1 нашего моделируемого ряда (ВВП), получаем M совпадений при N полном количестве баров в истории. Подсчитываем функцию частоты совпадений M/N для каждого из 9 прогов и оставляем порог давший наибольшую частоту совпадений. И повторяем так для каждого предиктора.  Должно быстро вычислятья. 

Если кому-то хочется помочь, берите данные которые я поместил здесь несколько страниц назад и пробуйте. Я пока хочу закончить линейную модель и потом перейти к нелинейной.

 

ПС: Так как в ряде приращений S&P500 и ВВП намного больше положительных значений (+1) чем отрицательных (-1) можно придумать модификацию описанного выше метода чтобы взвешивать совпадения отрицательных значений более сильно, делая таким образом упор на падения а не рост данных показателей. Например, показатель хорошести может выглядеть так:

J = М(+1)/N + W*M(-1)/N

где W это вес >1 отражающий насколько меньше отрицательных значений в ВВП росте чем положительных. 

Большая проблема возникнет если захотим найти модель с 2-мя и более предикторами. Тут нужно подумать как соединять эти предикторы: через AND, OR или XOR функции. При подсоединении, пороги нужно оптимизировать снова.

 
Vladimir:

Большая проблема возникнет если захотим найти модель с 2-мя и более предикторами. Тут нужно подумать как соединять эти предикторы: через AND, OR или XOR функции. При подсоединении, пороги нужно оптимизировать снова.

Если подавать данные на сетку, то она найдет пороги "автоматически", причем сразу для всех предикторов, которые были включены во входной вектор.
 
Vladimir:

Если кому-то хочется помочь, берите данные которые я поместил здесь несколько страниц назад и пробуйте.

В csv можно те же данные отконвертить?
 
Stanislav Korotky:
В csv можно те же данные отконвертить?
Прилагаю. В первом столбце даты в матлабовском формате, от Q1 1959 до Q4 2015. В остальных столбцах непреобразованные экономические и финансовые показатели. ВВП в 1168-м столбце.
Файлы:
Data.zip  1037 kb
 

Закончил линейные предсказания ВВП. Вот на два квартала вперёд:


В моделе 4 предиктора, хотя и 3 вполне достаточно. После 3-4-х предикторов, остаток выглядет как шум. Предсказание S&P500 тем же методом что и ВВП работает очень плохо. Я даже тут не показываю. Я также быстро попробовал нелинейные преобразования ступенчатой функцией как я описал раньше. Это работает хуже чем линейная регрессия.

Жду выпуска нового значения ВВП в конце Апреля. Пока отдыхаю.

 
Vladimir:
Прилагаю. В первом столбце даты в матлабовском формате, от Q1 1959 до Q4 2015. В остальных столбцах непреобразованные экономические и финансовые показатели. ВВП в 1168-м столбце.
Спасибо. Однако было бы желательно иметь названия всех столбцов. Также, насколько я понял, даты скопировались не совсем корректно (с потерей точности числа), поэтому записи идут группами по 11 с одинаковой датой.
 
Vladimir:

Закончил линейные предсказания ВВП. Вот на два квартала вперёд:

Картинка красивая, но можно было бы вместо неё посчитать на каждом шаге произведение прогнозируемого изменения на фактически произошедшее, просуммировать за весь период и поделить на такое же произведение, но в котором прогнозные и фактические изменение берутся по модулю?
Причина обращения: