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

 
安东-兹维列夫
我总是读到这样的话题(不仅仅是在这个论坛),他们试图建立复杂的交易理论。
遗传算法、神经网络、只有作者明白的复杂公式等等。

而我总是看到,这样的系统在市场上不起作用。监测要么归零,要么归负。
但在下一个主题中,有人使用专家顾问在两个滑点上赚钱。而且他们的收入很高。

问题是,这一切有意义吗?
因为根据我的经验,系统越简单、越清晰,就越有利可图。

你是否有可能是一个旧式经纪公司的职员?

我想你的 "秘法 "是交易mashki(随机),输了就翻倍,对吗)?

先生们,你们将不得不靠佣金生活......。

 
Dr.Trader:

创建一个委员会,并进行测试。

有一个问题是,原来的班级是因子型的,矩阵中的结果被转换为相应的因子序数。所以在最后,比较要通过as.numberic()。

为了让所有的因素正常工作,我们需要将predictionMatrix创建为data.frame,但之后我的rbind函数给出了虚值,我需要改变一些其他东西,我不明白那里出了什么问题。

关于代码的一些想法。

1.除非是绝对必要,否则你不必使用for()结构。对于foreach(),有一个很好的替代方案,除了执行速度高之外,还可以在可访问的内核之间进行并行计算。

2)模型集合是有意义的,只有在模型有明显差异的情况下才会给出结果。两个变体:一个数据集--不同的模型(RF、DT、SVM);一个模型--不同的数据集。下面是后一种情况的例子

#----------------------------------------------------------------------
require(ranger)
require(foreach)
require(magrittr)
data("iris")
totalModels = 50
res <- list()
Acc <- c()
res <- foreach(i = seq_len(totalModels),
               .packages = c("ranger", "magrittr")) %do% {
          id <- rminer::holdout(y = iris$Species, ratio = 2/3)
          x.test <- iris[id$ts, -ncol(iris)]
          y.test <- iris[id$ts, ncol(iris)]
          model <- ranger(Species~., data = iris[id$tr, ], 
                          write.forest = TRUE)
          pred <- predict(model, x.test)$predictions
          acc <- sum(pred == y.test) / length(y.test)
          list(Acc = acc, mod = model) 
        }
for (i in 1:totalModels) {Acc[i] <- res[[i]]$Acc}
Acc
 [1] 0.9803922 0.9607843 0.9803922 0.9607843
 [5] 0.9607843 0.9215686 1.0000000 0.9411765
 [9] 0.9019608 0.9607843 0.9803922 0.9607843
[13] 0.9803922 0.9215686 0.9607843 0.9215686
[17] 0.9803922 0.8823529 0.9411765 0.9803922
[21] 0.9607843 0.9215686 0.9607843 0.9411765
[25] 0.9411765 0.9607843 0.9411765 0.9607843
[29] 0.8823529 0.9019608 1.0000000 0.9411765
[33] 0.9215686 0.9803922 1.0000000 0.9607843
[37] 0.9411765 0.9803922 0.9607843 0.9215686
[41] 0.9411765 0.9607843 0.9411765 1.0000000
[45] 0.9607843 0.9411765 0.9215686 0.9411765
[49] 0.9803922 0.9607843

选择具有最佳性能的模型,并从那里开始工作。

祝好运

 
弗拉基米尔-佩雷文科

关于代码的一些想法。

1.除非是绝对必要,否则你不需要使用for()。对于foreach(),有一个很好的替代方案,除了执行速度高之外,还可以在可用的内核之间进行并行计算。

2)模型集合是有意义的,只有在模型有明显差异的情况下才会给出结果。两个变体:一个数据集--不同的模型(RF、DT、SVM);一个模型--不同的数据集。后一个选项的例子如下

选择性能更好的模型,并与之合作。

祝好运

我希望能经常见到你。不要消失。
 
弗拉基米尔-佩雷文科


然后,我们选择具有最佳指标的模型,并与它们一起工作。


这就是麻烦所在。

基于哪些数据,什么是最好的表现?

我为什么这么问,因为Vkontas正试图找出如何使用训练和测试数据来选择一个模型(在许多模型中)。但在这里,你有这么直截了当:我们采取最好的指标并与之合作。

 
阿列克谢-伯纳科夫

这就是麻烦所在。

基于哪些数据,什么是最好的表现?

