神经网络从 7 个输入产生 1 个输出(外汇止损决策)

Neural network to produce 1 output (FOREX stop loss decision) from 7 inputs

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

在一位外汇交易专家的帮助下,我开发了一个系统来寻找潜在的切入点(使用回溯测试),如果操作得当,这些头寸的获胜率很高。问题是选择 "stop loss" 来赢得这场胜利。后台测试人员显示这些都是获胜的交易,但 "stop loss" 设置并不容易选择。我根据最佳结果进行选择。我尝试了确定性解决方案但未成功。

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

我有一个输入列表以及完美的止损和结果。我希望黑匣子魔术输出 "stop loss" 和 "expected result" 尽可能接近完美。输入是双精度值,输出也是如此。有些是整数,但可以表示为双精度。一个用于做空或做多交易的布尔值。如果有问题,我可以将短裤与长裤分开训练。

有些值可能不起作用,可能 none,但我想找出用于确定的值。有时 "result" 是负数,意思是赔钱。

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

虽然这是一个非常笼统的问题,但以下是我的观点:

  • fast learning curve

    (在 "products" 上花费了无数时间并不容易证明。产品可能引用speed,但请注意,他们谈论在生产阶段节省毫秒/秒,以在经过良好预训练的 ANN 上进行预测,但您的时间将主要分配给除此之外的其他活动 - - 首先 学习并深入了解产品及其功能和弱点,然后进行 ANN 模型原型制作,最重要的是,进行 ANN-Feature-Engineering,然后进行设计候选人- ANN 超参数化网格搜索以调整其最佳泛化和交叉验证属性 )

  • support and tools for rapid prototyping

    ( 一旦超越了学术阐述的 ANN 模拟异或,原型制作阶段 是创新的游乐场,因此,在时间和CPU-资源方面非常昂贵

  • support for smart automated feature scaling

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

  • 支持自动超参数控制偏差/过拟合调整

  • 支持“覆盖”的全网格正交、梯度驱动和随机处理(超)参数化- space

  • 支持本地矢量化处理,意味着快速分布式处理(不是营销动机的废话,而是公平合理的架构(因为GPGPU I/O latencies无济于事很多在训练有素的网络上(最后它是低计算强度的任务,只不过是一组单一的 sumproduct 决策,所以高 GPU IO 绑定延迟掩码不会覆盖巨大的延迟,因此 GPU“help" 甚至会成为灾难性的 [可用定量引用],与普通的、配置良好的、基于 CPU 的 ANN 计算相比)

AI/ML NN-特征工程! ...忘记6:?[:?[:?]]:1架构

这是钥匙。

随心所欲 AI/ML-您选择的预测器,
无论是 ANN 还是 SVM,甚至是基于集成的 "weak"-学习器,主要问题不是引擎,而是驱动程序——特征集的预测能力.

不要忘记,外汇多工具市场实时展示的复杂性。绝对比 6:1 复杂很多个数量级。 并且您渴望创建一个 Predictor 能够预测发生的事情。

如何让它在合理的可计算成本内?

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 专家乍一看会反对,但让我声明,数字 (im) 精度 在 FX/ANN 中没有问题 解决方案。

维度 诅咒确实... O(2) & O(3) class 问题并不少见。

可用于 smart/efficient (快速读取 ...) 表示,即使是纳秒分辨率时间戳 HFT 数据流 I/O 软管。

有时,甚至需要减少输入的数值 "precision"(子采样和模糊)以避免高维度(不合理的计算成本)的不利影响,并避免过度拟合的趋势, 以受益于调整良好的 AI/ML-预测器更好的泛化能力。

        (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|
                              ^|

无论如何,一个迷人的 FX 项目,如果入职请告诉我:


要从另一个人那里获得关于自上而下的类似情况的另一种无偏见的观点,一个 并且只需计算制作列表的周数和月数估计即可掌握顶部-下定决心做最后的决定。