R的极客理想:量化投资篇
上QQ阅读APP看书,第一时间看更新

1.4 国内量化投资工具介绍

问题

国内有哪些量化投资工具?

引言

中国市场是一个很奇妙的市场,受市场的影响,更受政策的影响。股市上涨的时候,配资、杠杆、高频,什么都可以有;当股市不好的时候,新股停、股指期货停、融券停、熔断二次千股跌停。

相对于金融二级市场的特殊秩序,各种交易工具也是五花八门。本节就来聊聊中国市场的各种量化交易工具。

1.4.1 量化交易概况工具

在二级市场做交易,我们首先要了解市场的规则和交易工具的使用方法,下面将逐一介绍可以使用的交易工具。

由于金融市场的独立性,我们通常所说的量化交易可以分为证券交易和期货交易。通过证券账户,我们可以交易股票、债券、回购、开放式基金、分级基金、质押、融资融券、大宗商品、券商理财等。通过期货账户,我们可以交易商品期货和金融期货。

在中国玩量化,主要就是期货、股票、债券、基金的量化交易。对于个人账户来说,只有期货是可以实现全自动化量化交易的,而证券类金融产品由于多种限制很难实现全自动化,一般情况下只有机构账户才有交易接口,所以证券交易的量化,大多都停留在量化选股和回测上面。

图1-13完整地介绍了我们做量化投资时经常要使用的工具,包括自动化交易和手工交易两个部分。

图1-13 金融市场交易工具

由于图1-13比较复杂,我们需要把图分成几个部分单独进行说明。

A:从中间的交易所数据开始看,所有的数据都来源于交易所,原始数据包括价格、交易量、买方报价、卖方报价、竞价、资金流入、资金流出等。

B:当你在证券公司或期货公司开户后,券商会给你提供证券客户端工具或期货客户端工具,利用券商提供的客户端就能够进行手工下单的交易了。如果你觉得券商的客户端不太好用,可以自己下载同花顺、大智慧、东方财富、万得财经等第三方辅助交易工具,把你的券商账户配置进去,用这些第三方的交易工具来交易。第三方的辅助交易工具一般都会有更好的操作界面和选股推荐,还有更多的人工服务,帮助散户快速了解市场。但也存在很大的安全隐患,就是你的个人信息会被第三方拿到,有被泄露的风险。

C:期货市场是目前程序化水平最高的市场,主要是因为期货开放的程序化接口CTP。你只要开通了期货账户,就可以马上申请开通期货的CTP交易接口。通过CTP接口,你可以免费获得期货的实时行情,同时可以自己编程实现程序化下单,这样就打通了期货全自动化交易的流程。

D:期货交易有5个主要的量化交易软件,分别是文华财经、MultiCharts(MC)、交易开拓者(TB)、金字塔决策交易系统和TradeStation(TS)。这5个软件已经封装了行情、交易、回测、账户管理、策略模板等功能,同时提供独立的脚本语言,让开发者可以编写自己的交易策略模型。利用这类软件在特定的环境进行脚本开发,是非常快速、方便的。开发完成的脚本,如果回测效果非常好,不用修改代码直接就可以进行实盘交易了。在市场程序化成熟度还不太高的时候,很多小私募和期货公司大量使用这种方法做量化交易是非常有效的。

E:证券市场的程序化交易,基本都被政策所限制。虽然有程序化的交易通道,但都属于机构专用,一般都需要3千万以上资金的机构用户才能申请。自2015年股市过山车似的大起大落之后,证监会直接叫停了所有新基金的程序化交易通道,当前市场上能够进行自动化交易的机构,应该都是在2015年5月之前成立的基金产品。所以,高门槛和严监管,让证券自动化难以实现。

F:从2015年开始,很多互联网金融平台兴起,开始利用互联网技术优势,抢占金融的市场。互联网金融方向,除了P2P和支付,另外一个分支就是量化投资。目前国内在线编程交易模型比较主流的平台就是聚宽(JoinQuant)、优矿(uqer)、米筐(RiceQuant)。这种模式主要模仿的是国外Quantopian(https://www.quantopian.com),利用互联网来打破金融量化的壁垒,让外部知识来冲击原有的金融领域固化的投资思路,通过互联网的群体来贡献新的策略,转而进行投资赚钱。我在2015年创业也是做的这个模式,当然我是利用R语言来作为算法引擎,其他的平台大多都是基于Python的。关于编程语言的问题,我就不争论了,各有各的好。

G:还有一种最专业的玩法,就是什么平台都不用。直接获得数据后,自己开发程序做回测、做交易、做会计、做风控……交易的原始数据主要是交易所来提供,但是个人或公司和交易所是无法对话的,中间就产生了数据服务商。万得已经是中国最大的金融付费数据的服务商了,聚源同样提供数据服务,先被恒生收购,恒生后又被阿里收购,应用是阿里系在金融的布局。另外,还有一种免费的数据获得方法,就是从新浪财经免费抓取。网上有各种程序教你怎么爬取数据,后来有人把互联网爬取数据的方法统一写成了一个Python的库,就是TuShare。你可以利用这个库,爬取到比较全的金融数据。

我想说的是,做专业的事情,还是要用专业的数据库才会稳妥,特别是和钱有关的事情。互联网上的数据虽然免费,但你写程序爬取、网络速度、数据结构、数据更新等操作,维护的成本也很高,免费的数据经常还会出点错,多一行或少一行。如果你依靠用免费的数据所实现的策略,自己都不一定敢放钱去交易。

H:一旦我们获得了标准化的市场数据,后面就好办了。我可以用R做个回归分析,或者做个基于MACD的趋势分析,再设计一个alpha的对冲策略,想怎么干都行了。这种方式是最灵活的,你不需要受到市场或者工具的限制,完全自己掌握。我觉得随着量化的成熟度越来越高,这种通过数据自建交易平台的模式会越来越多,这才是核心知识、核心技术。而且平台化的通用策略模型,最终可能会在完全竞争的市场中成为历史。当然,这会需要很多年的时间!

J:其实量化投资的目标,只有两个,一个是回测,一个是交易。我们要根据自己的目标来选择工具,你是想交易赚钱,还是想通过回测发现市场机会,或者两个都想。目标明确,选择顺手的工具,才能让你事半功倍。

我们把框架思路讲完了,下面就分别详细介绍一下列举的这些工具怎么用吧。

1.4.2 证券期货客户端

要进行证券或期货的交易,首先就需要去券商开户,然后由券商提供给你交易客户端。每个券商的软件操作界面都是不一样的。

1.证券交易客户端

股民在证券公司进行开户,证券公司一般要负责向用户进行股票或期货交易的入门培训,并告知风险,同时帮助股民开通交易所账号,打通银行的资金通道,进行银证转账等。

每个证券公司,都有一些自己的特色,比如股票交易的手续费打折、为融券操作提供足够多的券、远程开户等。记得2010年的时候,万分之七点五的股票佣金已经很低了,到2016年随着互联网的冲击,互联网券商可以给出的佣金是万分之二。现在更是到了底线,可见券商这块已经没有利润了。

有的证券公司,提供投票推荐服务,给你选股的建议。有的证券公司,理财类的金融产品做得很好,不仅风险低,而且还有不错的回报。有的证券公司,主打服务,定期安排知识讲座,并与股民互动。在2000年以前个人计算机不发达的时代,大家都去股票大厅,一起交流。现在基本都在家里交易,年轻人没有时间长期盯盘,一般都通过手机来交易。

关于证券开户的问题,上海证券交易所只能开一个账户,深证证券交易所可以开多个账户。到2014年年底,股市开始活跃时,证监会放开了开户许可,不再对开户的数量进行限制,你可以在每家券商都开户。后来,在股市经历2015年的三起三落,以及2016年的持续震荡后,证监会从政策上又把开户数量限制为3个。这大概就是政策大于市场的体现,也许隐含着什么信号。我自己开了3个证券账户,有一个账户手续费最便宜,有一个账户是最早开通的,还有一个账户提供上门服务。

证券的客户端截图如下,分别是如图1-14所示的招商证券客户端和如图1-15所示的华泰证券客户端。

图1-14 招商证券客户端

图1-15 华泰证券客户端

证券客户端的操作界面上,通常都会分为两个部分,行情部分和账号与交易部分。行情部分一般都由第三方软件公司提供,主要的两个行情软件供应商分别是通达信和同花顺。招商证券客户端的行情界面是通达信的,而华泰证券客户端的提供商是同花顺的。账号与交易部分一般都是券商自己制定的,比较个性化,每个券商的交易部分的界面,都是完全不同的。招商证券客户端,交易部分的界面默认是嵌入在行情界面下方的。而华泰证券客户端,交易部分是另外一个独立软件程序,与行情界面是完全分离的。

第三方证券客户端软件,包括个人用户版本大智慧、同花顺、东方财富,以及专业用户版本的万得财经等。

❑大智慧官方推行的理念:更专业的策略方案,更安全的风控策略,更权威的投资平台。

❑同花顺官方推行的理念:让投资变得更简单,人工智能+炒股软件。

❑万得财经官方推行的理念:全方位洞察金融咨询,覆盖全球金融市场的数据与信息。

从软件的界面设计以及操作感觉,就能体会到每个软件的差异化定位和市场侧重点。下面分别是第三方客户端的截图:大智慧客户端(图1-16)、同花顺客户端(图1-17)、万得财经客户端(图1-18)。

图1-16 大智慧客户端

图1-17 同花顺客户端

图1-18 万得财经客户端

不管是券商的客户端,还是第三方的客户端,总有一款是最适合你的。

2.期货交易客户端

如果做期货,你需要下载期货公司提供的客户端软件。如图1-19所示是国信期货的客户端软件界面,界面设计得中规中矩,交易时需要的视图都有,就是用户体验不够友好。

图1-19 国信期货客户端

另外,还有一款第三方期货软件——快期(如图1-20所示),是比较受大家欢迎的。快期,一切以快速交易为核心,所有功能都围绕着快速交易而设置。快期提供界面自由配置、多种下单板选择、报价块下单、鼠标快速下单、键盘快速下单、快速撤单、自动开平、账户交易报告等功能。通过界面的自由配置,客户可以调配出符合自己使用习惯的界面布局,提高客户使用的舒适度。

图1-20 快期客户端

1.4.3 金融数据库

如果你想做量化投资,数据是非常关键的。在中国,有很多数据服务商可以供我们选择,有收费的数据,也有免费的数据。

1.收费数据服务

万得提供了中国最全面的财经数据库,但是收费也是相当高的。除了万得,还有聚源数据库,巨灵金融数据库,财汇数据库,朝阳永续数据库,中诚信数据库等。当然每种数据库都有自己的定位,有综合的、有侧重宏观数据的、有侧重交易所数据的、有侧重债券数据的、有侧重私募数据的、也有侧重VC/PE数据的。如果你对这一大堆数据库摸不着头脑的话,还可以选择第三方数据平台,比如通联数据,通过平台来发现你需要的数据,再进行购买和使用。

图1-21 专业金融数据库

2.免费数据服务

互联网上也存在很多免费金融数据。新浪财经很早就开始提供免费的数据接口,供互联网用户下载股票行情。R语言中集成的quantmod包,可以从Yahoo财经抓取数据,本书中的很多例子都是用这种方式做的。随着互联网化的普及,很多网站都提供实时的交易大盘。一般的,只要是能在网页上看到的内容,数据都是可以爬到的。大多数网页都是通过Ajax技术传输JSON格式数据,如果你熟悉Javascript语言,通过chrome浏览器看一下代码怎么写的,很容易就能把数据爬下来,不过自己来维护程序,还是比较麻烦的。

TuShare工具包,解决了爬数据的问题。你可以直接使用TuShare工具包来爬取互联网数据,这样就省去了自己维护爬虫的工作,能更加专注于数据分析。

最后,还有一种中国特色的数据方案,就是去就淘宝买数据。数据价格也很便宜,是个人可以接受的,而且质量比从互联网爬取更有保证。

图1-22 TuShare工具包

1.4.4 互联网在线策略平台

聚宽(JoinQuant)、米筐(RiceQuant)、优矿(Uqer),是从互联网兴起的3个做在线策略研发的平台。如果你还是量化小白,可以先去这3个平台上玩一下,在每个平台社区中都有不少的好东西,可以让自己快速了解量化是怎么做的。各种量化模拟的交易大赛,也能让你快速结实同道中人,对于新手起步还是很好的。当你过了入门期,随着对量化的理解和实践经验的提升,后面的修行就需要以专业化的知识作为积累,比如本书就比较适合了。

图1-23至图1-25分别是3个平台的回测运行的截图,聚宽与米筐非常相似,完全就是quantopian的中国版,而优矿的设计结合了投研报告,是一种IT和金融的结合方案。面向不同的互联网用户,不知道哪种设计会更吸引人呢?

图1-23 聚宽在线平台

图1-25 优矿在线平台

图1-24 米筐在线平台

这3个平台都提供Python的API,都是基于Docker容器的自动化资源分配方案,且都不能直接下载数据。Docker是一个开源的、系统级的、轻量的虚拟化技术,关于Docker技术的详细介绍,请参考本书4.3节。

随着在线策略研发平台的兴起,也导致了在线策略交易平台在走下坡路,如中量网、微量网正面临巨大的转型压力。

1.4.5 量化工具软件

文华财经、MultiCharts(MC)、交易开拓者(TB)、金字塔、TradeStation(TS),是以软件形式提供的量化客户端程序,你的策略开发过程需要把数据下载到本地,然后利用你本机的资源进行计算。

那么本地软件与互联网平台有什么区别呢?从软件架构设计上考虑的主要问题是,数据在哪保存、计算在哪完成。

互联网平台通常都不需要下载数据,用户在线写好代码,直接提交就行了。服务器端后台会为用户启动一个Docker容器,根据配置分配好内存、CPU等计算资源,计算完成后把结果通过浏览器再展示给用户。整个过程都在服务器端完成,用户不需要自己的计算机有多高的配置,只要能上网,并有个支持H5特性的浏览器就行了。互联网平台的系统架构思路如图1-26所示。

图1-26 互联网平台架构思路

而客户端软件架构的思路是完全不同的,如图1-27所示,所有的数据都必须下载到本地,然后再运行,这样会用到本地计算资源。用户的回测程序的计算速度受本地计算机的性能影响,这时用户就需要配备一台高配计算机。虽然这种方式会把数据下载到本地,但也只能在这个软件内部用,因为数据是加密的,没有文档,也没有数据格式说明。

图1-27 软件平台架构思路

利用文华财经软件,你可以边编程,边通过可视化的界面,直观地看到交易信号,同时还有完整的策略分析报告,这个设计非常方便。图1-28和图1-29是文华财经的wh8软件截图,包括编程和回测界面,以及策略报告。

图1-28 wh8编程和回测界面

图1-29 wh8策略报告

文华财经的一大特点,是把交易策略分为趋势交易、套利交易、盘口交易,再针对不同的交易模式提供特殊的函数来支持。其他的几个量化软件,与文华wh8功能上是类似的,大家可以根据自己的兴趣或者培训课程自行下载使用。

1.4.6 API程序工具

最后我要介绍的方法就是专业人员的做法了,同时也是有编程背景的人最突出的优势点。通过交易接口和行情接口,自己动手编程来构建整套的投研体系和交易体系。这种方法是需要一个团队来完成的,涉及的知识点很多,而且工作量是巨大的。

市场上,开放的交易接口主要有CTP、REM等,同样的,每种工具各有特点。

CTP(Comprehensive Transaction Platform,综合交易平台)是专门为期货公司开发的一套期货经纪业务管理系统,由交易、风控和结算三大系统组成。CTP交易系统主要负责订单处理、行情转发及银期转账业务;结算系统负责交易管理、账户管理、经纪人管理、资金管理、费率设置、日终结算、信息查询以及报表管理等;风控系统则主要在盘中进行高速的实时试算,以及时揭示并控制风险。系统能够同时连通国内四家期货交易所,支持国内商品期货和股指期货的交易结算业务,并能自动生成、报送保证金监控文件和反洗钱监控文件。

REM是盛立极速柜台交易系统,是以硬件FPGA技术来处理核心事前风控业务和交易管理业务的系统。REM系统的主要业务功能将分为两部分:交易和风险控制。系统在提供严密事前风控的同时又保证了超低延迟,成就专业和机构投资者最安全又最快的交易。

CTP可以在期货公司直接开通,比较成熟,而REM只是特定的期货服务商才有,而且只有基础API功能。CTP是通用期货交易接口,支持连接4个期货交易所,REM重点支持上海期货交易所,不支持中国金融交易所。速度上,CTP延迟在20ms左右,REM延迟在5ms左右,这些都是在机房的测速,远程连接延迟都在500ms以上。

不管接入CTP或REM,都是需要C++编程的。这些程序使用的都是异步回调的机制,你还需要了解Callback的程序设计方法。直接用C++进行程序开发,对于一般的程序员来说也是相对复杂的。你至少需要2个独立的进程处理行情和交易,在交易时,你可能需要用最新价挂单,这时进程之间是需要传递数据的。你研发的策略模型,有可能是用R语言和Matlab来编写的,然后把交易信号传给C++的下单程序去交易。另外,针对不同的交易策略,比如同一时间,一个做TF1706空单,一个做TF1706多单,你就应该在系统内部进行撮合,有记账、而不进行实际交易。当你要下多于500手大单子的时候,你的系统也应该能够帮你把大单拆散,以每秒5手的速度下单,从而减少对市场的冲击。如果按照我上面列出来的要求开发一套系统,你的系统的复杂度就会变得很高了。当然,如果你的资产规模有几个亿,这一切都是值得的。

做量化有这么多的选择,为什么我要用R语言?在本书开篇1.1节我已经强调过了,R语言并不是万能的,我用R来解决建模的问题,当然你也可以用Python或Matlab来做,各有各的好。Matlab很方便,但是收费;Python虽说什么都可以干,但当你用Python去解决一个非工程化的问题的时候,可能找不到思考的方向。

明确你的目标,选择顺手的工具,发挥自己和工具的特点,去创造价值吧!