交易中的机器学习:理论、模型、实践和算法交易 - 页 135

 
安德烈-迪克
多久?

我理解,你在文章中的代码已经适合于在发现的点上进行模拟交易,使用它正好合适。)这很好。

好吧,让我们说在机器运行的几天(或一周)。比方说,一些可预见的时间框架。

 
阿列克谢-伯纳科夫

我理解,你在文章中的代码已经适合在发现的点上模拟交易,可以直接使用。)这很好。

好吧,让我们说在机器运行的几天内。

该算法本身是有效的,不需要(除非你太挑剔)额外的工作,而具有理想ZZ的代码片段可以作为交易模拟,但需要一些额外的工作。

在几天之内?- 不,我认为你可以更快地得到一个好的结果,在几个小时甚至几分钟内。在文章中,搜索的时间大概是几秒钟,但有100条。当然,在你的情况下,它可能需要更长的时间。你可以通过实验来估计历时的数量,这样你就能以指定的精度获得结果,并满足时间限制。

 
安德烈-迪克

该算法本身是有效的,不需要(除非你太挑剔)进行一些微调,但具有完美ZZ的代码部分原则上可以作为贸易模拟,并进行一些微调。

在几天之内?- 不,我认为你可以更快地得到一个好的结果,在几个小时甚至几分钟内。在文章中,搜索的时间大概是几秒钟,但有100条。当然,在你的情况下,它可能需要更长的时间。你可以试验性地调整历时的数量,以便获得所需精度的结果并满足时间要求。

所以。谢谢你。我会试一试的。我想为整个历史上的分钟柱产生输入。然后我就把它们放在我的实验中。

你的工作做得不错。而理想条目不一定与ZZ逻辑相吻合的事实是一个非同小可的重要结论。

 
Alexey Burnakov:

好的。谢谢你。我会试一试的。我想为整个历史上的分钟柱产生输入。然后我就把它们放在我的实验中。

你的工作做得不错。而理想的输入不一定与ZZ逻辑相吻合的事实,是一个非同小可的重要结论。

也谢谢你。很少有人注意到黑体字,因为某些原因......

我想补充一下。文章在优化 PPI时考虑了仪器的平均价差,但现在我倾向于认为,优化应该在没有价差的情况下进行,而价差必须在测试过程中考虑。

 
安德烈-迪克

也谢谢你。很少有人注意到黑体字,因为某些原因......

我想补充一下。文章在优化WPI时考虑了工具的平均点差,但现在我倾向于,或者说肯定地认为,优化应该在没有点差的情况下进行,而测试交易运行应该在点差的情况下进行。

为了优化 "每条杠",当然需要考虑到价差。否则将在每个条形图上以下一个开放价格 的方向执行交易。传播使任务成为非线性的,并定义了最佳的交易配置。
 
Alexey Burnakov:

LSTM我们将在后面看。

目前,我和我的同事已经得出了R^2 0.2的测试结果。几个卷积滤波器和全连接层中的几个神经元。我们的想法是,那里不需要复发。我们需要的是正确提取特征。

到目前为止,我的问题的结果如下(测试集上的所有R^2得分)。

自回归移动平均模型:0.14

MLP(完全连接的NN):0.12-0.15

GBM:0.1

卷积网(简单,没有发展好):至少0.2

因此,模拟的依赖性确实已经变成了不那么简单,流行的方法也失败了。我们将改进卷积网络

如果有人有时间尝试解决这个问题(用一些递归网络),请分享结果。

 
阿列克谢-伯纳科夫

到目前为止,我的问题的结果如下(所有测试集上的R^2估计)。

自回归移动平均模型:0.14

MLP(完全连接的NN):0.12-0.15

GBM:0.1

卷积网(简单,没有发展好):至少0.2

因此,模拟的依赖性确实已经变成了不那么简单,流行的方法也失败了。我们将改进卷积网络。

如果有人有时间尝试解决这个问题(用一些递归网络),请分享结果。

我也在努力解决我的问题。我还使用了卷积NS,上面有完全连接层。

在测试中 得到的R^2 的最佳结果是0.23

这似乎是天花板。增加网络的复杂性并不能带来任何好处。但该网络的输出并不完美。这是对模型的反应的点图。预计会有一个狭长的倾斜云。事实上,可以看出,复杂的响应函数并没有被网络完全模拟(跳跃没有被识别)。网络产生的功能比我布置的要顺畅得多。


也许熟悉NS的人对这样一个复杂的函数如何建模会有一些想法(例子)。

增加层数,神经元的数量?

事实上,在没有准备输入变量的情况下,所有流行的方法都已经合并了。转换真的可以潜在地提取所需的特征(通过积分、微分、非线性平滑),而且NS已经从它们那里正常学习了。这就是卷积的力量。

顺便说一下,佩雷文科先生在他关于神经网络的文章中没有说过这种类型的网络。好吧,我发现整篇文章中只有一处提到。而且还可以揭示出对时间序列的适用性问题(深思熟虑)。

ǞǞǞ

 

你,最重要的是,给予更多的投入。

还有培训实例。

 
Vadim Shishkin:

你,最重要的是,给予更多的投入。

还有培训实例。

这就够了。
 

隐蔽层中的神经元越多--神经元可以描述的功能就越复杂,你需要更多的隐蔽层和其中的神经元。

但问题是,神经元使用连续的加法和乘法(例如激活函数的sigmoids)来描述目标,也就是说,你显然不会得到你的原始函数,而是某种近似。而结果可能是,这个近似值会记住训练数据中的一些特征,所以它在新数据中不能正确工作。因此,有时你需要停止训练,看看测试样本的误差是否减少,如果一切正常,再继续训练。在某些时候,测试数据上的错误会开始增长,然后必须完全停止训练。

另外,神经元键的输出受激活函数的限制。对于流行的--sigmoid是(0;1),relu是[0;inf]。目标值需要缩放到不同的区间,你在区间(-7;7)的输出对许多软件包来说根本无法实现。

原因: