CN116701191A - 量化回测的优化方法、装置、设备、存储介质及程序产品 - Google Patents
量化回测的优化方法、装置、设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN116701191A CN116701191A CN202310589265.9A CN202310589265A CN116701191A CN 116701191 A CN116701191 A CN 116701191A CN 202310589265 A CN202310589265 A CN 202310589265A CN 116701191 A CN116701191 A CN 116701191A
- Authority
- CN
- China
- Prior art keywords
- module
- execution
- transaction
- data
- time
- 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.)
- Pending
Links
- 238000013139 quantization Methods 0.000 title claims abstract description 91
- 238000000034 method Methods 0.000 title claims abstract description 82
- 238000005457 optimization Methods 0.000 title claims abstract description 80
- 238000012360 testing method Methods 0.000 claims abstract description 42
- 238000004891 communication Methods 0.000 claims description 51
- 238000005259 measurement Methods 0.000 claims description 26
- 230000008569 process Effects 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 12
- 230000008859 change Effects 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000000691 measurement method Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 208000025174 PANDAS Diseases 0.000 description 2
- 208000021155 Paediatric autoimmune neuropsychiatric disorders associated with streptococcal infection Diseases 0.000 description 2
- 240000004718 Panda Species 0.000 description 2
- 235000016496 Panda oleosa Nutrition 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000002844 melting Methods 0.000 description 2
- 230000008018 melting Effects 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Abstract
本申请提供了一种量化回测的优化方法、装置、设备、存储介质及程序产品,包括:确定执行量化回测的多个执行模块;统计多个执行模块分别在执行量化回测时各自的第一执行信息;根据多个执行模块各自的第一执行信息,确定多个执行模块各自的第一执行效率数值;确定多个执行模块中的目标执行模块,目标执行模块的第一执行效率数值小于第一预设数值;确定目标执行模块对应的第一优化策略,根据第一优化策略对目标执行模块进行优化。可以提高量化回测的优化效率,提高回测速度和效率。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种量化回测的优化方法、装置、设备、存储介质及程序产品。
背景技术
量化交易是指利用计算机技术并采用一定的数学模型,实现投资理念和投资策略的过程。具体的,量化交易需要先根据适当的投资思想、投资经验确定量化交易策略,然后利用计算机技术、量化交易策略和数据模型实现全自动或者半自动交易。
在将量化交易策略应用于实际交易之前,会对量化交易策略进行回测。回测,也称量化回测,是指基于历史行情数据,使用量化交易策略进行模拟交易,以评估量化交易策略的历史表现,从而预测量化交易策略在实际交易中的表现。
由于量化回测的回测速度会影响对量化交易策略的评估效率,从而影响量化交易,因此,常采用优化方法对量化回测进行优化,以提高回测效率。因此,如何提高量化回测的优化效率是本申请亟待解决的技术问题。
发明内容
本申请提供一种量化回测的优化方法、装置、设备、存储介质及程序产品,以提高量化回测的优化效率,提高回测速度和效率。
第一方面,本申请提供一种量化回测的优化方法,该方法包括:确定执行量化回测的多个执行模块;统计多个执行模块分别在执行量化回测时各自的第一执行信息;根据多个执行模块各自的第一执行信息,确定多个执行模块各自的第一执行效率数值;确定多个执行模块中的目标执行模块,目标执行模块的第一执行效率数值小于第一预设数值;确定目标执行模块对应的第一优化策略,根据第一优化策略对目标执行模块进行优化。
第二方面,本申请提供一种优化装置,包括:处理模块,处理模块,用于:确定执行量化回测的多个执行模块;统计多个执行模块分别在执行量化回测时各自的第一执行信息;根据多个执行模块各自的第一执行信息,确定多个执行模块各自的第一执行效率数值;确定多个执行模块中的目标执行模块,目标执行模块的第一执行效率数值小于第一预设数值;确定目标执行模块对应的第一优化策略,根据第一优化策略对目标执行模块进行优化。
第三方面,本申请提供一种电子设备,包括:处理器和存储器,该存储器用于存储计算机程序,该处理器用于调用并运行该存储器中存储的计算机程序,执行如第一方面或其各实现方式中的方法。
第四方面,本申请提供一种计算机可读存储介质,用于存储计算机程序,计算机程序使得计算机执行如第一方面或其各实现方式中的方法。
第五方面,本申请提供一种计算机程序产品,包括计算机程序指令,该计算机程序指令使得计算机执行如第一方面或其各实现方式中的方法。
第六方面,本申请提供一种计算机程序,计算机程序使得计算机执行如第一方面或其各实现方式中的方法。
通过本申请技术方案,电子设备可以先确定执行量化回测的多个执行模块,然后,电子设备可以统计多个执行模块分别在执行量化回测时各自的第一执行信息,根据多个执行模块各自的第一执行信息,确定多个执行模块各自的第一执行效率数值,接着,电子设备可以确定多个执行模块中的目标执行模块,目标执行模块的第一执行效率数值小于第一预设数值,然后,确定目标执行模块对应的第一优化策略,根据第一优化策略对目标执行模块进行优化。在上述过程中,电子设备可以统计各个执行模块分别在执行量化回测时各自的执行效率,只对执行效率较低的执行模块进行优化,而无需对量化回测的整体流程进行优化,如此一来,可以较准确地定位出影响回测效率的瓶颈所在,对量化回测进行针对性地优化,提高优化的准确性,从而可以提高量化回测的优化效率,提高回测速度和效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种量化回测的优化方法的流程图;
图2为本申请实施例提供的一种量化回测的优化方法的示意图;
图3为本申请实施例提供的另一种量化回测的优化方法的示意图;
图4为本申请实施例提供的再一种量化回测的优化方法的示意图;
图5为本申请实施例提供的一种优化装置500的示意图;
图6是本申请实施例提供的一种电子设备600的示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
如上所述,现有技术在对量化回测进行优化时,常对量化回测的整体耗时进行统计,若整体耗时高于预设耗时,则可以确定该量化回测的回测速度较慢,然后,对该量化回测的整体流程进行调整,以对该量化回测进行优化。显然,这种优化方法费时费力,优化效率较低。
为了解决上述技术问题,电子设备可以先确定执行量化回测的多个执行模块,然后,电子设备可以统计多个执行模块分别在执行量化回测时各自的第一执行信息,根据多个执行模块各自的第一执行信息,确定多个执行模块各自的第一执行效率数值,接着,电子设备可以确定多个执行模块中的目标执行模块,目标执行模块的第一执行效率数值小于第一预设数值,然后,确定目标执行模块对应的第一优化策略,根据第一优化策略对目标执行模块进行优化。如此一来,电子设备可以统计各个执行模块分别在执行量化回测时各自的执行效率,只对执行效率较低的执行模块进行优化,而无需对量化回测的整体流程进行优化,进而可以较准确地定位出影响回测效率的瓶颈所在,对量化回测进行针对性地优化,提高优化的准确性,从而可以提高量化回测的优化效率,提高回测速度和效率。
在一些可实现方式中,本申请技术方案可以应用于如下场景,但不限于:
示例性的,本申请技术方案可以应用于对量化回测的优化场景中,执行量化回测的设备和本申请中的电子设备,即对量化回测进行优化的设备,可以是同一设备,也可以是不同的设备。其中,电子设备可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器,本申请实施例对此不做限制。
需要说明的是,本申请将在下面的实施例中,以执行量化回测的设备和本申请中的电子设备是同一设备为例,对本申请技术方案进行介绍,当执行量化回测的设备和电子设备是不同设备时,其对应的实施例和此处类似,本申请在此不做赘述。
在介绍了本申请实施例的应用场景之后,下面将对本申请技术方案进行详细阐述:
图1为本申请实施例提供的一种量化回测的优化方法的流程图,该方法可以由上述应用场景中的电子设备执行,本申请对此不做限制,如图1所示,该方法可以包括如下步骤:
S110:确定执行量化回测的多个执行模块;
S120:统计多个执行模块分别在执行量化回测时各自的第一执行信息;
S130:根据多个执行模块各自的第一执行信息,确定多个执行模块各自的第一执行效率数值;
S140:确定多个执行模块中的目标执行模块,目标执行模块的第一执行效率数值小于第一预设数值;
S150:确定目标执行模块对应的第一优化策略,根据第一优化策略对目标执行模块进行优化。
需要说明的是,为了便于理解,本申请将在下面的实施例中,将上述“执行量化回测的设备”简称为“执行设备”,将上述“对量化回测进行优化的设备”简称为“优化设备”,“优化设备”是本申请中的电子设备,本申请将在下面的实施例中将“优化设备”称为电子设备。另外,执行设备和优化设备可以是同一设备,也可以是不同的设备。本申请将在下面的实施例中,以执行设备和优化设备是同一设备为例,对本申请技术方案进行介绍,当执行设备和优化设备是不同设备时,其对应的实施例和此处类似,本申请在此不做赘述。
在一些可实现方式中,电子设备可以根据执行设备在执行量化策略时,各个模块的作用,确定多个执行模块,其中,不同的执行模块具有不同的作用。
示例性的,执行设备可以包括以下多个执行模块:通信模块、数据获取模块、脚本模块。其中,通信模块用于负责其他执行模块件的通信,例如用于传输回测相关信息,回测相关信息包括回测时间、回测过程中所用到的数据等,其中,回测时间是指脚本模块使用历史行情数据执行量化交易策略的时间;数据获取模块可以用于存储、维护回测过程中所用到的数据,如历史行情数据、历史交易订单等,以使脚本模块可以根据这些数据进行量化回测;脚本模块可以用于在回测时间对应时间点上根据数据获取模块所提供的数据,机进行量化交易策略的量化回测。
示例性的,执行设备还可以包括以下多个执行模块:通信模块、数据获取模块、脚本模块,数据获取模块可以包括:行情模块和交易模块。其中,通信模块可以用于传输回测时间等,回测时间是指脚本模块使用历史行情数据执行量化交易策略的时间;行情模块可以用于存储、维护历史行情数据,以使脚本模块可以根据历史行情数据进行量化回测;交易模块可以用于存储、维护量化回测中的交易订单、订单利息等交易数据,以提供给脚本模块进行量化回测等;脚本模块可以用于根据行情模块和交易模块发送的历史行情数据和交易数据,对量化交易策略进行量化回测。那么,电子设备可以确定多个执行模块为:通信模块、行情模块、交易模块、脚本模块,或者,确定多个执行模块为:通信模块、数据获取模块、脚本模块。
需要说明的是,本申请对执行设备的执行模块的划分不做限制。
在一些可实现方式中,第一执行信息可以包括以下至少一项:执行耗时、执行耗时和第一预设耗时之差。
示例性的,电子设备可以统计每个执行模块,从执行设备开始执行量化回测到执行量化回测结束之间,各自的运行时间,将执行模块的运行时间确定为执行模块的执行耗时。
示例性的,电子设备可以对每个执行模块的上述运行时间进行预计,将预计的运行时间确定为第一预设耗时。预计的运行时间可以是执行模块在多个量化回测对应的多个运行时间的平均值、最大值、最小值或者中值。
示例性的,假设电子设备统计的多个执行模块各自的运行时间和运行时间占比如表1所示,则电子设备可以确定通信模块、行情模块、交易模块、脚本模块各自的执行耗时分别为:20s、156s、12s、2000s,假设电子设备确定的通信模块、行情模块、交易模块、脚本模块各自的第一预设耗时分别为:15s、150s、5s、2100s,则通信模块、行情模块、交易模块、脚本模块各自的第一执行信息可以分别是:20s、156s、12s、2100s,也可以分别是:5、6、7、1000,还可以分别是:0.898103%、6.712840%、0.537371%、91.851686%。
表1
在一些可实现方式中,电子设备可以将第一执行信息直接确定为第一执行效率数值,也可以先对第一执行信息进行归一化处理,将归一化处理后的结果确定为第一执行效率数值,或者,电子设备还可以对多个第一执行信息进行排序,将多个第一执行信息各自对应的排序结果确定为多个第一执行信息各自的第一执行效率数值。
示例性的,假设通信模块、行情模块、交易模块、脚本模块各自的第一执行信息分别是:5、6、7、44,则电子设备可以确定通信模块、行情模块、交易模块、脚本模块各自的第一执行效率数值分别是:5、6、7、44。或者,电子设备可以按照由大到小的顺序对上述多个第一执行效率数值进行排序,确定通信模块、行情模块、交易模块、脚本模块各自的排序结果分别是:4、3、2、1,则可以确定通信模块、行情模块、交易模块、脚本模块各自的第一执行效率数值分别是:4、3、2、1。
在一些可实现方式中,第一预设数值可以是电子设备预先确定的公用数值,在确定目标执行模块时,电子设备可以将每个执行模块的第一执行效率和该公用数值即第一预设数值进行比较,将第一执行效率数值小于公用数值的执行模块确定为目标执行模块。或者,每个执行模块都有各自的第一预设数值,在确定目标执行模块时,电子设备可以将每个执行模块的第一执行效率和各自的第一预设数值进行比较,将第一执行效率数值小于对应的第一预设数值的执行模块确定为目标执行模块。
示例性的,在第一预设数值是多个执行模块的公用数值,第一预设数值为2时,假设通信模块、行情模块、交易模块、脚本模块各自的第一执行效率数值分别是:4、3、2、1,则电子设备可以确定脚本模块的第一执行效率数值小于第一预设数值,确定脚本模块为目标执行模块。
示例性的,在每个执行模块都有各自的第一预设数值时,假设通信模块、行情模块、交易模块、脚本模块各自的第一预设数值分别是:4、5、6、45,通信模块、行情模块、交易模块、脚本模块各自的第一执行效率数值分别是:5、6、7、44,则电子设备可以确定脚本模块的第一执行效率数值小于对应的第一预设数值,确定脚本模块为目标执行模块
需要说明的是,本申请对第一执行信息、第一执行效率数值、第一预设数值各自的具体内容和确定方法等不做限制。
在一些可实现方式中,在电子设备确定出目标执行模块之后,可以对目标执行模块的具体执行过程进行分析,以确定目标执行模块执行效率较低的原因,从而根据原因确定目标执行模块对应的第一优化策略,根据第一优化策略对目标执行模块进行优化。本申请将在后续实施例对此处进行介绍,在此先不作赘述。
在上述实施例中,电子设备可以先确定执行量化回测的多个执行模块,统计多个执行模块各自的执行信息,从而可以较快速地确定执行效率较低的执行模块,较快速地定位出执行设备的性能瓶颈所在,并对执行效率较低的执行模块进行针对性地性能优化,从而可以提高优化效率,提高执行设备的性能和回测效率。
而且,由于执行设备一般都可以包括多个执行模块,因此上述技术方案可以适用于多数量化回测的优化场景中,具有普遍适用性的优点,而且不容易受到异常值的干扰。
在一些可实现方式中,在S150之前,电子设备还可以先确定目标执行模块对应的多个接口,统计多个接口分别在执行量化回测时各自的第二执行信息,接着,电子设备可以根据多个接口各自的第二执行信息,确定多个接口各自的第二执行效率数值,然后,电子设备可以确定多个接口中的目标接口,目标接口的第二执行效率数值小于第二预设数值,电子设备确定目标执行模块对应的第一优化策略,根据第一优化策略对目标执行模块进行优化,可以包括:确定目标接口对应的第二优化策略,根据第二优化策略对目标执行模块进行优化。
示例性的,第二执行信息包括以下至少一项:至少一个协议各自的使用次数、至少一个协议各自的使用耗时、至少一个函数各自的调用次数、至少一个函数各自的调用耗时。一般情况下,较大使用耗时或者较大调用耗时对应的接口是需要优化的,优化后对整体的性能提升较大。
可以理解的是,每个执行模块都有各自的多个接口,执行模块之间可以通过接口交互,通过接口交互的两个执行模块可以基于不同的编程语言实现,如可以基于C++实现,也可以是基于Python实现。另外,接口可以对应有至少一个协议和至少一个函数,在执行模块执行量化回测时,需要基于其对应的多个接口实现,在基于多个接口实现时,需要使用接口对应的协议、调用接口对应的函数。
需要说明的是,电子设备确定第二执行信息、第二执行效率数值、第二预设数值、第二优化策略的方法和上述确定第一执行信息、第一执行效率数值、第一预设数值、第一优化策略的方法是类似的,本申请在此不做赘述。本申请在下面的实施例中以确定目标接口的第二执行信息、第二执行效率数值为例,确定目标执行模块的其他接口的第二执行信息、第二执行效率数值的方法和此处类似,本申请在此不做赘述。
示例性的,假设目标接口对应有3个协议,该3个协议各自的使用情况如表2所示。若电子设备确定目标接口的第二执行信息为对应的多个协议各自的使用次数,则电子设备可以确定协议1、协议2、协议3各自的使用次数分别为:24000、180、140,确定目标接口的第二执行信息为:24000、180、140;若电子设备确定目标接口的第二执行效率数值为对应的多个协议的使用次数的之和,则电子设备可以确定目标接口的第二执行效率数值为24000+180+140=24320。或者,若电子设备确定目标接口的第二执行信息为对应的多个协议各自的使用耗时,使用耗时可以是总耗时,则电子设备可以确定协议1、协议2、协议3各自的使用耗时分别为:100、0.2、0.09,确定目标接口的第二执行信息为:100、0.2、0.09;若电子设备确定目标接口的第二执行效率数值为对应的多个协议的使用耗时的之和,则电子设备可以确定目标接口的第二执行效率数值为100+0.2+0.09=100.29。或者,若电子设备确定目标接口的第二执行信息为对应的多个协议各自的使用耗时,使用耗时可以是平均耗时,则电子设备可以确定协议1、协议2、协议3各自的使用耗时分别为:0.42、0.11、0.06,确定目标接口的第二执行信息为:0.42、0.11、0.06;若电子设备确定目标接口的第二执行效率数值为对应的多个协议的使用耗时的之和,则电子设备可以确定目标接口的第二执行效率数值为0.42+0.11+0.06=0.59。
表2
协议标识 | 协议名称 | 请求次数 | 总耗时(秒) | 平均耗时(毫秒) |
1 | 获取交易账户列表 | 24000 | 100 | 0.42 |
2 | 获取最大交易数量 | 180 | 0.2 | 0.11 |
3 | 获取订单列表 | 140 | 0.09 | 0.06 |
在上述实施例中,电子设备可以先基于各执行模块的执行信息确定出执行效率较低的目标执行模块,然后根据目标执行模块对应的接口的执行信息,确定出执行效率较低的目标接口,针对性地对目标接口进行性能分析,从而可以发现影响执行效率的细节,可以更准确、更高效地对量化回测进行优化,进一步提高回测效率和执行设备的性能。
在下面的实施例中,本申请将对量化回测的优化进行介绍:
需要说明的是,本申请将在下面的实施例中,以执行设备和优化设备(即本申请中的电子设备)是同一设备为例,对本申请技术方案进行介绍,当执行设备和优化设备是不同设备时,其对应的实施例和此处类似,本申请在此不做赘述。
在一些现有技术中,当行情数据发生变化时,数据获取模块可以立即将行情数据发送给脚本模块,但是脚本模块可能并不需要该行情数据,例如,在脚本模块不需要根据上述变化的行情数据运行量化交易策略的当前部分时,脚本模块是不需要该行情数据的,因此,这种量化回测会浪费计算资源和计算时间,降低数据获取模块的执行效率,从而降低执行设备执行量化回测的效率。或者,在另一些现有技术中,执行模块会每隔固定时间如15秒确定历史行情数据,并将历史行情数据发送给脚本模块,但是,当回测的量化交易策略使用的历史行情数据是大周期触发的数据,即每两次使用历史行情数据间的时间间隔较大,如大于15秒,则脚本模块就会用不到执行模块按照上述固定时间发送的大部分历史行情数据,进而就会产生较多的无用数据,从而降低数据获取模块的执行效率,从而降低执行设备执行量化回测的效率。
电子设备可以根据上述实施例对上述现有技术对应的量化回测过程进行分析,可以确定目标执行模块即执行效率较低的执行模块包括数据获取模块,确定的第一优化策略可以是用于对数据获取模块获取历史行情数据的方式进行优化;例如,第一优化策略可以包括:数据获取模块在发送历史行情数据时,对待发送的历史行情数据的对应的时间点以及数据类型进行判断,对相同时间点下相同数据类型的历史行情数据仅向脚本模块发送一次;又例如,第一优化策略还可以包括:数据获取模块可以根据确定好的回测时间获取历史行情数据,具体的,在脚本模块执行量化交易策略之前,脚本模块可以确定目标回测时间,并向数据获取模块发送目标回测时间,之后,数据获取模块可以在目标回测时间获取目标历史行情数据,将目标历史行情数据发送给脚本模块。
在一些可实现方式中,多个执行模块可以包括:通信模块、数据获取模块、脚本模块,其中,通信模块用于传输回测时间,数据获取模块用于根据通信模块传输的回测时间获取历史行情数据,脚本模块用于根据数据获取模块获取的历史行情数据执行量化回测对应的量化交易策略,电子设备在基于脚本模块执行量化交易策略之前,可以基于通信模块向脚本模块发送目标请求,目标请求用于请求获取量化交易策略的目标回测时间。响应于目标请求,电子设备可以基于脚本模块确定目标回测时间,并基于脚本模块向通信模块发送目标回测时间,接着,电子设备可以基于通信模块向数据获取模块发送目标回测时间,接着,电子设备可以基于数据获取模块,根据目标回测时间获取历史行情数据,并将历史行情数据发送给脚本模块。
可以理解的是,由于脚本模块可以根据历史行情数据运行量化交易策略,因此,脚本模块可以确定使用历史行情数据的时间即目标回测时间,那么在脚本模块使用历史行情数据之前,可以先确定目标回测时间,从而可以使数据获取模块可以根据目标回测时间准备历史行情数据并向脚本模块发送历史行情数据,避免在获取数据过程中由于无用数据较多而导致的数据获取模块执行效率较低的问题。在量化交易策略没有挂单、没有用到融资融券、对应的历史行情数据为大周期触发的数据等的场景下,不仅可以保证回测精度,还可以提高回测速度和效率。
进一步地,由于量化回测过程通常是基于时间线进行的,但考虑到量化回测过程中存在没有挂单、没有用到融资融券、对应的历史行情数据为大周期行情数据等无需监控回测过程中实时价格变动的时间点或时间段,在这些无需实时价格变动的时间段或时间点仍然进行无用的历史行情数据的发送,会导致通信资源以及通信时间的额外消耗,因此,电子设备可以先确定执行量化交易策略时是否需要使用实时价格数据,然后,电子设备可以根据执行量化交易策略是否需要使用实时价格数据,来确定目标回测时间。其中,实时价格数据是指在执行量化回测对应的量化交易策略时,需要使用的实时价格数据,该实时价格数据属于历史行情数据。具体的,电子设备可以通过以下任一方式确定执行量化交易策略时是否需要使用实时价格数据,但不限于此:
方式一,电子设备在基于脚本模块确定目标回测时间之前,可以先通过通信模块向交易模块询问执行量化交易策略时是否需要使用实时价格数据,然后,通信模块可以将询问结果发送给脚本模块,之后,脚本模块可以根据询问结果,确定目标回测时间,其中,询问结果包括:执行量化交易策略时需要使用实时价格数据或者执行量化交易策略时不需要使用实时价格数据。具体地,交易模块响应于该通信模块发送的询问请求,获取历史交易数据并判断该历史交易数据是否为挂单类型的交易数据或融资融券类型的交易数据,以及判断触发交易的历史行情数据是否为大周期行情数据,若为挂单类型或融资融券类型的交易数据,或触发交易的历史行情数据为大周期行情数据,则询问结果为执行量化交易策略时不需要使用实时价格数据。
方式二,电子设备在基于脚本模块确定目标回测时间之前,可以直接基于脚本模块确定执行量化交易策略时是否需要使用实时价格数据,然后,脚本模块可以根据该确定结果,确定目标回测时间,其中,确定结果包括:执行量化交易策略时需要使用实时价格数据或者执行量化交易策略时不需要使用实时价格数据。
具体地,脚本模块可以根据前序回测时间所获得的历史交易数据,确定交易模块的交易状态,进而确定回测过程中在当前时间点下执行量化交易策略是否需要使用实时价格数据。更具体地,脚本模块可获取前序回测时间点上历史交易数据,其中,前序回测时间点是指上次进行量化交易策略回测的时间点;确定历史交易数据的交易属性信息对应的交易属性值;进而,基于历史交易数据的交易属性值确定交易模块中的交易状态,若交易状态为目标交易状态,确定执行量化交易策略是需要使用实时价格数据。
其中,交易属性信息包括前序回测时间点上历史交易数据的总数量、各个历史交易数据的交易时间、交易量等参数;交易状态包括繁忙交易状态以及空闲交易状态,当交易状态处于繁忙交易状态时,此时执行量化交易策略时需要使用实时价格数据;当交易状态处于空闲交易状态时,此时执行量化交易策略时无需使用实时价格数据。根据历史交易数据的交易属性信息对应的交易属性值确定交易模块中的交易状态,具体可以先对比交易属性信息对应的交易属性值与回测过程中所有历史回测时间点上交易属性信息的平均值,若交易属性值小于或等于回测过程中所有历史回测时间点上交易属性信息的平均值,通过下述公式计算交易模块中的交易活跃度,若交易活跃度大于预设阈值,则确定交易模块的交易状态为空闲交易状态,否则,确定交易模块的交易状态为繁忙交易状态:
其中,S2表示交易模块中交易的活跃度,表示第j个回测时间点的第i个交易属性信息对应的交易属性值。通过前序回测时间点(即第j个回测时间点)上交易数据的交易属性信息进行交易活跃程度的评估,以确定交易模块的交易状态,进而在交易模块在繁忙交易状态的时段获取实时价格数据进行量化交易策略的回测,在交易模块在空闲交易状态的时段无需获取实时价格数据进行量化交易策略的回测,在保证回测精度的同时,提高回测速度和效率。
示例性的,上述基于脚本模块确定目标回测时间,可以包括以下两种可实现方式:
可实现方式一,数据获取模块可以包括行情模块以及交易模块,在执行量化交易策略无需使用实时价格数据时,可以通过通信模块向行情模块以及交易模块发送回测时间询问请求;响应于回测时间询问请求,行情模块通过通信模块向脚本模块返回行情更新时间,交易模块通过通信模块向脚本模块返回模拟交易时间;基于脚本模块获取执行量化交易策略的下一触发时间,并根据行情更新时间、模拟交易时间以及下一触发时间,确定目标回测时间。
其中,模拟交易可以理解为执行量化交易策略时的交易,模拟交易时间可以理解为电子设备设置的必须执行量化交易策略的时间,行情更新时间可以理解为电子设备设置的必须获取历史行情数据的时间。电子设备在执行量化交易策略时,可以在多个时间点分别执行量化交易策略中的不同步骤,电子设备在当前时间执行量化交易策略之后,可以确定需要执行量化交易策略的下一个触发时间。
例如,电子设备可以将行情更新时间、模拟交易时间以及下一触发时间中的最早时间,确定为目标回测时间。假设某公司规定需要在0点获取行情数据、需要在1点进行模拟交易,即规定电子设备必须在0点获取行情数据、在1点执行量化交易策略,则电子设备可以基于行情模块确定行情更新时间为0点、基于交易模块确定模拟交易时间为1点,假设电子设备基于脚本模块确定下一个触发时间为2点,则电子设备可以基于脚本模块从行情模块和交易模块,分别获取行情更新时间为1点、模拟交易时间为0点,接着,脚本模块可以确定上述行情更新时间、模拟交易时间以及下一触发时间中的最早时间为0点,则可以确定目标回测时间为0点。
可实现方式二,在执行量化交易策略需要使用实时价格数据时,基于脚本模块获取执行量化交易策略的下一触发时间,并将下一触发时间确定为目标回测时间。
例如,电子设备实时价格使用间隔和当前使用实时价格数据的时间之和,确定为目标回测时间,实时价格使用间隔为使用实时价格数据的周期,即每两次使用实时价格数据间的时间间隔。
示例性的,如图2所示,通信模块可以称为回测框架,行情模块可以称为行情后端,交易模块可以称为交易后端,脚本模块在执行量化回测对应的量化交易策略之前,可以向回测框架发送准备好的信号,以通知回测框架,脚本模块即将执行量化交易策略,回测框架接收到该信号之后,可以先询问交易后端当前运行量化交易策略是否需要监控实时价格变动,即判断执行量化交易策略时,需要使用的历史行情数据是否包括实时价格数据,并将询问结果发送给脚本模块。或者,脚本模块可以直接根据需要执行的量化交易策略,确定执行量化交易策略是否需要监控实时价格变动。如果不需要监控实时价格变动,则脚本模块可以将行情后端必须的最早时间(即行情更新时间)、交易后端必须的最早时间(即模拟交易时间)、脚本模块的下一个触发时间(即下一触发时间),中最早的时间,确定为目标回测时间,其中,行情后端必须的最早时间是指:设置的行情后端必须获取历史行情数据的时间,交易后端必须的最早时间是指:设置的交易后端必须根据获取的历史行情数据,进行模拟交易的时间,例如,行情后端必须的最早时间、交易后端必须的最早时间可以是开始某个量化回测的时间。如果需要监控实时价格变动,则脚本模块可以判断当前运行量化交易策略用到的历史行情数据是否包括回测交易时段的数据。若判断包括回测交易时段的数据,则脚本模块可以确定目标回测时间为15秒,若判断运行量化交易策略用到的历史行情数据不包括回测交易时段的数据,则脚本模块可以确定目标回测时间为3600秒,当然也可以是其他秒数,本申请对此不做限制。其中,回测交易时段可以理解为预设的实时价格使用时间,例如,预设的实时价格使用时间可以是15秒,即电子设备每两次使用实时价格数据间的时间间隔为15秒。若判断当前运行量化交易策略用到的历史行情数据包括回测交易时段的数据,则表示电子设备下一个使用实时价格数据的时间为15秒之后,那么电子设备可以将目标回测时间确定为15秒,以使行情模块可以在15秒后获取历史行情数据。若判断当前运行量化交易策略用到的历史行情数据不包括回测交易时段的数据,则表示电子设备下一个使用实时价格数据的时间可能在大于15秒的时间之后,那么电子设备可以将15秒增大,将增大后的15秒,确定为目标回测时间,如将15秒增加至3600秒,以使行情模块可以在3600秒后获取历史行情数据。之后,脚本模块可以将确定的目标回测时间发送给回测框架,回测框架可以将目标回测时间通知给交易后端和行情后端,在交易后端和行情后端根据上述回测时间确定好对应行情数据后,可以将该行情数据发送给脚本模块,脚本模块可以根据该行情数据运行量化交易策略。
在上述过程中,脚本模块可以根据需要使用的历史行情数据的具体情况,判断目标回测时间,使得交易后端和行情后端可以根据该目标回测时间确定对应的行情数据,从而可以减少无用数据的产生和传输,提高执行量化回测的效率。
需要说明的是,上述实施例可以是对量化回测进行优化之后,电子设备按照优化策略执行量化回测时的步骤,也可以是进行S110至S150之前,电子设备执行量化回测的步骤,也就是说,电子设备还可以根据本申请中优化量化回测方法对本申请中执行的量化回测方法进行优化。
在上述实施例中,可以通过多个执行模块协调工作,以减少无用数据的产生和计算,从而完成对执行模块的优化,提高回测效率。
在一些可实现方式中,目标历史行情数据可以是基于JSON数据结构承载的数据。
在现有技术中,常采用基于DataFrame数据结构承载行情数据,其中,DataFrame是Pandas库中提供的一种二维数据结构,可以用来存储和处理行情数据信息,具有灵活的数据操作和丰富的数据类型等优点,并提供了简单好用的设置和获取数据的接口。然而,它的数据结构较为复杂,包含了很多冗余的信息,在量化回测中用到的行情数据属于大规模数据时,会影响性能问题。例如,在收到包括行情数据的协议包后,电子设备会把行情数据填充进Pandas的DataFrame结构体中,这个动作会消耗大量时间,开销较大。因此,电子设备可以采用了更为轻量的JSON格式作为回测脚本的数据结构,即基于JSON数据结构承载历史行情数据。JSON格式具有轻量、易于传输和解析等优点,可以快速加载和处理数据,从而可以提高回测效率。通过这种方式,不仅可以在保证回测精度的前提下提高回测速度,还能够更加灵活地处理和管理数据,以满足不同回测场景下的需求。
另外,可以设置多个接口,用于模拟DataFrame获取数据的方式,使得在基于JSON数据结构承载历史行情数据同时,还可以根据类似DataFrame获取数据的方式较轻松地获取数据、进行计算和分析。以提供量化回测更好的可扩展性和可维护性,可以方便地进行升级和优化,以适应未来不断变化的需求。
在一些现有技术中,在脚本模块需要历史行情数据时,行情模块就需要从数据库中读取相应的数据。当脚本模块需要的行情数据较多时,就会导致行情模块需要多次读取数据库,从而降低行情模块的执行效率,从而降低执行设备执行量化回测的效率。
电子设备可以根据上述实施例对上述现有技术对应的量化回测过程进行分析,可以确定目标执行模块即执行效率较低的执行模块包括行情模块,确定的第一优化策略可以用于对行情模块获取历史行情数据的方式进行优化,例如,第一优化策略可以包括:将需要使用的历史行情数据预先加载在电子设备的内存中;将量化回测中不会发生变化的行情数据存储在历史数据队列中,并在执行量化回测结束之前,不将历史数据队列中的不会发生变化的行情数据删除;在根据量化回测中发生变化的行情数据,执行量化回测之后,将量化回测中发生变化的行情数据也存储在历史数据队列中,当历史数据队列中存储的数据量大于预设数量时,将历史数据队列中存储时间最靠前的量化回测中发生变化的行情数据删除,直至历史数据队列中历史行情数据的数量等于预设数量。在根据该第一量化策略对量化回测进行优化之后,电子设备可以按照如下步骤执行量化回测:
在一些可实现方式中,在执行量化回测对应的量化交易策略中的第一交易策略之前,电子设备可以获取第一数量的历史行情数据,将第一数量的历史行情数据存储在内存中,以基于第一数量的历史行情数据执行第一交易策略,在基于第一数量的历史行情数据执行第一交易策略之后,可以将第一数量的历史行情数据存储在历史数据队列中,以根据历史数据队列中的历史行情数据,执行量化交易策略中的第二交易策略。电子设备可以确定历史数据队列中的第一历史行情数据,第一历史行情数据为执行量化回测中会发生变化的行情数据,在历史数据队列中历史行情数据的数量大于预设数量时,可以将历史数据队列中存储时间最靠前的第一历史行情数据删除,直至历史数据队列中历史行情数据的数量等于预设数量。
可以理解的是。量化交易策略包括多个步骤,第一交易策略为量化交易策略中一部分步骤对应的交易策略,第二交易策略为量化交易策略中另一部分步骤对应的交易策略。
示例性的,电子设备每将一个历史行情数据存储在历史数据队列中时,可以根据其是否为量化回测中会发生变化的数据,将其标记为第一历史行情数据和第二历史行情数据,其中,第一历史行情数据为执行量化回测中会发生变化的行情数据,第二历史行情数据为执行量化回测中不会发生变化的行情数据。之后,电子设备可以根据上述标记,确定历史数据队列中的第一历史行情数据和第二历史行情数据。例如,第二历史行情数据可以是类似价位表、股票结构体等在回测过程中不会发生变化的静态数据。第一历史行情数据可以是某一个股票的价格。
示例性的,当电子设备第一次获取从电子设备的外部数据库获取第二历史行情数据的时候,电子设备可以先将其存放在内存中,在使用完后,电子设备将可以其存放在历史数据队列中。或者,当电子设备第一次获取从电子设备的外部数据库获取第二历史行情数据的时候,就可以将其存放在内存中不释放,等到回测实例销毁的时候,可以对其进行释放。历史数据队列可以是内存中的一个队列,但不限于此。
可以理解的是,随着回测时间的推移,用于回测的数据一般会呈现出一定的顺序性的特点,因此,电子设备可以对相对于当前回测时刻的历史数据进行缓存优化,对相对于当前回测时刻的未来数据进行了预加载。上述相对于当前回测时刻的未来数据是指:在执行量化回测对应的量化交易策略中的第一交易策略之前,电子设备获取的第一数量的历史行情数据;上述相对于当前回测时刻的历史数据是指:存储在历史数据队列中的数据。
示例性的,如图3所示,图3中的“pCurrent”是指当前回测时间,“pNext”是指后续回测时间,“vEarlyHistoryCache”是指历史数据队列,“vHistoryCache”是指内存中存储第一数量的历史行情数据的队列。当内存中即“vHistoryCache”中没有需要的K线数据的时候,该K线数据用于运行量化交易策略,电子设备可以直接从数据库中读取后续的2000根(即第一数量)K线数据,并存放在内存中待使用。随着当前回测的进行,会依次消耗这些K线,直到没有预先加载的数据即内存中没K线时,电子设备可以再从数据库中读取接下来的2000根K线数据。电子设备每使用完一个历史行情数据,可以不将其从内存中释放,而是加入到历史数据队列即“vEarlyHistoryCache”中,历史数据队列可以记录当前回测时间前1000根(即预设数量)历史K线数据,可以从历史数据队列中将存储时间靠前的第一历史行情数据释放,以使历史数据队列只存储1000根历史K线数据。
需要说明的是,上述实施例可以是对量化回测进行优化之后,电子设备按照优化策略执行量化回测时的步骤,也可以是进行S110至S150之前,电子设备执行量化回测的步骤,也就是说,电子设备还可以根据本申请中优化量化回测方法对本申请中执行的量化回测方法进行优化。
在上述实施例中,将历史行情数据存放在历史数据队列中,可以方便后续回测时,可以直接从历史数据队列中使用该数据,避免了多次重复读取数据库,从而更快速、更高效地获取所需数据。另外,由于历史数据队列中第一历史行情数据的存储时间越靠前,其使用的概率越小,因此,将存储时间靠前的第一历史行情数据从历史数据队列中删除,不仅可以保证队列的存储容量不会过多,还可以减少对无用数据的存储。
在一些可实现方式中,多个执行模块在发送数据时,可以通过异步传输的方式将不影响量化交易策略的多个数据进行传输,或者,将多个数据包进行合并后再传输,从而可以降低等待的耗时,提高进程间通信的效率,进一步加快回测速度。
在一些可实现方式中,结合上述实施例,如图4所示,电子设备可以包括:回测框架(即通信模块)、行情后端(即行情模块)、交易后端(即交易模块)、脚本模块和传输接口,传输接口如图4中的“API ServerCS”所示。在回测框架获取到回测时间后,可以将回测时间发送给行情后端和交易后端,之后,行情后端可以根据回测时间确定行情数据,交易后端可以根据回测时间触发订单撮合等操作,接着,在回测时间时,回测框架可以触发脚本模块运行量化交易策略,脚本模块可以分别向交易后端和行情后端发送请求,以获取运行量化交易策略对应的数据。在运行当前回测时间对应的量化交易策略结束后,脚本模块可以通知回测框架执行结束。接着,回测框架可以询问交易后端执行量化交易策略是否需要使用实时价格数据,交易后端可以将询问结果返回给回测框架,其中,询问结果包括:执行量化交易策略需要使用实时价格数据或者执行量化交易策略不需要使用实时价格数据。然后,回测框架可以向脚本模块请求下一个回测时间,脚本模块可以根据上述实施例确定下一个回测时间,并将其发送给回测框架。或者,在运行当前回测时间对应的量化交易策略结束后,脚本模块也可以直接确定执行量化交易策略是否需要使用实时价格数据,并根据确定结果和上述实施例,确定下一个回测时间,并将其发送给回测框架。
在上述实施例中,本申请提出基于多个执行模块、多个接口各自的执行效率对回测性能瓶颈进行定位,以从多维度对量化回测的执行过程进行分析,不仅可以快速定位到瓶颈模块,还可以确定模块内部的性能瓶颈,为回测效率的提升提供了更加全面和细致的优化方案,从而可以提高量化回测的优化效率和量化策略的执行效率。
需要说明的是,在本申请的具体实施方式中,涉及到量化交易策略、行情数据、利息等相关数据,当本申请的实施例运用到具体产品或技术中时,需要获得用户许可、同意或者授权,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
图5为本申请实施例提供的一种优化装置500的示意图,如图5所示,该装置500包括:处理模块510,处理模块510,用于:
确定执行量化回测的多个执行模块;
统计多个执行模块分别在执行量化回测时各自的第一执行信息;
根据多个执行模块各自的第一执行信息,确定多个执行模块各自的第一执行效率数值;
确定多个执行模块中的目标执行模块,目标执行模块的第一执行效率数值小于第一预设数值;
确定目标执行模块对应的第一优化策略,根据第一优化策略对目标执行模块进行优化。
在一些可实现方式中,处理模块510,还用于:确定目标执行模块对应的多个接口;统计多个接口分别在执行量化回测时各自的第二执行信息;根据多个接口各自的第二执行信息,确定多个接口各自的第二执行效率数值;确定多个接口中的目标接口,目标接口的第二执行效率数值小于第二预设数值;处理模块510,具体用于:确定目标接口对应的第二优化策略,根据第二优化策略对目标执行模块进行优化。
在一些可实现方式中,第一执行信息包括以下至少一项:执行耗时、执行耗时和第一预设耗时之差;第二执行信息包括以下至少一项:至少一个协议各自的使用次数、至少一个协议各自的使用耗时、至少一个函数各自的调用次数、至少一个函数各自的调用耗时。
在一些可实现方式中,多个执行模块包括:通信模块、数据获取模块、脚本模块,通信模块用于传输回测时间,数据获取模块用于根据通信模块传输的回测时间获取历史行情数据,脚本模块用于根据数据获取模块获取的历史行情数据执行量化回测对应的量化交易策略,装置500还包括:收发模块520,其中,收发模块520用于:在基于脚本模块执行量化交易策略之前,基于通信模块向脚本模块发送目标请求,目标请求用于请求获取量化交易策略的目标回测时间;处理模块510,还用于:响应于目标请求,基于脚本模块确定目标回测时间;收发模块520,还用于:基于脚本模块向通信模块发送目标回测时间;基于通信模块向数据获取模块发送目标回测时间;基于数据获取模块,根据目标回测时间获取历史行情数据,并将历史行情数据发送给脚本模块。
在一些可实现方式中,数据获取模块包括行情模块以及交易模块;处理模块510,具体用于:在执行量化交易策略无需使用实时价格数据时,通过通信模块向行情模块以及交易模块发送回测时间询问请求;响应于回测时间询问请求,行情模块通过通信模块向脚本模块返回行情更新时间,交易模块通过通信模块向脚本模块返回模拟交易时间;基于脚本模块获取执行量化交易策略的下一触发时间,并根据行情更新时间、模拟交易时间以及下一触发时间,确定目标回测时间。
在一些可实现方式中,处理模块510,具体用于:在执行量化交易策略需要使用实时价格数据时,基于脚本模块获取执行量化交易策略的下一触发时间,并将下一触发时间确定为目标回测时间。
在一些可实现方式中,目标历史行情数据为基于JSON数据结构承载的数据。
在一些可实现方式中,装置500还包括:存储模块530,收发模块520,还用于:在执行量化回测对应的量化交易策略中的第一交易策略之前,获取第一数量的历史行情数据;存储模块530,用于:将第一数量的历史行情数据存储在内存中,以基于第一数量的历史行情数据执行第一交易策略;在基于第一数量的历史行情数据执行第一交易策略之后,将第一数量的历史行情数据存储在历史数据队列中,以根据历史数据队列中的历史行情数据,执行量化交易策略中的第二交易策略;处理模块510,还用于:确定历史数据队列中的第一历史行情数据,第一历史行情数据为执行量化回测中会发生变化的行情数据;在历史数据队列中历史行情数据的数量大于预设数量时,将历史数据队列中存储时间最靠前的第一历史行情数据删除,直至历史数据队列中历史行情数据的数量等于预设数量。
应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图5所示的装置500可以执行上述方法实施例,并且装置500中的各个模块的前述和其它操作和/或功能分别为了实现上述各个方法中的相应流程,为了简洁,在此不再赘述。
上文中结合附图从功能模块的角度描述了本申请实施例的装置500。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本申请实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本申请实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
图6是本申请实施例提供的一种电子设备600的示意性框图。如图6所示,该电子设备600可包括:
存储器610和处理器620,该存储器610用于存储计算机程序,并将该程序代码传输给该处理器620。换言之,该处理器620可以从存储器610中调用并运行计算机程序,以实现本申请实施例中的方法。
例如,该处理器620可用于根据该计算机程序中的指令执行上述方法实施例。
在本申请的一些实施例中,该处理器620可以包括但不限于:
通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等等。
在本申请的一些实施例中,该存储器610包括但不限于:
易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
在本申请的一些实施例中,该计算机程序可以被分割成一个或多个模块,该一个或者多个模块被存储在该存储器610中,并由该处理器620执行,以完成本申请提供的方法。该一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计算机程序在该电子设备中的执行过程。
如图6所示,该电子设备还可包括:
收发器630,该收发器630可连接至该处理器620或存储器610。
其中,处理器620可以控制该收发器630与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器630可以包括发射机和接收机。收发器630还可以进一步包括天线,天线的数量可以为一个或多个。
应当理解,该电子设备中的各个组件通过总线系统相连,其中,总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
本申请还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本申请实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以该权利要求的保护范围为准。
Claims (11)
1.一种量化回测的优化方法,其特征在于,包括:
确定执行量化回测的多个执行模块;
统计所述多个执行模块分别在执行所述量化回测时各自的第一执行信息;
根据所述多个执行模块各自的第一执行信息,确定所述多个执行模块各自的第一执行效率数值;
确定所述多个执行模块中的目标执行模块,所述目标执行模块的第一执行效率数值小于第一预设数值;
确定所述目标执行模块对应的第一优化策略,根据所述第一优化策略对目标执行模块进行优化。
2.根据权利要求1所述的方法,其特征在于,所述确定所述目标执行模块对应的第一优化策略,根据所述第一优化策略对目标执行模块进行优化之前,还包括:
确定所述目标执行模块对应的多个接口;
统计所述多个接口分别在执行所述量化回测时各自的第二执行信息;
根据所述多个接口各自的第二执行信息,确定所述多个接口各自的第二执行效率数值;
确定所述多个接口中的目标接口,所述目标接口的第二执行效率数值小于第二预设数值;
所述确定所述目标执行模块对应的第一优化策略,根据所述第一优化策略对目标执行模块进行优化,包括:
确定所述目标接口对应的第二优化策略,根据所述第二优化策略对目标执行模块进行优化。
3.根据权利要求2所述的方法,其特征在于,所述第一执行信息包括以下至少一项:执行耗时、执行耗时和第一预设耗时之差;
所述第二执行信息包括以下至少一项:至少一个协议各自的使用次数、所述至少一个协议各自的使用耗时、至少一个函数各自的调用次数、所述至少一个函数各自的调用耗时。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述多个执行模块包括:通信模块、数据获取模块、脚本模块,所述通信模块用于传输回测时间,所述数据获取模块用于根据所述通信模块传输的回测时间获取历史行情数据,所述脚本模块用于根据所述数据获取模块获取的历史行情数据执行所述量化回测对应的量化交易策略,所述方法还包括:
在基于所述脚本模块执行所述量化交易策略之前,基于所述通信模块向所述脚本模块发送目标请求,所述目标请求用于请求获取所述量化交易策略的目标回测时间;
响应于所述目标请求,基于所述脚本模块确定所述目标回测时间;
基于所述脚本模块向所述通信模块发送所述目标回测时间;
基于所述通信模块向所述数据获取模块发送所述目标回测时间;
基于所述数据获取模块,根据所述目标回测时间获取所述历史行情数据,并将所述历史行情数据发送给所述脚本模块。
5.根据权利要求4所述的方法,其特征在于,所述数据获取模块包括行情模块以及交易模块;所述基于所述脚本模块确定所述目标回测时间,包括:
在执行所述量化交易策略无需使用实时价格数据时,通过所述通信模块向所述行情模块以及所述交易模块发送回测时间询问请求;
响应于所述回测时间询问请求,所述行情模块通过所述通信模块向所述脚本模块返回行情更新时间,所述交易模块通过所述通信模块向所述脚本模块返回模拟交易时间;
基于所述脚本模块获取执行所述量化交易策略的下一触发时间,并根据所述行情更新时间、所述模拟交易时间以及所述下一触发时间,确定所述目标回测时间。
6.根据权利要求4所述的方法,其特征在于,所述基于所述脚本模块确定所述目标回测时间,包括:
在执行所述量化交易策略需要使用实时价格数据时,基于所述脚本模块获取执行所述量化交易策略的下一触发时间,并将所述下一触发时间确定为所述目标回测时间。
7.根据权利要求1-3任一项所述的方法,其特征在于,还包括:
在执行所述量化回测对应的量化交易策略中的第一交易策略之前,获取第一数量的历史行情数据;
将所述第一数量的历史行情数据存储在内存中,以基于所述第一数量的历史行情数据执行所述第一交易策略;
在基于所述第一数量的历史行情数据执行所述第一交易策略之后,将所述第一数量的历史行情数据存储在历史数据队列中,以根据所述历史数据队列中的历史行情数据,执行所述量化交易策略中的第二交易策略;
确定所述历史数据队列中的第一历史行情数据,所述第一历史行情数据为执行所述量化回测中会发生变化的行情数据;
在所述历史数据队列中历史行情数据的数量大于预设数量时,将所述历史数据队列中存储时间最靠前的第一历史行情数据删除,直至所述历史数据队列中历史行情数据的数量等于所述预设数量。
8.一种优化装置,其特征在于,包括:处理模块,所述处理模块,用于:
确定执行量化回测的多个执行模块;
统计所述多个执行模块分别在执行所述量化回测时各自的第一执行信息;
根据所述多个执行模块各自的第一执行信息,确定所述多个执行模块各自的第一执行效率数值;
确定所述多个执行模块中的目标执行模块,所述目标执行模块的第一执行效率数值小于第一预设数值;
确定所述目标执行模块对应的第一优化策略,根据所述第一优化策略对目标执行模块进行优化。
9.一种电子设备,其特征在于,包括:
处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序使得计算机执行如权利要求1-7中任一项所述的方法。
11.一种包含指令的计算机程序产品,其特征在于,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310589265.9A CN116701191A (zh) | 2023-05-23 | 2023-05-23 | 量化回测的优化方法、装置、设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310589265.9A CN116701191A (zh) | 2023-05-23 | 2023-05-23 | 量化回测的优化方法、装置、设备、存储介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116701191A true CN116701191A (zh) | 2023-09-05 |
Family
ID=87842458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310589265.9A Pending CN116701191A (zh) | 2023-05-23 | 2023-05-23 | 量化回测的优化方法、装置、设备、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116701191A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453534A (zh) * | 2023-10-10 | 2024-01-26 | 上海卡方信息科技有限公司 | 一种数据处理方法、装置、设备及可读存储介质 |
-
2023
- 2023-05-23 CN CN202310589265.9A patent/CN116701191A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453534A (zh) * | 2023-10-10 | 2024-01-26 | 上海卡方信息科技有限公司 | 一种数据处理方法、装置、设备及可读存储介质 |
CN117453534B (zh) * | 2023-10-10 | 2024-05-07 | 上海卡方信息科技有限公司 | 一种数据处理方法、装置、设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110806954B (zh) | 评估云主机资源的方法、装置、设备及存储介质 | |
US20210042578A1 (en) | Feature engineering orchestration method and apparatus | |
CN116701191A (zh) | 量化回测的优化方法、装置、设备、存储介质及程序产品 | |
CN115269108A (zh) | 一种数据处理方法、装置及设备 | |
CN111290696A (zh) | 一种应用程序组件的流控方法及装置 | |
CN112306383B (zh) | 执行作业的方法、计算节点、管理节点及计算设备 | |
CN108805332B (zh) | 一种特征评估方法和装置 | |
CN112051771B (zh) | 多云数据采集方法、装置、计算机设备和存储介质 | |
US20230385048A1 (en) | Predictive recycling of computer systems in a cloud environment | |
CN105893150B (zh) | 接口调用频度控制、接口调用请求处理方法及装置 | |
CN114465919B (zh) | 一种网络服务测试方法、系统、电子设备及存储介质 | |
CN113220705A (zh) | 慢查询识别的方法和装置 | |
CN111191792A (zh) | 数据分发方法、装置和计算机设备 | |
CN111159009A (zh) | 一种日志服务系统的压力测试方法及装置 | |
CN116303320A (zh) | 基于日志文件的实时任务管理方法、装置、设备及介质 | |
CN113095891A (zh) | 一种数据处理方法、装置、存储介质及电子装置 | |
CN113781092A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN115333917A (zh) | 一种cdn异常检测方法及装置 | |
CN112446501A (zh) | 真实网络环境中缓存分配模型的获取方法、装置及系统 | |
CN112685634A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN111427878A (zh) | 数据监控告警方法、装置、服务器和存储介质 | |
CN110908886A (zh) | 一种数据发送方法、装置、电子设备和存储介质 | |
CN116842299B (zh) | 动态数据访问风险控制系统与方法 | |
CN117453377B (zh) | 模型调度方法、终端设备以及服务器 | |
CN112653567B (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 |