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

 
Dr.Trader:

它看起来很复杂,我不知道结果如何,我就不去了。
R有一个GMDH包(英文是 "MGUA")。

这很难,因为有各种各样的算法,很容易被混淆。

有一个包,但它是 "沉闷的"。

我试着用更简单、更简短的语言来解释......

一个非物理性的自组织组合模型是

对样本元素(预测器)的所有可能的组合进行简单的搜索,并在OOS下检查这种搜索的每个迭代,因为预测器是多项式或谐波,这种组合可能会变得更加复杂,所以要进入一个新的层次,进行组合,并再次在OOS下检查,再次进入一个新的层次,如此反复,直到找到OOS下的最小误差,这是自组织的本质(如果我对那里的一切理解正确)。

我的建议....

我们都知道,任何函数都可以被分解成傅里叶级数,如图所示。

ч

反之亦然,通过正确的谐波组合,我们可以得到 我们需要的任何 函数

现在想象一下,有一个函数(一条曲线)或一个矢量,随你怎么称呼它......它完全描述了一个市场工具并胜过它。它可能是一个聪明的季节性表达的函数或对其他仪器的依赖性,或月球周期))这绝对是不重要的,我们凡人不知道它, 我们可以找到这种依赖性,甚至不知道在哪里寻找它......让我们把这种依赖性--推动市场--进一步称为超级依赖性NW

我们所需要的是

1)采取一些适当范围的谐波

2) 创建一个目标

3)开始经历所有可能的谐波之间的组合,观察OOS。

你明白这有多简单和深奥吗?我们不知道在哪里寻找SP,但我们可以自己合成产生它!你知道吗?

就是这样,它看起来是一个简单的过采样算法,但当我理解它时,我感到很惊讶......

但有一个很大的BUT! 将会有数万亿的组合,我们需要一个方法,我需要你的帮助。

也许遗传学是一种寻找良好组合的方法?

你对这一想法及其实施有什么看法?

BLEEP!!!......

 

你所描述的是符合 "对OOS好 "的结果。首先,你选择模型参数(谐波组合),以便对样本有一个好的结果。然后你从它们中选择那些对OOS有好处的参数。这是对良好结果的双重拟合,模型在新的交易数据上很可能是无用的。

通过谐波的组合,你可以描述价格走势,但同样可以用神经元或森林来实现。我想你已经用神经元做了几百次,都没有成功,为什么你认为MGUA的结果会是积极的?外汇中的机器学习不能像传统问题那样容易使用,价格 行为随着时间的推移而变化,你发现和使用的大部分依赖关系--将很快不复存在。而所有这些模型都是为不随时间变化的恒定依赖性而设计的,正因为如此,在这样的问题上并不能盈利。

 
mytarmailS:

这很难,因为有各种各样的算法,很容易被混淆。

有一个包,但它是 "沉闷的"。

我试着用更简单、更简短的语言来解释......

一个非物理性的自组织组合模型是

对样本元素(预测器)的所有可能的组合进行简单的搜索,并在OOS下检查这种搜索的每个迭代,因为预测器是多项式或谐波,这种组合可能会变得更加复杂,所以要进入一个新的层次,进行组合,并再次在OOS下检查,再次进入一个新的层次,如此反复,直到找到OOS下的最小误差,这是自组织的本质(如果我对那里的一切理解正确)。

我的建议....

我们都知道,任何函数都可以被分解成傅里叶级数,如图所示。

反之亦然,通过正确的谐波组合,我们可以得到任何 我们需要的函数。

现在想象一下,有一个函数(一条曲线)或一个矢量,随你怎么称呼它......它完全描述了一个市场工具并胜过它。它可能是一个聪明的季节性表达的函数或对其他仪器的依赖性,或月球周期))这绝对是不重要的,我们凡人不知道它, 我们可以找到这种依赖性,甚至不知道在哪里寻找它......让我们把这种依赖性--推动市场--进一步称为超级依赖性NW

我们所需要的是

1)采取一些适当范围的谐波

2) 创建一个目标

