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

 
Dr.Trader:

对上一篇文章的一点补充。不,没有三角洲。我必须要试一试。

总之,我试着在你的数据上找了一下相关关系。更有可能的是没有,而不是有。我碰巧在火车上随机拍摄的一半观察报告中发现了一些东西。开始检查另一半,同样的依赖性也不存在。事实证明,要么是根本没有,要么是数据的构建方式让人无法在上面找到好的依赖关系。

不过让我再试一次。我将给出我的反馈。

ǞǞǞ

 

我怀疑这些数据中缺少一些东西。就像你在第一个帖子中的作业一样--如果你从样本中删除这6个条目中的哪怕一个,结果就变得不可预测了。外汇显然取决于它自己过去的价格,一天中的时间,等等。而这个 "itd "正是我的数据中所缺少的,因此,模型根本无法充分找到任何规律性的东西,也无法描述逻辑。莱斯显然不能尝试不同的组合,如 "从低位减去高位",然后取其精华,这样的东西需要加入到样本本身。我目前正在重做我的脚本,该脚本将外汇数据保存在csv中,根据建议,在那里添加了大量的deltas,以及到过去zigzag顶点的距离。我稍后将发布一个新的数据文件供实验。

 
桑桑尼茨-弗门科

附上一些文章,据说这些文章解决了清除原始预测器集的噪音问题,而且质量更高。可惜我现在没有时间去尝试。也许有人会试一试并公布结果?

我能够重复这个描述的过程。根据结果--我的一组预测器以0.1%的置信度描述了结果,或类似的东西...有很多理论超出了我的知识范围,我并没有理解所有的东西。

我添加了3个文件。你只需在那里改变csv文件的路径,就可以运行它。所需的结果应该在csv的最后一列,其他都是预测因素。事先不要对任何东西进行规范化处理,按原样提供数据。

1)主成分回归01。文章介绍部分的一些代码,在我看来,它缺少一些东西,因为我在运行代码时出现了错误。它应该给每个输入打分,并画出一个图表,不幸的是,我不明白什么是什么,如何应用它。

2)主成分回归03.主成分回归,Pt.2:Y-意识方法。我跳过了第一部分,因为文章中说第一部分是另一种更弱的算法。
代码分为两部分,必须一个接一个地运行,在每个部分之后看R中绘制的图表。

第一次运行--你需要将文件中的所有内容复制并运行到第二步的开头(第二步的开头用粗体字STEP 2标出)。R控制台将显示一个表格,输入的数值越低,就越好。值=1=垃圾。再加上图表,线条越长越糟糕,类似于表格。

接下来我们需要运行第二步的代码。最后会有一个图表,与输入有关的线越长,就越可靠(步骤1中反之亦然)。代码中还有一个examplePruneSig变量,负责根据步骤1表中的psig值对输入进行筛分。如果你想看到所有输入的合理性的转化值,你可以设置变量值=1。因为有可能一个输入在第一步中被评估得很差,但在第二步中变得更好。建议采取一些阈值或examplePruneSig=1/number of_inputs,但没有确切的指示。

第三步是主成分分析(prcomp)本身。这对我来说又是一个新的东西,但问题是这个函数试图输出许多 "主成分"(PC)(类似于内部变量的东西,所需结果取决于此)。这些内部变量中的每一个都依赖于一组不同的输入数据。然后,任务就归结为找到能够可靠地确定结果的此类PC的最小集合。而由此产生的预测器样本本身就是属于该最小集合的那些PC的预测器。
这篇文章本身并没有解决这个问题,它只是把前两台PC拿出来,看它是否成功。但我可能遗漏了一些东西,所以如果你了解prcomp,你最好自己读一下。
但是,在该步骤结束时,将画出前5台PC的图,以及它们使用的输入。图上的线越长,输入就越重要。

第四、第五、第六步--对训练和测试数据的结果进行评估。


3)主成分回归04。一个来自另一个软件包的函数,其作用与主成分回归03中相同。然而,一个好处是,它筛选出了PC,并留下了一组最低限度的能以95%的准确率描述结果的PC。
但没有足够的例子和图表,我猜你必须使用主成分回归03的东西。


简而言之。

1) 筛选出噪声值。我们取 "主成分回归03 "文件,只运行到第二步的代码(不包括第二步)。 R将包含一个表格,只取psig值小于阈值的输入。数值为 "1 "是噪音和随机的。"0 "是好的。阈值为(1/输入数)是不确定的。这种方法并不能保证输入的采样是正确的,相反,它只是删除了真正的随机和噪声值。

2)一种更复杂的方法。一个狡猾的算法创造了一些主成分,可以用来计算结果。PC是一种描述被建模的模型中发生的一些内在过程的函数。而模型本身的结果是一组相互作用的PC。接下来,我们采取一套最小的PC,以高精确度描述结果,看看这些PC的输入。文件 "主成分回归04 "允许我们得到这种PC的最小集合,但不清楚如何进一步处理它,我们需要拉出所用的预测因子。

这里又是文章本身,以及它的代码。

http://www.r-bloggers.com/principal-components-regression-pt-2-y-aware-methods/

https://github.com/WinVector/Examples/blob/master/PCR/YAwarePCA.Rmd


Principal Components Regression, Pt. 2: Y-Aware Methods | R-bloggers
Principal Components Regression, Pt. 2: Y-Aware Methods | R-bloggers
  • Nina Zumel
  • www.r-bloggers.com
In our previous note, we discussed some problems that can arise when using standard principal components analysis (specifically, principal components regression) to model the relationship between independent (x) and dependent (y) variables. In this note, we present some dimensionality reduction techniques that alleviate some of those problems...
附加的文件:
 
Dr.Trader:

我怀疑这个数据中缺少一些东西。就像你第一个帖子中的作业一样--如果你从样本中删除这6个条目中的任何一个,结果就变得不可预测了。外汇显然取决于它自己过去的价格,一天中的时间,等等。而这个 "itd "正是我的数据中所缺少的,因此,模型根本无法充分找到任何规律性的东西,也无法描述逻辑。莱斯显然不能尝试不同的组合,如 "从低位减去高位",然后取其精华,这样的东西需要加入到样本本身。我目前正在重做我的脚本,该脚本将外汇数据保存在csv中,根据建议,在那里添加了大量的deltas,以及到过去zigzag顶点的距离。我稍后会发布一个新的数据文件,用于实验。

又尝试了一些搜索。并做了验证性检查。但发现的依赖性并没有得到证实。总而言之,我认为数据中没有足够的信息。试着扩大投入的清单,是的。

这里是我的外汇数据:https://drive.google.com/drive/folders/0B_Au3ANgcG7CYnhVNWxvbmFjd3c

dat_train_final是一个用于模型训练的文件。它有超过10年的5种货币对的历史和我所有的预测器。

Many_samples - 我需要在R中加载。这是一个列表--在每个元素中都有一个验证样本,总共有49个。任何或所有这些都可以被验证。

Meet Google Drive – One place for all your files
  • accounts.google.com
Google Drive is a free way to keep your files backed up and easy to reach from any phone, tablet, or computer. Start with 15GB of Google storage – free.
 

我看不到你的文件,链接只是一个空文件夹。

一般来说,这是我的新文件,用于训练金牛座的模型(H1,5个柱子,目标是下一个柱子的上升/下降价格)。我按照上面提到的文章principal-components-regression-pt-2-y-aware-methods进行分析,结果发现数据可靠地描述了不到1%的结果。
(SanSanych的RData对Rat_DF1的这个数字超过了10%),所以看起来我又有垃圾了。在这个文件上训练模型的可能性不大,如果想训练筛选出预测因子,它更适合。

归档文件包含2个文件,条件是在第一个文件中训练模型(把它分成几块用于测试和验证更方便,默认情况下Rattle把它分成75%/15%/15%),然后,当输入被选中并且模型被训练好后,在第二个文件中做物理测试。如果误差小于45%--你就有机会在外汇中用这样的模型进行交易。你可能不会获利,但你可以从经纪商那里获得交易数量 和回扣的奖金。如果第二个文件的分类误差小于40% - 这已经是一个有利可图的策略。

附加的文件:
 
Dr.Trader:

2)主成分回归,Pt.2:Y-Aware方法。我省略了第一部分,因为文章中说第一部分是另一种较弱的算法。

在我看来,也许我错了,但你的结果的不确定性是由不了解主成分法的本质造成的。而本质是如下的。

从现有的预测器中,创建新的预测器,使其具有一些新的有用属性。

结果显示在一个表格中,标题是PC1、PC2......,表格的行名是你的预测因子的名称,每个PC下的列是数字--你需要将初始预测因子乘以的系数,以形成PC的值。即:对于某个条形图,我们取初始预测因子的值,乘以系数,得到PC值,然后再取下一个条形图,以此类推。结果,除了你的初始向量,例如Ask,我们还得到一个向量

