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

【编者的话】如果能在一台服务器上应用人工智能和机器学习算法处理每天的股票交易,而自己则在夏威夷的海滩上享受生活,那将是多么惬意呀。虽然股票 价格的变化受多种因素的影响,世上也没有免费的午餐,但是有些公司依然能够借助于开源的机器学习算法和数据分析平台得到“更好、更健康、更便宜的午餐”。 本文搜集并整理了一些如何实现实时股票分析系统的资料,从架构和算法两个层面给出了一种可行的方案。

虽然股票交易市场一直在持续地变化,经济力量、新产品、竞争、全球性的事件、法规、甚至是Tweet都 有可能引起市场的变动,但是在这个市场上,使用不同的模型通过股票的历史价格来预测未来的价格依然是一种常见的实践。一个实时的股票分析系统不仅需要将影 响股票价格的各种数据集合起来进行分析,还需要具有响应低延迟的特性,因而架构必须是高可伸缩、高扩展的,一方面随着时间的流逝,系统将存储越来越多的数 据;另一方面数据处理应用程序必须能够通过添加更多的节点进行水平扩展以保持实时地响应速度。

来自于Pivotal公司的企业应用解决方案架构师William Markito最近在公司的博客上发表了题为《实时股票预测系统开源参考架构》的文章,介绍了一个通过开源技术实现实时股票分析系统的参考架构。虽然该架构关注于金融交易,但是也适用于其他行业的实时用例场景。William Markito首先从最顶层的视角,给出了一个高层架构图:

从最顶层的视角看,由预测模型驱动的最优化实时股票预测架构包含数据存储、模型训练、实时评估和采取行动四部分:首先,进入系统的实时交易数据必须 被捕获并存储,作为历史数据。第二,系统必须能从数据的历史趋势中学习,识别出影响决定的模式和概率。第三,系统需要能够实时地将新传入的交易数据与从历 史数据中学到的模式和概率进行比较。最后,系统还需要预测出输出并决定所要采取的行动。

之后,William Markito又使用Spring XD (现在称为Spring Cloud Data Flow,是一个统一并且可扩展的分布式系统,可用于数据抽取、实时分析、批量处理和数据导出场景)、Apache Geode (一个针对高可扩展应用程序的开源分布式内存数据库,目前正在孵化中)、Spark MLlib 、Apache HAWQ (一个Hadoop原生的大规模并行SQL分析引擎)以及Apache Hadoop等开源组件对架构中的每一部分进行了细化:

如图所示,整个数据流包含6步,每一部分都是松耦合并且可以水平扩展的:

1.使用Spring XD读取并处理通过Yahoo! 金融Web服务API获取到的实时数据,然后通过Apache Geode 将数据存储在内存中。

2.使用 Apache Geode中的实时热数据,通过Spark MLib应用创建并训练模型,将新数据与历史模式进行比较。当然,也可以使用其他工具集创建模型,例如 Apache MADlib或者R。

3.将训练出的机器学习模型推送到部署好的应用程序上,同时更新 Apache Geode以便于进行实时预测和决策。

4.随着时间的推移,有一部分数据将变成冷数据,将这一部分数据从 Apache Geode移动到Apache HAWQ上并最终存储到Apache Hadoop中。

5.周期性地基于整个历史数据集重新训练并更新机器学习模型。这一步让系统形成了一个闭环,当历史模式发生变化或者新的模式出现的时候,它会持续地更新和提升模型。

为了让读者能够在自己的笔记本上运行这一架构,William Markito还给出了一个更为简化的实现,该版本移除了长期的数据存储组件Apache HAWQ和Apache Hadoop。

该解决方案中的每一个组件都责任明确,支持扩展并且能够在云环境中运行。那么除了架构之外,针对影响股票价格的不同因素,应该选择哪些算法来训练模型并预测股票价格趋势呢?

在SlideShare上LargitData的CEO David Chiu介绍了如何通过隐马尔科夫模型(HMM)来预测股票价格,David Chiu认为股票的历史行为与当前行为具有一定的相似性,明天的股票价格可能会遵循过去的某种模式:

另外,在Vatsal H. Shah 的网站上还有一个文档介绍了Decision Stump 算法、线性回归、支持向量机、Boosting 算法和基于文本分析的方法在股票预测领域的应用,并对这些算法的预测结果进行了比较。

除此之外,与上市公司相关的新闻动态也会对股票价格造成影响,例如并购定增事项、公司领导人的离开等等,对于这一问题,新加坡的数据科学家Lim Zhi Yuan在SlideShare上分享了一些自己的经验。Lim Zhi Yuan在该分享中研究了外部事件对于股票价格的影响,在分析时他分别通过线性模型和非线性模型两种方法进行了实验,线性模型采用了支持向量机(SVM)算法,非线性模型采用了深度神经网络模型。

