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

 
Dr.Trader:

我只预测2类--"买入 "和 "卖出",这意味着我将永远有一些交易未完成。我只用一个模型工作,我不认为做两个模型有什么意义,因为它们的结果根本就相反。

但我想逐渐转移到3个等级--"买入"/"关闭一切,不交易"/"卖出"。这将使人们有机会用更复杂的策略进行交易。我试过几次,但我在训练模型到三个班级时遇到了问题,特别是如果模型是退步的,然后把结果取整到班级。
我认为值得尝试创建两个模型,第一个模型(只买)的原始1/0/-1类转化为1/0/0,第二个模型(只卖)为0/0/1。这将导致每个模型中的类别不平衡(一个类别的例子数量远远高于另一个),但我已经找到了评价在这种条件下工作的模型的良好指标--F-score和kappa。还没有在这个方向上做任何事情,但这样的计划看起来足够可行。

这个分支的方法的问题不仅是时间序列的非平稳性(同一模式按价格和时间的不同尺度),而且是模式的可变性。也就是说,昨天预示着增长的模式,今天可能意味着随后的平淡甚至是下跌。

买和卖的单独教学部分地解决了这些问题。我在几页前写过,我有两个网格,一个是学习买入信号(1;0)--买入或不做,另一个是卖出(-1;0)--卖出或不做。在这两个网格的输出端,有一个开关,将信号以(-1;0;1)的模式汇集在一起。这个网格委员会的工作原来是非常有趣的:在开始的时候,反馈的信号很好,渐渐地,信号的数量减少了,也就是更多的时候,输出的答案是0(模式停止被识别,这比错误的交易信号更好),一段时间后,开始有错误的交易信号(模式已经改变)。因此,在信号数量减少到特定阈值以下的阶段,已经可以而且应该被认为是需要在新的数据上进行新的训练的开始。

但事实上并没有这样的 "训练 "和 "练习"。各种交叉验证和OOS测试都没有也不可能给出预期的效果。关键是,这种技巧无非是寻找然后选择那些在训练和测试区域都能近似满意地工作的值,也就是说,这组参数最初已经存在于它们所有可能的变体中,它相当于一下子选择了整个历史区域。

尽管如此,在我看来,使用两个模型(在我的例子中,两个网格)是目前可用的 "机器学习 "方法中可以应用的最好的方法。这不是培训或辅导,而是一种优化模式的方式。

今天没有真正的培训。认识相同或相似的模式不是学习的结果,而是记忆的结果。训练必须涉及某种思维过程(无论多么原始),这将允许在接受新信息时进行推理和做出结论,以及独立产生新信息的能力。市场需要的正是这样一种方法--思维,据我所知,这种方法今天并不存在。而我们今天使用的是背诵,而不是思考,很遗憾。

 
Andrey Dik:

但是,事实上,不存在 "培训 "和 "教练 "这回事。各种交叉验证和OOS检查都没有也不可能产生预期的效果。重点是,这种技巧无非是搜索,然后选择那些在训练区和测试区都能令人满意地工作的值,也就是说,这组参数最初已经存在于它们所有可能的变体中,这相当于一下子选择了整个历史区域。

有一些模型通过了交叉验证,但在新的数据上没有通过测试。而且有一些模型可以通过交叉验证,然后以某种方式在利润方面进行交易。但如果一个模型没有通过交叉验证,那么在新的数据上尝试用它进行交易就没有意义了。
在我看来,这是选择预测器 和模型参数的第一步,非常好。下一步--滚动测试,找出模型(或用于拟合模型参数和预测因子的启发式方法)是否能与新数据一起工作。如果不能 - 我们需要改变一些东西。

你有两个神经元--你没有从头得到它们的参数,是吗?层数、学习率、抑制、重量控制,以及神经元所具有的其他几十个参数。你一定做了某种滚动测试来确定适当的参数,这本来也是交叉验证。我不相信你可以只拿两个有默认参数的神经元,然后开始在利润上交易。

 
Dr.Trader:

