请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  量化策略 帖子:3364796 新帖:32

使用神经网络预测价格

牛市来了发表于:4 月 17 日 19:47回复(1)

简介

在过去几年中,我们发现了对神经网络的兴趣呈爆炸式增长,神经网络已成功用于商业、医药、科技、地质学和物理学等各个领域。神经网络已广泛用于需要进行预测、分类和管理的领域。获得如此重大的成功取决于以下几个因素:

  • 广泛的可能性。神经网络是一个非常强大的建模工具,可复制极其复杂的关系。尤其是,神经网络本质上为非线性。很多年以来,线性建模一直是大多数领域的主要建模方法,因为它的优化程序非常完善。在线性近似不充分的任务中,线性模型运行状况不佳。除此之外,神经网络还解决了“维数灾难”问题,即当存在大量变量时不允许对线性关系进行建模的问题。
  • 易于使用。神经网络可通过例子进行学习。神经网络的用户整理代表性数据,然后启动可自动接受数据结构的训练算法。当然,用户对于选择和准备数据、选择适当的网络体系结构和解释结果的方式应有一套完整的启发式知识。然而,要成功地使用神经网络所需的知识水平比传统统计方法所需的知识水平低得多。

从直觉的角度看,神经网络很有吸引力,因为它们是基于神经系统的原始生物模型的。未来,此类神经生物模型的发展可以创造出真正智能的计算机。[1]

预测金融时间序列是任何投资活动的主要组成部分。投资的整体概念 - 现在投资金钱是为了将来能够获利 - 是基于预测未来这一想法的。因此,投资行业即所有证券交易和场外交易 (OTC) 市场的根本在于预测金融时间序列。

众所周知,在所有的交易中,99% 的交易是投机交易,即并不旨在实际交易额,而旨在使用“贱买贵卖”的方案获利。它们都是基于交易参与者们对价格变动做出的预测的。重点是,交易参与者们的预测会完全相反。投机交易的数量说明了市场参与者们的预测之间的差别,即实际上说明了是金融时间序列的不可预测性。

市场时间序列的这一重要特征是基于 L. Bachelier 于 1900 年在论文中提出的“有效”市场理论的。根据该论文,投资只能依靠根据纽约交易所的道琼斯指数或标普 500 指数等类似指数评估的平均市场盈利能力。任何投机利润都具有随机性质,就像赌博(赌博本身就有吸引力,不是吗?)。为什么市场曲线具有不可预测特性的原因与为什么很少能在公共场所捡到钱的原因是相同的:太多人都想获得它。

自然,有效市场的理论不会受到市场参与者(他们正在到处寻找金钱)的支持。他们中很多人认为,所有时间序列尽管看似具有随机性,但其中充满了各种隐藏的规律,也就是说具有可预测性,至少是局部可预测。三十年代,波浪分析的创始人 R. Elliot 曾在论文中尝试找出这类隐藏的经验性规律。

在八十年代,新出现的动态混沌理论出乎意外地支持该观点。该理论是基于混动状态和随机性(不可测性)的换质位法。混沌序列仅看似随机,但是一个确定性的动态过程,可进行短期预测。可能预测的范围在时间上受预测周期限制,但足以通过预测实现真正的盈利(Chorafas,1994 年)。那些使用可从噪声混沌序列中提取规律的最好的数学方法的人希望获得丰厚的利润,将以牺牲配备不良的同事的利益为代价。

在最后十年,技术分析大行其道,出现基于各种市场走势指标的各种经验法则。技术分析主要关注金融工具的个体行为,而与其他证券脱离开来。但是,技术分析很主观,而且在图表右侧使用时效率低下,而在这里我们需要的就是价格方向的预测。这就是神经网络分析越来越受欢迎的原因,因为,与技术分析正好相反,神经网络分析不会对输入信息的类型设定任何限制。输入信息可以是给定指标序列的指标,也可以是有关其他市场工具的行为的信息。不再徒劳的神经网络受到使用大型投资组合并极其重视不同市场之间的关联性的机构投资者(例如大型养老投资基金)广泛使用。

纯粹的神经网络建模仅基于数据,不使用任何前期论证。这是它的强项,与此同时也是它的弱项。可用数据可能不足以进行训练,同时可能的输入内容的维度可能会过大。

这就是一个良好的预测为什么应使用功能强大的神经包的原因。



准备数据

要开始操作,我们应准备数据。这项工作的准确性决定着 80% 的成功可能性。

神经网络的方面的专家指出,不得将报价 Ct 的值用作为进场价和出场价。真正重要的是报价的变化。通常,当这些变化的幅度小于报价本身时,则连续的报价值之间有紧密的联系 - 下一个时刻的最可能的报价值将等于其前面的值 C(t+1)=C(t)+delta(C)=C(t)。

同时,由于训练质量高,我们应关注输入内容的统计独立性,即避免此类关联性。这就是为什么选择在统计上最独立的值作为输入变量是合乎逻辑的原因,例如报价变化 delta(C) 或相对增量算法 log(C(t)/C(t+1))。

当可感知通货膨胀带来的影响时,最后的选择最好是长时间序列。在这种情况下,序列的各个部分中的简单差将有不同的幅度,因为实际上将用不同的单位对它们进行计值。相反,连续报价的关系并不依赖于度量单位,将采用相同的尺度,而不考虑度量单位的通胀变化。因此,序列的全面稳定性可用于训练一段较长的历史,从而提供更好的训练。

沉浸到滞后空间中的劣势是网络的“视野”受限。相反,技术分析不会固定在过去的一个窗口上,而且偶尔会使用较远的序列值。例如,主张在相对较远的过去的最大和最小序列值会对交易者的心理产生较大的影响,因而一定会有助于预测。如果沉浸到滞后空间的窗口不够广泛,将无法提供此类信息,自然就会降低预测的效率。另一方面,加大此类维度的窗口,当包括最远的序列值时,将增大网络的维度,从而会降低神经网络预测的准确性。

这种看似僵局的情况的解决办法是,改变对系列过去行为进行编码的方法。很显然,对序列历史探讨得越深入,历史行为细节对预测结果产生影响就越小。它是基于交易者对过去的主观认知的心理,而实际上交易者是在展望未来。因此,我们需要找到序列动态的呈现形式,它将拥有选择性的准确度:尽管曲线保持一般的形态,但越深入地探讨未来,能获知的细节就越少。

在这里,一个很有潜力工具是小波分解。在信息性方面,它相当于沉浸到滞后时间中,但更容易接受数据压缩,使用选择性的准确度描述过去。



选择软件

有各种不同的软件可用于神经网络。其中一些软件或多或少比较普遍,另一些软件则是高度专业的。下面是一些程序的简要清单:

1.Matlab 是一个用于数学计算、设计电路和建立复杂系统模型的桌面实验室。它拥有内置编程语言和大量适用于神经网络的工具 - Anfis Editor(培训、创建、训练和图形接口)、用于对网络进行编程的命令接口、nnTool - 可为网络提供更精确的配置。

2.Statistica 是一个用于分析数据和搜索统计规律的强大软件。在此包中,与神经网络执行的工作将显示在块 STATISTICA Neural Networks(缩写为 ST Neural Networks,是 StatSoft 公司的神经网络包)中,它是一整套的神经网络数据分析方法的实现。

3.BrainMaker 用于解决具有以下特点的任务:尚没有正式的方法和算法,并且输入数据不完整、有噪声、相互矛盾。要解决此类问题,我们将参考交易和金融预测、建模危机状态、模式识别等等。

4.NeuroShell Day Trader 是一个符合交易者的特定要求的神经网络系统,非常容易使用。此程序尽管非常类似于黑盒子,但非常专业,适于进行交易。

5.其他程序较为不常见。

Matlab 非常适合执行主要操作。我们将尝试定义神经网络用于进行嘉盛预测的适用性。

有关复杂软件 MatLab 的信息可在维基百科中找到,网址为 https://en.wikipedia.org/wiki/MATLAB

有关此程序的大量信息可在网站 http://www.mathworks.com/

您可以在 http://www.mathworks.com/store/ 购买此程序

试验

准备数据

使用 MetaTrader 的标准工具轻松获取数据:

服务 (Service) -> 报价档案 (Quotes archive) -> 导出 (Export)

因此,我们将获得一个 *.csv 文件,此文件是用于准备数据的原材料。要将此文件转换为一个便于操作的 *.xls 文件,导入 *.csv 文件中的数据。为此,在 excel 中执行以下操作

数据 (Data) -> 导入外部数据 (Import external data) -> 导入数据 (Import data),并指示准备的主要文件。在导入主控中,所有必要操作分 3 步完成:




在第三步中,通过使用 More... 来用点替代整数与小数部分的分隔符