3)开始经历所有可能的谐波之间的组合,观察OOS。

你明白这有多简单和深奥吗?我们不知道在哪里寻找SP,但我们可以自己合成产生它!你知道吗?

就是这样,它看起来是一个简单的过采样算法,但当我理解它时,我感到很惊讶......

但有一个很大的BUT! 将会有数万亿的组合,我们需要一种方法,我需要你的帮助。

也许遗传学是一种寻找良好组合的方法?

对这一想法及其实施的任何想法

我已经在我的指标中实施了这样一个想法。这是非常耗费资源的。我可以根据1000条历史记录进行调整,也可以根据10000条历史记录进行调整。底线如下:有时它完美地发挥作用,预测了价格的一个点。但在其他时候,它甚至没有接近。原因是所有这些时期在计算点之后开始在市场上浮动。也许有可能从当前值中输入修正值-+,但对我来说并不奏效。
 
Dr.Trader:

你所描述的是符合 "对OOS好 "的结果。首先,你选择模型参数(谐波组合),以便对样本有一个好的结果。然后从这些中,你选择那些对奥斯的参数是好的。这是对一个好结果的双重拟合,在新的交易数据上,这个模型很可能是无用的......。

我睡了一觉,自己也明白了,这是个废话,只是一个契机......

但这里有一个问题,为什么不适合其他一切?你知道,任何有OOS的训练都是对OOS的一种适应,对吗?

Dr.Trader:

为什么你认为MGUA的结果会是积极的?

我自己还完全不明白这一点,也许我永远不会明白......

只是在私人通信中,尼古拉建议我学习频谱分析,并熟悉MSUA,如果你想开始做一些有用的事情

他说,他自己也是这样开始的,当他建造第一个工作的机器人时,他只用了两本书,一本是Ivakhnenk的《MSIA》,另一本是Marple的《Spectrum Anal》。

书名的翻译并不正确,我只是总结了一下,让大家清楚我们在大体上谈论的内容。

谁是尼古拉斯?除了是一个谦虚和非常聪明的人之外。

他是人工智能的博士,制造机器人大约有20年了,他最新的机器人看起来像这样。

я

因此,他在大约30年前就开始旋转这些网络,当时我们还不知道 "神经网络 "这样的词 ......

而现在这个人只推荐了两样东西 傅立叶和马瓜,常识告诉我们这值得一听...下面是我的一些理由,为什么它应该工作))

 
马克西姆-罗曼诺夫
这大致上是我在指标中提出的观点。它非常耗费资源。我可以把它调整为1000条的历史,或者调整为10000条的历史。底线如下:有时它完美地工作,并预测了价格的一个点。但在其他时候,它甚至没有接近。原因是所有这些时期在计算点之后开始在市场上浮动。你可能可以从当前的数值中输入修正-+,但我没有得到它。
我明白了,合适就好))我同意我错了的事实。
 

问题

有一个向量 "x "和一个矩阵 "y"。

我们需要快速计算 "x "与矩阵 "y "的每一行之间的欧几里得距离。

我超越了标准函数 "dist()",写了我自己的函数

штатная

system.time(for(i in 1:nrow(m)) {dist.ve[i] <- dist(rbind(x,m[i,]))})

   user  system elapsed
   4.38    0.00    4.39

самописная

system.time(for(i in 1:nrow(m)) {dist.ve[i] <- euc.dist(x,m[i,])})
   user  system elapsed
   0.65    0.00    0.67

但这还不够,我想加速到第二个零点0.0....。

还有什么可以做的?

代码。

x <- rnorm(10)
m <- matrix(data = rnorm(1000000),ncol = 10)

euc.dist <- function(x1, x2) sqrt(sum((x1 - x2) ^ 2))

dist.ve <- rep(0,nrow(m)) # distance vector
system.time(for(i in 1:nrow(m)) {dist.ve[i] <- dist(rbind(x,m[i,]))})
system.time(for(i in 1:nrow(m)) {dist.ve[i] <- euc.dist(x,m[i,])})
 
mytarmailS:

