基于Python的量化交易系统设计与实现

2021-11-03 12:51梁国鹏刘力军
现代信息科技 2021年8期
关键词:策略

梁国鹏 刘力军

DOI:10.19850/j.cnki.2096-4706.2021.08.025

摘  要:随着计算机科学技术的发展,全球主要资本市场凭借信息化的高效优势,得到飞速发展,电子化交易广泛普及,计算机科学技术逐渐与各个学科技术相互融合,人们开始专注于使用计算机程序进行股票的预测分析,甚至是实现自动化交易。通过对量化交易系统展开研究,对现有交易策略进行分析并根据其存在的不足进行改进,以此实现量化交易系统的有效运行,进行回测来指导投资者并为其带来超额收益。

关键词:Python;量化交易;策略

中图分类号:TP311.52       文献标识码:A 文章编号:2096-4706(2021)08-0086-05

Design and Implementation of Quantitative Trading System Based on Python

LIANG Guopeng,LIU Lijun

(Nanjing Audit University Jinshen College,Nanjing  210023,China)

Abstract:With the development of computer science and technology,the worlds major capital markets have developed rapidly with the high-efficiency advantage of informatization. Electronic transaction is widely popularized. Computer science and technology is gradually integrated with various discipline technologies. People begin to focus on using computer programs for stock prediction and analysis,and even for realizing automatic trading. Through the research of the quantitative trading system,the existing trading strategies are analyzed and improved based on their shortcomings,so as to realize the effective operation of the quantitative trading system and carry out back test to guide investors and bring them excess returns.

Keywords:Python;quantitative trading;strategy

0  引  言

中国股票市场发展至今不到30年,却几乎走完西方发达国家股票市场两百多年的历程,这是一个辉煌的成果[1]。在过去的三十年中,西蒙斯的投资公司通过自己开发计算机程序进行股票分析,使交易几乎全部实现自动化,充分利用了计算机精准性和高执行率等特性,为它的交易带来了巨大优势,从而获得了超额的收益。量化交易自二十世纪七八十年代起迅速发展,程序化交易逐步成为市场的主流,而近些年量化交易在国内还是一种新兴的投资模式,相比于手工交易存在的诸多优势,有着更低的亏损风险和更高的盈利概率。量化投资因其结合了传统的投资理念和先进的计算机技术,天然具备很多主观交易难以企及的优势[2],其未来的发展前景十分广阔。

1  量化交易的意义

1.1  更高的交易效率

对于交易策略的验证,过去往往是采用人工方式,基于历史表现与行情数据反复计算,而量化交易仅需要通过系统几分钟的回测便可得到验证结果,效率大幅度提升。

1.2  更多的交易机会

对于盈利条件的抉择,传统人工需要关注几千只股票的价格浮动,费时费力,而量化交易则可通过计算机实时捕获交易机会,从而更大程度的提升盈利能力。

1.3  更直观的交易结果

对于交易结果的权衡,传统人工无法短时间对大量过往业绩进行准确分析,而量化交易则可通过计算机基于数学和统计学等原理计算出更直观的交易结果,如收益率等。

1.4  更多的盈利机会

量化交易可以利用计算机技术对市场中的交易数据进行分析,捕获到人为难以发现的盈利机会。假设发现了一种交易策略,它的盈亏概率差不多,但只要盈利的概率大于亏损的概率,比如说,盈利的概率为51%,相应的亏损的概率为49%,虽然相差不大,但如果长时间遵循此策略进行交易,注定能够获得一份手工交易难以达到的超额收益。

2  研究现状

2.1  国内

现如今国内的量化交易技术还不成熟,从交易所到经纪商,交易系统大都没有完全支持程序化交易,高频数据库也不完善,这些因素都导致量化交易很难被大规模执行,即便执行,效果也不好[3]

2.2  国外

量化投资的技术从各方面都要远超于陈旧的投资方式,最主要的是技术方面的不同,现在国外的交易水平极高,已经达到了可以在秒内进行投資交易的程度[4]。在美国,量化交易模式已经存在了四十年,其技术储备量十分充足,所运用的策略模型和研究水平均高于国内,由于国外的政策、技术水平等因素的影响,其量化交易水平也较高,与此同时还不断有计算机科学、数学等学科的专家从事于量化交易技术的研究中,量化交易技术的发展也在不停地加速。

3  量化交易的交叉学科知识

3.1  金融知识

量化交易需要掌握一定的金融知识才能够更好地掌控整个交易过程,了解所投资市场的交易规则以及一些有效技巧方法,比如不同股票在交易时间和涨跌停限制等方面存在的诸多不同,掌握了这些投资市场的基本操作能够帮助我们对市场有一个更全面的认识,更好地进行量化投资实现自动化交易。

3.2  技术指标

技术指标是通过考虑市场行为的各个方面,建立一个数学模型,给出数学上的计算公式,得到一个体现股票市场的某个方面内在实质的数字[5],通过这些数字我们可以了解到市场当前的状态,让我们能够更好地做出交易决策。技术指标可以帮助人们轻松掌控加仓或减仓的时间点,形成固定的交易模式,避免情绪化交易产生不必要的亏损。

3.3  策略模型

策略模型是整个量化交易系统的较为核心的部分,量化交易系统有了策略模型才能够正常进行程序化交易,并保有良好的盈利趋势,一个策略模型的优劣往往决定了整个系统的盈利能力,在设计策略模型时要考虑到交易信号和止盈止损等诸多因素。

4  系统设计

4.1  系统流程图

整个系统结构较为简单,系统启动后,用户可以根据自己的需要设置相应的参数,如股票代码、初始资金和选择策略等,参数设置完成后点击回测按钮,系统首先检测参数的合法性,若存在问题,则提示用户重新输入相应的参数,若没问题则系统开始工作,首先获取相应股票的行情信息,然后根据用户所设置的一系列参数进行计算,得到结果并绘制图形,展示在系统界面,系统流程图如图1所示。

