搭建一个入门级的高频交易系统!

论坛 期权论坛 期权     
期权匿名问答   2023-1-13 14:52   4545   1
本篇文章从高频交易的原理出发,带大家认识高频交易系统是怎么构建的。
原文链接:
组装一个入门级高频交易系统
我们从高频交易背后的原理讲起。

高频交易能在这个市场行得通,有一个前提假设:市场总存在无效的时候。每一个市场参与者都盯着行情变化,总有一部分人能发现价格无效的时刻并参与利用,在高频交易领域,速度就是生命线,你出手越晚,在价格被纠正之前,捕捉到这种交易机会的概率越低。时间级别越小,市场无效的可预测性越大,但是竞争也更激烈。
有效的市场:


无效的市场:


注意两幅图的横坐标,下面这幅图的时间间隔是1分钟,在1分钟的时间周期里我们观察到,价格之间出现了缺口,高频交易的单子就是从这些缺口中获利。
来看一个更形象具体的例子。
一个机构客户想买入1000股通用公司的股票,当前GE的股价是10.5美金,客户要求买入的成本价不能高于11美金。


客户把单子切成了10份,每份100股,同时设定了一个程序,当价格高于11美金时就不再买入。
HFT(高频系统)就像一群秃鹫一样在市场蹲着,当100股的买单进来时,秃鹫们会意识到有人正在大量买入股票。


然后HFT就要开始行动了,他们先甩几个单子来试水:先在市场上挂13美金,100股的限价单,没反应;又挂12美金,100股的限价单,还是没反应......直到挂上11美金,100股的限价单,这时候HFT触碰到了机构客户的上限价格,于是系统启动,大量买入GE股票然后以11美金的价格脱手给客户。
此外,还有一种HFT的利器——快速下单(flash order)。一个订单先到达交易所,交易所接到订单号,可以先发给交易所的会员,如果单子成交不了再发到市场上。这些交易所的会员利用时间差,先买入,再卖给市场其他投资者,低买高卖,赚取了中间价。
高频交易非常非常适合crypto市场。

原因有二,一是高频交易着为市场带来了流动性,所以brokers经纪商会给他们返佣,甚至直接支付一定的费用;二是个人交易者能直接拿到crypto的实时市场数据。
为什么原始的市场实时数据如此重要呢?用一句大家熟知的机器学习谚语来回答就是:
Garbage in, garbage out
垃圾进,垃圾出。
进来的是垃圾,出去的也一定是垃圾。
总览高频交易系统

构建HFT系统的一大原则是:必须对错误有很大的容忍度(容错率高)。在实盘交易时,会发生各种各样始料未及的错误,比如分布式拒绝服务攻击(Distributed Denial-of-service,DDoS)干扰经纪商执行正常交易。还有就是高频交易必须高频率的获取实时数据,如果哪个链接崩了,整个系统就GG了。
怎么提高HFT系统的容错率呢?我(本文作者)采用了微型服务架构(micro service architecture),它的好处是一旦哪个服务节点崩了,调度器就会马上重启。
高频交易架构的简化图:



高频交易架构的简化图

组建介绍:

①Database(数据库)
高密度的时间序列数据库,每天要处理成千上万的数据。
②scrapper(传输器,可以把它理解成爬虫,通过API把数据扒下来然后传给数据库)
把新获得的数据流传输到数据库。
③Quantitative Model(量化模型)
当出现交易机会时发出信号,把信号传递给订单执行器。
④order executer(订单执行器)
收到量化模型发出的信号,然后下单。
有时候市场流动性不够好,或者单子要几个滑点才能成交,但是HFT系统又需要严格执行限价单,这就需要等待,或者在挂单上做调整。
⑤Quantitative Analysis(量化分析模块)
这是一模块是对数据进行量化分析。你可以在此分析HFT系统的限制条件,比如说在哪些时候单子没法成交。举个栗子,在高波动的市场行情下,你的单子很可能不能成交,这个时候Quantitative Analysis就会记录这种状况,这样在下一次市场高波动的时候,系统就不会下单了。
我为什么要用这样一套微观服务架构呢?

因为经纪商(broker)有时候会短路,scrapper爬虫拿不到实时行情数据。比如说在市场行情波动特别大时,有一些经纪商就会被DDoS攻击,单子就无法成交。
更具体的HFT架构解释:
我推荐用Docker来搭建HFT系统,Docker是一个很nice的管理工具,通过docker我们能更方便地部署像Kubernetes这样的集群。
HFT的详细架构设计图:


1、scrapper
scrapper通过REST API scrapper service获取数据,上图可见REST API scrapper service下面有好多个REST service,分别被标注为REST service 1、REST service 2、REST service 3、REST service 4,这里缓存了最近的市场交易记录,报价和订单薄。
有这么多个service的原因是当连接阻塞时(这种情况经常发生),有多个service能最大程度上保证获取数据的获取。比如有时候其中一个连接崩了,你还有其他不同ip地址的连接,这就保证了实时数据获取的稳定性。
scrapper接收到REST API上的交易信息后,就会把这些信息传递到数据库里,scrapper能在多个REST API的service之间切换,如果检测到哪个service出现了错误,就会立刻重新启动它。
2、Order Execution Service(订单执行服务)
收到量化模型发出的信号,执行下单程序。
3、Quantitative Algorithm Service
模型对数据处理,然后发信号。
4、Development and Research Tools
也就是上面所说的Quantitative Analysis量化分析工具,对高频交易的一些限制条件进行分析(比如什么市场状况下,订单不能成交?)
在HFT系统中,为什么要把REST API抓取服务和scrapper传输器分开?

主要是为了提高速度,增强系统的稳定性。当你要开平仓时,你肯定不想一直访问数据库,而是直接查询REST API,将信息存储在RAM上(降低硬盘开销),能够实现更高的存储效率。如果由于某种原因REST API服务失败,你可以重新启动,不丢失任何数据,又有足够的时间安全重启系统。
欢迎关注我的公众号,带你玩赚量化呀:

跟puppy玩量化
分享到 :
0 人收藏

1 个回复

倒序浏览
好耶
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:392857
帖子:78572
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP