神经网络从7个输入产生1个输出(FOREX止损决定)

时间:2015-10-08 22:45:53

标签: statistics neural-network algorithmic-trading fann forex

我有一个浮点和整数值的混合,它们在生成一个浮点值时起作用。有些相关,有些则不相关。使用FANN我想看看神经网络是否是答案。给定6个或7个输入数字来确定单个输出数字,FANN中要使用哪些网络和布局?

在外汇交易专家的帮助下,我开发了一个可以找到潜在入场点的系统(使用回测),这些位置在正确播放时获胜的比例很高。问题是选择"止损"获得这场胜利。后面的测试人员已经证明这些是获胜的交易,但是"止损"设置不容易挑选。我根据最佳结果进行选择。我尝试了确定性解决方案失败了。

我想要一个神经网络使许多数据输出正确"止损"和预期的结果。我无法解释市场事件,因此预计会出现这些损失。投入是移动平均线,交易区间,收盘价的增量,完美的"止损" (按历史结果),以及其他一些。

我有一个输入列表和完美的止损和结果。我想要黑盒魔术输出"止损"和"预期结果"尽可能接近完美。输入是双精度值以及输出。有些是整数,但可以表示为双精度。交易做空或卖空的一个布尔值。如果出现问题,我可以单独训练短裤和短裤。

某些值可能不起作用,可能没有,但我想找出确定值。有时"结果"是消极的意思是亏钱。

1 个答案:

答案 0 :(得分:0)

作为这个领域的精彩介绍,您可以尝试Stuart REID's "10 Misconceptions about Neural Networks"

