CN114564499A - 一种轻量级的金融数据查询、量化策略开发和回测方法及装置 - Google Patents

一种轻量级的金融数据查询、量化策略开发和回测方法及装置 Download PDF

Info

Publication number
CN114564499A
CN114564499A CN202210121976.9A CN202210121976A CN114564499A CN 114564499 A CN114564499 A CN 114564499A CN 202210121976 A CN202210121976 A CN 202210121976A CN 114564499 A CN114564499 A CN 114564499A
Authority
CN
China
Prior art keywords
data
file
query
transaction
lightweight
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210121976.9A
Other languages
English (en)
Other versions
CN114564499B (zh
Inventor
林伟伟
张懿
钟浩城
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
South China University of Technology SCUT
Original Assignee
South China University of Technology SCUT
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by South China University of Technology SCUT filed Critical South China University of Technology SCUT
Priority to CN202210121976.9A priority Critical patent/CN114564499B/zh
Priority claimed from CN202210121976.9A external-priority patent/CN114564499B/zh
Publication of CN114564499A publication Critical patent/CN114564499A/zh
Application granted granted Critical
Publication of CN114564499B publication Critical patent/CN114564499B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/906Clustering; Classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/06Asset management; Financial planning or analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Technology Law (AREA)
  • Strategic Management (AREA)
  • Marketing (AREA)
  • Quality & Reliability (AREA)
  • Computational Linguistics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Game Theory and Decision Science (AREA)
  • Human Resources & Organizations (AREA)
  • Operations Research (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种轻量级的金融数据查询、量化策略开发和回测方法及装置,方法包括:通过多网站爬虫且交叉验证的方法下载各类型金融数据;对数据进行分类、分标、去重、降位数处理,序列化成二进制文件,压缩存储成本地轻量化文件;针对轻量化文件设计数据查询接口,并用多线程封装;基于上述数据查询接口实现高速仿真回测和实盘交易平台,集成回测、自定义模型预测和实盘文件生成功能。本发明通过将金融数据高效处理后压缩存储在本地,仅占用小容量空间实现高速、无数量限制的数据查询,并基于此实现高速的仿真回测功能,大大提高量化投资实验的速度,并且实现实盘文件生成功能,可将实验策略直接对接到实盘交易平台。

Description

一种轻量级的金融数据查询、量化策略开发和回测方法及 装置
技术领域
本发明涉及金融及计算机软件的技术领域,特别涉及一种轻量级的金融数据查询、量化策略开发和回测及装置。
背景技术
近年来,随着社会发展与计算机技术的不断进步,金融市场的规模也不断壮大,并在经济社会发展中起到重大作用,其中股票、期货市场是金融市场的重要组成部分。金融市场现已成为企业融资,机构与个人财富增值的重要手段。随着互联网的发展,计算机的存储与运算成本不断降低,将计算机技术与金融投资进行结合的量化投资方法应运而生。现如今量化投资与自动化交易已被广泛应用于金融市场与股票交易之中。
目前,量化投资有着AI量化投资、规则量化投资、量化加人工判断等方式。AI量化投资是将人工智能的方法应用到量化上面,挖掘一些特征,利用这些进行人工智能预测,之后在训练模型的基础上进行一些多空策略做回测,如果效果不错,就可以用在实际的交易中。规则量化则是人为设定一些规则,当满足这些规则的时候进行买卖。在这两种方式上得出的买卖建议和一些金融特征,也可以再进行人工判断进行最终的交易。
从上述量化投资的方式中可以看到,在进行量化实验和交易时候需要使用到金融数据,例如行情数据、财务数据等来进行计算金融特征或者买卖点,并且需要进行回测来验证策略的可行性。所以需要一个金融的数据接口和回测平台来满足量化实验和交易的整个流程。
目前的数据获取途径有像Tushare、AkShare数据接口,提供api的形式去获取金融数据;还有像掘金,聚宽这种量化平台,提供数据获取的api接口和回测平台;还有金字塔这种只提供回测平台。然而,这些数据接口的api和回测平台都有各自的局限性,比如数据查询的速度有限,尤其是大量数据查询的时候;数据查询的数量也受到限制,有每日上限或者单次查询上限;回测平台的回测功能不够仿真,回测速度慢,无法跨品种回测。
发明内容
本发明的目的在于克服现有金融数据获取方法的缺点与不足,提供一种轻量级的金融数据查询、量化策略开发和回测方法及装置,可以通过网络爬虫的方法,下载各类型的金融数据,并通过序列化和压缩的方法存储在本地,并实现相匹配的查询接口,达到轻量化和高速查询且无数量限制的目的,并基于数据平台提供高速且仿真的回测功能,然后可以生成实盘交易文件,对接可以实盘的交易平台。
为了达到上述目的,本发明采用以下技术方案:
本发明一方面提供了一种轻量级的金融数据查询、量化策略开发和回测方法,包括下述步骤:
获取各类型金融数据,并交叉检验数据可靠性;
对获取的金融数据进行分类、分标的、去重、降数据位数处理;
将数据序列化成二进制文件并压缩存储在本地;
针对序列化的二进制数据使用多线程封装数据查询接口,实现高速、无限制的数据查询;
基于上述数据查询接口实现高速仿真交易回测平台;
平台集成回测、自定义模型预测和实盘文件生成功能。
作为优选的技术方案,所述获取金融数据具体为:
通过网络爬虫的方法,对多个金融数据网站的数据进行爬取下载,然后对比从这些不同网站下载的数据,进行相互验证,以解决爬虫过程中因网络波动造成的数据缺失、错误的问题,通过各个网站的逐条数据比较选取最终存储的数据,以保证数据的可靠性。
作为优选的技术方案,所述对获取的金融数据进行分类、分标的、去重、降数据位数处理时,对于不同类型、周期的数据采取了不同的存储结构以达到轻量化存储的目的,具体为:
对于一些月度、季度或年度时长更新的数据,本方法仅存储当数据发生变化时的时间点以及变化后的新数据值,在数据变更时间点之间的数据值即上一个变更时间点的数据;
对于行情数据,时间字段,所有标的都拥有且同类标的的数据是一样,可以单独存储一份文件,数据文件中即可省略这一字段,对于行情数据中价格、交易量类型的数据,根据其数值的大小,设置32位或64位的数据存储类型;
通过上述去除重复性数据和使用位数更小的存储类型使得本地数据文件存储时占用更少的空间,以达到轻量化的目的。
作为优选的技术方案,通过python序列化成二进制文件并压缩存储在本地,具体为:
采取python的pickle库对数据进行序列化,生成二进制文件,并用gzip进行压缩,存储成本地文件,相对于常规的csv、txt文件存储,尽管序列化后的文件基本不具备可读性,但序列化压缩后的读取速度相较于csv这种原始数据的存储形式会快10倍到50倍,这个基于文件大小,文件越小,速度差距越大。
作为优选的技术方案,查询数据时,首先查询临时文件中是否已查询过此条件中的数据,否则获取查询条件中需要使用到的文件个数,并使用动态多线程的方法对查询进行加速,所述动态多线程方法如下式:
threadNum=OTN[fileNum]
其中threadNum表示查询的线程数量,即每次查询的多线程数量与此次查询条件相关;fileNum表示此查询条件需要使用到的文件个数;OTN是个哈希表,记录着各fileNum下的最优查询线程数,哈希表由下式计算得到:
OTN={OTNi|OTNi=getFast({j:spendTime(j),1≤j≤i}),1≤i≤allFileNum}
其中,i表示不同的查询文件个数,spendTime函数为此查询文件个数的查询时间,getFast函数获取哈希表中时间最小的文件个数即键值;整个最优查询线程数的哈希表在系统部署时计算得到,通过遍历各fileNum,线程数从1到需查询的文件个数,计算得到各fileNum下查询速度最快的线程数,并记录在哈希表上,序列化成二进制本地文件。
作为优选的技术方案,在多线程并行查询中,每个线程中对文件进行解压,将二进制文件反序列化成实例对象,进行索引返回结果,并在后台将查询结果序列化成二进制文件存储在临时文件夹中;
其中,临时文件夹根据本地计算机的存储容量自定义设置上限,根据先进先出的规则,在达到存储容量上限时进行删除最早的文件,以存储最新的文件。
作为优选的技术方案,所述回测平台单独新建一个进程专门处理订单的消息队列,在队列中,通过多线程的方式异步查询各订单标的在下单时刻的数据,按下式计算此次模拟交易是否成功:
Figure BDA0003498869680000041
其中,price表示下单价格,volume表示下单数量,limit表示历史时刻的涨跌停价,buy_amount表示历史时刻的买入量。
本发明另一方面提供了一种轻量级的金融数据查询、量化策略开发和回测平台,应用于所述的一种轻量级的金融数据查询、量化策略开发和回测方法,包括交易模块、持仓模块、统计模块、显示模块、自定义模型训练模块、实盘文件生成模块;
所述交易模块,用于提供下单函数,所述交易模块采用异步的方式,先获取用户下单的信息,计算此次交易需要的费用,并在账户中扣除,将订单压入消息队列中并返回下单成功;
在回测系统初始化时,单独新建一个进程专门处理订单的消息队列,在队列中,通过多线程的方式异步查询各订单标的在下单时刻的数据,按下式计算此次模拟交易是否成功:
Figure BDA0003498869680000042
其中,price表示下单价格,volume表示下单数量,limit表示历史时刻的涨跌停价,buy_amount表示历史时刻的买入量;
异步查询数据时,实时获取磁盘利用率情况,当磁盘利用率达到100%时,减少线程数量,并固定此线程数量上限;
所述持仓模块,用于保存所有的交易数据,通过获取所有的订单,并在交易模块计算出订单模拟交易成功与否后异步更新持仓中的订单数据;
所述统计模块,用于在回测结束后计算收益情况和各收益指标,并支持交易数据保存、报告生成功能;
所述显示模块,用于将统计模块中的报告生成为图表的形式;
自定义模型模块,用于提供了一种无需编码的自定义人工智能选股策略生成功能,通过自定义算法、自定义选择特征、部分特征计算时间范围,开平仓时间点,配合高速本地查询接口,快速地计算出训练所需的特征数据及标签;再配合高速回测平台,直观全面的得到这个人工智能选股策略的效果;若此自定义策略效果符合预期,则直接使用实盘文件生成模块生成对应实盘平台所需的运行文件进行实盘交易;
所述实盘文件生成模块,用于使用了回测API接口的进行实验的文件进行转换封装,生成可以实盘的一系列文件;
对于提供实盘交易接口的交易平台,识别实验文件中使用到数据查询接口和回测下单接口,将其替换成当天实时的数据查询接口和交易平台提供的下单接口;
对于需要部署在平台自己的实盘交易环境中的,同样替换数据查询接口和下单接口,并按相应平台格式封装生成对应的代码文件;
对于一些不支持复杂运算或人工智能模型计算的平台,采取生成文件单的形式进行实盘下单交易。
本发明又一方面提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序指令,所述计算机程序指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行所述的一种轻量级的金融数据查询、量化策略开发和回测方法。
本发明再一方面提供了一种计算机可读存储介质,存储有程序,所述程序被处理器执行时,实现所述的一种轻量级的金融数据查询、量化策略开发和回测方法。
本发明与现有技术相比,具有如下优点和有益效果:
(1)本发明中数据均在本地存储,查询数据的速度相对于从公开的网络接口查询更加稳定、快速,且没有数量限制和免费。
(2)本发明中数据采取了去重和降位的方法,并使用了序列化和压缩存储,大大降低了存储空间,使得个人电脑上也能保存大规模数据。
(3)本发明基于本地化的数据和数据查询接口,交易回测平台的回测速度比网上公开的回测平台快很多,可以实现10秒级别的万笔交易的回测。
(4)本发明查询接口和回测接口可以嵌入python代码中,方便了查看复杂人工智能实验策略的交易效果。
(5)本发明提出了一个可以接入实盘平台的方法,通过识别采用了查询和回测接口的代码文件,生成对应平台可以使用的实盘交易文件,可以实现将实验或策略的落地。
(6)本发明可以大大加快量化投资的实验和策略验证速度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明轻量级的金融数据查询、量化策略开发和回测方法的流程图;
图2是本发明实施例日线级别数据的存储结构。
图3是本发明实施例tick级别数据的存储结构。
图4是本发明实施例回测平台流程结构图。
图5是本发明实施例自定义模型预测平台图。
图6是本发明轻量级的金融数据查询、量化策略开发和回测平台的结构图;
图7是本发明电子设备的结构示意图。
具体实施方式
为使本发明实施例的目、技术方案和优点更加清楚,下面将结合本发明的附图,对本发明实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本实施例的一种轻量级的金融数据查询、量化策略开发和回测平台的使用,包括以下步骤:
(1)获取各类型金融数据,并交叉检验数据可靠性;
所述获取金融数据具体为:通过网络爬虫的方法,对多个金融数据网站的数据进行爬取下载,然后对比从这些不同网站下载的数据,进行相互验证,以解决爬虫过程中因网络波动造成的数据缺失、错误的问题,通过各个网站的逐条数据比较选取最终存储的数据,以保证数据的可靠性。
进一步的,对于类似股票标的的流通股本数量、市盈率,基金的十大重仓股等这类月级别时间甚至是年级别时间更新的数据,只需要存储当数据更新的那个时间点以及更新的值,这样中间重复的数据可以省略达到轻量化存储的目的。
不同标的类型的同周期的数据采取了不同的存储结构。
如图2所示,日级别周期的数据采取一标的一文件的存储方式,因为不管股票、期货还是基金的交易日期都是一样的,所以交易日期仅需单独存储一份文件,各标的可使用这一交易日期文件配合上数据的偏移量还原出各交易日期对应的数据,其中停牌时的数据使用空值代替。这样,仅需存储开盘价(open)、收盘价(close)、最高价(high)、最低价(low)、成交量(volume)、成交额(money)六个基础数据。
分钟级别的数据仅股票和期货所有。
分钟级别的数据存储与日级别类似,单独存储一份分钟级别的日内交易时间文件,采取一日一文件的存储形式,没交易的时间采用上一时刻数据填充,各标的可使用这一交易日期文件配合上数据的偏移量还原出各交易日期对应的数据,这样,仅存储开盘价(open)、收盘价(close)、最高价(high)、最低价(low)、成交量(volume)、成交额(money)六个无重复性的数据。
Tick级别数据仅股票和期货所有。
如图3所示,Tick级别数据采取一个交易日一个文件的存储方式,股票和期货各一个文件分开存储,通过使用字典的形式节省标的代码存储空间.
上述各时间周期的数据根据各字段的最值的大小设置32位或64位数据类型来减少内存占用和存储时的空间占用达到轻量化的目的。
(2)对获取的金融数据进行分类、分标的、去重、降数据位数处理;
对于一些月度、季度或年度时长更新的数据,本方法仅存储当数据发生变化时的时间点以及变化后的新数据值,在数据变更时间点之间的数据值即上一个变更时间点的数据;
对于行情数据,时间字段,所有标的都拥有且同类标的的数据是一样,可以单独存储一份文件,数据文件中即可省略这一字段,对于行情数据中价格、交易量类型的数据,根据其数值的大小,设置32位或64位的数据存储类型;
通过上述去除重复性数据和使用位数更小的存储类型使得本地数据文件存储时占用更少的空间,以达到轻量化的目的。
(3)将数据序列化成二进制文件并压缩存储在本地;
本实施例中,是通过python序列化成二进制文件并压缩存储在本地,具体为:
采取python的pickle库对数据进行序列化,生成二进制文件,并用gzip进行压缩,存储成本地文件,相对于常规的csv、txt文件存储,尽管序列化后的文件基本不具备可读性,但序列化压缩后的读取速度相较于csv这种原始数据的存储形式会快10倍到50倍,这个基于文件大小,文件越小,速度差距越大。
(4)针对序列化的二进制数据使用多线程封装数据查询接口,实现高速、无限制的数据查询;
查询数据时,首先查询临时文件中是否已查询过此条件中的数据,否则获取查询条件中需要使用到的文件个数,并使用动态多线程的方法对查询进行加速,所述动态多线程方法如下式:
threadNum=OTN[fileNum]
其中threadNum表示查询的线程数量,即每次查询的多线程数量与此次查询条件相关;fileNum表示此查询条件需要使用到的文件个数;OTN是个哈希表,记录着各fileNum下的最优查询线程数,哈希表由下式计算得到:
OTN={OTNi|OTNi=getFast({j:spendTime(j),1≤j≤i}),1≤i≤allFileNum}
其中,i表示不同的查询文件个数,spendTime函数为此查询文件个数的查询时间,getFast函数获取哈希表中时间最小的文件个数即键值;整个最优查询线程数的哈希表在系统部署时计算得到,通过遍历各fileNum,线程数从1到需查询的文件个数,计算得到各fileNum下查询速度最快的线程数,并记录在哈希表上,序列化成二进制本地文件。
在多线程并行查询中,每个线程中对文件进行解压,将二进制文件反序列化成实例对象,进行索引返回结果,并在后台将查询结果序列化成二进制文件存储在临时文件夹中;
其中,临时文件夹根据本地计算机的存储容量自定义设置上限,根据先进先出的规则,在达到存储容量上限时进行删除最早的文件,以存储最新的文件。
例如,查询000001(平安银行)和002594(比亚迪)2021年12月1日的日线数据、000001(平安银行)开盘前半个小时的前复权分钟数据、000001(平安银行)开盘前5分钟的tick数据。
(4.1)查询日线数据,判断查询条件需要使用两个文件,根据threadNum=OTN[2],设置threadNum个线程,分别找到日线文件夹中的000001和002594文件,解压反序列化解析成实例对象,通过查询日级别日期文件中2021-12-01对应的偏移量,直接在对象中通过偏移量得到这一天的日线数据。
(4.2)查询分钟数据,首先找到分钟级别文件夹中的000001文件,解压反序列化解析成实例对象,查询通过查询分钟级别日期文件中2021-12-01 09:30:00和2021-12-0110:00:00对应的偏移量,通过这起始和截止偏移量切片得到前半小时的数据,再去查询这一天的日线数据,得到前复权因子(2.1,2.2为独立查询),采用下述规则得到前复权数据:
前(后)复权数据=原始价格×前(后)复权因子;
前(后)复权后的成交量=原始成交量/前(后)复权因子;
成交额不处理
(4.3)查询tick数据,首先找到tick级别文件夹中的2021-12-01文件,解压反序列化解析成实例对象,通过000001标的进行字典索引获取到平安银行2021-12-01这一天的tick数据,然后使用pandas的特性通过[20211201090000:20211201093500]进行索引,得到开盘前5分钟的tick数据。
(5)基于上述数据查询接口实现高速仿真交易回测平台;
所述回测平台单独新建一个进程专门处理订单的消息队列,在队列中,通过多线程的方式异步查询各订单标的在下单时刻的数据,按下式计算此次模拟交易是否成功:
Figure BDA0003498869680000091
其中,price表示下单价格,volume表示下单数量,limit表示历史时刻的涨跌停价,buy_amount表示历史时刻的买入量。
进一步的,回测一个自定义交易策略的流程如图4所示:
(5.1)初始化回测模块,设置账户编号、初始资金、交易手续费率、统计起止时间、结果保存路径、基准对比标的。
(5.2)使用下单函数下单,包括交易的标的代码、交易时间、交易数量、交易的多空和买卖方向、交易价格、下单账户。同一个账户不局限仅能下单一种类型标的。此处采用异步的方式,计算此次交易需要的费用,并在账户中扣除,将订单压入消息队列和持仓模块并返回下单成功,并继续进行后续下单操作。
(5.3)通过多线程的方式异步查询队列中未处理订单标的在下单时刻的数据,按下式计算此次模拟交易是否成功:
Figure BDA0003498869680000092
其中,price表示下单价格,volume表示下单数量,limit表示历史时刻的涨跌停价,buy_amount表示历史时刻的买入量。
异步查询数据时,实时获取磁盘利用率情况,当磁盘利用率达到100%时,减少线程数量。
其中,在消息队列中,将同一天内的订单再归总为一条消息,使用一个线程处理,这样可以减少查询此历史时刻数据的次数,仅查询一次,并将数据存入内存中,计算完这一天的所有订单成功与否和此天收盘持仓市值后,释放掉这部分数据占用的内存。
通过这种异步合并的处理方法,可以加快回测中查询数据的速度。
(5.4)根据订单交易成功与否的返回结果更新持仓模块中的订单信息。
(5.5)当所有交易完成后,手动调用报告生成功能进行统计,在预设路径中查看结果报告。
在持仓模块中存储这所有的订单数据和持仓数据,根据这一模块的数据即可统计出回测的各金融指标,包括收益率、年化收益、最大回撤、夏普比率等等。
(6)自定义模型模块提供了一种无需编码的自定义人工智能选股策略生成功能。如图5所示,可以选择不同的算法、特征、股票池、部分特征计算时间范围,开平仓时间点,配合上步骤S4中的高速本地查询接口,可以快速地计算出训练所需的特征数据及标签;通过高速回测平台和可视化操作,可以直观方便全面的得到这个人工智能选股策略的效果。具体流程如下:
(6.1)根据图5所示的参数,通过查询接口,查询tick级别数据,部分特征按照开仓时间范围计算特征;查询分钟级别数据制作标签,形成训练数据;
(6.2)使用选择的算法进行滚动训练预测,并使用交易模块的下单函数在设定的时间点进行交易;
(6.3)查看回测结果。
对使用了回测API接口的进行实验的文件或者是使用自定义模型模块训练出了好的结果的模型,可以使用实盘文件生成模块进行转换封装,生成可以实盘的一系列文件。
对于提供实盘交易接口的交易平台,识别实验文件中使用到数据查询接口和回测下单接口,将其替换成当天实时的数据查询接口和交易平台提供的下单接口生成实盘交易文件,再和实验文件中使用过的本地文件一起打包,重新生成一个文件夹复制进其中。用户设置好对应实盘交易平台的账户密码,即可在开市时间内进行实盘交易。
对于需要部署在平台自己的实盘交易环境中的,同样替换数据查询接口和下单接口,并按相应平台格式封装生成对应的代码文件,和实验文件中使用过的本地文件一起打包,重新生成一个文件夹复制进其中,由用户手动将其移至平台的环境中,进行启动交易。
对于一些不支持复杂运算或人工智能模型计算的平台,采取生成文件单的形式进行实盘下单交易,识别实验文件中使用到数据查询接口和回测下单接口,将其替换成当天实时的数据查询接口和文件单生成函数,让平台去读取由个人本地环境计算出来的文件单进行交易。通过本地文件这样一个中间转换的环节,对于一些不支持复杂运算或人工智能模型计算的平台也能实现复杂的人工智能选股策略。
需要说明的是,对于前述的各方法实施例,为了简便描述,将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。
基于与上述实施例中的基于同态加密和可信硬件的多方隐私保护机器学习方法相同的思想,本发明还提供了基于同态加密和可信硬件的多方隐私保护机器学习系统,该系统可用于执行上述基于同态加密和可信硬件的多方隐私保护机器学习方法。为了便于说明,基于同态加密和可信硬件的多方隐私保护机器学习系统实施例的结构示意图中,仅仅示出了与本发明实施例相关的部分,本领域技术人员可以理解,图示结构并不构成对装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
请参阅6,在本申请的另一个实施例中,提供了一种轻量级的金融数据查询、量化策略开发和回测平台,包括交易模块、持仓模块、统计模块、显示模块、自定义模型训练模块、实盘文件生成模块;
所述交易模块,用于提供下单函数,所述交易模块采用异步的方式,先获取用户下单的信息,计算此次交易需要的费用,并在账户中扣除,将订单压入消息队列中并返回下单成功;
在回测系统初始化时,单独新建一个进程专门处理订单的消息队列,在队列中,通过多线程的方式异步查询各订单标的在下单时刻的数据,按下式计算此次模拟交易是否成功:
Figure BDA0003498869680000111
其中,price表示下单价格,volume表示下单数量,limit表示历史时刻的涨跌停价,buy_amount表示历史时刻的买入量;
异步查询数据时,实时获取磁盘利用率情况,当磁盘利用率达到100%时,减少线程数量,并固定此线程数量上限;
所述持仓模块,用于保存所有的交易数据,通过获取所有的订单,并在交易模块计算出订单模拟交易成功与否后异步更新持仓中的订单数据;
所述统计模块,用于在回测结束后计算收益情况和各收益指标,并支持交易数据保存、报告生成功能;
所述显示模块,用于将统计模块中的报告生成为图表的形式;
自定义模型模块,用于提供了一种无需编码的自定义人工智能选股策略生成功能,通过自定义算法、自定义选择特征、部分特征计算时间范围,开平仓时间点,配合高速本地查询接口,快速地计算出训练所需的特征数据及标签;再配合高速回测平台,直观全面的得到这个人工智能选股策略的效果;若此自定义策略效果符合预期,则直接使用实盘文件生成模块生成对应实盘平台所需的运行文件进行实盘交易;
所述实盘文件生成模块,用于使用了回测API接口的进行实验的文件进行转换封装,生成可以实盘的一系列文件;
对于提供实盘交易接口的交易平台,识别实验文件中使用到数据查询接口和回测下单接口,将其替换成当天实时的数据查询接口和交易平台提供的下单接口;
对于需要部署在平台自己的实盘交易环境中的,同样替换数据查询接口和下单接口,并按相应平台格式封装生成对应的代码文件;
对于一些不支持复杂运算或人工智能模型计算的平台,采取生成文件单的形式进行实盘下单交易。
上述实施例的一种轻量级的金融数据查询、量化策略开发和回测平台的实施方式中,各程序模块的逻辑划分仅是举例说明,实际应用中可以根据需要,例如出于相应硬件的配置要求或者软件的实现的便利考虑,将上述功能分配由不同的程序模块完成,即将所述一种轻量级的金融数据查询、量化策略开发和回测平台的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分功能。
请参阅图7,在一个实施例中,提供了一种轻量级的金融数据查询、量化策略开发和回测平台的电子设备,所述电子设备200可以包括第一处理器201、第一存储器202和总线,还可以包括存储在所述第一存储器202中并可在所述第一处理器201上运行的计算机程序,如轻量级的金融数据查询、量化策略开发和回测程序203。
其中,所述第一存储器202至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:SD或DX存储器等)、磁性存储器、磁盘、光盘等。所述第一存储器202在一些实施例中可以是电子设备200的内部存储单元,例如该电子设备200的移动硬盘。所述第一存储器202在另一些实施例中也可以是电子设备200的外部存储设备,例如电子设备200上配备的插接式移动硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(SecureDigital,SD)卡、闪存卡(Flash Card)等。进一步地,所述第一存储器202还可以既包括电子设备200的内部存储单元也包括外部存储设备。所述第一存储器202不仅可以用于存储安装于电子设备200的应用软件及各类数据,例如轻量级的金融数据查询、量化策略开发和回测程序203的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
所述第一处理器201在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述第一处理器201是所述电子设备的控制核心(Control Unit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在所述第一存储器202内的程序或者模块(例如联邦学习防御程序等),以及调用存储在所述第一存储器202内的数据,以执行电子设备200的各种功能和处理数据。
图6仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图6示出的结构并不构成对所述电子设备200的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
所述电子设备200中的所述第一存储器202存储的轻量级的金融数据查询、量化策略开发和回测程序203是多个指令的组合,在所述第一处理器201中运行时,可以实现:
获取各类型金融数据,并交叉检验数据可靠性;
对获取的金融数据进行分类、分标的、去重、降数据位数处理;
将数据序列化成二进制文件并压缩存储在本地;
针对序列化的二进制数据使用多线程封装数据查询接口,实现高速、无限制的数据查询;
基于上述数据查询接口实现高速仿真交易回测平台;
平台集成回测、自定义模型预测和实盘文件生成功能。
进一步地,所述电子设备200集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个非易失性计算机可读取存储介质中。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

Claims (10)

1.一种轻量级的金融数据查询、量化策略开发和回测方法,其特征在于,包括下述步骤:
获取各类型金融数据,并交叉检验数据可靠性;
对获取的金融数据进行分类、分标的、去重、降数据位数处理;
将数据序列化成二进制文件并压缩存储在本地;
针对序列化的二进制数据使用多线程封装数据查询接口,实现高速、无限制的数据查询;
基于上述数据查询接口实现高速仿真交易回测平台;
平台集成回测、自定义模型预测和实盘文件生成功能。
2.根据权利要求1所述一种轻量级的金融数据查询、量化策略开发和回测方法,其特征在于,所述获取金融数据具体为:
通过网络爬虫的方法,对多个金融数据网站的数据进行爬取下载,然后对比从这些不同网站下载的数据,进行相互验证,以解决爬虫过程中因网络波动造成的数据缺失、错误的问题,通过各个网站的逐条数据比较选取最终存储的数据,以保证数据的可靠性。
3.根据权利要求1所述一种轻量级的金融数据查询、量化策略开发和回测方法,其特征在于,所述对获取的金融数据进行分类、分标的、去重、降数据位数处理时,对于不同类型、周期的数据采取了不同的存储结构以达到轻量化存储的目的,具体为:
对于一些月度、季度或年度时长更新的数据,本方法仅存储当数据发生变化时的时间点以及变化后的新数据值,在数据变更时间点之间的数据值即上一个变更时间点的数据;
对于行情数据,时间字段,所有标的都拥有且同类标的的数据是一样,可以单独存储一份文件,数据文件中即可省略这一字段,对于行情数据中价格、交易量类型的数据,根据其数值的大小,设置32位或64位的数据存储类型;
通过上述去除重复性数据和使用位数更小的存储类型使得本地数据文件存储时占用更少的空间,以达到轻量化的目的。
4.根据权利要求1所述一种轻量级的金融数据查询、量化策略开发和回测方法,其特征在于,通过python序列化成二进制文件并压缩存储在本地,具体为:
采取python的pickle库对数据进行序列化,生成二进制文件,并用gzip进行压缩,存储成本地文件,相对于常规的csv、txt文件存储,尽管序列化后的文件基本不具备可读性,但序列化压缩后的读取速度相较于csv这种原始数据的存储形式会快10倍到50倍,这个基于文件大小,文件越小,速度差距越大。
5.根据权利要求1所述一种轻量级的金融数据查询、量化策略开发和回测方法,其特征在于,查询数据时,首先查询临时文件中是否已查询过此条件中的数据,否则获取查询条件中需要使用到的文件个数,并使用动态多线程的方法对查询进行加速,所述动态多线程方法如下式:
threadNum=OTN[fileNum]
其中threadNum表示查询的线程数量,即每次查询的多线程数量与此次查询条件相关;fileNum表示此查询条件需要使用到的文件个数;OTN是个哈希表,记录着各fileNum下的最优查询线程数,哈希表由下式计算得到:
OTN={OTNi|OTNi=getFast({j:spendTime(j),1≤j≤i}),1≤i≤allFileNum}
其中,i表示不同的查询文件个数,spendTime函数为此查询文件个数的查询时间,getFast函数获取哈希表中时间最小的文件个数即键值;整个最优查询线程数的哈希表在系统部署时计算得到,通过遍历各fileNum,线程数从1到需查询的文件个数,计算得到各fileNum下查询速度最快的线程数,并记录在哈希表上,序列化成二进制本地文件。
6.根据权利要求5所述一种轻量级的金融数据查询、量化策略开发和回测方法,其特征在于,在多线程并行查询中,每个线程中对文件进行解压,将二进制文件反序列化成实例对象,进行索引返回结果,并在后台将查询结果序列化成二进制文件存储在临时文件夹中;
其中,临时文件夹根据本地计算机的存储容量自定义设置上限,根据先进先出的规则,在达到存储容量上限时进行删除最早的文件,以存储最新的文件。
7.根据权利要求1所述一种轻量级的金融数据查询、量化策略开发和回测方法,其特征在于,所述回测平台单独新建一个进程专门处理订单的消息队列,在队列中,通过多线程的方式异步查询各订单标的在下单时刻的数据,按下式计算此次模拟交易是否成功:
Figure FDA0003498869670000021
其中,price表示下单价格,volume表示下单数量,limit表示历史时刻的涨跌停价,buy_amount表示历史时刻的买入量。
8.一种轻量级的金融数据查询、量化策略开发和回测平台,其特征在于,应用于权利要求1-7中任一项所述的一种轻量级的金融数据查询、量化策略开发和回测方法,包括交易模块、持仓模块、统计模块、显示模块、自定义模型训练模块、实盘文件生成模块;
所述交易模块,用于提供下单函数,所述交易模块采用异步的方式,先获取用户下单的信息,计算此次交易需要的费用,并在账户中扣除,将订单压入消息队列中并返回下单成功;
在回测系统初始化时,单独新建一个进程专门处理订单的消息队列,在队列中,通过多线程的方式异步查询各订单标的在下单时刻的数据,按下式计算此次模拟交易是否成功:
Figure FDA0003498869670000031
其中,price表示下单价格,volume表示下单数量,limit表示历史时刻的涨跌停价,buy_amount表示历史时刻的买入量;
异步查询数据时,实时获取磁盘利用率情况,当磁盘利用率达到100%时,减少线程数量,并固定此线程数量上限;
所述持仓模块,用于保存所有的交易数据,通过获取所有的订单,并在交易模块计算出订单模拟交易成功与否后异步更新持仓中的订单数据;
所述统计模块,用于在回测结束后计算收益情况和各收益指标,并支持交易数据保存、报告生成功能;
所述显示模块,用于将统计模块中的报告生成为图表的形式;
自定义模型模块,用于提供了一种无需编码的自定义人工智能选股策略生成功能,通过自定义算法、自定义选择特征、部分特征计算时间范围,开平仓时间点,配合高速本地查询接口,快速地计算出训练所需的特征数据及标签;再配合高速回测平台,直观全面的得到这个人工智能选股策略的效果;若此自定义策略效果符合预期,则直接使用实盘文件生成模块生成对应实盘平台所需的运行文件进行实盘交易;
所述实盘文件生成模块,用于使用了回测API接口的进行实验的文件进行转换封装,生成可以实盘的一系列文件;
对于提供实盘交易接口的交易平台,识别实验文件中使用到数据查询接口和回测下单接口,将其替换成当天实时的数据查询接口和交易平台提供的下单接口;
对于需要部署在平台自己的实盘交易环境中的,同样替换数据查询接口和下单接口,并按相应平台格式封装生成对应的代码文件;
对于一些不支持复杂运算或人工智能模型计算的平台,采取生成文件单的形式进行实盘下单交易。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序指令,所述计算机程序指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-7中任意一项所述的一种轻量级的金融数据查询、量化策略开发和回测方法。
10.一种计算机可读存储介质,存储有程序,其特征在于,所述程序被处理器执行时,实现权利要求1-7任一项所述的一种轻量级的金融数据查询、量化策略开发和回测方法。
CN202210121976.9A 2022-02-09 一种轻量级的金融数据查询、量化策略开发和回测方法及装置 Active CN114564499B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210121976.9A CN114564499B (zh) 2022-02-09 一种轻量级的金融数据查询、量化策略开发和回测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210121976.9A CN114564499B (zh) 2022-02-09 一种轻量级的金融数据查询、量化策略开发和回测方法及装置

Publications (2)

Publication Number Publication Date
CN114564499A true CN114564499A (zh) 2022-05-31
CN114564499B CN114564499B (zh) 2024-10-22

Family

ID=

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114723566A (zh) * 2022-06-10 2022-07-08 高盈国际创新科技(深圳)有限公司 金融交易数据处理方法及系统
CN116662376A (zh) * 2023-08-01 2023-08-29 腾讯科技(深圳)有限公司 数据查询方法、装置、电子设备及存储介质
CN116956164A (zh) * 2023-09-18 2023-10-27 中国科学院精密测量科学与技术创新研究院 基于wasm技术的全高层大气激光雷达数据处理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105354246A (zh) * 2015-10-13 2016-02-24 华南理工大学 一种基于分布式内存计算的数据去重方法
CN107748797A (zh) * 2017-11-07 2018-03-02 众安信息技术服务有限公司 金融行情数据的处理方法
CN110689436A (zh) * 2019-09-30 2020-01-14 北京九章云极科技有限公司 一种策略回测方法及策略回测系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105354246A (zh) * 2015-10-13 2016-02-24 华南理工大学 一种基于分布式内存计算的数据去重方法
CN107748797A (zh) * 2017-11-07 2018-03-02 众安信息技术服务有限公司 金融行情数据的处理方法
CN110689436A (zh) * 2019-09-30 2020-01-14 北京九章云极科技有限公司 一种策略回测方法及策略回测系统

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114723566A (zh) * 2022-06-10 2022-07-08 高盈国际创新科技(深圳)有限公司 金融交易数据处理方法及系统
CN116662376A (zh) * 2023-08-01 2023-08-29 腾讯科技(深圳)有限公司 数据查询方法、装置、电子设备及存储介质
CN116662376B (zh) * 2023-08-01 2024-02-13 腾讯科技(深圳)有限公司 数据查询方法、装置、电子设备及存储介质
CN116956164A (zh) * 2023-09-18 2023-10-27 中国科学院精密测量科学与技术创新研究院 基于wasm技术的全高层大气激光雷达数据处理方法

Similar Documents

Publication Publication Date Title
US20050165668A1 (en) Multi-processing financial transaction processing system
CN111274318B (zh) 一种区块链状态数据的存储、回滚方法、设备和存储介质
CN110555770B (zh) 一种基于增量哈希的区块链世界状态校验和恢复方法
US8700562B2 (en) Systems and methods for online transactional data processing
CN107329966B (zh) 机器数据存储方法及系统
KR101990329B1 (ko) 로그 데이터 분석을 이용한 데이터베이스 복구 속도 향상 기법 및 장치
CN111325494A (zh) 库存管理方法、装置、系统及存储介质
AU2019404304B2 (en) Gain and loss computation for cryptocurrency transactions
CN114564499B (zh) 一种轻量级的金融数据查询、量化策略开发和回测方法及装置
CN114564499A (zh) 一种轻量级的金融数据查询、量化策略开发和回测方法及装置
CN109597706B (zh) 一种核对差异数据的检测方法、装置及系统
US20160012536A1 (en) Methods and systems for addressing convexity in automated valuation of financial contracts
CN114511314A (zh) 一种支付账户管理的方法、装置、计算机设备和存储介质
CN113849618A (zh) 基于知识图谱的策略确定方法、装置、电子设备及介质
CN111680004B (zh) 核对非结构化影像文件迁移准确性的方法和装置
KR20190067147A (ko) 로그 데이터 분석을 이용한 데이터베이스 복구 속도 향상 기법 및 장치
CN109829750A (zh) 公共交通交易信息处理方法、装置和计算机设备
US11768855B1 (en) Replicating data across databases by utilizing validation functions for data completeness and sequencing
CN112214495B (zh) 数据执行跟踪方法、装置和设备
CN115129761B (zh) 基于Redis实现窗口实时计算的方法、系统和设备
US12073407B1 (en) Enhanced data security and presentation system and method
CN113781034B (zh) 一种基于缓存的记账及检查方法
US20240037656A1 (en) Market price tracking for crypto assets
Burke Designing and Developing Interactive Big Data Decision Support Systems for Performance, Scalability, Availability and Consistency
CN118446204A (zh) 业务文件版本转换方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant