APP下载

基于Django框架的量化交易系统设计

2021-11-19蔡自伟

关键词:交易系统动量预处理

蔡自伟

(运城学院数学与信息技术学院,山西运城 044000)

量化交易[1]通常是指交易者使用的一种交易手段,通过分析对应的行情以及政策,并形成稳定的交易系统。量化交易过程中最重要的是行之有效的交易策略[2]。量化交易需要利用计算机技术按照这些策略进行自动化交易。目前,在股票投资比较成熟的市场里面,量化交易已经存在数十年,并取得了非常好的成绩。随着股票交易市场规模日益扩大,量化交易系统的应用更加广泛。我国的投资环境有自身的发展规律和特点,随着量化投资理论和实践的发展,量化交易这种投资理念在国内也逐渐兴起。尽管国内的量化交易起步较晚,但是发展迅猛。由于A股市场交易的特殊性,发展和A股市场实际情况相适应的量化交易系统显得尤为重要。当然,对于股票交易者而言,功能强大、收益客观、性能稳定的的量化交易系统才是市场需要的。

量化交易作为一种新颖高效的股票交易手段,在技术上主要通过数学方法对交易数据进行建模,进而通过计算机实现自动化交易。随着大数据技术快速发展,量化交易系统能够做到更加智能化,从而支撑股票交易人员做出更高收益的投资决策。

实现的交易系统在技术上采用灵活性较强的Django 框架,不仅能实现美观大方的界面,更重要的是便于系统按需调整。该量化交易系统实现了股票交流区、策略编辑回测及股票指标可视化[3]等功能。

1 系统框架设计

1.1 系统框图

通过需求分析,基于MTV[4]架构思想设计了该系统,系统包含如图1所示的功能。

图1 系统框图

第一部分是登录注册模块,实现了注册、登录功能,用于系统用户管理。

第二部分是行情信息模块,主要用于展示股票的历史行情和实时行情。历史行情除了能够查看指定股票在指定时间的最低价格、最高价、量比、换手率等数据外,还能查看各种趋势图。实时行情只能展示某只股票当天的基本信息。

第三部分是个股信息模块,它主要负责展示个股信息,包括股票交易数据和股票相关的新闻。

第四部分是股票池模块,允许用户把一类股票放在一起形成一个股票池。

第五部分是策略模块,主要实现了生成交易策略,对策略进行回测和显示策略回测结果等功能。

第六部分是股票讨论区模块,主要用于承载用户针对股票的讨论和分析。

1.2 系统体系结构设计

系统基于MTV 思想,设计为三层,分别是视图层、控制层和数据层。量化交易系统包图如图2 所示。

图2 量化交易系统包图

简要说明一下量化交易系统各个功能层级的作用。视图层主要完成用web交互面的相关功能,包含登录注册等。控制层主要用于响应视图层的输入,包含对量化交易系统相关操作的响应。数据层主要完成数据的处理和计算。量化交易系统视图层主要提供了直接面向交易者的UI界面,web界面的框图如图3所示。

图3 web界面

2 大数据处理及可视化

量化交易系统的一个重要特点就是充分结合了大数据分析技术。系统涉及的数据主要包含以下几个方面,分别是股票交易数据、相关股票的新闻和系统自身产生的数据。股票交易数据的获取途径较多,目前很多财经网站都开放了股票数据获取接口。同样,新闻数据也可以从网络上收集而来。根据大数据处理流程要求,数据处理的主要分成三步。第一步是数据采集与预处理;第二步是数据变换。第三步是数据处理。

2.1 数据采集与预处理

金融行业多年来积累了非常丰富的数据,数据量来源多,数据获取比较容易。所使用的数据主要来源于网易财经网站。主要采集了其中的股票数据,这些数据包含用于股票量化交易分析的全部数据。

开源社区提供了Tushare 开源库,Tushare 实现了各种获取数据的接口。采用的接口依赖requests[5]技术,简述如下:

requests技术主要使用了Request容器对象和Re⁃sponse 对象。Request 对象通过构造url 向HTTP 服务器请求资源,Request 请求返回的是包含了HTTP 资源的Response 对象,由此系统可获取从HTTP 服务器返回的所有相关数据。系统自动爬取数据的过程可以总结为:通过request 方法获取html 数据后,根据指定条件筛选出对应的数据,然后把数据存储到数据库中,流程表示如图4。

图4 自动数据爬取流程