我不相信你可以只拿两个有默认参数的神经元开始交易,一下子就能获利。

为什么不呢?
 
Dr.Trader:

1.有一些模型通过了交叉验证,但在新的数据上没有通过测试。

2.还有一些模型可以通过交叉验证,然后以某种方式在加分项上进行交易。

但是,如果该模型未能通过交叉验证,那么在新数据上尝试用它进行交易就没有意义了。

4.在我看来,这是选择预测器和模型参数的第一步,非常好。

5.下一步--向前滚动测试,找出模型是否可以在新数据上进行交易。如果不能 - 我们需要改变一些东西。

6.你有两个神经元--你没有从地面上得到它们的参数,是吗?层数、学习速度、抑制、重量控制,以及神经元所具有的其他几十个参数。你一定做了某种滚动测试来确定适当的参数,这本来也是交叉验证。我不相信你可以只拿两个默认参数的神经元,并立即开始交易盈利。

1.是的,这并不意味着该模型是坏的。这可能意味着模型对于给定的数据量来说 "内存不足",也可能意味着没有找到适合于整个地块以及训练和验证地块的参数集。问题是,没有办法确定在新数据上测试失败的问题到底是什么。

2.是的,它的意思是 "足够的记忆"。只要减少训练数据的数量,就可以得到第1点中的相同内容。我们在未知的数据上得到了一些积极的东西,这可以被认为是一种纯粹的 "幸运",因为我们已经找到了模式,这与系统所知道的相同或非常相似,同时我们有确切的市场反应,在相应的模式之前发生。问题是,模式在不断地逐渐变化,有时是突然的,而且对未来没有任何保证。

3.是的,但如果它能通过,也不会差多少,原因如上所述。

4.是的,一个好的例子。但不是为了在未来提供对模型的稳健性的信心,而只是为了让验证通过,仅此而已。

5.向前走是验证该系统的唯一方法。唯一的一个。在我看来,如果一个人设法创建一个至少有55-60%效率的系统(即与 "学习 "情节相比,效率降低30%或更多),那么就可以认为已经成功了。但即使如此,也只意味着在市场模式的变化速度和系统记忆必要的信息量的能力之间的妥协,但这并不意味着系统 "哑 "了30%,而是意味着系统没有学到30%的新模式或改变的旧模式。

6.我所提到的两个神经元方法并不意味着 "学习 "本身。这只是同样的 "记忆",只是以一种巧妙的方式应用。我是忘记了旧的模式,没有认识到新的模式,就像你一样,但我没有在不熟悉的模式中进行交易,交易随着时间的推移而逐渐消失,然后发生错误的信号。我做了(以前做过)valk-forward测试,当每个时间单位的交易数量 减少到允许的阈值以下时,新的学习就发生了,所以我在valk-forward上得到了不同长度的测试部分,而 "学习 "部分是相同的。这导致了平均效率下降30%。

 
Combinator:
为什么?

神经元,像任何其他模型一样,将简单地在现有的数据中找到一些模式。这些模式是否对应于外汇的某些内部过程,或者它们只是被神经元根据 "某物与某物相乘,只要结果一致 "的原则拾取的--没有人知道,没有任何保证。为了使它能够检测到外汇的内部过程,它的结构(层、连接)必须以某种方式对应于外汇,它必须专门为其配置,只有这样它才会开始产生持续的好结果。

例如,用于对图片进行分类的卷积神经网络 现在非常流行。它们的使用听起来很简单(下载Python库,就可以了),但人们忘记了,很多大学几十年来一直在参加 "图片识别 "比赛,他们为每一个获胜的百分比而奋斗。像 "像梵高那样画一幅画 "或在图片中替换一个人脸这样的时髦事,是大学几十年来的工作成果,他们所有的本科生和研究生(可能还有教授),花了大量时间调整模型参数,或开发新模型。
对于外汇来说,这也是可能的,但你需要花费同样多的努力。在这种情况下,赢利是真实的外汇利润,这就是为什么不吹嘘模型配置,不公布给公众,每个新参赛者都必须重新开始。

 
Dr.Trader:

