基于Python工具的股票量化投资策略研究

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2019年第07期20世纪80年代,一些投资者开始利用计算机研究金融数据,并初显

成效。20世纪末,投资者把计算机技术进一步应用在金融数据分析上,进行模型设计,构建股票投资组合。这时,金融数据趋于规范化,在日渐复杂的数据分析过程中,产生了更多类型的因子和更多样化的投资策略。量化投资是借助量化金融分析方法进行资产管理,量化金融分析方法是结合金融数据、个人经验、数学模型和计算机技术的一种复杂金融建模的分析方法[1]。实现量化投资的方法多达数十种,Python 、Matlab 、SPSS 、Eviews 、Excel 、SAS 、R 在量化界都是非常好用的工具,尤其是在数据分析方面。除Python 外,其余几个工具的优势都体现在数据分析方面,而量化投资是一个系统性工程,数据分析只是其中的一部分,不是全部。根据GitHub 官网统计,量化交易开源项目共145个,其中使用Python 以外的技术进行开发的项目共70个,应用Python 语言进行开发的多达75个。Python 的开源性促使开发者开发了大量的库和模块,而这些库和模块又使很多外行人能够轻松入手,反过来又促进了Python 在该领域的发展。应用Python 语言爬取数据,进行数据挖掘和深度案例分析,能够使量化投资基本实现从技术分析到金融设计,实现系统性掌控。因此,采用Python 驱动量化股票投资,对优化股票投资策略和规避投资风险具有十分重要的意义。

1基于Python 的股票量化投资交易程序1.1基于Python 的股票量化投资步骤

将Python 要应用到量化投资交易中,其步骤如图1-1所示。

图1-1股票量化交易应用模块库流程图

第一阶段是数据收集。数据收集是很多券商机构在做的业务,有影响力的模块库有Tushare 和Windpy ,其中Windpy 是Wind 公司开发的一个开源接口。国内的金融终端一般是Wind 、iFind 和Choice 终端,这些终端软件就是把企业和行业的数据收集到数据库,进行深度分析,并稍加整理成表格,然后上传到服务器中,方便客户进行相关的数据分析,一般情况下客户都需要付费来获得数据。

第二阶段是数据分析。NumPy 用来存储和处理多维数组和大型矩阵,搭配SciPy 进行计算;Pandas 解决时间序列;用Matplotlib 进行2D 绘图从而实现数据可视化。Wind 终端和Choice 终端也有相关的业务在平台上销售,而该服务的购买者通常是一些尚未具备分析能力和资格的小型机构或行外人。

第三阶段是策略研究。IPython 是一个Python 的交互式shell ,能进行变量的自动补全和缩进,支持bash shell 命令,内置了一系列有用的功能和函数;Jupyter 可以对数据进行清理和转换,进行数值模拟和统计建模等,是比较方便的策略研究工具;Zipline (国内公司开发的是RQalpha 回测引擎)对真实交易系统的运转进行模拟,利用历史数据对投资策略进行回测检验;具体的策略便可以理解为Python 代码的执行。

第四阶段是实盘交易。vn.py 是基于Python 的开源交易平台开发框架;easytrader 也是开源模块库,比较适合个人投资者。通俗来说,狭义的量化投资的应用意义到第三阶段为止,关于第四步的实盘交易还是需要经过投资者参考过量化投资的模型后作出的决定。因为工具只是投资者进行决策的辅助,人才是真实交易的决定者。

需要说明的是,数据收集及案例中的模型,直接采用第三方平台供应的API 数据源;数据分析因避免代码繁冗多杂,直接采用第三方平台的库和框架进行Python 编程,其中BOLL 指标案例的策略使用到了Sig 原nal 框架。利用第三方平台的意义及其最终达到的回测效果与纯自建量化交易策略项目无异,也非常适合个人投资者入手。本文选取A 股市场进行研究,选取样本的原因是A 股市场的数据有利于简化代码量。比如,在A 股市场上进行交易,1手即为100股,而在港股市场上,不同的股票1手的股数不尽相同,有的1手是交易50股,有的1手是交易200股,这样的数据可以简化很多代码量。

1.2基于Python 的股票量化投资流程