4.2  系统界面

整个系统界面使用Python的Tkinter模块实现,Tkinter是开发桌面必备的应用程序接口,是当今比较流行的Python中自带的模块,因此不需安装,直接引入即可使用,系统界面如图2所示。

4.3  初始化

进行回测之前,需要设置回测的一些参数,主要分为如下几部分。

4.3.1  股票

选择相应的股票代码,选择框下方会显示股票的名字,如选中“000001.SZ”后,下方就会显示“平安银行”;设置股票的初始数量,即进行回测是手中持有多少数量的股票,默认值为0。

4.3.2  时间

设置回测的开始时间和结束时间,进行回测时将在该时间段内的每个交易日进行模拟交易。

4.3.3  交易

设置初始资金和每次交易的股票数量,初始资金即开始时所拥有的资金;对于股票交易数量,传统交易数量采用每次固定数量股票的交易,而本系统采用根据市场行情和当前资金数量动态决定交易的数量,使盈利更高亏损更低。

4.3.4  策略

用户可以选择不同类型的策略对某只或多只股票进行回测,如网格交易策略、海龟交易策略、布林均值回归策略等。

4.4  股票数据

股票数据来源于Tushare平台,该平台提供了大量的财经数据,如股票、期货等行情数据,只需下载平台提供的SDK,调用SDK中的API便可获取相应的数据。

4.5  交易策略

交易策略采用模块化设计,每一种交易策略被封装成一个模块,每个模块中是该交易策略的对象,对象中有相应的成员方法,如计算交易过程中的产生的税钱(过户税、印花税、券商的佣金等),进行策略模拟交易的方法,使用该策略时获取策略交易过程中资金、股票持有量的变化等,对于交易策略的具体如何实现,下面给出具体介绍。

4.5.1  网格交易策略

网格交易策略是一种利用市场价格的波动,进行高频交易从而获利的策略。在股票价格不断波动的过程中,对股票价格走势图绘制网格线,网格间距离根据市场行情来确定,在股票价格自上向下触碰到网格线时进行加仓操作,在股票价格自下向上触碰到网格线时进行减仓操作,简单理解为当股票价格下跌一定值时买入一部分,上涨一定值时卖出一部分,从而尽可能获得更大利润,网格交易策略图如图3所示。

4.5.2  布林均线回归策略

4.5.3  策略优化

传统的网格交易策略和布林均线回归策略每次交易都进行固定数量的股票交易,对于行情波动较大或较频繁的市场极为不利,有时但不会盈利,而且可能会造成一定的亏损。

4.5.4  策略测试

为了验证改进后策略的可行性,将以布林均线回归策略为例,对行情波动较为频繁的山东钢铁股票近一年内进行回测,对比传统策略和改进后的策略收益率的差异。

下面将展示策略改进前后相关数据的对比:

(1)传统布林均线回归策略,相关参数如图5所示。

行情走势如图6所示。

回测结果如图7所示。

(2)改进后的布林均线回归策略,相关参数与图5相同,行情走势与图6相同,回测结果如图8所示。

观察策略改进前后回测结果图,我们可以清楚地看到传统的布林均线回归策略近一年收益率约为5%,而改进后的布林均线回归策略收益率达到了20%,收益率明显高于传统的布林均线回归策略,这也充分证实了改进后的策略可以使用并且能够起到明显的提高收益的作用。

4.6  数据分析

交易完成后可以获取资金和股票每天的持有量等数据。

4.6.1  各类指标

通过股票的行情数据,可以计算出股票的相应指标值,比如MACD、布林线等。

4.6.2  收益

通过初始资金和股票数量、每日持有股票的数量、回测当日的价格,可以计算出当日的收益,进而获取到回测时间段内的所有收益情况。

4.7  数据可视化

数据可视化采用Matplotlib模块实现,将数组或Numpy类型的数据传给Matplotlib模块的相应绘图函数,就可以绘制出自己想要的图形,通过数据的可视化,我们能够更直观地看到在回测时间段内,股票行情、仓位和收益率等数据的变化。

4.8  对当日行情的分析

用户在进行回测时,系统将自动判断当前时间是否是交易时间,如果是则获取回测股票当前的行情信息,并将信息追加到历史行情中,再通过相应的策略进行回测,计算出相应指标,进而分析出当前应如何交易。

5  结  论

本文基于python实现了量化交易的可视化系统,可以方便地进行股票的选择,及对股票交易時间进行针对策略的回测,可视化的显示资金收益及给出分析结果,帮助投资者作出投资决策。相信随着我国金融市场的不断完善,不久的将来,量化交易系统会成为我国金融交易的中流砥柱。

参考文献:

[1] 于彤彤.基于人工智能和可视化技术的股票量化交易策略分析 [J].智库时代,2020(9):49-50.

[2] 景泰然.量化投资在期货交易中的应用 [J].现代商业,2015(18):152-153.

[3] 刘逖,卢涛.算法交易及在中国资本市场的应用前景 [J].上海金融,2012(1):24-27+116.

[4] 郭笑宇.量化投资交易策略研究 [J].财经界,2019(3):16-17.

[5] 王高鹏.证券投资技术分析方法应用研究 [J].现代商业,2013(27):48-49.

作者简介:梁国鹏(1999—),男,满族,河北承德人,本科在读,研究方向:网络工程;刘力军(1979—),男,汉族,江苏南京人,教师,助教,硕士,研究方向:网络技术。

收稿日期:2021-04-17

猜你喜欢
策略
我的手机在哪?
高考数列复习策略之二
Passage Four