使用R和神经网络(neuralnet)使用先前的价格预测价格

edb*_*500 3 statistics r machine-learning mathematical-expressions

在R神经网络页面中,我正在使用神经网络功能来尝试预测股价。

训练数据包含高,低,打开,关闭列。

myformula <- close ~ High+Low+Open
neuralnet(myformula,data=train_,hidden=c(5,3),linear.output=T)
Run Code Online (Sandbox Code Playgroud)

我的问题是,考虑到以下数据示例,您能否告诉我该公式是什么样子。

我有一个带有“高”,“低”,“打开”,“关闭”列的表,它具有两行值,每一行代表当天的烛台。因此,数据中的两行是前两天的烛台。我的目标是预测给定前两根烛台的下一个烛台,即“打开”,“高”,“低”,“收盘”。

我的神经网络将一次显示以前的dtata 1烛台。我想知道下一个烛台是什么,那么我的R公式会是什么样。

谢谢,让我知道

bak*_*kal 5

我的神经网络将一次获得一个烛台的先前数据。我想知道下一个烛台是什么,那么我的R公式会是什么样。

在前馈神经网络*中,您必须指定要用于预测的功能以及要预测的目标。在上面的示例中,特征为prev_close,而目标为close。正如您在培训数据中所看到的那样prev_close,这是我的回答的全部重点,您需要首先正确地制定问题。

如果只有close,就没有公式可以为此训练FF NN。您需要先创建prev_close公式,然后才能创建公式close ~ prev_close

*循环神经网络(RNN)可以在序列上进行训练,并根据输入序列输出预测,但这就是整个“蠕虫的另一罐”

简单示例:根据最后两个关闭值预测关闭

我制作了这个荒谬而简单的示例,只是为了说明问题的表述,该表述close基于最后两个close值来预测。我选择了一个带有1个神经元的隐藏层。我已经设置好了,linear.output=TRUE因为我们正在预测连续的值(如前所述回归问题,并且在neuralnet文档中指出,act.fct如果该值为TRUE ,将没有激活函数)

*如果您与此交易,您肯定会丢失您的衬衫。这只是为了展示如何在神经网络中构建这样的预测问题。不要真正使用它。

问题表述

我想说明的一点是,如果您在某栏中输入价格,则必须创建预测功能

prev_close_1 | prev_close_2 | close
Run Code Online (Sandbox Code Playgroud)

NN的问题是close基于prev_close_1和进行预测prev_close_2,因此公式close ~ prev_close_1 + prev_close_2

这是网络架构

在此处输入图片说明

注意输入是先前的收盘价,而输出是预测的收盘价。

library(neuralnet)

N = 10
prices <- data.frame(close=1:N) # Dummy straight line uptrend for N periods 

print(prices)

shift <- function(x, n){
  c(x[-(seq(n))], rep(NA, n))
}

# Form the training dataframe
train <- data.frame(
  prev_close_1=prices$close,
  prev_close_2=shift(prices$close, 1),
  close=shift(prices$close, 2)
)

# When shifting the columns for time lag effect, some rows will have NAs
# Let's remove NAs
train <- na.omit(train)

print(train)

nn <- neuralnet(
  formula=close ~ prev_close_1 + prev_close_2,
  data=train,
  hidden=c(1), # 1 neuron in a single hidden layer
  linear.output=TRUE # we want regression not classification
)

print(prediction(nn))
plot(nn)
Run Code Online (Sandbox Code Playgroud)

虚拟价格看起来像什么

这就是您所拥有的,仅是历史股价

   close
1      1
2      2
3      3
4      4
5      5
6      6
7      7
8      8
9      9
10    10
Run Code Online (Sandbox Code Playgroud)

NN受过什么训练

这就是您所需要的,功能和目标,请尝试在下面的训练数据框中形成行以了解移位/滞后。

prev_close_1 prev_close_2 close
1            1            2     3
2            2            3     4
3            3            4     5
4            4            5     6
5            5            6     7
6            6            7     8
7            7            8     9
8            8            9    10
Run Code Online (Sandbox Code Playgroud)

神经网络的预测

  prev_close_1 prev_close_2       close
1            1            2 2.994291864
2            2            3 4.017828301
3            3            4 5.002914789
4            4            5 5.968855729
5            5            6 6.978644849
6            6            7 8.030810042
7            7            8 9.051063456
8            8            9 9.945595495
Run Code Online (Sandbox Code Playgroud)