实时股票预测的开源参考结构

有这样一个传说,将人工智能和机器学习算法用于服务器农场后,你就可以搬家到夏威夷,在让机器交易的同时你终日躺在沙滩上享受生活。但是,问题在于交易市场是不断变化的:经济力量,新产品,竞争,世界事件,法规,甚至推特都是因素。虽然没有免费的午餐,在开放源码机器学习算法和数据分析平台的帮助下,公司仍然可以得到一个“更好,更健康,更便宜的午餐”。在股票市场中,查看历史股票价格并尝试用不同的模型来预测未来是一种常见的做法。

虽然这篇文章不能提供股票分析的细节,但它提出了一种用于解决大规模实时数据分析问题的方法,在一个可高度扩展和延伸性的参考架构下使用开放源代码工具。下面的架构专注于金融交易,但也适用于几乎任何一个行业的实时使用需求。关于这篇文章所讨论的构架的更多信息也可在网上通过Linux基金会,SlideShare,YouTube,和Pivotal Open Source Hub阅读,同时这个架构的组件也可以通过这些网站下载。

架构:股票预测与机器学习

概括而言,股票预测和机器学习的架构(如下图所示)支持一个由预测模型推动的优化过程,并有三个基本组成部分。首先是输入,实时交易数据必须被捕获和存储,变为历史数据。其次,系统必须能够从数据的历史趋势中学习,并通过识别规律和概率来做出决定。第三,系统需要把新的交易数据与历史数据的规律和概率进行实时对比。然后预测出结果并决定采取何种行动。

上图是简化版,该类型的结构在系统范围增加的情况下还有几个基本因素要考虑。其中重要的是,数据量和系统集成。许多不同来源和类型的数据被用来预测结果,以及各种各样的汇数据处理。在一个20个数据源和20个处理汇的环境里,实时功能仍需要非常低延迟的操作。这体现了扩展问题的两个面。首先,数据处理应用程序要解决横向扩展就需要增加更多的节点,并保持非常快速的实时响应。其次,久而久之系统会存储更多的数据。除了历史数据集的增加,不同的分析工作也要同时运行来提高模型的预测性。

在系统架构中使用开源组件

如果把每一个高层次组件扩展到更具体的细节,开源产品可以运用到整个架构的各个功能部分。这些包括SpringXD (现在叫Spring Cloud Data Flow),Geode (孵化中),Spark MLlib, ApacheHAWQ,和Apache Hadoop。

数据流和数据通道大致可以分为六个步骤,如上图所示,具体的讲解会在下面展示。更重要的是,每个组件都具备松散耦合和横向扩展性的特征。

SpingXD读取和处理来自雅虎金融网络服务器集群的API提供的实时数据。SpringXD极大简化了数据流的业务流程,并为系统集成提供内置连接器,SpringXD是基于Java语言的产品,可以处理各种转换。数据通过SpringXD后,被储存到一个具有快速,稳定,灵活,和线性扩展的系统内存里面,这个系统叫Apache Geode(孵化中),系统还可以提供事件的数据分发处理。

通过使用Apache Geode提供的新鲜数据,Spark MLib的应用程序建立和训练一个用于对比新数据与历史数据之间规律的模型。其它工具也同样支持这些模型,例如ApacheMADlib 或者 R。

机器学习模型得到的结果会被推送到其它应用进行处理,同时结果会在Apache Geode上更新,并进行实时预测和决策。

随着数据越来越多,旧的数据从最初的Apache Geode 被转移到Apache HAWQ, 最后被储存在Apache Hadoop中。ApacheHAWQ 支持基于拍字节的SQL查询,同时也允许数据科学家迭代并优化他们的模型。

另外一个处理程序被触发了,使用已收集的历史数据去有规律地重复训练和更新机器学习模型。在这程序里面,当历史数据发生改变或是有新的模型出现时,它会关闭数据循环,创建持续更新,并进行优化。

一个可在笔记本电脑上运行的简化架构

