Я хотел бы использовать ANN для автоматизации торговли валютами, предпочтительно USD / EUR или USD / GBP. Я знаю, что это сложно и, возможно, не так просто. Я уже прочитал несколько статей и провел несколько экспериментов, но без особой удачи. Я хотел бы получить совет от экспертов, чтобы сделать эту работу.
Вот что я сделал до сих пор:
- Я получил данные по тикам за месяц июль 2013 года. Он имеет объем покупки / продажи / продажи / продажи.
- Извлечены все тики за период от 12 до 14 часов за все дни.
- На основе этих данных создается набор данных, в котором каждая запись состоит из n значений ставок в последовательности.
- Эти данные использовались для обучения ANN с n-1 входами, а выходными данными является прогнозируемое значение n-й ставки.
- У ANN было n-1 входных нейронов, (n-1) * 2 + 1 скрытых и 1 выходной нейрон. Входной слой имел линейный TF, скрытый имел лог TF, а выходной имел линейный TF.
- Обучил сеть с обратным распространением сначала 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: Как я могу улучшить точность? Есть ли другие методы обучения, кроме обратного распространения?
источник
Ответы:
Результаты, которые вы видите, не являются побочным продуктом вашего учебного продукта, а скорее
neural nets
не являются отличным выбором для этой задачи.Neural nets
фактически являются средством для создания нелинейной функции высокого порядка путем составления ряда более простых функций. Это часто очень хорошая вещь, потому что она позволяет нейронным сетям соответствовать очень сложным образцам.Однако на бирже любой сложный паттерн, когда торгуется, быстро распадется. Обнаружение сложного шаблона, как правило, не дает полезных результатов, поскольку это, как правило, сложные шаблоны в краткосрочной перспективе. Кроме того, в зависимости от выбранной вами метрики, существует ряд способов добиться хороших результатов, которые фактически не окупятся при инвестировании (например, просто предсказать последнее значение в вашем примере).
Кроме того, фондовый рынок поразительно хаотичен, что может привести к
neural net
переоснащению. Это означает, что изучаемые им шаблоны будут плохо обобщаться. Что-то вроде того, что мы наблюдаем, как акции падают в течение дня, и единообразно решаем, что акции будут всегда уменьшаться только потому, что это было замечено в относительно короткий срок. Вместо этого такие методы, какridge
иrobust regression
, которые будут определять более общие и менее сложные шаблоны, будут работать лучше.Победитель аналогичного конкурса Kaggle используется именно
robust regression
по этой причине. Скорее всего, вы увидите лучшие результаты, если переключитесь на модель поверхностного обучения, которая будет находить функции более низкого полиномиального порядка по глубоким сложным функциям нейронной сети.источник
Попробуйте рекуррентную нейронную сеть, модель, хорошо подходящую для данных временных рядов. Общеизвестно, что их трудно тренировать, но, похоже, они хорошо работают при правильной подготовке: http://cs229.stanford.edu/proj2012/BernalFokPidaparthi-FinancialMarketTimeSeriesPredictionwithRecurrentNeural.pdf
источник