Прогнозирование валютного рынка с помощью нейронных сетей

10

Я хотел бы использовать ANN для автоматизации торговли валютами, предпочтительно USD / EUR или USD / GBP. Я знаю, что это сложно и, возможно, не так просто. Я уже прочитал несколько статей и провел несколько экспериментов, но без особой удачи. Я хотел бы получить совет от экспертов, чтобы сделать эту работу.

Вот что я сделал до сих пор:

  1. Я получил данные по тикам за месяц июль 2013 года. Он имеет объем покупки / продажи / продажи / продажи.
  2. Извлечены все тики за период от 12 до 14 часов за все дни.
  3. На основе этих данных создается набор данных, в котором каждая запись состоит из n значений ставок в последовательности.
  4. Эти данные использовались для обучения ANN с n-1 входами, а выходными данными является прогнозируемое значение n-й ставки.
  5. У ANN было n-1 входных нейронов, (n-1) * 2 + 1 скрытых и 1 выходной нейрон. Входной слой имел линейный TF, скрытый имел лог TF, а выходной имел линейный TF.
  6. Обучил сеть с обратным распространением сначала n-125, а затем 10.

Для обоих n MSE не опускался ниже 0,5 и оставался на этом уровне во время полной тренировки. Предполагая, что это может быть связано с тем, что временные ряды были полностью случайными, я использовал пакет R, чтобы найти частичную автокорреляцию в наборе данных (pacf). Это дало ненулевые значения только для 2 и 3 лагов.

Вопрос 1: Что это значит точно?

Затем я использовал показатель Херста для оценки случайности. В R Hurst (значения) показали значения выше 0,9.

Вопрос 2: Предполагается, что это почти случайно. Должно ли оно иметь значение ближе к 0,5?

Я повторил обучение ANN с n = 3. ANN был обучен и смог получить довольно низкое значение для MSE. Тем не менее, расчетный выход из этого ANN не сильно отличается от (n-1) -го значения ставки. Похоже, что ANN просто принимает последнюю ставку за следующую ставку! Я пробовал разные сетевые структуры (все многослойные представления), разные параметры обучения и т. Д., Но результаты были одинаковыми.

Вопрос 3: Как я могу улучшить точность? Есть ли другие методы обучения, кроме обратного распространения?

user1300
источник
Я не уверен, что вы добьетесь большего успеха, чем прогнозирование 1 / f-шума при использовании прошлых значений в качестве индикаторов для будущих. scholarpedia.org/article/1/f_noise#Stock_markets_and_the_GNP - ваши результаты пока что соответствуют этому. Вероятно, вам следует взглянуть на другие возможные функции, которые имеют некоторые основания для корреляции с будущими обменными курсами. Если бы это было легко, было бы больше богатых ученых данных.
Нил Слэйтер
да, может быть другие переменные вносят свой вклад в следующее значение больше, чем значения временного ряда сами по себе ... Я тоже буду экспериментировать с этим. Спасибо за указатели.
user1300

Ответы:

6

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

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

Кроме того, фондовый рынок поразительно хаотичен, что может привести к neural netпереоснащению. Это означает, что изучаемые им шаблоны будут плохо обобщаться. Что-то вроде того, что мы наблюдаем, как акции падают в течение дня, и единообразно решаем, что акции будут всегда уменьшаться только потому, что это было замечено в относительно короткий срок. Вместо этого такие методы, как ridgeи robust regression, которые будут определять более общие и менее сложные шаблоны, будут работать лучше.

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

Indico
источник
большое спасибо. Я буду оценивать устойчивую регрессию и посмотрю, как она пойдет.
user1300
5

Попробуйте рекуррентную нейронную сеть, модель, хорошо подходящую для данных временных рядов. Общеизвестно, что их трудно тренировать, но, похоже, они хорошо работают при правильной подготовке: http://cs229.stanford.edu/proj2012/BernalFokPidaparthi-FinancialMarketTimeSeriesPredictionwithRecurrentNeural.pdf

Мэдисон Мэй
источник