程序库: RL 算法 - 页 4

 
mov:

可能是敲开了一扇敞开的门,但由于原版没有...

建议在转换到 [0,1] 范围之前进行预处理:

1. 去除周期性,我是在 periodicityArrays() 中进行的--从范围中减去一个月中由星期 和小时组成的剖面图(不过我只对试验中的小时时间框架进行了处理)。

2.按照建议在 linearTrendArrays() 中删除线性趋势 a[i]=a[i]-a[i+1]。

3.这里应该是自相关性检查(尚未实现)


经过 1 次和 2 次操作后,可预测性明显提高。代码附后。

感谢您的辛勤工作,我今天到明天一定会好好研究一下。

关于移除线性趋势--它使用了增量,例如在 RF 递归中就是这样做的。但使用的是私人价格,而不是差价,而且增量是以不同的滞后期枚举的。也就是说,输入只是价格,然后通过选择最佳增量进行预处理(一般来说,这被称为顺序趋势选择,在文献中,这种操作不是字面意义上的,但它是一种类似的操作)。您使用的是单滞后增量,也就是说,实质上所有的长期信息都丢失了。主要趋势仍然需要在市场中以某种方式加以考虑。此外,许多有关 BP 预测的资料都明确指出,必须考虑线性趋势,甚至只是时间依赖性。在预测伪静态过程和预测时间序列时,机器学习人员在变量的规范化和标准化方面有些困惑。他们开始采用对 BP 预测问题无效的方法。在时间序列预测中,趋势几乎是最重要的:)也许不把线性趋势本身作为输入,而是把选定周期的统计特征(分布矩)作为输入是有意义的,但我还没有试过。

for(int bf=0;bf<features;bf++) {  
     for(int bf2=bf+1;bf2<features;bf2++) {               
      for(int i=0;i<RDFpolicyMatrix.Size();i++) {   
        m[i].Set(0,RDFpolicyMatrix[i][bf]/RDFpolicyMatrix[i][bf2]);         
        m[i].Set(1,RDFpolicyMatrix[i][features]);   
        m[i].Set(2,RDFpolicyMatrix[i][features+1]); 
       }         
      CDForest::DFBuildRandomDecisionForest(m,RDFpolicyMatrix.Size(),1,2,trees,r,RDFinfo,mRDF,mRep);         
      ArrayResize(models1,ArraySize(models1)/3+1);
      models1[modelCounterInitial][0] = mRep.m_oobavgce;   
      models1[modelCounterInitial][1] = bf; 
      models1[modelCounterInitial][2] = bf2;   
      modelCounterInitial++;                     
     }  
    }

关于周期性,我不太明白。

与基本版本相比,我没发现 OOS 有什么大的改进

 

Maxim Dmitrievsky:

机器学习人员在预测伪静态过程和预测时间序列时,对变量的规范化和标准化有些困惑。他们开始采用对 BP 预测问题无效的方法。在时间序列预测中,趋势几乎是最重要的:)也许不把线性趋势本身作为输入,而是把选定周期的统计特征(分布矩)作为输入是有意义的,但我还没有试过。

关于周期性,我不太明白。

与基本版本相比,我并没有发现 OOS 有什么大的改进。

去除周期性和线性趋势的方法摘自:Orlov, Osminin Non-stationarytime series Forecasting methods with examples of analyses of financial and commodity markets。数据准备的 3 个点被全部提取。也许这是对书中算法的要求,但我改进了结果。

让我解释一下我是如何测试的。取一年的数据,向后移动一个月。训练模型。我在最后一个月(不包括在训练中)测试模型。也许一个月是不够的,但我认为模型应该在未来一段时间内有效。超过一个月就没有意义了,因为在此期间模型会过度优化。采用这种方法,最初几天的盈利能力对我来说很重要(主观评估--需要重新优化的时间段)。使用以前的变体,我可以在 1-1.5 周内实现+交易,然后开始下滑。使用上述预处理后,我可以实现 2-2.5 周的+。这就是我所说的可预测性的提高。也许我的方法在统计学上不太正确,但在我看来是实用的。这种方法稳定运行 2 周后,就可以在实际交易中使用,一周后再重新优化。当然,最后一段时间将用于训练(无偏差)。

 
mov:

