利用Python编写量化交易项目理性投资股票(一)
学习目标
量化交易以计算机强大运算能力为基础,运用数据建模、统计学分析、程序设计等工具从历史数据中得到大概率下获利的交易策略。未来量化交易必定是金融市场的一大发展趋势,Python+作为金融行业的标准编程语言广泛应用在量化交易领域,它与量化交易堪称完美组合。初学者进阶量化交易应当是个循序渐进的过程,基于此,笔者将量化交易学习分为基础阶段、中级阶段和高级阶段:&oq=量化交易以计算机强大运算能力为基础,运用数据建模、统计学分析、程序设计等工具从历史数据中得到大概率下获利的交易策略。未来量化交易必定是金融市场的一大发展趋势,Python+作为金融行业的标准编程语言广泛应用在量化交易领域,它与量化交易堪称完美组合。初学者进阶量化交易应当是个循序渐进的过程,基于此,笔者将量化交易学习分为基础阶段、中级阶段和高级阶段。
- 基础阶段侧重于对量化交易的理解及各种基础工具的应用
- 中级阶段侧重于掌握各种经典的技术指标及基础交易策略的实现
- 高级阶段侧重于从实战层面去设计量化交易系统,开发选股、择时、风险控制等策略模块
本此项目旨在将基础和中级阶段内容整体结合,以股票为交易标的物,以搭建自己的量化交易为学习场景,从理解量化交易开始,逐步掌握基础工具、实现交易策略,为高级阶段开发实战型量化交易系统奠定基础。课程在功能实现过程中讲解技术内容,由浅入深、由技术到思维地为读者剖析量化交易的难点,不仅达到学习的目标,更为今后从事量化交易投资打下坚实的基础。
内容
1、深入理解量化交易的本质、发展、优势、意义和过程。
2、掌握基础工具的使用方法,如 Python、Pandas、NumPy、Matplotlib、TA-Lib、Tushare、Statsmodels 和应用数学等。
3、掌握常用的金融交易技术指标实现方法,如 K 线、均线、成交量、KDJ 等。通过学习,我们能够绘制出股票行情软件中的分析界面以捕捉个股动向,效果展示如下图所示:
4、掌握常用的量化交易策略的实现方法,如择时、选股、风险控制、度量等。通过学习,我们可以制定量化交易策略以及度量策略效果,应用交易策略来辅助股票交易,效果展示如下图所示:
5、掌握量化交易系统人机交互的实现方法,以制作自己的量化交易工具为背景将本专栏知识点贯穿汇总,呈现整体的交易工具雏形,效果展示如下图所示:
学习目的
学习量化交易这门课程有什么作用呢?首先 Python 只是一门技术,最终还是要将这门技术应用到一个行业中的,而量化交易这个行业目前正处于快速发展阶段,对人才的需求非常大,特别是对具备一定量化交易背景的人才,本专栏整体的学习可以让大家对量化交易这个领域有一个深入的了解,对于准备跨入量化交易领域的同学有所帮助。另外本次会涉及大数据分析、数学建模一些思想,以及一些 Python 第三方库的讲解和编程教学,这些技术是可以在相关的领域去应用的,对于准备从事大数据分析和人工智能领域的同学同样有所启迪。对于和我一样喜欢股票投资、期货投资这类交易的金融爱好者来说,将量化交易辅助主观交易,通过设计一些股票或者期货的交易策略,能够在金融市场上有所收获,为自己拓宽投资理财的渠道和方法。
学习大纲
本专栏大纲以量化交易的整体流程结合由浅入深的学习过程进行设计和制定。
量化交易的整体流程如下图所示:
首先是把历史行情、基本面信息、新闻资讯等数据进行初步清洗和处理,而后输入到量化模型中,量化模型包括了数学建模、编程设计等工具所形成的交易策略,通过分析这些数据最终产生出交易的信号,比如买什么股、什么时候买、买多少、什么时候卖等信息。当然实际上这个过程并没有流程图显示的那么简单,这里只是让大家有个整体的概念。
分解量化模型可以看到模型是通过各种策略来实现的,常见的策略有均线策略、Alpha策略、布林带策略、海龟策略、动量策略等等,也包括自主开发的策略,不过要良心的声明下凡是公开的、用的人多的策略,基本也就不赚钱了,当然并不影响我们学习这些策略从中借鉴其中的精髓,站在巨人的肩膀上看问题。策略层再往下分解则是我们熟悉的 Python、Pandas、Matplotlib、NumPy、统计学、数学模型这些基础工具。我们会讲解Pandas、NumPy、TA-Lib 等专用库实现股票交易策略的设计,也会讲解使用 Matplotlib 库实现股票交易的可视化图形,同时在交易策略设计中会讲解数学模型、统计学相关的知识。
数据是量化策略的基础,关于数据的获取,我们会讲解使用 Tushare、Pandas 数据抓取模块来获取金融数据,也会使用 Pandas、NumPy 库对原始数据进行规整化的处理。
关于 TA-Lib、Tushare 之类的工具库本身的优势即是提供简单的 API 供使用者调用,我们的讲解也是围绕着实际应用场景,在交易策略设计中进行详细介绍。
课程环境
Anconda+JupyterNoteBook+py3.7.1
深入剖析量化交易
近来“量化交易”这个词听得越来越频繁,多数人对量化交易的第一印象是“高大上的技术”、“可以躺着赚钱的工具”……可是,你是否真正思考过量化交易到底是什么,能帮助我们做些什么?在开启量化交易系统的开发前,有必要先理解“量化交易”的理念,清楚“量化交易”能带给我们的是否是自己想要的。本节就从本质、发展、优势、过程等多个维度来剖析量化交易。
- 什么是量化交易?
什么是量化交易?确切地说,量化交易属于人工智能的一个应用分支,它利用计算机的强大运算能力,用数学模型来模仿人的思维作出决策,通过数据建模、统计学分析、程序设计等工具,从股票、债券、期货的历史数据分析中得到大概率下获利的交易策略。这么说有些官方,读起来也有些绕口,其实简单地说就是如何管理输赢的概率,帮助我们作出准确的决策,就像玩德州扑克那样,当你持有的牌胜算大时便跟进,否则盖牌,没胜算时选择不玩。玩牌时胜算的概率在我们的大脑中时刻不停地计算着,而在量化交易中利用的是计算机、数学建模、程序设计这些更高级的手段,目的是高效快速地获得胜算的概率,并据此作出决策。 - 量化交易的发展
关于量化交易的发展,我们首先了解下国外的量化金融发展情况。其实在金融领域我们的目标一直是金融霸主美国,我们知道量化金融在美国的金融领域发展已经日趋成熟。这里我们不得不提到著名的交易大师理查德·丹尼斯和“量化交易之父”詹姆斯·西蒙斯这两位大佬。
理查德·丹尼斯是著名的“海龟交易试验”的发起者,也是《海龟交易法则》的创始人。为了弄清伟大的交易员是天生造就的还是后天培养的,他在1983 年招募了 13 个人,教授给他们期货交易的基本概念,以及他自己的交易方法和原则,学员们被称为“海龟”。在随后的 4 年中,海龟们取得了年均复利 80% 的收益,这就是著名的“海龟交易试验”。同学们可能会有疑问,为什么取这个名字?据说,丹尼斯有一次在新加坡时正聚精会神地观察着一个海龟农场,突然冲口说出了“我们要培养交易者,就像新加坡人养海龟一样”这句话,“海龟交易试验”正是取名于此。毋庸置疑,“海龟交易试验”是金融史上的著名实验,在实验中运用的《海龟交易法则》提供了一套完整的交易系统框架和精髓,非常适合应用于量化分析,以至于在最近几年的量化投资热浪中再一次成为热门模式。
詹姆斯·西蒙斯是量化交易的先行者,也是将量化交易带到这个时代的人。西蒙斯在 1988 年成立了文艺复兴科技公司,作为有史以来最成功的对冲基金,文艺复兴科技公司的旗舰基金——大奖章基金取得年平均 35% 左右的回报,收益远超巴菲特、索罗斯这些行业地位和他相近,但是正在使用传统交易的同行大佬们。这个数字有多牛,我们可以对比下,它比索罗斯同期的年均回报率要高出 10 个百分点,比同期标准普尔 500 指数的年均回报率要高出 20 多个百分点,巴菲特的同期水平已经高达 20%。
自 1988 年至今,量化交易在美国已经有 30 年的历史了,到目前来看程序化交易已经占到美国股票市场交易量的 85% 以上,可想而知量化交易在美国股票市场的发展到什么程度了。
我们都知道美国的金融市场成熟程度是远超中国的,美国的股市有近一百多年的历史,而中国股市成立至今还不到 30 年。回到国内来看,随着国家层面推动人工智能、大数据技术的发展,大量的量化基金产品和平台如雨后春笋一般兴起,量化交易在国内也掀起热潮。就像互联网技术改变着传统行业的模式一样,未来量化交易必定是国内金融市场的一个大的发展趋势。 - 量化交易有哪些优势
与传统的交易相比量化交易有哪些优势呢?传统的交易无论是技术面分析还是基本面分析都属于定性分析,定性分析通俗的说就是人的思维去做决策,这种高度抽象的模式在深度上会有绝对的优势。而量化交易是一种定量的分析,所谓定量分析就是刚才讲到的获得一个具体的获利概率,并依据概率选择交易的策略,因为利用了计算机的强大运算能力,所以在广度上占有绝对的优势。
我们可以把量化交易和传统的交易类比为西医和中医,传统的投资交易靠的是主观经验判断,无法给出具体的参数指标,量化交易像西医那样,靠的是仪器、设备、软件,把现象转换成参考数据为病人治疗提供依据。笔者的观点是把量化交易和传统的交易相结合,把人的思维模型抽象成为数学模型,作为交易策略运用到量化交易中,这样是最理想的情况,既不失分析深度,也能保证分析的广度,不能说是鱼和熊掌兼得,算是两者特点的互补吧。
量化交易另一个优势是可以给予我们足够的自信,帮助我们克服来自人性中的贪婪、恐惧、自负等弱点。举几个典型的交易者身上发生的例子来说明下。
比如一个交易者对市场分析后,决定第二天买入一支股票,但在开盘后却因为一个朋友告诉他小道消息而临时改变了决策,没有买入。
又比如一个交易者用一种策略执行了 5 次交易都以亏损告终,那么他在第 6 次交易信号到来时很可能会放弃这个策略。但量化交易可以确保交易策略的严格执行,因为交易者可以确信量化交易策略经过了回测和度量分析,是具有概率上的优势的,从而心态上并不会出现恐惧和犹豫的情况。
再比如说,很多人喜欢时刻盯盘,幻想在 K 线的最低点买入、最高点卖出,其实盘中的波动是随机的。通过量化交易系统可以事先编写策略,交易者实际上并不需要过多关注盘中的价格波动,以免影响心态变化。 - 量化交易的本质
量化交易的本质可以用西蒙斯的这段话概括:
“不管多么复杂的模型,没有一个能长期不变地一直赚钱,因为市场在变化,信息在变化,我们不是机器的奴隶,只有通过不断学习,持续不断地更新自己的模型和策略,寻找市场上的规律,让我们的交易系统跟上变化本身,才能在交易市场中立于不败之地。”
既然市场在变化,信息在变化,那么过去并不代表未来,用历史数据作检验是否有意义?另外,为什么交易策略在实际交易中的表现远不如历史模拟的结果?
对于第一个问题的回答可以举个高考相关的例子。高考前学校都会定期组织模拟考来评估学生的能力,虽然最终的高考题跟模拟考不一样,但学生在模拟考中发挥的水平基本和在高考中发挥的水平相差不会太大。因此用历史数据作检验是把过去的经验作为一种参考指南,通过对过去的解读发掘出蕴藏盈利机会的重复性模式。
对于第二个问题,历史测试结果和实际结果的差异主要是由这几个因素引起的:
- 交易者效应:其他交易者注意到了这个策略方法并开始模仿它,导致这种方法效果下降
- 随机效应:历史测试的结果可能是一种随机性的现象
- 最优化矛盾:选择特定的参数降低了事后测试的价值
- 过度拟合:与历史数据的吻合度太高,市场行为轻微的变化造成效果的恶化
总体来说,随时调整,合理应变非常重要,但是除此之外我们还需要谨记以下四点,以在交易市场中立于不败之地。
- 掌握优势:找到一个期望值为正的交易策略,从长期看,它能创造正的回报
- 管理风险:控制风险、守住阵地,否则你可能等不到创造成果的那一天
- 坚定不移:唯有坚定不移地执行你的策略,你才能真正获得系统的成效
- 简单明了:从长久看,简单的系统比复杂的系统更有生命力
量化交易的主要流程:
首先是把历史行情、基本面信息、新闻资讯等数据进行初步清洗和处理,而后输入到量化模型中,量化模型包括了上文讲到的通过数学建模、程序设计等工具所形成的交易策略,通过分析这些数据最终产生出交易的信号,比如买什么股、什么时候买、买多少、什么时候卖这些信息。当然实际上这个过程并没有流程图显示的那么简单,这里只是让大家有个整体的概念。关于量化模型更具体的实现过程,我们会在后续的章节中详细介绍。
本次小结
在正式开始学习量化交易的内容之前,我们不惜篇幅地从量化交易本质、发展、优势、过程等各个维度剖析了量化交易这个概念,目的是想让同学们能够正确理解量化交易。我们不能过于神话它,也不能因为不了解而排斥它,就像工业革命以机器取代人力那样,量化交易本质上是一种帮助我们高效快速地管理交易胜算的工具,是人工智能的一个应用分支。它并没有那么高深莫测,最关键的仍然是交易人的思想,也就是量化交易系统的策略模型,对于能够保持长期赚钱的主观交易大神,量化交易可以帮助他赚更多的钱,而一个主观交易不能赚钱的人,使用量化交易也并不能有所起色。因此我们在掌握工具的同时,也别忘记修炼自己的交易思想。