但问题来了,那为什么不适合其他的东西呢?因为后来发现,任何有OOS测试的培训都是适合OOS的,对吗? 如果不是,那为什么不是?

对静止数据(具有恒定不变的依赖关系)的交叉验证和OOS测试是很有用的。在非稳态数据上,它是无用的。

例如,你可以使用相同的算法训练一堆模型,但在不同时间的数据上进行训练;对于每个模型,都要找到样本和OOS的利润,并找到这两个利润的相关性。对于常见的外汇模型,通常没有这种相关性,也就是说,样本上的利润并不能保证什么,在这种情况下,做交叉验证来试图改善新数据的结果是没有用的。
另一方面,如果相关性很高而且是正的,那么这个模型就有一定的潜力,你可以安全地进行交叉验证,以调整模型参数并改进结果。

 

这里是上一篇文章的一个例子。我们采取几个月的eurusd公开价格,对其进行模型训练(randomForest),并使用它们来预测一小段时间内的新数据。目标值是下一个条形图的价格增量(两类0和1)。这一切在不同的时间间隔内重复1000次,然后找到相关的数据。

最后,我们看到训练和新数据的结果的相关性,在这种情况下,我们得到了大约0.1,也就是说,在训练中应该有所改变,这种方法不会带来利润。训练数据上的好结果并不保证将来会有好结果。

TrainModel函数可以用来训练你自己的模型,做交叉验证,遗传匹配,等等。

附加的文件:
 
Dr.Trader:

这里是上一篇文章的一个例子。我们采取几个月的eurusd公开价格,对其进行模型训练(randomForest),并使用它们来预测一小段时间内的新数据。目标值是下一个条形图的价格增量(两类0和1)。这一切在不同的时间间隔内重复1000次,然后找到相关的数据。

最后,我们看到训练和新数据的结果的相关性,在这种情况下,我们得到了大约0.1,也就是说,在训练中应该有所改变,这种方法不会带来利润。训练数据上的好结果并不保证将来会有好结果。

你可以使用TrainModel函数来训练你的模型,做交叉验证,遗传匹配,等等。

1.你为什么要手动规范化?

2.为什么相关的-1和1是好的?只有当1是好的-1是非常糟糕的,如果我理解正确的话,-1是反相关的。

3.你是否尝试过在滑动窗口中监测训练过的模型的误差,如果它不适合你,就重新训练模型,看看会发生什么?

4.而全局的想法是,为什么这一切运作得如此糟糕,市场不是静止的,你需要研究出一些其他特征形成的概念,也许完全切换到逻辑规则的范式,我认为你需要几乎完全远离数字,或者研究频谱分析)))))。

 

昨天我在袋子里翻找合适的东西来完成一个想法,我没有找到合适的东西,但我确实找到了一个有趣的东西......。

这就是所谓的 "趋势"。

https://cran.r-project.org/web/packages/trend/trend.pdf

该软件包实现了各种趋势测试和其他东西

例如,函数

mk.test() - 给出一个趋势的特征,例如上升或下降,等等...。

pettitt.test() -按照我的理解,它找到趋势开始的向量中的那一点。

Sens.slope() - 通过这个函数,可以计算出趋势斜率的角度。

和很多其他的特殊功能

我认为,只要能科学地观察到趋势,就应该检查)我根据clowes的说法,在200个值的滑动窗口中计算了mk.test()$Zg,结果发现它是一个类似指标的东西

零以上是上升的趋势,零以下是下降的趋势。

й

还有呢?它能抓住趋势,不会像macd-ki和stochastc-ki那样混淆价格方向....。总的来说,我喜欢它总是沿着趋势的方向开仓。

在某些时期,它甚至能赚到好钱。

с

如果我采取计时码表,而不是M5,那么也许会有一些有用的东西。

Karoch我的建议是,有人拥有强大的电脑和时间来计算所有这些测试的趋势性,斜率,角度等,并喂养MO,也许这将工作,只是我现在有一台电脑在全速运行,运行处理,在四天内完成计数,而我现在坐在上面的笔记本电脑,它只能看网站)