我不相信你可以只拿两个有默认参数的神经元开始交易,一下子就能获利。

当然,我也不相信这一点。因为这将意味着创造一个在其一生中只需要训练一次的思维机器。人类离会思考的机器还有很远的距离。
 
安德烈-迪克

分开学习购买和销售,可以部分解决这些问题。我在几页前写过,我有两个网格,一个是学习买入信号(1;0)--买入或不做,另一个是卖出(-1;0)--卖出或不做。

我的三元分类器也有两个网格,但有不同的隐藏层,都是对下一个价格方向预测进行分类,即1或-1。在输出端有一个开关,如果其中一个网格输出1,另一个输出-1(相互矛盾),那么开关就会输出0--什么都不做。

对于因变量值的买入和卖出,一切都很清楚,因为它们可以通过事实来确定--价格运动的方向遵循模式。但这里出现了一个棘手的问题,在什么条件下,你的二元分类器将因变量标记为0--什么都不做?

在自然界中没有事实这种条件,IMHO。

 
Andrey Dik:

5. ...

6. ...

通过这些解释,听起来好像是真的。那么你的交易模式有多罕见呢?例如,如果我们有"打开 买入头寸"和 "关闭所有交易 "的训练实例,这些类别的百分比率将是多少?我可以假设,买入类对应的是价格急剧上扬数百点,也就是说,买入类的数量约占所有训练实例的10%?
 
安德烈-迪克

1.是的,这并不意味着该模型是坏的。这可能意味着对于所提供的数据量,模型的 "内存不足"。

2.因为已经发生的模式与系统知道的相同或非常相似,以及在相应的模式发生之前的确切市场反应。问题是,模式在不断地逐渐变化,有时会突然地突然变化,对未来没有任何保证。

1)有一个网络,如果它收到以前不知道的数据,就可以进行预学习。 你可能有兴趣读一下,这个网络叫SOINNhttps://www.google.com.ua/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=soinn

2)我已经厌倦了写这些东西,此外,我实际上已经证明了市场与我自己的统计数字背道而驰,甚至解释了机械原理,为什么它会这样做,所有经典形式的训练都不能适用于它,但没有人感兴趣,大家都在做同样的事情。

Google
Google
  • www.google.com.ua
Голосовой поиск – это очень удобно! Чтобы найти нужную информацию, скажите "О'кей, Google" и произнесите запрос.
 
尤里-雷舍托夫

我的三元分类器也有两个网格,但有不同的隐藏层,都对下一个价格方向的事实进行分类,即1或-1。在输出端有一个开关,在其中一个网格给出1,另一个给出-1的情况下,开关给出0--无事可做。

买入和卖出的一切都很清楚,因为它们可以通过事实来识别--价格运动的方向遵循模式。但在这里我们面临一个棘手的问题,在什么条件下,你的二元分类器将因变量标记为0--什么都不做?

事实上,在自然界中不存在事实这样的条件,IMHO。

卖出 买入 解释

-1 0卖出

0 0 栅栏

0 1 买

-1 1栅栏

这里是开关表。你可以从中看到,当网格信号存在时,就会出现信号,而且不会相互矛盾。训练后,模式被识别,并发生了成功的交易,随着时间的推移,读数开始相互矛盾(出0-栅栏)或两个网格都停止识别模式(出0-栅栏)。因此,随着时间的推移,交易的数量 会减少,即 "不确定--不交易 "原则。

但你的问题似乎是一个不同的问题:你如何让相关的电网购买/出售,而不是坐视不理?- 答案很简单,就是一个积分系统。正确的答案会得到分数,错误的和围栏的会受到惩罚。我们需要选择点的比例,这也是一项伟大的任务,因为我们需要在最后实现两个网格的协调工作,但结果是值得麻烦的。

我认为,买入和卖出的模式是不同的。这就是我们的想法,在你的情况下也可能如此。