跳转到主要内容
工程的博客

现代化的策略投资数据平台bob体育客户端下载

2021年1月29日 工程的博客

分享这篇文章

偏好投资于2020年历史最高水平的个人和机构投资者。一项研究显示,“散户占近25%的股票市场后COVID-driven波动”。此外,机构投资者在cryptocurrency堆在投资,36%投资于cryptocurrency,商业内幕的概述。随着投资者获得和贸易cryptocurrency等另类资产,交易量飙升和创建新数据的挑战。此外,前沿的研究不再局限于机构投资者在华尔街投资——当今世界延伸到数字交流在硅谷,以数据为中心的做市商和零售经纪商对投资者投资越来越AI-powered工具。数据湖泊已经成为标准构建金融数据产品和研究,但他们有一个独特的挑战:

  • 缺乏蓝图如何构建一个企业数据在云中湖
  • 组织仍在努力保证数据的可靠性和及时性,导致次优的过程和稀释的见解

因此,可伸缩的AI(如波动预测)难以实现是由于维护成本高、缺乏规模,因此交易盈利的蓝图。作为我们建议蓝图的一部分,我们建议标准化三角洲湖,这是一个开源存储层,给Apache火花™和大数据带来ACID事务工作负载。在三角洲湖是一批表,以及流源和下沉。流媒体数据摄取、批历史回填和交互式查询都是工作的。特别是自原始市场数据实时传递,必须用于实时交易决策支持,支持交易用例三角洲湖是至关重要的。

这个博客主要有2部分。第一个覆盖着陆金融市场数据的详细选项为三角洲湖。第二部分涵盖了蓝图productionalizing用例等金融产品的波动性预测以及市场监测三角洲湖上。值得注意的是,作为用例的一部分,我们引入一个开源时序包开发作为砖实验室的一部分,这有助于构建的基础上面的用例。

如何构建一个市场三角洲湖

在这个博客,通过一系列的设计模式和现实世界的例子,我们将处理数据的挑战。视觉引导,下面的参考体系结构将如何构建的基础数据来源和牧师湖数据集结束报告、交易总结,和市场监控警报。

蓝图构建一个数据平台的投资bob体育客户端下载

基本数据来源摄取

基本数据,(图1)定位在左上角松散定义为经济和金融因素用来衡量一个公司的内在价值,可今天从大多数金融数据供应商。包括两个最常见的来源Factset标普市场情报平台bob体育客户端下载。这两个来源使数据可以通过FTP、API和一个SQL Server数据库。由于数据是可以通过因子分析的数据库,有三个简单选择摄入为三角洲湖:

选择1 -伙伴摄入网络

砖已经与6家公司组成的“数据摄入网络合作伙伴。bob体育外网下载“我们的合作bob体育外网下载伙伴有能力接收来自各种数据源的数据,包括FTP、crm、营销资源和数据库资源。自金融供应商允许金融客户主机数据库,我们的合作伙伴可以使用工具取出数据直接存储在三角洲湖。完整的文档如何摄取使用这个网络和合作伙伴位于砖的清单文档,bob体育外网下载合作伙伴数据集成

砖三角洲湖摄入的合作伙伴网络

选项2 -使用原生云摄入工具

云服务提供商也有现有的数据库复制到三角洲湖的工具。下面是两个选项从数据库(on-prem或云)摄取到三角洲湖。

AWS

AWS提供了一个解决方案,数据库迁移服务,这些服务允许组织建立一个变化数据捕获(CDC)处理数据库更改复制到云数据湖泊。我们提出一个具体的方法复制数据库更改三角洲湖在我们的博客,“事务数据迁移到使用AWS DMS三角洲湖。”Xpressfeed以来标准普尔的数据,例如,有数以百计的来源,从环境、社会和治理风险评分和替代数据基本收益和新闻人气数据集,一个自动化的方法来复制这些三角洲湖是至关重要的。上面提到的AWS的解决方案提供了一个简单的方法来设置。

Azure

Azure最受欢迎的服务之一是Azure数据工厂(ADF)而且有很好的理由。ADF允许复制来自许多不同的数据源,包括数据库、FTP、甚至跨云如BigQuery来源。特别是,有两种方法对三角洲湖从SQL数据库写入数据:

  • ADF提供了一个简单的复制到的工厂,简单地复制数据库表blob存储(blob或ADLS Gen2),和三角洲湖是一个有效的目标表复制功能。
  • 更自定义转换从一个数据库到三角洲湖,ADF足够灵活,能够从数据库读取所有表使用一个信息模式如图所示在这里。从这里,你可以只配置一个砖笔记本使用的输入表名信息模式和每个表副本通过执行一个砖笔记本从数据库读取使用JDBC。的例子是在这里

基于api的数据源执行摄入

布隆伯格是一个行业标准的市场数据,参考数据和其他成百上千的提要。为了显示基于API的一个例子摄入(中间左在图1)从彭博数据订阅的B-PIPE(彭博数据API来访问市场数据来源)模拟器就会被使用。Java市场数据订阅客户端代码在原始模拟器一直在修改下面的代码发布事件到运动实时流使用AWS SDK。

写B-PIPE市场数据流媒体服务

//开放市场数据订阅服务session.openServiceAsync (“/ / blp / mktdata”,CorrelationID (-9999年));//创建列表证券不断摄取三角洲湖SubscriptionList slist=SubscriptionList ();slist.add (订阅(“间谍美国股票”,RunMarketDataSubscription._fields));slist.add (订阅(“apple 150117 c00600000股本”,RunMarketDataSubscription._fields));slist.add (订阅(“AMD美国股票”,RunMarketDataSubscription._fields));session.subscribe (slist)//内循环连续流消息B- - - - - -管市场数据订阅//使用动作客户机写记录检索API运动流AmazonKinesisClient kinesisClient=AmazonKinesisClient (BasicAWSCredentials (,));字符串kinesisEndpointUrl=“https://kinesis.us -东- 1. - amazonaws.com”;字符串regionName=“us-east-1”;kinesisClient.setEndpoint (kinesisEndpointUrl);//创建PutRecordRegust字节API请求(输出)包括序列号PutRecordRequest PutRecordRequest=PutRecordRequest ();putRecordRequest。setStreamName (“databricks-bpipe”);putRecordRequest.setData (ByteBuffer。包装(output.getBytes ()));putRecordRequest。setPartitionKey (“mkt-data-partitionKey”);putRecordRequest。setSequenceNumberForOrdering (sequenceNumberOfPreviousRecord);PutRecordResult PutRecordResult=kinesisClient。putRecord (putRecordRequest);sequenceNumberOfPreviousRecord=putRecordResult.getSequenceNumber ();

从运动流到三角洲湖写入数据

薇尔运动=spark.readStream.format(“运动”).option (“streamName”、“databricks-bpipe”).option(“地区”、“us-east-1”).option (“initialPosition”、“最新”).load ()val df=运动.withColumn (“mktdata坳(“数据”)。(“字符串”)).withColumn (“event_ts”,分裂(坳(“mktdata”)、“,”) (0)).withColumn(“股票”,分裂(分裂(坳(“mktdata”)、“,”) (1)”、“)(1)).withColumn (“quote_pr”,翻译(分裂(坳(“mktdata”)、“,”) (2)," $ "," ")).withColumn (“event_dt坳(“event_ts”)。(“时间戳”)。(“日期”)
              df.writeStream.partitionBy (“event_dt”).format(“δ”).option(“路径”、“/ tmp /砖/ bpipe”).option (“checkpointLocation”、“/ tmp /砖/ bpipe_cp”)开始()

变换和阅读记录

显示器(spark.read。格式(“δ”).load (“/ tmp /砖/ bpipe”))

变换和阅读记录

蜱虫数据源摄入

蜱虫的数据(图1)定位在左下角,这是高分辨率盘中市场数据的通用术语,通常来自数据供应商作为CSV批来源,JSON或二进制格式。类型的蜱虫数据包括贸易、报价和合同数据,交付的一个例子蜱虫历史数据服务汤森路透(Thomson Reuters)提供的。最简单的方法不断地从这些来源数据到三角洲湖设置砖自动装卸机阅读从一桶和重定向数据到一个单独的三角洲湖表。从这里开始,各种ETL过程可能牧师每个消息类型为精制或聚合三角洲表。自动装卸机的好处是双重的:

  • 从三角洲湖继承的可靠性和性能
  • 更低的成本由于底层使用SQS (AWS)或aq (Azure),以避免重新输入文件以及管理检查点来避免手动选择最新的未读文件。

从三角洲湖到金融服务用例productionization

超出了数据收集的挑战表面在构建任何数据平台,投资管理公司越来越需要解决的人工智能产品套件,以及工程成本管理功能。bob体育客户端下载特别是:

  1. 散户和机构投资公司也需要能够查询和数据上运行ETL湖泊具有成本效益的方式,减少维护成本的数量与丰富的湖泊和查询数据
  2. 散户投资者期望AI-powered祭在订阅和见解。最优解将主办的人工智能基础设施,用户可以创建AI-powered仪表板应用程序和库的设置时间和弹性计算基础设施最小化,可以缩放和底层处理数以亿计的数据点,在日常事务数据来源(客户事务和蜱虫引用)。

既然我们已经提出了可靠、有效的方法着陆金融数据集数据云湖,我们想解决一些现有的金融数据集之间的缝隙云和AI-powered产品。

差距的金融数据集云和AI-powered产品

上图显示了数据集和孤立的基础设施不足以提供投资分析产品生产。FSIs大部分采用了几乎所有的AI用例推动者右边但是没能最大化的成交量加权重叠与核心数据集。砖统一数据分析平台的包容前四人工智能实现的用例。bob体育客户端下载使productionization更具体的,我们将展示如何使用一个新的砖开源包节奏大规模操纵时间序列。然后我们将深入介绍以下用例功能创建模板,使用节奏和展示如何得到最好的两个世界在维恩图中。

  1. 零售投资使用基本数据细节通知每日波动预测。
  2. 市场监测细节改进和检测过程总结价格欺骗。

速度-时间序列包

在金融服务领域,时间序列是无处不在的,我们发现我们的客户大规模斗争与操纵时间序列。在过去,我们列出了一些方法扩展时间序列查询。现在,砖实验室发布了一组简单常见的时间序列的实用程序在开源包称为时间序列处理简单节奏。这个包包含以下工具:

  • 的连接合并到一起数以百万计的不规则的时间序列
  • 现有指标的功能创建滚动聚合
  • 优化写入三角洲湖适合特别的时间序列查询
  • 成交量加权平均价(VWAP)计算
  • 重采样
  • 指数移动平均计算

通过结合蜱虫的多功能性质数据,可靠的数据管道和开源软件如节奏、组织可以释放指数的价值从不同的用例以最小成本和快速执行周期。bob下载地址下一节讨论两个反复出现的主题在资本市场利用节奏:波动性预测和市场监督。

节奏,一个开源库作为bob下载地址一种资产,金融服务用例

波动率预测方法与基本技术数据

标普全球市场情报提供基本数据可摄入使用一种称为Xpressfeed的机制(包括在本指南)。一些重要的点对该提要:

  • 它涵盖了成千上万的基本数据指标
  • 它涵盖了全球成千上万的上市公司和非上市股票
  • 报告频率是每天——有一个存档日期可用于时间点分析

虽然我们不包括蜱虫ETL(接触砖的管理过程销售在这个用例)的更多信息,我们从标准选择格式轮廓加工到最终的预测对象使用节奏库;我们的实现是在这个博客的链接在底部。高层细节如下:

  1. 创建日历时间点——合并最新的基本数据到最新的日程表日期使用存档日期(基本数据存档日期作为贸易日期)。通常被称为的加入,这个操作通常是昂贵的和主题在一个高度不平衡数据集的技术瓶颈。节奏会保证这个操作弹性均匀分布利用最好的云(及其相关的成本)。
  2. 创建对等组——使用有意义的基本数据项,如每股收益、净资产收益率、浮动%(代表利益相关者holdings),根据每个指标形式对等组。注意,数据项的值需要旋转进行有意义的工程特性。
  3. 重新取样点数据小时(或其他所需的粒度)。每小时的选择因为每天聚合并没有提供足够的粒度预测波动性。
  4. 预测市场波动在砖使用运行时机器学习。
  5. 综合预测结果找到最大/最小波动公司基于证券被评估。


值得注意的一个方面的数据架构是最后转换在创建黄金预测表。特别是,

  1. 我们已经将ML工程处理的一部分功能。这意味着我们应该全面严格申请CI / CD毫升治理的一部分。在这里是一个模板,用于实现全面严谨。
  2. 我们选择强调gpu预测波动率的重要性。在笔记本的例子在这个博客,我们选择使用xgboost和简单的统计范围各种引用指标的一部分功能。利用gpu_hist树方法和全面管理GPU集群和运行时,我们可以节省2.65 x (x 2.27运行时),都表现出努力降低成本和生产力节省数据团队。这些指标得到6个月的蜱虫来自美国主要交易所的数据。

最终,节奏和的帮助下砖运行时机器学习、零售券商服务他们的客户与仪表板可以统一使用人工智能技术基础和技术分析。下面是我们同龄群体的结果预测。

仪表板统一使用人工智能技术基础和技术分析。

与蜱虫数据市场监测方法

市场监测是一个重要的金融服务的生态系统的一部分,其目的是为了减少操纵市场,增加透明度,为各种资产类执行基准规则。政府和私人组织的一些例子,有广泛的监测项目包括纳斯达克,FINRA, CFTC,芝加哥商品交易所集团。随着零售行业投资更大的更新和没有经验的投资者(),尤其是在数字货币空间,重要的是要理解如何构建一个基本的监测项目,减少金融诈骗和增加透明度等领域的市场波动,风险,和最好的执行。在下面的部分中,我们将展示如何构建基本价格改善总结,以及将一个基本的欺骗一起实现。

价格提高

价格提高是指改善报价的数量(在销售订单的情况下)或要求(在购买订单的情况下),代理提供客户。这对零售经纪人很重要,因为它常常有助于感知质量的代理如果它一直保存客户的钱在一组交易。价格提高的基本概念是:

  • 玛丽亚地方市场秩序为XYZ股票100股上午10:00最好的出价/问的是10 / 11美元
  • 代理一个路由交换的命令执行每股10.95美元的价格
  • 储蓄是0.05 * 100 = 5.00美元在这个执行,代表一定的价格提高

尽管进步很小,随着时间的推移,这些储蓄可以添加在数以百计的交易。一些经纪人也显示这个信息应用透明度和展示能力的路由到适当的市场中心或做市商得到好的价格。

计算价格提高

价格的改进是一个特例滑动(多少执行价格的变化从最好的出价/问订单到达时间)。它会影响数字货币传统股票,更因为有大量的波动性和订单量的波动。例如,这里有一些见解在金融市场深度和滑移。下面是一个基本的蓝图如何计算滑移使用节奏(详细的代码可以在连接笔记本):

  • 摄取市场秩序消息(订单)
  • 摄取执行信息
  • 执行的连接使用节奏订单到达时间
  • 执行的连接使用节拍执行时间
  • 测量不同的执行价格和投标/问可以在订单到达时间
  • 总结公司在SQL和提供分析和/或BI仪表板

摄入的订单数据得到订单和执行通常可用在JSON或其他平面文件格式从内部系统或网络营销峰会(订单管理系统)。一旦这个数据是可用的,在加入操作一对节奏的官方文档中所描述的数据帧在这里:

加入的是作用于一对节奏的官方文档中所描述的数据帧

下面我们展示的代码执行连接。

tempo.tsdf进口TSDF交易= spark.table (“exchange_trades”)trades_tsdf = TSDF(交易,ts_col =“event_ts”partition_cols = (“日期”,“股票”])quotes_tsdf = TSDF (spark.table (“tempo.delta_tick_quotes_6mo”),ts_col =“event_ts”partition_cols = (“日期”,“股票”])ex_asof = trades_tsdf。asofJoin (quotes_tsdf right_prefix =“asof_ex_time”)orders_tsdf = TSDF (ex_asof。df, ts_col =“order_arrival_ts”partition_cols = (“日期”,“股票”])order_asof = ex_asof。asofJoin (quotes_tsdf right_prefix =“asof_ord_time”)
              order_asof \.df \.write \格式(“δ”)\.mode (“覆盖”)\.saveAsTable (“tempo.silver_trade_slippage”)

一旦这在三角洲湖数据可用,它可以切成各种方法总结的这些证券突出的滑移。看到下面的例子,总结了日志的总滑动片一段时间在一个交易日。

欺骗

欺骗是指市场操纵模式涉及人工感兴趣的条目(通过假订单放置)其次是执行另一侧利用最好的出价/要求的变化,由原来的人工错误的影响。欺骗的事件通常需要取消订单,我们大纲下面一个简单的例子。

基本的欺骗的例子

欺骗是数以百计的不同的市场操纵技术和发生在许多不同的资产类别。特别是,它被大多数市场监测程序的一部分股票,但由于需求增加在数字货币比特币和乙醚等,这是增加的重要性。事实上,自从cryptocurrencies波动变量,关键是保护客户从潜在的欺骗活动安全信任加密平台,无论是交易所或违抗框架。bob体育客户端下载

样本模式

步骤的序列检测欺骗也适用于其他操作模式(例如老鼠仓、分层等),所以我们列出一个简单的方法来突出一些底层技术。

  • 保存订单信息——关键订单ID和序列号码
  • 保存取消所有订单的信息(配有订单ID)
  • NBBO记录在订单到达时间(order_rcvd_ts下面的数据)以及NBBO秩序arrivalJoin之前订单和取消(寻找完全取消)和记录序列如下形式:
    • NBBO变化限制从秒之前下单下单(销售订单,减少最好问)
    • 取消订单(我们指的是一个假的秩序non-bonafide顺序)
    • 上面放置的顺序执行的对面
    • 洗贸易(self-trade)活动同样的市场参与者(或细微差别,这可能代表不同的下MPIDs CRD相同)

样本模式捕捉NBBO(这里引用作为代理)信息使用节奏的加入:

tempo.tsdf进口TSDForders_and_cncls_tsdf=TSDF (orders_and_cncls ts_col=“prior_order_rcvd_ts”,partition_cols=(“日期”、“股票”))prior_quotes_tsdf=TSDF (prior_quotes ts_col=“event_ts”,partition_cols=(“日期”、“股票”))prior_order_asof=orders_and_cncls_tsdf。asofJoin (prior_quotes_tsdf right_prefix=“asof_prior_order”)prior_order_asof=TSDF (prior_order_asof。df, ts_col=“order_rcvd_ts”,partition_cols=(“日期”、“股票”))order_asof=prior_order_asof。asofJoin (prior_quotes_tsdf right_prefix=“asof_order”)nbbo_deltas=order_asof。df \.withColumn (“nbbo_ask_delta_direction”符号(坳(“asof_prior_order_ASK_PRICE”)- - - - - -坳(“asof_order_ASK_PRICE”))) \.withColumn (“nbbo_bid_delta_direction”符号(坳(“asof_order_BID_PRICE”)- - - - - -坳(“asof_prior_order_BID_PRICE”))) \.withColumn (“nbbo_ask_delta”,腹肌(坳(“asof_prior_order_ASK_PRICE”)- - - - - -坳(“asof_order_ASK_PRICE”))) \.withColumn (“nbbo_bid_delta”,腹肌(坳(“asof_order_BID_PRICE”)- - - - - -坳(“asof_prior_order_BID_PRICE”)))

下面,我们想象的向下运动NBBO几个样品订单,验证模式我们正在寻找在NBBO变化。

向下的运动NBBO几个订单样品

最后,我们保存的报告公司non-bonafide处决,不约而同洗交易活动。

公司non-bonafide处决

结论

在这个蓝图,我们专注于共同数据集的摄入湖成三角洲以及策略productionizing三角洲湖上管道对象。利用三角洲湖使FSIs专注于为客户产品交付,最终导致资产增加,降低金融欺诈,增加订阅,成为世界投资扩大到越来越多的散户投资者。从技术角度来看,上面所有的用例都是通过现代数据架构的核心原则的帮助下新发布的节奏库:

  • 支持开源包和与行业认可的框架的集成
  • 基础设施支持AI用例
  • 功能创建模板
  • 时间序列分析支持

我们已经记录下了这些方法和提供功能创建模板几个流行的用例在笔记本下面的链接。此外,我们引入节奏及其应用在这些模板作为投资的基础数据平台。bob体育客户端下载

试试以下笔记本砖今天和加速你的投资平台bob体育客户端下载联系我们了解更BOB低频彩多关于我们如何帮助客户提供类似的用例。

布隆伯格API摄入笔记本

从基本&技术数据波动性预测

执行质量和欺骗

免费试着砖
看到所有工程的博客的帖子