为了能让系统在一个普通笔记本电脑上运行,其架构需要被简化。Linux Foundation 在匈牙利的布达佩斯举行的Apache Big Data 2015 展会上展示了这一方法。简单来讲,这个方法是把长期数据存储组件从Apache HAWQ 和 Apache Hadoop 上移除。


在这个解决方案中,每个组件的功能都有一个具体定义并且会根据需求在本地扩展或者在云端拓展。为了达到方便调度,维护和支持的目的,开源组件可以与Pivotal Clould Foundry 进行连接用于处理程序运行,PivotalGemFire 取代了Apache Geode 或者PivotalBig Data Suite 里的其它组件,用于处理大型的历史数据集。

GitHub支持这一架构,另外一个例子是JavaFX。雅虎金融的新数据被SpringXD采集后推送到Apache Geode的服务器上,然后Apache Geode把这些数据推送到JavaFX,JavaFX把这些实时数据更新并将这些数据以可视化形式呈现给用户。另外还有一个叫股票信息模拟器的应用,它能够在由于没有网络连接而无法收集信息的情况下使用,或者是为了二次开发而使用。

根据上图所示,数据正在被实时收集然后生成相应的指数,比如最后收盘价,平均指数和预测平均指数。

更多相关学习

这个系统的源码和安装教程可以在Pivotal Open Source Hub上找到。下载的文件中也包括一个Vagrant box的虚拟环境,当中包含了所有需要的组件。

从Linux Foundation, Slideshare, or YouTube获得更多的信息

访问与Apache Geode website, Pivotal GemFire website相关话题的文章

查看Apache Geode website, Pivotal GemFire website网站

阅读Apache MADlib详情

Editor’s Note: 2015 Pivotal Software, Inc. All rights reserved.Pivotal, Pivotal Greenplum, Pivotal GemFire and Pivotal Cloud Foundry aretrademarks and/or registered trademarks of Pivotal Software, Inc. in the UnitedStates and/or other countries. Apache, Apache Hadoop, Hadoop, Apache Geode,Apache MADlib, Apache HAWQ, and ApacheSpark are either registered trademarks or trademarks of the Apache SoftwareFoundation in the United States and/or other countries.

编者注记:相关版权2015 Pivotal Software, Inc. All rights reserved.Pivotal, Pivotal Greenplum, Pivotal GemFire and Pivotal Cloud Foundry aretrademarks and/or registered trademarks of Pivotal Software, Inc. in the UnitedStates and/or other countries. Apache, Apache Hadoop, Hadoop, Apache Geode,Apache MADlib, Apache HAWQ, and ApacheSpark are either registered trademarks or trademarks of the Apache SoftwareFoundation in the United States and/or other countries.

原文发布时间为:2016-01-06

时间: 2024-09-14 23:54:20

实时股票预测的开源参考结构的相关文章

实时股票分析系统的架构与算法

[编者的话]如果能在一台服务器上应用人工智能和机器学习算法处理每天的股票交易,而自己则在夏威夷的海滩上享受生活,那将是多么惬意呀.虽然股票 价格的变化受多种因素的影响,世上也没有免费的午餐,但是有些公司依然能够借助于开源的机器学习算法和数据分析平台得到"更好.更健康.更便宜的午餐". 本文搜集并整理了一些如何实现实时股票分析系统的资料,从架构和算法两个层面给出了一种可行的方案. 虽然股票交易市场一直在持续地变化,经济力量.新产品.竞争.全球性的事件.法规.甚至是Tweet都 有可能引起

财库网将正式举行第一届“寻找民间股神”股票预测大赛

汇通网7月17日讯财库网,中国领先的财经社区类网站,花数十万人民币购买的拼音域名Caiku.com,上线短短15天,在没有做任何公开推广的情况下,免费注册用户数已经接近1000人.用户发布的股价预测.投资日记.以及在财库首创的"微股吧"里面发布的财经微博,每天都有数百条.而且,有大量的专业投资者及机构投资者已经加入并且获得了V认证,他们将在财库网为大家分享更多有价值的内容. 7月16日,财库网将正式举行第一届"寻找民间股神"股票预测大赛,诚挚邀请所有对股票投资感兴趣

《构建实时机器学习系统》一3.3 利用 Pandas 分析实时股票报价数据

3.3 利用 Pandas 分析实时股票报价数据 熟悉一项软件的最好方法就是通过示例来亲自使用它.这里将会通过分析苹果公司 2015 年 8 月 3 日秒级股票价格的数据来熟悉 Pandas 的用法.建议通过Python 笔记本或交互式窗口的方法来进行下面的操作. 首先,需要导入相关的模块,在导入Pandas模块的同时,我们还用到了Datetime模块.Datetime模块的主要功能是对时间.日期等数据进行处理,导入命令如下: import pandas as pd from datetime

股票预测软件开发最好用什么语言?

问题描述 股票预测软件开发最好用什么语言? 股票预测软件开发最好用什么语言,我只会简单的数据库知识能做吗? 解决方案 这种"软件"开发不是重点,重点是你要能忽悠. 因为一般人不可能相信你有一个发财的软件为什么不自己使用直接赚钱,而要卖给我,通过卖软件赚钱. 只要你能忽悠成功,我说了,你用易语言胡乱雇佣几个上过几天培训班的乡镇闲散青年开发的软件业没问题. 解决方案二: 用C语言好!毕竟是原生的语言! 解决方案三: 像你这样都听说过数据库这样专业的名词的人,开发这种糊弄智商为负的傻子的软件

RNN实战:股票预测 2

       完整的工作代码可在github.com/lilianweng/stock-rnn找到.        RNN实战part1:股市预测        在第2部分的教程中,将继续探讨股票预测的话题,在第一部分我增添了一个循环神经网络(RNN),并赋予它应对多个股票价格预测的能力.为了区分与不同价格序列相关联的模式,我用股票符号嵌入向量作为输入的一部分. 数据集        在搜索过程中,我找到了用来查询雅虎!金融API的库.如果雅虎没有关闭获取历史数据的API,那么这个库是有用的.在

C# 程序员参考--结构教程

参考|程序|程序员|教程 此教程包括两个示例.第一个示例向您展示如何声明和使用结构,而第二个示例演示向方法传递实例时结构和类之间的差异.还向您介绍下列主题: 结构与类 堆还是堆栈? 构造函数和继承 结构上的属性 示例 1 本示例声明一个结构,它有三个成员:一个属性.一个方法和一个私有字段.本示例创建该结构的一个实例,并将其投入使用:// struct1.csusing System;struct SimpleStruct{    private int xval;    public int X

HTML快速参考--结构标记

参考 标记 属性 功能 <html>...</html>   括入全部HTML文件内容 <head>...</head>   括入HTML头文件内容 <body>...</body>   括入HTML文件主体部分(文本和标记)   background="..." 页面背景中名称或图像的URL标题   bgcolor="..." 页面背景颜色   text="..." 页面文

【HEVC学习与研究】34、HEVC参考软件HM中Intra预测参考像素的获取与管理

继续上一个section所讨论的问题.在section 33中讨论了HEVC帧内预测的几种不同模式,代表这几种模式的函数xPredIntraPlanar.xPredIntraAng和xDCPredFiltering调用的位置位于Void TComPrediction::predIntraLumaAng()中,所以也可以说,在一个PU内,函数Void TComPrediction::predIntraLumaAng实现了亮度分量的帧内预测.该函数的实现方法如下: Void TComPredicti

Tensorflow实例:利用LSTM预测股票每日最高价(一)

RNN与LSTM 这一部分主要涉及循环神经网络的理论,讲的可能会比较简略. 什么是RNN RNN全称循环神经网络(Recurrent Neural Networks),是用来处理序列数据的.在传统的神经网络模型中,从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的.但是这种普通的神经网络对于很多关于时间序列的问题却无能无力.例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的.RNN之所以称为循环神经网路,即一个序列当前的输出与