表中的所有PC都是有序的。第一个是最能解释原始集合中的变异性的MS,第二个是最能解释第一个MS所剩的变异性的MS。例如,PC1=0.6,PC2=0.2,那么PC1+PC2总共能解释0.8的变异性。通常,对于大的预测因子集,5-6个这样的 "主成分 "就足以解释95%以上的变异性。这是在大多数预测因子是噪声,而其中有真正的 "主 "成分的情况下!

我已经描述了经典的 "主成分"。这篇文章对我们来说很有意思,因为它与经典的文章不同,计算的是与目标变量有关的变异性。另一方面,为了从完全没有希望的预测因素中挑选出一些东西,就需要阈值。在我看来,这与我们没有关系。例如,它与社会学的统计有关,在那里很难收集任何额外的东西。在我们的案例中,即使是一个货币对也可以用来建立大量的预测器。

也许你可以在这些基本组成部分上再做一次运行(打击)?

PS。

1.我们不要忘记,主成分需要事先对原始数据进行标准化处理

2.由此产生的主成分有一个显著的特性,即它们是相互独立的。

3.主成分是可以预测的。

 

我现在明白了,谢谢你的澄清。我只是从文章中了解到这种模式。我以为PC1和PC2,3,4,...对应的是不同的预测因子集,而不是系数。我确实看到了系数表,现在我已经很快找到了在哪里可以得到什么。

PrincipalComponentRegression04.txt中的代码似乎过于复杂。另外,似乎没有关于目标变量 的变异性的定义,我又回到 了今天早上我所附的那个档案中的PrincipalComponentRegression03.txt。

需要做前5个步骤。

下一步。

> model$coefficients

(截点) PC1 PC2

0.02075519 0.40407635 -0.42250678

执行的结果应该是intercept + coef1 * PC1 + coef2 * PC2 + ...。+ 剩余的PC,如果有的话

PC1、PC2的数值。:

> proj

>项目

PC1 PC2

X_clean 0.00516309881 0.00477076325

X1_clean 0.00142866076 0.00149863842

X2_clean -0.00008292268 0.00001010802

.....

PC1 = X_clean * 0.00516309881 + X1_clean*0.00142866076 +。

现在对我来说是个谜,后缀 "clean "是否是一个参考,以获取输入的原始值,X、X1、X2......。在归一化和转换之前,或不归一化。

稍后,我将举一个更简单的例子,手动计算所有数值,以比较我的公式是否正确。只是暂时的猜测 )

但后来发现,这种方法并不是为了剔除预测因子,而是为了训练一个本身就忽略了最大数量预测因子的模型。我们能做的就是计算每个预测因子的平均系数,排除低于阈值的东西。
这个模型本身与neuroncu非常相似,但没有激活函数,也没有对内层的神经元进行移位。但本质是一样的。

还有一个问题--要带多少个PC组件。如果我得到的置信度低于95%,我必须回到第3步,将proj <-extractProjection(2,princ)>从两个改为三个,然后执行第3、4、5步,计算误差,如果小于95%,则回到第3步,再次增加组件的数量。

如果我们能在MT5中直接访问R,我们就会有一个完成的模型,可以进行交易。我理解这个模型不存在再训练的问题,如果是这样,那就非常好了。即达到10%的信心水平,这就好了。

关于这个模型,几乎所有的事情都很清楚。在MT5中实现它将是非常好的,只用系数来实现决策的逻辑。目前还不清楚如何将R与MT5连接。我可以把所有的数据从mt5导出到csv,然后在R中处理,训练模型并把系数写在另一个csv中。从专家顾问那里读取系数的CSV。而且,这将是非常糟糕的,因为R有许多函数在计算PC之前对数据进行规范化处理。在MT5中重复这段代码进行规范化处理几乎是不可能的。我们需要思考。

 
Dr.Trader:

我现在明白了,谢谢你的澄清。我只是从文章中了解到这种模式。我以为PC1和PC2,3,4,...对应的是不同的预测因子集,而不是系数。我确实看到了系数表,现在我已经很快找到了在哪里可以得到什么。

PrincipalComponentRegression04.txt中的代码似乎过于复杂。另外,似乎没有关于目标变量 的变异性的定义,我回到 了今天早上我所附的那个档案中的PrincipalComponentRegression03.txt。

需要做前5个步骤。

下一步。

(截点) PC1 PC2

0.02075519 0.40407635 -0.42250678

执行的结果应该是intercept + coef1 * PC1 + coef2 * PC2 + ...。+ 剩余的PC,如果有的话