虽然这是一个非常普遍的问题,但这些都是我的观点:

  • fast learning curve

    (花了无数时间使用“产品”并不容易证明。产品可能引用速度,但请注意,他们谈到在生产阶段保存毫秒/秒以对预先训练好的人工神经网络进行预测,但你的时间主要分配给其他活动 - 第一次学习和 - 深入理解产品及其功能和弱点,然后进行ANN模型原型设计,最重要的是ANN-Feature-Engineering,然后是设计候选人 - ANN超参数化网格搜索,以调整它的最佳泛化和CrossValidation属性)<登记/>
  • support and tools for rapid prototyping

    (一旦超越学术阐述的ANN-mimicking-XOR,原型设计阶段就是创新游乐场,因此,非常昂贵在时间和CPU资源方面)

  • support for smart automated feature scaling

    (对于强大的网络,进化(遗传等)搜索处理是不可避免的,减少到足够的规模(实现)在给定精度目标下的可接受时间范围内的可计算性)

  • 支持自动超参数控制,用于高<偏> / 过度调整
  • 支持全网状正交,梯度驱动和随机处理“ 覆盖 ”(超 - )参数化空间
  • 支持本地矢量化处理,意味着快速分布式处理(不是营销推动的产品,而是公平合理的架构(GPGPU I/O latencies对受过训练的网络没有多大帮助) (最后它是低计算强度的任务,只不过是一套单一的产品决策,因此高GPU IO绑定延迟屏蔽不能覆盖巨大的延迟,因此GPU“帮助”甚至可以成为与普通的,配置良好的,基于CPU的ANN计算相比,灾难性的[定量引用]

AI / ML NN-Feature Engineering! ...忘记6:?[:?[:?]]:1架构

这是 The Key。

无论你选择什么 AI / ML-Predictor,无论是ANN还是SVM,甚至是基于整体的“弱”导师,主要问题 引擎,但驱动程序 - 功能集的预测能力

不要忘记FOREX多仪器市场实时展示的复杂性。绝对比6:1复杂多个数量级。 并且您希望创建一个Predictor能够预测会发生什么。 enter image description here

如何在合理的可计算性成本范围内实现?

smart tools exist:

        feature_selection.RFECV(    estimator,                #  loc_PREDICTOR
                                    step             = 1,     # remove 1 FEATURE at a time
                                    cv               = None,  # perform 3-FOLD CrossValidation  <-opt. sklearn.cross_validation
                                    scoring          = None,  #                                 <-opt. aScoreFUN with call-signature aScoreFUN( estimator, X, y )
                                    estimator_params = None,  # {}-params for sklearn.grid_search.GridSearchCV()
                                    verbose          = 0
                                    )
# Feature ranking with recursive feature elimination
# and cross-validated selection of the best number of features.
 |>>> aFeatureImportancesMAP_v4( loc_PREDICTOR, X_mmap )              
  0.  0.3380673 _ _ _____________________f_O.............RICE_: [216]
  1.  0.0147430 _ _ __________________________________f_A...._: [251]
  2.  0.0114801 _ _ ___________________f_............ul_5:3_8_: [252]
  3.  0.0114482 _ _ ______________________________H......GE_1_: [140]
  4.  0.0099676 _ _ ______________________________f_V....m7_4_: [197]
  5.  0.0083556 _ _ ______________________________f.......7_3_: [198]
  6.  0.0081931 _ _ ________________________f_C...........n_0_: [215]
  7.  0.0077556 _ _ ______________________f_Tr..........sm5_4_: [113]
  8.  0.0073360 _ _ _____________________________f_R.......an_: [217]
  9.  0.0072734 _ _ ______________________f_T............m5_3_: [114]
 10.  0.0069267 _ _ ______________________d_M.............0_4_: [ 12]
 11.  0.0068423 _ _ ______________________________f_......._1_: [200]
 12.  0.0058133 _ _ ______________________________f_......._4_: [201]
 13.  0.0054673 _ _ ______________________________f_......._2_: [199]
 14.  0.0054481 _ _ ______________________f_................2_: [115]
 15.  0.0053673 _ _ _____________________f_.................4_: [129]
 16.  0.0050523 _ _ ______________________f_................1_: [116]
 17.  0.0048710 _ _ ________________________f_..............1_: [108]
 18.  0.0048606 _ _ _____________________f_.................3_: [130]
 19.  0.0048357 _ _ ________________________________d_......1_: [211]
 20.  0.0048018 _ _ _________________________pc.............1_: [ 86]
 21.  0.0047817 _ _ ________________________________d.......3_: [212]
 22.  0.0045846 _ _ ___________________f_K..................8_: [260]
 23.  0.0045753 _ _ _____________________f_.................2_: [131]

 1st.[292]-elements account for 100% Importance Score ________________
 1st. [50]-elements account for  60%
 1st. [40]-elements account for  56%
 1st. [30]-elements account for  53% . . . . . . . . . . . . . . . . . 
 1st. [20]-elements account for  48% 
 1st. [10]-elements account for  43%

精密?

汇编人员和C大师们会在第一眼看到对象,但让我说,在FX / ANN解决方案中,数字(im)-precision 不会出现问题

维度诅咒确实...... O(2)&amp; O(3)课程问题不是很少。

可以使用智能/高效的(快速读取...)表示,即使对于纳秒级分辨率的时间戳HFT数据流I / O软管也是如此。

有时,甚至需要降低输入的数字“精度”(子采样和模糊),以避免(不合理的计算上昂贵的)高维度的不利影响,并避免过度拟合的倾向,从中受益良好调整的AI / ML-Predictor的更好的泛化能力。

        (im)PRECISION JUST-RIGHT FOR UNCERTAINTY LEVELs MET ON .predict()-s
     ___:__:___________MANTISSA|
     |  v  |                  v|_____________________________________________________________________________________
    0.001  |               1023|    np.float16      Half   precision float: 10 bits mantissa + sign bit|  5 bits exp|
    1.02?  |                                                                                
           v            123456:|_____________________________________________________________________________________
E00 0.000001            8388607|    np.float32      Single precision float: 23 bits mantissa + sign bit|  8 bits exp|
+00 12345.6? DAX              ^                                                             
+05 1.23456? DAX                                                                            
               123456789012345:|_____________________________________________________________________________________
               4503599627370495|    np.float64      Double precision float: 52 bits mantissa + sign bit| 11 bits exp|
                              ^|

无论如何,一个迷人的外汇项目,让我知道是否入职:

dMM()

要接收另一个关于自上而下的类似情况的另一个偏见的观点,从另一个人报告,一个might want to read and think a bit about this experience,只计算周数和月数的估计值,使得列表自上而下掌握并完成一个人的最终决定。