我为什么这么问,因为Vkontas正试图找出如何使用训练和测试数据来选择一个模型(在许多模型中)。但在这里,你有这么直截了当:我们采取最好的指标并与之合作。

初始集被划分为训练/测试分层。在训练中我们进行训练,在测试中我们分别进行测试。从代码上看,这一点还不清楚吗?

祝好运

 
桑桑尼茨-弗门科
我希望能经常见到你。不要消失。
不幸的是,我只有时间不时地浏览网站。我有很多工作要做。
 
弗拉基米尔-佩雷文科

初始集被划分为训练/测试分层。在训练中我们训练,在测试中我们分别测试。从代码中真的不清楚吗?

好运。

我将尝试rminer::holdout,谢谢你的例子。好吧,根据我的经验,如果你选择一个模型和它的参数,在测试样本上得到最好的结果,那么这个模型最终会在测试样本上给你一个真正的好结果。但在新的数据上,结果通常是非常低的。我特别谈到了外汇数据,在其他领域,这是一个很正常的做法。我不希望rminer::hold住外汇会有什么大的改变。
 
Dr.Trader:
我会试试rminer::holdout,谢谢你的例子。一般来说,根据经验,如果我们选择一个模型及其参数,以便在测试样本上得到最好的结果--那么这个模型最终会在测试样本上给出一个真正的好结果。但在新的数据上,结果通常是非常低的。我特别谈到了外汇数据,在其他领域,这是一个很正常的做法。我不希望rminer::hold住外汇会有什么大的改变。
这就是我所说的。而他并没有得到它。

在外汇方面,一个好的测试并不意味着在样本外有好的表现。这就是为什么人们在挣扎。而在这里就是这样--我们采取最好的结果(和大师级的装配)。以良好的方式 )
 
Dr.Trader:
那么该模型最终将在测试样本上显示一个真正的好结果。但在新的数据上,结果通常是非常低的。我具体谈论的是外汇数据。
阿列克谢-伯纳科夫
在外汇方面,一个好的测试并不意味着在样本外有好的表现。这就是为什么人们在挣扎。

市场在与自己的统计数字背道而驰,这是我用实践证实的理论,这是我所知道的唯一的理论,它回答了从为什么模型在新的数据上不起作用到为什么每个人在市场上首先会输钱的所有问题......。

为什么这对你来说如此难以接受?

旧的知识和习惯是否对新的信息有如此大的影响?

当模型之间的性能差异在0.5%和5%之间时,为什么要如此专注于模型?

任何模型都无济于事,因为这一切都与数据有关。

1

我已经不止一次贴过这张照片,但还是.....。

仔细看!这是两个网络的累积买入和卖出预测之间的差异 cum(buy.signal) - cum(sell.signal),理想情况下,如果我们的模型是好的,那么蓝色图表应该与价格相关,这意味着网络很好地理解了数据并对其做出了充分的反应,实际上我们看到的是????????

你不能说模型不理解数据,虽然相关性是反的,但结构是相同的,但市场的走势与预测相反,与过去训练的网的统计数据相反......。

现在告诉我,什么模型可以管理它? 什么交叉验证可以帮助这里?任何在样本外(新数据)进行的模型训练,都不过是对一个在样本外运行良好的模型进行拟合,仅此而已。当你自己训练模型时,你经常看到,在全新的数据上,模型总是失败的,难道你不明白吗! ?我给你一个答案,为什么会发生这种情况?

 

这是带有训练本身的数据的图,还是只是对新数据的测试?如果你一次画出两个时间段的图,包括训练和测试,那么在第一个(训练)部分的数据上,蓝色和灰色的图将完全重叠,而当新数据开始时--将急剧过渡到反相关?

如果这么简单,就足以训练任何模型,只需反转其预测结果即可。不幸的是,这并不奏效。
教导一个在新数据上给出0%准确率的模型,与实现100%准确率一样困难。例如,默认的翻转硬币的准确率为50%,而在任何一个方向上侥幸获得几十个百分点也同样困难。问题不在于模型给出了相反的结果,而是有些条子会给出正确的结果,有些会给出错误的结果,而这一切都是随机的,没有办法只过滤出正确的结果。

而你为什么要从B级预测中减去S级预测?也许你应该做相反的事,S-B?那么相关性也会突然变得正确。