基于神经网络的外汇市场预测

数据挖掘 神经网络
2021-10-02 06:55:43

我想使用 ANN 自动交易货币,最好是美元/欧元或美元/英镑。我知道这很难,而且可能并不简单。我已经阅读了一些论文并进行了一些实验,但运气不佳。我想从专家那里得到建议来完成这项工作。

这是我到目前为止所做的:

  1. 我得到了 2013 年 7 月的逐笔报价数据。它有出价/要价/出价量/要价量。
  2. 提取所有时间段 12PM 到 14PM 的所有刻度。
  3. 根据这些数据,创建了一个数据集,其中每个条目依次包含 n 个投标值。
  4. 使用该数据训练具有 n-1 个输入的 ANN,输出是预测的第 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:这到底是什么意思?

然后我用hurst指数来评估随机性。在 R 中,hurst(values) 显示值高于 0.9。

问题2:它应该是几乎随机的。它的值应该接近 0.5 吗?

我用 n=3 重复了 ANN 的训练。人工神经网络经过训练,能够获得相当低的 MSE 值。但是,此 ANN 的计算输出与第 (n-1) 个投标值相差不大。看起来 ANN 只是将最后一个出价作为下一个出价!我尝试了不同的网络结构(所有多层感知)、不同的训练参数等,但结果是一样的。

问题3:如何提高准确性?除了反向传播还有其他训练方法吗?

2个回答

您看到的结果不是您的培训产品的副产品,而是neural nets对于这项任务来说不是一个很好的选择。Neural nets是一种通过组合一些更简单的函数来有效地创建高阶非线性函数的方法。这通常是一件非常好的事情,因为它允许神经网络适应非常复杂的模式。

但是,在证券交易所中,任何复杂的模式在交易时都会迅速衰减。检测复杂模式通常不会产生有用的结果,因为它通常是短期内的复杂模式。此外,根据您选择的指标,有许多表现良好的方法实际上不会在投资中获得回报(例如仅预测示例中的最后一个值)。

此外,股市异常混乱,可能导致neural net过度拟合。这意味着它学习的模式泛化能力很差。类似于仅看到股票在一天内下跌并一致决定股票将始终下跌只是因为它是在相对较短的时间内看到的。相反,像ridgeandrobust regression这样的技术可以识别更通用、更简单的模式,效果更好。

类似的 Kaggle 比赛的获胜者robust regression正是出于这个原因。如果您切换到浅层学习模型,您可能会看到更好的结果,该模型将找到较低多项式阶的函数,而不是神经网络的深层复杂函数。

尝试循环神经网络,这是一个非常适合时间序列数据的模型。众所周知,它们很难训练,但在适当训练时似乎表现良好:http: //cs229.stanford.edu/proj2012/BernalFokPidaparthi-FinancialMarketTimeSeriesPredictionwithRecurrentNeural.pdf