PC1、PC2的数值。:

>项目

PC1 PC2

X_clean 0.00516309881 0.00477076325

X1_clean 0.00142866076 0.00149863842

X2_clean -0.00008292268 0.00001010802

.....

PC1 = X_clean * 0.00516309881 + X1_clean*0.00142866076 +。

现在对我来说是个谜,后缀 "clean "是否是一个参考,以获取输入的原始值,X、X1、X2......。在归一化和转换之前,或不归一化。

稍后,我将举一个更简单的例子,手动计算所有数值,以比较我的公式是否正确。只是暂时的猜测 )

但后来发现,这种方法并不是为了筛选出预测因子,而是为了训练一个忽略了最大数量预测因子的模型。我们能做的就是计算每个预测因子的平均系数,并排除低于阈值的东西。
这个模型本身与neuroncu非常相似,但没有激活函数,也没有对内层的神经元进行移位。但本质是一样的。

还有一个问题--要带多少个PC组件。如果我得到的置信度低于95%,我必须回到第3步,将proj <-extractProjection(2,princ)>从两个改为三个,然后执行第3、4、5步,计算误差,如果小于95%,则回到第3步,再次增加组件的数量。

如果我们能在MT5中直接访问R,我们就会有一个完成的模型,可以进行交易。我理解这个模型不存在再训练的问题,如果是这样,那就非常好了。即达到10%的信心水平,这就好了。

关于这个模型,几乎所有的事情都很清楚。在MT5中实现它将是非常好的,只用系数来实现决策的逻辑。目前还不清楚如何将R与MT5连接。我可以把所有的数据从mt5导出到csv,然后在R中处理,训练模型并把系数写在另一个csv中。从专家顾问那里读取系数的CSV。而且,这将是非常糟糕的,因为R有许多函数在计算PC之前对数据进行规范化处理。在MT5中重复这段代码进行规范化处理几乎是不可能的。我们必须要思考。

在我看来,主成分回归,Pt.2:Y-Aware方法

从文字的浅层次来看,我的理解是,赞美是基于目标函数的缩放。在传统的PCA中,目标函数完全没有被考虑在内。正因为如此,据说第一个成分是解释目标函数的最重要的成分,而不是解释整个预测器集合的变异性


另一个问题是,要拿多少个PC组件

这就是所有大惊小怪的原因。直观地说,没有任何阈值。如果前5个成分不能解释95%以上的变异性,那么我们应该寻找一组新的预测因子。虽然我可能是错的。

关于这个模型,几乎一切都很清楚。在MT5中实现它将是非常好的。

在MT4中一切运作正常。有一个带源代码的Pascal库。我自己没有试过,但对我来说,如果MT4能够吸引pascal上的库,那么MT5也应该做到。

对R的呼吁看起来是这样的。

1.OnInit设置与R的连接。如果有特殊准备的数据,就会加载工作区。除此以外,R中安排在一个或多个函数中的代码被加载。当然,每个函数中的字符串的数量是任意的--由逻辑决定。

2.专家顾问或指标的主体会调用这些函数。

如果我们考虑到R有最丰富的图形,不受终端窗口的约束,我们有很大的机会将数据与终端平行可视化。

 
桑桑尼茨-弗门科
我在这里阅读,阅读....并不能从形式上理解什么是目标变量:一个实数(回归)或一个名义值(分类)。另外,如果我们讨论的是预测因素对目标变量的影响程度,那么了解这个目标变量的实质意义也是一个好主意。

矛盾的是,分类与回归是一样的。

只有回归的输出是真实的,而分类的输出则是概率。

而回归的目标是一条连续的曲线,而分类的目标是脉冲(0,1)或(-1,+1)。

然后,这个输出被翻译成适当的等级(ifelse(y > 0.5, 1, 0)。

 
Dr.Trader:

我看不到你的文件,链接只显示一个空文件夹。


这是培训:https://drive.google.com/file/d/0B_Au3ANgcG7CN2tTUHBkdEdpVEU/view?usp=sharing

这就是验证:https://drive.google.com/file/d/0B_Au3ANgcG7CZmFWclFOd0RqNFk/view?usp=sharing

验证应该像这样处理 load(validation_file)

每个列表项都包含一个独特的验证样本,具有独立的观察结果。验证样本之间几乎没有重叠,因为其中的观测值来自随机的时间点。每个验证样本都可以被视为贸易的一个点估计。

这样做是为了不模拟每分钟发生的交易。交易大约每12小时模拟一次。

原因: