1. 前言
近年来,人工智能与大数据的话题越来越火,具有加速改变世界现状的趋势,无人可以阻挡。2017年5月27日,DeepMind公司的AlphaGo占胜世界围棋第一人、世界冠军柯洁九段。2017年10月26日,沙特阿拉伯正式授予“女性”机器人索菲亚公民身份,使其成为了史上首个获得公民身份的机器人。同年联合国开发计划署亚太局正式宣布,任命索菲亚(Sophia)为第一位“非人类”创新大使。在金融投资领域,人工智能带来的革命也将会颠覆我们的想象。
2018年未来已来。站在历史的风口,我们如何决择? 作为普通大众,我们不是程序员,不是金融工程从业者,难道只能束手就策,逐渐被历史所淘汰,在投资领域被轻松AI割韭菜?我的答案是,我们需要主动拥抱变化,不和时代对抗,变成终身学习者,不断迭代自己,与时俱进。
本篇小文总结了前几个月,自己从一无所知的小白,入门“个人”量化交易的过程 。走过很多弯路,填过很多坑,现在基本实现了股票自动交易。 希望能给同样是小白的读者一点参考。各路大神,金融工程专业人员,程序员等,本文对你可能太简单了,如有错误之处,请不咎赐教。
2. 实现量化交易割韭菜:Python + JoinQuant
2.1 编程语言学习 Python. 有基础的请直接跳到2.2。
为什么选Python? 百度上答案很多,我的答案有三点:1 因为简单,非常容易上手,人生苦短,我用Python。2. 因为最适合数据分析和人工智能的学习。3.我学会后,以后可以教孩子学编程。
学Python 2 还是学Python 3? 学Python 3,我们只学最新的。
我的学习路径如下: 首先是采用免费的廖雪峰的官方网站上的《Python教程 》,具体网址问度娘。 通过大约3周的时间,我看完了这个教程。通过这个课程涉及的内容很全,可以对Python有个总体的了解。没有学懂也没有关系,只要掌握了初步的知识就够了,看不懂的先跳过。里面关于网络编程,数据库,进程线程等的知识,在量化交易中用处不大可以跳过, 实战篇也可以跳过。 接来下,我采用的是实验楼网站上的免费的《Python3 简明教程》, 里面有19个实验,一步一步做下来,对Python编程就基本掌握了。实验楼网上的实验设计得非常好,大力推荐这个网站。认真完成上述两个课程,就已具备量化交易的语言基础了。我完成上面两个课程后,又买了《笨办法学Python》之类的书,差不多两晚上就看完了,而且是Python 2写的代码,不建议学习。
2.2 聚宽JoinQuant
国内量化交易的网站如雨后春笋般,一下子冒出来了很多。比较知名的有聚宽JoinQuant, 米筐,优矿,京东量化,掘金,果仁等。哪家网站最好?我没有全都试过,没有调查就没有发言权,所以答不上来。我只用过聚宽JoinQuant,网址https://www.joinquant.com,个人感觉不错,也推荐大家使用。
注册帐号之类的简单事情不用介绍了。接下来谈谈进入聚宽后如何升级打怪,这里是干货,敲黑板!!!
2.2.1 首先,我建议 学习量化课堂-》Python编程模块里的内容。这里的课程非常棒!!个人觉得比廖雪峰和实验楼的课程更好,更清晰明了,有编程基础的,直接从这里起步就可以了。按顺序学习即可。第一步,先学标有【入门】的七个课程,这是对量化交易需要用到的Python核心知识的精要讲解。第二步,再学习标有【进阶】的两个课程。然后就是重中之重的标有【科学计算】的三个课程,学习Numpy 和 Pandas. 这两个库是学习量化交易的核心库,特别是Pandas,必须学会学好。第三步,跳到标有【 数据可视化】学习Matplotlib库。至此,量化交基的语言基础己初步具备,你己经掌握了航海技术,可以开始去量化交易的海洋中遨游了。 Python编程模块里的其它内容,如Statsmodels, Scipy, KNN之类的,可以有空了再学习。
2.2.2 其次,我们要学习API文档,位于帮助-》API文档。必须通读一遍。一边学习,一边实践。 这是JoinQuant这条船的使用说明书。 不要求记住,模模糊糊有个印象即可。需要用到的时候,能找到就可以了。通过这步的学习,你心里的喜悦将无以言表,有一种豁然开朗的感觉。 你会体验到通过艰苦学习而有巨大收获后的Hard Fun。大量的数据,不管是股票,基金,行业,各种财务指标,国内重要宏观经济数据等,对你来说唾手可得,而且还是免费的。JoinQuant为你准备好的大量数据库,就像一座金矿等你来挖掘。你还可以用准备好的API函数,轻松调用国泰安数据,Tushare等外部数据。
2.2.3 接下来,就是模仿写策略和研究。你可以泡在社区里,阅读别人的好贴子。看到好的文章,可以直接克隆别人的策略或研究,研究别人的代码,学习前辈们的思路,用历史数据进行回测等等。你也可以泡在JoinQant的QQ群里,和大神们进行交流。当然,你还可以继续学习量化课堂里的其它内容,如新手专区,策略与应用,数学课堂,金融,经济与市场等。
2.2.4 最后,形成和优化自己的策略,并用于实际投资。 通过前面的步骤,你应该可以通过学习和结合自己的经验,形成自己风格的策略,并不断优化与迭代。你的策略可以帮你盯住股票市场,每分钟都按你要求进行运算,帮你选股,择时,分配资金,止损等等。你可以通过邮件或短信获得各种操作提醒。
到这一步,你的量化交易基本上己入门了。由于国家政策的限制,JoinQuant不能直接操作实盘,只能通过JoinQuant的提示,手动买出或卖出。 95%的人会止步于此。如果你是属于那些想进一步实现全自动交易的5%的人,对自己的策略充满信心,想自己旅游、度假,让电脑100%帮你操作的人, 请继续向前。
3. 最低成本打通实盘自动量化交易, Python + JoinQuant+ 阿里云 + 实盘易+交易软件
世界上你想要找的人,找的物,都已经存在于这个世上。通过试验和学习,我找到了一个最佳的打通实盘的方式 :JoinQuant+ 阿里云 + 实盘易+交易软件。支持的券商见http://www.tdx.com.cn/qs.html。
原理如下:
1) 实盘易通过调用 WINDOWS API 对通达信进行操作。
2) 实盘易提供基于 HTTP 协议的 RESTFul Service/API。
3)SDK 对 API 进行了封装(由 shipane_sdk/client.py 中的 Client 类实现)。
4)聚宽量化交易平台的模拟交易通过调用 SDK 实现自动下单。
首先,来完成准备工作. 方法见http://www.iguuu.com/e#installation。通前前面的学习,我们应该可以轻松阅读实盘易的帮助文件。请认真只字不差地阅读一遍。这个文档是理工男写的,默认为用户都是有基础的,所以写得很简洁。 首先,你得租一个云服务器,有固定IP的。建议使用阿里云。其它的云服务器也可以,请自行测试。其次,部署实盘易。将实盘易和交易客户端安装在云服务器上,并进行设置。第三,完成本地测试通过,和远程测试。
其次,使用推送方式,实现自动交易。方法见:https://github.com/sinall/ShiPanE-Python-SDK#id4 。步聚如下:
1) 下载 scripts/shipane_sdk_installer.ipynb 并上传至“投资研究”根目录。
2) 打开该文件,设置参数:QUANT_NAME = 'joinquant'
3) 查看其它参数并根据需要进行修改。
4) 点击工具栏中的右箭头运行该文件,并检查窗口中打印的日志。
5) 修改 shipane_sdk_config.yaml,升级后需参考 shipane_sdk_config_template.yaml 进行修改。
6) 修改策略代码,可参考如下示例:
- examples/joinquant/simple_strategy.py - 基本跟单用法(侵入式设计,不推荐)
- examples/joinquant/advanced_strategy.py - 高级同步、跟单用法(非侵入式设计,推荐)
- examples/joinquant/new_stocks_purchase.py - 新股申购
- examples/joinquant/convertible_bonds_purchase.py - 转债申购
- examples/joinquant/repo.py - 逆回购
再次,如果有问题,可以在实盘易官方QQ群寻求有偿服务。李笑来有句话叫做,付费就是捡便宜,这句话就是真理。另外说一下,个人感觉实盘易官方QQ群里的大神特别多,明显比JoinQuant官方QQ群里的人素质高很多,泡在里面你会有意想不到的收获。
4. 后记
股市有风险,入市需谨慎!到这里,量化自动交易的技术问题基本解决。仍下的就是策略好坏的问题了。如果你的策略够好,你可以实现旅游度假,让云服务器帮你打工,帮你自动量化交易割别人的。我个人下一步需要学习的主要是以下几个方面,供和我一样的小白参考:1. 系统学习滋维-博迪的《投资学》,2. 学习丁鹏的《量化投资策略与技术》,3.得到APP听《香帅的北大金融学》. 4. 提升财报阅读能力,读肖星《一本书读懂财报》5. 关注美股投资,6.关注区块链