去除周期性和线性趋势摘自:Orlov, Osminin 非稳态时间序列预测方法,附金融和商品市场分析实例。数据准备的 3 个点被全部提取。也许这是对书中讨论的算法的要求,但我对结果进行了改进。

让我解释一下我是如何测试的。取一年的数据,后移一个月。训练模型。我在最后一个月(不包括在训练中)测试模型。也许一个月是不够的,但我认为模型应该在未来一段时间内有效。超过一个月就没有意义了,因为在此期间模型会过度优化。采用这种方法,最初几天的盈利对我来说很重要(主观评价--需要重新优化的时间段)。使用以前的变体,我可以在 1-1.5 周内实现+交易,然后开始下滑。使用上述预处理后,我可以提前 2-2.5 周实现+。这就是我所说的可预测性的提高。也许我的方法在统计学上不太正确,但在我看来是实用的。这种方法稳定运行 2 周后,就可以在实际交易中使用,一周后再重新优化。当然,最后一段时间将用于交易训练(无偏差)。

谢谢,我会看看的。诚然,我有点困惑,不知道给模型提供信息的最佳方式是什么。多重转换让它陷入了荒野,完全不直观。

目前,我正在探索线性模型在这种方法中的适用性。

s.s. 你有电子版吗?

 

Maxim Dmitrievsky:

s.s. 你没有电子版?

很遗憾是纸质的。这是一本专著,我没有在网上找到,但有相关的原创科学文章(搜索<族名>非稳态序列),明天我会试着拍摄关于金融市场的章节。

 
mov:

不幸的是论文。这是一本专著,我在网上没有找到,但有相关的原创科学文章(搜索 <族名> 非平稳序列),明天我将尝试拍摄关于金融市场的章节。

我想知道他们到底是怎么看的,其他的我都懂。

 
算法在 6.4.2 节,链接指向 5.2.1 结尾。为了以防万一,我做了两章的全部内容,很抱歉没有对扫描件进行处理,但工作中几乎没有空闲时间(扫描仪也在工作)。
附加的文件:
im65-6.zip  1452 kb
 
mov:
算法在 6.4.2 节,链接指向 5.2.1 结尾。为了以防万一,我做了两章的全部内容,很抱歉没有对扫描件进行处理,但工作中几乎没有空闲时间(扫描仪也在工作)。

谢谢!开始阅读

 
Maxim Dmitrievsky:

谢谢!开始阅读

Gaidyshev Data Analysis and Processing Special Reference 2001.网上有 pdf,我只能附上 djvu(文件大小 受限)。
 
Олег:
Gaidyshev Data Analysis and Processing Special Reference 2001. Ch6 methods of dimensionality reduction(该书用 C 语言编写的示例很不错)。网上有 pdf 版,我只能附上 djvu 版(文件大小有限制)。

是的,PCA 是解决问题 的方法之一,你可以尝试一下。我在一个简单的测试例子中试过--至少没有变得更糟,至于是否更好我还不确定。

 
Олег:
Gaidyshev Data Analysis and Processing Special Reference 2001. Ch6 methods of dimensionality reduction(该书用 C 语言编写的示例很不错)。网上有 pdf 版,我只能附上 djvu 版(文件大小受限)。

https://www.mql5.com/ru/forum/86386/page1189#comment_9795331

Машинное обучение в трейдинге: теория и практика (торговля и не только)
Машинное обучение в трейдинге: теория и практика (торговля и не только)
  • 2018.12.06
  • www.mql5.com
Добрый день всем, Знаю, что есть на форуме энтузиасты machine learning и статистики...