要将数据作为数字而非字符串接受,用点替代整数和小数部分的分隔符:

服务 (Service) -> 参数 (Parameters) -> 国际 (International) -> 整数和小数部分的分隔符 (Separator of integer and decimal part)。

上述屏幕截图显示了保存开盘价和收盘价的示例,尚不需要其他数据。

现在根据我们要预测的对象转换所有数据。让我们来基于前四天的情况预测下一天的情况(以下五栏显示数据,价格按时间次序排列)。

1.2605

1.263

1.2641

1.2574

1.2584

1.2666

1.263

1.2641

1.2574

1.2584

1.2666

1.2569

1.2641

1.2574

1.2584

1.2666

1.2569

1.2506

1.2574

1.2584

1.2666

1.2569

1.2506

1.2586

1.2584

1.2666

1.2569

1.2506

1.2586

1.2574


由于在 Excel 中操作简单,几分钟之内就已准备好数据。本文附上了准备的数据文件示例。

要使 Matlab 感知到这些文件,准备的数据必须保存为 *.txt 或 *. dat 文件。让我们来将它们保存为*.txt文件。然后,将各个文件分开- 用于进行网络训练(外部选择)和网络测试(内部选择)。准备的 euro.zip 数据适合用于进一步操作。



熟悉 Matlab

从命令行使用 anfisedit 命令启动包 ANFIS。此编辑器包含四栏 - 分别用于数据(加载数据 (Load data))、生成网络(生成 FIS (Generate FIS))、训练(训练 FIS (Train FIS))及 FIS 测试(测试 FIS (Test FIS))。上栏用于预览神经网络结构(ANFIS 信息 (ANFIS Info))。

有关包操作的更多信息,请访问:

http://www.mathworks.com/access/helpdesk/help/toolbox/fuzzy/

要启动之前阶段准备好的操作加载数据,单击加载数据 (Load Data),然后指定包含选择数据的文件。然后,单击生成 FIS (Generate FIS) 创建一个神经网络。


对于每个输入变量,用三角形参考函数设置 3 个语言变量。将线性函数设置为退出函数的参考函数。


对于神经网络训练,包 AnfisEdit 包括 2 个训练算法 - 反向传播和混合训练。使用混合训练,将在两到三个周期内对网络进行训练。训练后,在训练选择(60 个值)上,网络所作出的预测与实际情况在几个方面有所不同。


但我们需要的是预测未来!我们获得外部选择数据的时间比内部选择数据晚 9 天。在外部选择数据上,均方误差制定了 32 个点,当然这在实际情况下是不能接受的,但显示了可进一步制定神经网络方向 - 这样做是值得的。



我们工作的成果是能够预测不久的将来的绝对价值的多层混合神经网络。它在体系结构和用途方面与单层神经网络完全不同,Y. Reshetov 在其文章 /ru/articles/1447 中有介绍,并已被实现为智能交易系统 https://www.mql5.com/ru/code/10289。

我们设法获得了可接受范围内的报价预测,尽管神经网络专家强烈建议我们不要这样做。要查看生成的神经网络,单击结构结构 (Structure)训练后的神经网络位于附加文件 neuro.zip 中。

包 Matlab 的一个很大的优势在于与其他程序的可整合性,而且有多个整合变体,即 DDE、com-objects、dll。因此,您不需要从头开始创建此工具 http://forum.mql4.com/ru/5220,您可以使用现成的程序方案处理神经网络和遗传算法。在获得稳定的预测结果之后,您可以通过 dll 将神经网络集成到程序 MetaTrader 中。

总结

神经网络时一个可在金融市场使用的非常强大的工具,但学习此技术所要花费的时间和精力并不比学习技术分析花费的少。

神经网络的优势是它们的决策具有客观性,而它们的劣势是,决策实际上是由黑盒子制定的。

在使用这项技术的过程中可能出现的主要问题与正确的数据预处理有关。这一阶段在整个数据预测过程中起到至关重要的作用,很多无法成功地使用神经网络的情况都与此阶段密切相关。

要正确地学习神经网络,需要进行大量的试验,但这一切都是值得的。如果机构投资者使用该工具,则普通的交易者也可以尝试使用训练后的神经网络,因为可在此网络中输入从指标和价格到基本分析的信号的任何信息。



参考资料列表

1.Nejrokompyuting i ego primenenie v nauke i biznese.A. Ezhov, S. Shumskij.1998


全部回复

0/140

量化课程

    移动端课程