基于虚拟化和回测库的量化交易方法

文档序号:10656673阅读:299来源:国知局
基于虚拟化和回测库的量化交易方法
【专利摘要】基于虚拟化和回测库的量化交易方法,对于量化交易策略,首先构建一个基本的隔离镜像,安装上必须的回测库后作为base镜像,同时定期更新回测数据。在每次提交量化策略后,从镜像启动创建一个隔离回测环境,环境准备完成后挂载数据和策略,运行回测,最终等待回测完成返回结果。本发明作为一种新的量化平台策略运行方法,引入了虚拟化技术和回测库,保证了在策略运行过程中各运行环境能够隔离独立,包括了运行资源,数据等的隔离。同时回测库的引入也更能保证回测的正确性和可参考性。主要解决了在传统量化交易中策略运行时可能出现资源互相冲突或占用,运行环境有冲突等情况,确保了策略运行时的资源独立和环境隔离。
【专利说明】
基于虚拟化和回测库的量化交易方法
技术领域
[0001] 本专利主要用于量化交易领域,尤其是在量化交易编程领域,用于在编程环境中 的隔离执行。
【背景技术】
[0002] 随着互联网大数据时代的到来,计算机和数据分析对生活中的各个方面产生了重 要的影响,包括对传统股市的影响,例如量化交易的产生。
[0003] 量化交易(Quant)是指W先进的数学模型替代人为的主观判断,利用计算机技术 从庞大的历史数据中海选能带来超额收益的多种"大概率"事件W制定策略。它极大地减少 了投资者情绪波动的影响,避免在市场极度狂热或悲观的情况下作出非理性的投资决策。
[0004] 总体来说,量化交易依托计算机和数据分析,通过量化交易,人们能极大避免在股 市和基金中的损失,提局自己的收益。
[0005] 但在传统的量化交易系统中,开发者(量化交易员)们在设计并写好策略后,提交 到量化回测系统中,系统读取策略并开始构建回测环境,运里的环境是一个模拟的交易环 境,设及到对整个系统的一些参数的修改,所W,如果是多个策略同时提交到系统中的话, 可能会导致不同策略之间的干扰。因此运个时候需要对不同策略的运行建立独立环境。运 样才能保证在每个策略文件的运行过程中不受其他策略干扰,同时,传统的量化策略完成 后缺少一个比较完善的测试验证环境,运个时候就需要有比较完善的回测环境来保证量化 策略的测试可进行。下面介绍一些传统量化交易系统中使用的技术。
[0006] 回测:回溯测试(back test),是指运用历史资料,对策略进行测试,回测设及到基 于历史数据模拟实施某项策略,运样让我们有机会估测采用该策略时的有效性如何。回测 可由真人严格审查过往时段历史数据来完成,也可通过演算法来实现,运样可降低人为失 误的风险。
[0007]定时任务:定时任务(crontab)是1 inux下的一种定时执行某任务的技术,通过 cron化b,可W设置在某固定时间执行脚本任务。本发明中主要通过运个来定期更新需要提 供给回测环境的数据。
[000引数据爬取和处理:在本发明中,回测环境需要的数据为本地提供,数据通过定时任 务固定从网上爬取并更新,获取后,在本地再进行一些计算最终数据更新到数据库持久化 存储。
[0009] 原有策略运行环境:传统的策略运行时用户提交的策略直接在服务器上运行,运 样,每个用户提交后即在服务器上新开一个运行进程而不是一个隔离的环境,不同用户的 策略运行进程是可见的,运即导致了不同用户之间会存在环境泄露和资源使用不平均的情 况。

【发明内容】

[0010] 本发明主要解决的问题是在量化交易中如何给出一个独立的运行环境,使得每个 策略运行能够不互相影响,运里的影响是指对于资源,数据等得占用和影响。
[0011] 本发明的技术方案为:
[0012] 基于虚拟化和回测库的量化交易方法,首先构建基于包含回测库的虚拟隔离环 境,用于策略回测的运行环境。对于提交的策略和运行参数,首先处理成python文件,放置 到共享目录中,然后在虚拟隔离环境中根据参数运行回测,得到回测结果后返回结果,结果 包括数值结果和可视化图表。
[0013] 虚拟化(docker) :docke;r是一种新的虚拟化技术。虚拟化其实早已有之,Ixc 化inux Container)就是一种很成熟的虚拟化技术,而docker作为一个新兴的虚拟化技术, 其主要特征为面向应用,轻量级,灵活等。使用docker可W保证应用之间的独立性,在本发 明中主要利用虚拟化技术来构建策略的隔离运行环境,保证策略运行之间不受影响。
[0014] 回测库(zipline) :zipline是一个开源的量化交易python库,利用Zipline,在提 交策略后,Zipline可W基于策略的算法运行回测(backtesting)并返回结果用于后续处 理,同时Zipline可W通过在线获取数据或本地提供数据来完成回测。
[0015] 按照W下步骤构建虚拟隔离环境并运行回测策略:
[0016] 1,服务器上配置虚拟化环境,利用docker构建base镜像,运个base镜像包括了运 行时环境和需要的回测库,函数库等。并针对用户级别创建每个用户对应的虚拟化运行容 器,设置用户的代码目录。
[0017] 2,数据更新模块会每天固定时间更新数据,运里数据主要是国内A股市场交易数 据,数据字段包括开盘价,收盘价,最高最低价,成交量等。
[0018] 3,用户完成回测策略的编写并提交后,服务器端根据提交的策略代码和运行参数 (参数包括起始结束时间,仓位金额,交易频率等),生成对应的python文件,并保存文件到 共享目录,运样保证在虚拟环境对策略文件的可读性。
[0019] 4,系统调用运行接口,在对应的虚拟环境中执行运行命令,命令一般格式如下:
[0
[0022] 该命令会在虚拟环境中执行提交策略的回测。
[0023] 5,得到的回测结果为数值结果,返回给程序做进一步处理。至此整个方法流程结 束。
[0024] 本发明提出了一种改进的基于虚拟化和回测库的量化交易运行方法。该方法在传 统的量化运行方式上进行了改进,将docker虚拟化技术和zipline回测库引入了量化交易 中,并将之整合构成了一套完整的运行环境。
[0025] 本发明引入虚拟化和回测库后,通过docker封装运行环境,在策略提交后将策略 放入到docker环境中,挂载需要的外部股票基金数据和其他必须数据等,运行回测,结束 后,回测结果返回给用户。运样保证了策略环境的互相独立性和策略回测的完整性。
【附图说明】
[00%]图1为本发明整体架构图 [0027]图2为本发明的主要流程图 [002引图3为示例程序的代码
[0029] 图4为运行结果可视化后图
[0030] 图5为服务器生成策略脚本的部分代码
【具体实施方式】
[0031] 本发明使用了虚拟化技术和Zipline回测库,下面具体介绍发明的流程和所使用 的各项技术的实施方式。
[0032] 1,虚拟化技术
[0033] 虚拟化技术主要是用于对运行环境的虚拟,方便对不同运行环境之间的独立不受 影响。在本发明中虚拟化技术使用的是docker来实现。通过docker构建隔离的虚拟环境,然 后在运个环境中再搭建回测环境。
[0034] 2,回测库
[0035] 回测库主要是用来对提交的量化策略进行模拟检验。在本发明中使用的主要是 Zipline回测库,运是一个开源回测库,可W通过指定在线获取数据或者本地提供数据来完 成回测。
[0036] 一般量化策略完成后需要有一个环境来对策略进行测试,回测(back testing)就 是提供了运样一个环境来保证策略的正确性,回测的主要原理是事先载入需要的股票或基 金数据,然后根据策略中的初始化函数(initialize)初始化数据和变量,之后根据设置的 交易间隔和交易粒度在每个交易事件调用处理函数化andle_data),处理函数中包含了对 股票买入卖出的执行等。最后在指定的起始结束时间范围内给出结果,结果包括策略年化 收益,基准年化收益,阿尔法,夏普等,具体参数如下:
[0037] 策略年化收益:表示投资期限为一年的预期收益率;
[0038] 基准年化收益:参考标准年化收益;
[0039] 阿尔法:投资中面临的非系统性风险,Alpha是投资者获得与市场波动无关的回 报,一般用来度量投资者的投资技艺。
[0040] 贝塔:投资中面临的系统性风险,反映了策略对大盘变化的敏感性。
[0041] 夏普比率:表示每承受一单位总风险,会产生多少的超额报酬,可W同时对策略的 收益与风险进行综合考虑。
[0042] 策略收益波动率:用来测量资产的风险性,波动越大代表策略风险越高。
[0043] 3,数据爬取和处理
[0044] 由于回测库默认在线获取的是国外股票市场数据,所W在我们的系统中需要准备 本地数据,运就需要根据开放接口来获取数据,主要是获取股票每天的开盘收盘价,最高最 低价,成交额,市盈率等数据。系统中设置了一个定时任务来每天更新。
[0045] 除此之外,还有基准的每天收益数据,运个就需要根据爬取到的数据进行计算,现 在是每天选取前一个星期的数据计算当天的累计收益并更新文件,在每次策略回测时读取 文件作为数据提供。
[0046] 具体方法流程如下:
[0047] 1,服务器上配置虚拟化环境,利用docker构建base镜像,运个base镜像包括了运 行时环境和需要的回测库,函数库等。并针对用户级别创建每个用户对应的虚拟化运行容 器,设置用户的代码目录。
[0048] 2,数据更新模块会每天固定时间更新数据,运里数据主要是国内A股市场交易数 据,数据字段包括开盘价,收盘价,最高最低价,成交量等。
[0049] 3,用户完成回测策略的编写并提交后,服务器端根据提交的策略代码和运行参数 (参数包括起始结束时间,仓位金额,交易频率等),生成对应的python文件,并保存文件到 共享目录,运样保证在虚拟环境对策略文件的可读性。
[0050] 4,系统调用运行接口,在对应的虚拟环境中执行运行命令,命令一般格式如下:
[0化1 ]
[0052] 该命令会在虚拟环境中执行提交策略的回测。
[0053] 5,得到的回测结果为数值结果,返回给程序做进一步处理。至此整个方法流程结 束。
[0054] 有了 W上=个技术支持和具体流程的规定,基于虚拟化的回测环境就可W保证量 化策略的运行。用户只需要完成自己的量化策略并提交到系统,系统会自动分配虚拟化的 环境来运行用户的策略并返回用户结果,虚拟化的环境对用户是完全透明的,与其他运行 环境之间也是互不影响的,运就保证了环境的隔离。
[0055] 下面通过具体的实例来说明本发明的实施:
[0056] 本发明实施的具体步骤如图2,首先我们准备好回测的虚拟化环境,运里采用的是 ubuntul4.04作为系统环境,同时也采用ubun化:14.04作为我们的base镜像,事先安装好必 要的类库。然后创建需要的运行环境,命令如下:
[0化7]
[00
[0059] 运样就创建了用于运行策略的虚拟环境,运里的环境在实际使用中对应每一个用 户,运也就体现了用户策略之间的隔离,相当于每个用户的策略运行在一个独立的环境中。 同时数据更新也保证了每天的交易数据都持久化到数据库中。
[0060] 之后准备一个测试用的策略,策略内容见附图。
[0061] 在我们的策略中,每个交易事件中买家仅买入一股。对于买家买入多股的复杂策 略情况,其结构也是类似的,依然可W按照该发明进行实施。
[0062] 策略完成后,通过系统提交,服务器端可W看到在共享目录下生成了对应的策略 代码文件。下面就可W运行策略,使用如下命令运行回测,注意,运是单独运行的方法,如果 是在系统中,会通过接口调用来完成该命令。
[0063]
[0064] 运行得到的结果现在是写文件,在实际系统中,可W将结果直接返回或持久化到 数据库中。
[0065] 最终用户得到返回的回测结果。如下所示是一部分回测结果:
[0066]
[0067]
[0068] 运里对返回数据的格式做一个说明,每一行数据代表每天回测的结果,每一列中:
[0069] capital_used:每天使用掉的资金
[0070] ending_cash:仓位剩余
[0071] ending_value:每天交易额
[0072] pnl:交易差额,即实际收益
[0073] po;rtfolio_value:根据交易收益得到的最终仓位余额
[0074] 得到的结果代表了在回测期间内每天的交易情况,包括交易额,仓位,收益等。运 些数据可W用作后面的进一步分析和可视化等。附图中就有结果可视化示例。
[0075] 在用户看来,只是提交了策略等待一段时间后得到回测结果,全部后台过程对用 户透明。
【主权项】
1. 基于虚拟化和回测库的量化交易方法,其特征是对于一个完成的量化策略程序,首 先利用虚拟化技术构造一个隔离的运行环境,之后利用回测库构建一个隔离的回测环境, 环境准备完成后,接收提交的量化策略,在回测环境中运行得到结果并最终返回,这套方法 主要用于解决在量化交易系统中多用户资源可能冲突和数据需要隔离的问题。2. 根据权利要求1所述的基于虚拟化和回测库的量化交易方法,其特征是按照以下步 骤生成隔离的交易环境: a) 在服务器上配置虚拟化技术的必要环境,包括容器环境安装,环境配置等; b) 启动一个容器镜像,安装必要的类库和回测库; c) 保存这个镜像,作为后面回测环境的基础镜像; d) 在服务器上根据基础镜像创建容器,这个容器环境就是后面运行所支持的隔离环 境,不同容器间的活动是透明的。3. 根据权利要求1和2所述的基于虚拟化和回测库的量化交易方法,其特征是根据以下 步骤运行策略: a) 用户提交完成的量化策略,服务器生成对应的脚本文件,文件的生成是通过用户提 交的策略代码和运行参数,在程序中生成最终的python执行文件; b) 系统在创建的隔离环境中调用运行命令,挂载数据和脚本后隔离环境运行脚本,结 束后返回结果,运行命令的参数根据用户提交的参数进行调整,包括起始结束日期、初始仓 位、选择股票等; c) 服务器将结果返回给用户或者进一步处理,策略回测完成。4. 根据权利要求1、2、3所述的基于虚拟化和回测库的量化交易方法,其特征是对于在 系统中采用该方法后,对用户是透明的,隔离环境之间也是互相隔离的,同时,一个基础镜 像和服务器可以支持多个隔离环境的创建,服务器可以支持1000个隔离环境,同时在每个 用户运行结束后会关闭此次隔离环境。
【文档编号】G06Q40/04GK106022916SQ201610283645
【公开日】2016年10月12日
【申请日】2016年4月27日
【发明人】陈振宇, 钱程, 郝蕊, 何铁科
【申请人】南京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1