虽然Python 实现股票量化

交易分为4个阶段,但具体操作起来,为了更贴合实际,通常可以解析为8个流程,即:获取数据、数据分析挖掘、构建信号、构建策略、回测、策略分析、模拟交易和实盘交易。如图1-2所示。一是获取数据。包括获取公司新闻数据、关联数据,产业上下游、主营业务、所属行业主题等数据,基本行情数据,高频数据,股票Level-1数据,股票Level-2数据、期货Level-1数据等。

二是数据分析。数据分析挖

掘采用传统分析方法、新兴大数

据、机器学习和数据挖掘方法[2];

三是构建信号。在构建信号前进行数据处理、标准化、去极值、中性化,基础信号的研究、分组回测、衰减、行业分布,将基础信号合成复杂信号。

四是构建策略。构建策略模板要兼容不同标的指标函数和参数的策略,适用于股票、基金、期货等金融资产,兼容日线、分钟线的策略,方便好用的策略函数,获取历史行情、历史持仓信息、调仓记录等,支持各种订单类型:止盈止损单、限价单、市价单。

五是回测测试。回测要符合历史的真实行情,并相应的进行股票分红送转、除权除息处理,股票涨跌停处理,股票停复牌处理,市场冲击,交易滑点、手续费、期货保证金交易,大单分笔成交处理等;

六是策略分析。包括策略归因、风险归因、实时监控,订单分析、成交分析、持仓分析、交易行为分析,多策略分析。

七是模拟交易。模拟交易需要接入实时行情、实时获取成交回报,篮子交易、算法交易,支持撤单处理,实时监控、实时归因分析。

八是实盘交易,实盘交易就是接入真实券商账户,紧紧跟随市场行情,实时进行下单,同时实时获取订单收益回报。2构建基于Python 的量化股票投资策略2.1BOLL 指标策略

利用BOLL 指标进行模拟回测,构造一个BOLL 指标买卖策略,根据个人投资者的账户情况,设置账户初始资金为10万元,策略背景与规则如下:

(1)如果收盘价上穿BOLL 上轨,买入;如果收盘价下穿BOLL 下轨,则开盘卖掉;(2)回测策略时间区间设定为2018年全年,股票池为“沪深300”,参考指标为“沪深300”;(3)资金账户初始资金10万,类型为股票账户;(4)每次每只股票买20000元左右,出现重复信号时不重复买入;(5)当买入信号的股票数量比资金多时,随机挑选买入,每个交易日全仓操作。(6)策略需导入第三方库Pandas ,框架为Signal 。

利用Python 语言编辑策略代码并运行回测,得到BOLL 指标买卖策略收益回测结果,如图2-1所示。

注:粗线———沪深300指数2018年基准年化收益率线细线———基于沪深300指数的BOLL 指标策略的年化收益率线

图2-1BOLL 指标策略回测

策略回测结果显示,2018年全年,沪深300指数涨幅为-25.9%,依据沪深300制定的BOLL 策略收益率仅为-6.9%,BOLL 指标买卖策略的模拟收益曲线较平缓,波动幅度明显小于沪深300的收益率波动幅度,收

基金项目:2017年广东省本科高校教学质量与教学改革工程建设项目“省级特色专业建设项目:经济学特色专业建设”的部分研究成果,项目编

号:294。作者简介:孙丽颖(1980-),女,辽宁营口人,哈尔滨工业大学会计学硕士研究生,中山大学南方学院讲师,研究方向:公司理财。收稿日期:2019年3月19日。

基于Python 工具的股票量化投资策略研究

孙丽颖

(中山大学南方学院,广东广州510970)

摘要:在大数据快速发展的背景下,将程序算法与股票投资相结合是创新股票投资方式并实现投资收益率提升的关键。文章在量化投资理念的基础上,运用Python 语言对A 股市场的一些历史指数和个股数据进行梳理分析,针对Python 量化工具对投资项目进行初始性设计,制定量化股票投资策略,并对策略进行收益回测,进而提出量化股票投资的保障措施。

关键词:Python 量化工具;投资策略;BOLL 指标;格雷厄姆成长

图1-2股票量化交易流程

图市场·贸易

49

相关文档
最新文档