文章转载自 开源中国社区[https://www.oschina.net]

时间: 2024-10-30 13:57:16

实时股票分析系统的架构与算法的相关文章

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

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

转 大数据实时处理:百分点实时计算架构和算法

当今时代,数据不再昂贵,但从海量数据中获取价值变得昂贵,而要及时获取价值则更加昂贵,这正是大数据实时计算越来越流行的原因.以百分点公司为例,在高峰期每秒钟会有近万HTTP请求发送到百分点服务器上,这些请求包含了用户行为和个性化推荐请求.如何从这些数据中快速挖掘用户兴趣偏好并作出效果不错的推荐呢?这是百分点推荐引擎面临的首要问题.本文将从系统架构和算法两方面全介绍百分点公司在实时计算方面的经验和心得体会,供读者参考. a) 实时计算架构 图 1百分点大数据平台原理示意图 工欲善其事,必先利其器.一

大数据处理:百分点实时计算架构和算法

当今时代,数据不再昂贵,但从海量数据中获取价值变得昂贵,而要及时获取价值则更加昂贵,这正是大数据实时计算越来越流行的原因.以百分点公司为例,在高峰期每秒钟会有近万HTTP请求发送到百分点服务器上,这些请求包含了用户行为和个性化推荐请求.如何从这些数据中快速挖掘用户兴趣偏好并作出效果不错的推荐呢?这是百分点推荐引擎面临的首要问题.本文将从系统架构和算法两方面全介绍百分点公司在实时计算方面的经验和心得体会,供读者参考. a) 实时计算架构 图 1百分点大数据平台原理示意图 工欲善其事,必先利其器.一

百分点实时计算实践:架构和算法

当今时代,数据不再昂贵,但从海量数据中获取价值变得昂贵,而要及时获取价值则更加昂贵,这正是大数据实时计算越来越流行的原因.以百分点公司为例,在高峰期每秒钟会有近万HTTP请求发送到百分点服务器上,这些请求包含了用户行为和个性化推荐请求.如何从这些数据中快速挖掘用户兴趣偏好并作出效果不错的推荐呢?这是百分点推荐引擎面临的首要问题.本文将从系统架构和算法两方面全介绍百分点公司在实时计算方面的经验和心得体会,供读者参考. a) 实时计算架构 图 1百分点大数据平台原理示意图 工欲善其事,必先利其器.一

腾讯分析系统架构解析

TA(Tencent Analytics,腾讯分析)是一款面向第三方站长的免费网站分析系统,在数据稳定性.及时性方面广受站长好评,其秒级的实时数据更新频率也获得业界的认可.本文将从实时数据处理.数据存储等多个方面带你深入探寻TA的系统架构及实现原理. 网站分析(Web Analytics)主要指的是基于网站的用户浏览行为,对网站的点击流数据和运营数据进行分析,以监控网站的运营状况,为网站的优化提供决策依据.网站 分析系统已成为站长日常运营必不可少的工具,业界比较流行的网站分析系统主要有Googl

分布式实时日志分析解决方案ELK部署架构

一.概述 ELK已经成为目前最流行的集中式日志解决方案,它主要是由Beats.Logstash.Elasticsearch.Kibana等组件组成,来共同完成实时日志的收集,存储,展示等一站式的解决方案.本文将会介绍ELK常见的架构以及相关问题解决. Filebeat:Filebeat是一款轻量级,占用服务资源非常少的数据收集引擎,它是ELK家族的新成员,可以代替Logstash作为在应用服务器端的日志收集引擎,支持将收集到的数据输出到Kafka,Redis等队列. Logstash:数据收集引

PostgreSQL 实时位置跟踪+轨迹分析系统实践 - 单机顶千亿轨迹/天

标签 PostgreSQL , PostGIS , 动态更新位置 , 轨迹跟踪 , 空间分析 , 时空分析 背景 随着移动设备的普及,越来越多的业务具备了时空属性,例如快递,试试跟踪包裹.快递员位置.例如实体,具备了空间属性. 例如餐饮配送,送货员位置属性.例如车辆,实时位置.等等. 其中两大需求包括: 1.对象位置实时跟踪,例如实时查询某个位点附近.或某个多边形区域内的送货员. 2.对象位置轨迹记录和分析.结合地图,分析轨迹,结合路由算法,预测.生成最佳路径等. DEMO 以快递配送为例,GP

架构师必知的开源实时流处理系统

这里对目前业界开源的一些实时流处理系统做一次小结,作为日后进行技术调研的参考资料. S4 S4(Simple Scalable Streaming System)是Yahoo最新发布的一个开源流计算平台,它是一个通用的.分布式的.可扩展性良好.具有分区容错能力.支持插件的分布式流计算平台,在该平台上程序员可以很方便地开发面向无界不间断流数据处理的应用,开发语言为Java. 项目链接:http://incubator.apache.org/s4/(注:S4 0.5.0已支持TCP链接及状态恢复等特

【Spark Summit EU 2016】沃森媒体分析系统:从单租户Hadoop到3000租户Spark的架构演进

本讲义出自Ruben Pulido和Behar Veliqi在Spark Summit EU 2016上的演讲,主要介绍了IBM公司的沃森媒体分析系统,介绍了该系统之前针对于单租户的架构,所需面对的多租户挑战和面对该挑战产生出的新系统架构. 在讲义的最后Ruben Pulido和Behar Veliqi总结了从沃森媒体分析系统架构演变过程中所获取的经验,新的发展途径可能会基于Spark.Kafka和Zookeeper,并将具有健壮性的特点,能够满足延迟和吞吐量的需求,并且能够支持更多的分析.