数据采集完成以后,系统获取了大量用于计算的原始数据。但是这些数据并不能直接使用,需要先进行预处理。预处理主要包含唯一值分析、无效值分析和异常值分析。由于从网上爬取的数据存在一些不完整和异常的情况,比如空值、空字符串等。因此,在对数据进行分析处理前,需要对这些异常值进行修补。为了简化系统设计,预处理仍然使用了开源库。擅长完成数据预处理的开源库是Pandas[6],预处理流程如图5所示。

图5 数据预处理流程

在大数据开源包Pandas 中,有针对各种数据的处理接口。由于从网易财经中获取的是csv 格式文件,适合的读取函数为read_csv[7]。数据获取后第一步是进行空值判断,对空值进行填充;第二步是进行异常值和重复值判断和处理;第三步是进行一致性处理后导出数据存放在mysql数据库中。

2.2 数据变换和处理

数据变换和处理的流程如图6所示。

图6 数据可视化流程图

用户通过网页上的选项和按钮发布数据处理的命令,系统从mysql 数据库中获取预处理完成后的数据。一方面对这些数据进行大数据分析,另外一方面把这些数据和分析结果用可视化的手段呈现在web界面上。主要包含股票的K线图,MACD曲线,成交量变化曲线,KDJ 变化曲线,RSI 变化曲线等一系列个股相关的指标数据。

2.3 动量交易策略

量化交易策略是量化交易系统的重点,目前成熟的量化交易策略很多,比如海龟策略,均线回归策略,动量交易策略[9]等。动量交易策略是一种经典的并与A股交易特点相适应的一种交易策略,所以系统选择了动量交易策略。通过对动量交易策略进行分析,在保证基本思路不改变的情况下对其进行了适当的调整。在策略运行之前要预先设定一些参数,包括换仓频率,运行周期,用户感兴趣的股票池等。股票池选取的原因是为了避免对整个股票市场的个股进行计算,减少计算复杂度,增强系统的实时性,但这依赖用户的经验。这是一种折中的方案,其操作的具体步骤安排如下。

首先,计算单支股票连续J个交易日的累计收益率,计算公式表示如下:

Rit代表其中的第i支个股第t日的收益率,RiJ代表J日累计收益率,其次,对RiJ排序,选择排名靠前的股票形成一个候选集合,最后,从候选集合中买入股票,按照预先设定的持仓时间进行持仓。

动量交易策略只考虑了收益率,而忽略了该收益率所承担的风险,系统改进了常规的动量交易策略,通过引入夏普比率这一风险评价指标来评估策略风险。其中,夏普比率[10]的计算过程可以用如下方法表示:

式中E(RP)表示投资组合的收益率,Rf表示无风险收益率,αp表示投资组合的风险。夏普比率越大,说明该股票风险投资回报越高。用户可以通过评估自己的风险承受能力来选择策略。

系统除了支持策略选择外,还支持策略编辑,整个量化交易系统的策略模块实现框图如图7所示。

图7 量化交易策略模块

3 系统测试

经测试,系统的登录界面如图8 所示,界面设计简洁大方,方便易用。

图8 系统主界面

动量交易策略回测结果如图9 所示。从图中可以看到,持仓时间设定为2018 年5 月10 到2019 年5月10,调仓频率设置为10,当前股票池选择了四只股票,分别是000002(万科A)、002001(新和成)、002002(宏达兴业)和300001(特锐德)。点击web 页面按钮开始回测,从web 页面观察返回的结果。结果显示:该策略的胜率为95.65%,夏普比率为1.56%,结果较为理想。

图9 回测结果

4 结论

量化交易系统利用Django web 框架和大数据处理技术,实现了股票行情展示、大数据分析和策略回测等功能。系统的特点在于指标的可视化增强,便于用户使用。系统仍有许多不足之处,例如交易策略设计的便捷性有待进一步优化,股票数据源更新不稳定,需要进一步改进。

猜你喜欢

交易系统动量预处理
山东首套ETC匝道准自由流预交易系统正式运行
ETC拓展应用场景下的多源异构交易系统
KR预处理工艺参数对脱硫剂分散行为的影响
预处理对医用外科口罩用熔喷布颗粒过滤性能的影响
手术器械预处理在手术室的应用
污泥预处理及其在硅酸盐制品中的运用
应用动量守恒定律解题之秘诀
原子物理与动量、能量的结合
聚焦动量观点在电磁感应中的应用
下一代高性能交易所数据储存和备份的探讨