CN115658749B - 基于有向无环图的基金产品排序方法、装置和电子设备 - Google Patents
基于有向无环图的基金产品排序方法、装置和电子设备 Download PDFInfo
- Publication number
- CN115658749B CN115658749B CN202211314879.8A CN202211314879A CN115658749B CN 115658749 B CN115658749 B CN 115658749B CN 202211314879 A CN202211314879 A CN 202211314879A CN 115658749 B CN115658749 B CN 115658749B
- Authority
- CN
- China
- Prior art keywords
- task
- vertices
- vertex
- atom
- atoms
- 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.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本公开提供了一种基于有向无环图的基金产品排序方法,可用于金融领域或其他领域。该方法包括:确定基金产品的排序流程;对所述排序流程进行细粒度拆分,得到与所述排序流程对应的多个任务原子及依赖关系;基于所述多个任务原子及依赖关系,构建所述排序流程的有向无环图;以及遍历所述有向无环图,以执行所述多个顶点对应的任务原子,从而生成基金产品的排序结果,其中,在遍历所述有向无环图,以执行所述多个顶点对应的任务原子的步骤中,并行执行至少两个独立顶点对应的任务原子,其中,所述至少两个独立顶点之间不存在任何边相连。本公开还提供了一种基金产品排序装置、设备、存储介质和程序产品。
Description
技术领域
本公开涉及金融领域,具体涉及基金领域,更具体地涉及一种基于有向无环图的基金产品排序方法、装置、设备、介质和程序产品。
背景技术
目前在对基金进行量化排序时,需要从各种数据源获取基金的业绩,投资标的,基金基准,管理人,管理规模等基础数据,并在基础数据的基础上计算最大回撤、跟踪误差、波动率和杠杆率等基础指标及依赖于不同基础指标及数据的复合指标,最后根据不同基金类型,选择不同的基础数据及指标,使用不同的权重进行组合后对基金进行量化排序。
在实现本公开构思的过程中,发明人发现,目前的基金排序方法,由于涉及多种基金,每种基金又包括多个数据和多个指标,导致整体排序过程复杂,排序速度慢。
发明内容
鉴于上述问题,本公开提供了一种基于有向无环图的基金产品排序方法、装置、设备、介质和程序产品。
根据本公开的第一个方面,提供了一种基于有向无环图的基金产品排序方法,所述方法包括:确定基金产品的排序流程,所述排序流程包括数据获取任务、指标计算任务和排序任务;对所述排序流程进行细粒度拆分,得到与所述排序流程对应的多个任务原子及依赖关系,其中,所述数据获取任务、所述指标计算任务和所述排序任务中的每一个可拆分为多个任务原子;基于所述多个任务原子及依赖关系,构建所述排序流程的有向无环图,其中,所述有向无环图包括多个顶点和多条边,所述多个顶点中的每一个顶点对应一个任务原子,所述多条边中的每一条边表示该条边所连接的两个顶点之间的依赖关系;以及遍历所述有向无环图,以执行所述多个顶点对应的任务原子,从而生成基金产品的排序结果,其中,在遍历所述有向无环图,以执行所述多个顶点对应的任务原子的步骤中,并行执行至少两个独立顶点对应的任务原子,其中,所述至少两个独立顶点之间不存在任何边相连。
根据本公开的实施例,所述遍历所述有向无环图,以执行所述多个顶点对应的任务原子的步骤包括:利用广度优先遍历方法获取多个当前候选执行顶点;从所述多个当前候选执行顶点中筛选出所有当前可执行顶点;以及并行执行与所述当前可执行顶点对应的任务原子。
根据本公开的实施例,所述从所述多个当前候选执行顶点中筛选出所有当前可执行顶点的步骤包括:对所述多个当前候选执行顶点中的每一个当前候选执行顶点,确定与所述每一个当前候选执行顶点相关联的至少一个前序顶点,其中,所述至少一个前序顶点与所述每一个当前候选执行顶点之间存在至少一条边相连;判断所述至少一个前序顶点当前的执行状态;以及当所述至少一个前序顶点当前的执行状态是执行完成时,确定所述当前候选执行顶点是当前可执行顶点。
根据本公开的实施例,所述方法还包括:当所述至少一个前序顶点当前的执行状态是未完成执行时,确定所述当前候选执行顶点是当前不可执行的顶点。
根据本公开的实施例,所述方法还包括:确定所述多个顶点中至少一个顶点对应的任务原子的执行状态;当至少一个顶点对应的任务原子的执行状态为执行失败时,确定执行失败的任务原子对应的至少一个顶点为失败顶点;基于所述失败顶点,形成失败顶点集合,其中,所述失败顶点集合中的顶点包括所有所述失败顶点;基于所述有向无环图和所述失败顶点集合,生成导出子图,其中,所述导出子图包括所述失败顶点集合中的所有失败顶点和与所述失败顶点通过至少一条边相连且位于所述失败顶点下游的所有可达顶点,以及连接所有顶点的多条边;以及遍历所述导出子图,以重新执行所述导出子图中的所有顶点对应的任务原子。
根据本公开的实施例,在所述遍历所述导出子图,以重新执行所述导出子图中的所有顶点对应的任务原子的步骤中,并行执行至少两个独立顶点对应的任务原子,其中,所述至少两个独立顶点之间不存在任何边相连。
根据本公开的实施例,所述排序任务包括多个排序任务原子,所述方法还包括:对所述有向无环图整体取反,得到所述基金产品的排序流程的反向图;以及基于所述反向图,针对至少一个排序任务原子,确定影响所述至少一个排序任务原子的排序结果的影响顶点集合,其中,所述影响顶点集合中的顶点包括在所述反向图中与所述至少一个排序任务原子通过至少一条边相连且位于所述至少一个排序任务原子对应的顶点下游的所有可达顶点。
根据本公开的实施例,所述数据获取任务包括多个数据获取任务原子,所述指标计算任务包括多个指标计算任务原子,所述方法还包括:基于所述反向图和所述至少一个排序任务原子对应的顶点,生成反向导出子图,其中,所述反向导出子图包括所述至少一个排序任务原子对应的顶点和所述影响顶点集合中的所有顶点,以及在所述反向图中连接所有顶点的多条边;以及根据所述反向导出子图,确定影响所述至少一个排序任务原子的至少一个数据获取任务原子和至少一个指标计算任务原子。
根据本公开的实施例,所述方法还包括:调整所述至少一个数据获取任务原子的数据获取方式,和/或,调整所述至少一个指标计算任务原子的参数设置方式。
根据本公开的实施例,所述指标计算任务原子包括基础指标计算任务原子和复合指标计算任务原子,其中,所述基础指标计算任务原子用于利用所述至少一个数据获取任务原子获取的数据计算基础指标,所述复合指标计算任务原子用于利用所述至少一个数据获取任务原子获取的数据和所述基础指标计算复合指标。
本公开的第二方面提供了一种基于有向无环图的基金产品排序装置,包括:第一确定模块,用于确定基金产品的排序流程,所述排序流程包括数据获取任务、指标计算任务和排序任务;拆分模块,用于对所述排序流程进行细粒度拆分,得到与所述排序流程对应的多个任务原子及依赖关系,其中,所述数据获取任务、所述指标计算任务和所述排序任务中的每一个可拆分为多个任务原子;构建模块,用于基于所述多个任务原子及依赖关系,构建所述排序流程的有向无环图,其中,所述有向无环图包括多个顶点和多条边,所述多个顶点中的每一个顶点对应一个任务原子,所述多条边中的每一条边表示该条边所连接的两个顶点之间的依赖关系;以及排序结果生成模块,用于遍历所述有向无环图,以执行所述多个顶点对应的任务原子,从而生成基金产品的排序结果,其中,在遍历所述有向无环图,以执行所述多个顶点对应的任务原子的步骤中,并行执行至少两个独立顶点对应的任务原子,其中,所述至少两个独立顶点之间不存在任何边相连。
根据本公开的实施例,所述排序结果生成模块包括遍历单元,用于利用广度优先遍历方法获取多个当前候选执行顶点;筛选单元,用于从所述多个当前候选执行顶点中筛选出所有当前可执行顶点;以及并行执行单元,用于并行执行与所述当前可执行顶点对应的任务原子。
根据本公开的实施例,所述筛选单元包括第一确定子模块,用于对所述多个当前候选执行顶点中的每一个当前候选执行顶点,确定与所述每一个当前候选执行顶点相关联的至少一个前序顶点,其中,所述至少一个前序顶点与所述每一个当前候选执行顶点之间存在至少一条边相连;第一判断子模块,用于判断所述至少一个前序顶点当前的执行状态;以及第二确定子模块,用于当所述至少一个前序顶点当前的执行状态是执行完成时,确定所述当前候选执行顶点是当前可执行顶点。
根据本公开的实施例,所述筛选单元还包括第三确定子模块,用于当所述至少一个前序顶点当前的执行状态是未完成执行时,确定所述当前候选执行顶点是当前不可执行的顶点。
根据本公开的实施例,所述装置还包括:第二确定模块,用于确定所述多个顶点中至少一个顶点对应的任务原子的执行状态;第三确定模块,用于当至少一个顶点对应的任务原子的执行状态为执行失败时,确定执行失败的任务原子对应的至少一个顶点为失败顶点;第一顶点集合生成模块,用于基于所述失败顶点,形成失败顶点集合,其中,所述失败顶点集合中的顶点包括所有所述失败顶点;导出子图生成模块,用于基于所述有向无环图和所述失败顶点集合,生成导出子图,其中,所述导出子图包括所述失败顶点集合中的所有失败顶点和与所述失败顶点通过至少一条边相连且位于所述失败顶点下游的所有可达顶点,以及连接所有顶点的多条边;以及遍历模块,用于遍历所述导出子图,以重新执行所述导出子图中的所有顶点对应的任务原子。
根据本公开的实施例,所述遍历模块还用于并行执行至少两个独立顶点对应的任务原子,其中,所述至少两个独立顶点之间不存在任何边相连。
根据本公开的实施例,所述排序任务包括多个排序任务原子,所述装置还包括:反向图生成模块,用于对所述有向无环图整体取反,得到所述基金产品的排序流程的反向图;以及第二顶点集合生成模块,用于基于所述反向图,针对至少一个排序任务原子,确定影响所述至少一个排序任务原子的排序结果的影响顶点集合,其中,所述影响顶点集合中的顶点包括在所述反向图中与所述至少一个排序任务原子通过至少一条边相连且位于所述至少一个排序任务原子对应的顶点下游的所有可达顶点。
根据本公开的实施例,所述数据获取任务包括多个数据获取任务原子,所述指标计算任务包括多个指标计算任务原子,所述装置还包括:反向导出子图生成模块,用于基于所述反向图和所述至少一个排序任务原子对应的顶点,生成反向导出子图,其中,所述反向导出子图包括所述至少一个排序任务原子对应的顶点和所述影响顶点集合中的所有顶点,以及在所述反向图中连接所有顶点的多条边;以及第四确定模块,用于根据所述反向导出子图,确定影响所述至少一个排序任务原子的至少一个数据获取任务原子和至少一个指标计算任务原子。
根据本公开的实施例,所述装置还包括:第一调整模块,用于调整所述至少一个数据获取任务原子的数据获取方式,和/或,第二调整模块,用于调整所述至少一个指标计算任务原子的参数设置方式。
本公开的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述方法。
本公开的第四方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述方法。
本公开的第五方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述方法。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的基于有向无环图的基金产品排序方法、装置、设备、介质和程序产品的应用场景图;
图2示意性示出了根据本公开实施例的基于有向无环图的基金产品排序方法的流程图;
图3示意性示出了根据本公开实施例的执行多个顶点对应的任务原子的流程图;
图4示意性示出了根据本公开实施例的从多个当前候选执行顶点中筛选出当前可执行顶点的流程图;
图5示意性示出了根据本公开实施例的基金产品排序流程的有向无环图的示意图;
图6示意性示出了根据本公开实施例的执行导出子图中的所有顶点对应的任务原子的流程图;
图7示意性示出了根据本公开实施例的基金产品排序流程的失败顶点集合的导出子图的示意图;
图8示意性示出了根据本公开另一实施例的基金产品排序流程的失败顶点集合的导出子图的示意图;
图9示意性示出了根据本公开实施例的确定影响至少一个排序任务原子的排序结果的影响顶点集合的流程图;
图10示意性示出了根据本公开实施例的基金产品排序流程的反向图的示意图;
图11示意性示出了根据本公开实施例的基于有向无环图的基金产品排序装置的结构框图;以及
图12示意性示出了根据本公开实施例的适于实现基于有向无环图的基金产品排序方法的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。
在投资业务中,经常需要对基金进行排序,并且基于排序结果进行筛选,但是目前基金的种类数目庞杂,例如,在进行FOF投资或投顾业务时,需要从全市场的上的近2万只公募基金中筛选出一段时间内表现优秀的产品。在进行基金筛选时,先使用量化排序的方法对每类基金的表现进行排序。在进行量化排序时,需要从各种数据源获取基金的业绩,投资标的,基金基准,管理人,管理规模等基础数据,并在基础数据的基础上计算最大回撤、跟踪误差、波动率和杠杆率等基础指标及依赖于不同基础指标及数据的复合指标,最后根据不同基金类型,选择不同的基础数据及指标,使用不同的权重进行组合后对基金进行量化排序。这个过程中存在的问题有:一是由于基金种类数目众多,每种基金又包括多个数据和多个指标,导致整个基金量化排序的过程较复杂,各种数据获取及指标计算的执行时间较长,排序过程复杂,排序速度慢;二是当基础数据获取或计算过程发生错误时,将导致本次量化排序过程全部作废;三是当需要分析排序结果时,当前结果所依赖的基础数据或指标结果的选取不是很直观。因此,需要寻找一个方法能加快完成基金量化排序的速度、减少从执行错误中恢复的代价,并能清晰的表达出哪些数据和指标会对当前基金量化排序结果产生影响的方法。
鉴于上述问题,本公开的实施例提供了一种基于有向无环图的基金产品排序方法,所述方法包括:确定基金产品的排序流程,所述排序流程包括数据获取任务、指标计算任务和排序任务;对所述排序流程进行细粒度拆分,得到与所述排序流程对应的多个任务原子,其中,所述数据获取任务、所述指标计算任务和所述排序任务中的每一个包括多个任务原子;基于所述多个任务原子,构建所述排序流程的有向无环图,其中,所述有向无环图包括多个顶点和多条边,所述多个顶点中的每一个顶点对应一个任务原子,所述多条边中的每一条边表示该条边所连接的两个顶点之间的依赖关系;以及遍历所述有向无环图,以执行所述多个顶点对应的任务原子,从而生成基金产品的排序结果,其中,在遍历所述有向无环图,以执行所述多个顶点对应的任务原子的步骤中,并行执行至少两个独立顶点对应的任务原子,其中,所述至少两个独立顶点之间不存在任何边相连。所述遍历所述有向无环图,以执行所述多个顶点对应的任务原子的步骤包括:利用广度优先遍历方法获取多个当前候选执行顶点;从所述多个当前候选执行顶点中筛选出当前可执行顶点;以及并行执行与所述当前可执行顶点对应的任务原子。在本公开实施例中,针对基金产品排序的过程中种类多、数据多和指标多的特点,通过使用有向无环图技术,可以简化排序过程,大大加快基金的排序速度。
需要说明的是,本公开确定的方法和装置可用于金融领域的基金产品排序,也可用于除金融领域之外的任意领域的产品排序,本公开基金产品排序的方法和装置的应用领域不做限定。
图1示意性示出了根据本公开实施例的基于有向无环图的基金产品排序方法、装置、设备、介质和程序产品的应用场景图。
如图1所示,根据该实施例的应用场景100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的基金产品排序方法一般可以由服务器105执行。相应地,本公开实施例所提供的基金产品排序装置一般可以设置于服务器105中。本公开实施例所提供的基金产品排序方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的基金产品排序装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
图2示意性示出了根据本公开实施例的基于有向无环图的基金产品排序方法的流程图。
如图2所示,该实施例的基于有向无环图的基金产品排序方法包括操作S210~操作S240。
在操作S210,确定基金产品的排序流程,所述排序流程包括数据获取任务、指标计算任务和排序任务。
在操作S220,对所述排序流程进行细粒度拆分,得到与所述排序流程对应的多个任务原子及依赖关系,其中,所述数据获取任务、所述指标计算任务和所述排序任务中的每一个可拆分为多个任务原子。示例性的,将传统的基金量化排序过程分成数据获取任务、指标计算任务和排序任务三大类任务。在每个任务大类中,根据所需要获取数据的不同、计算指标的不同、排序基金类型的不同,对每个大类需要进行的处理任务进行详细拆分,获得组成基金量化排序过程的任务原子。数据获取任务的任务原子包括获取及清洗基金日收益信息、基金对应基准日收益信息、基金季报中的持仓信息等。指标计算任务的任务原子包括基础指标计算和复合指标计算两小类,其中,基础指标包括一定时间段内的最大回撤、基金相对基准的超额收益、跟踪误差等;复合指标包括夏普比率,卡玛比率等。根据基金类型使用不同指标及权重不同,排序任务的任务原子包括对固定收益类,权益投资类,境外基金类,指数类基金分别使用不同的基础数据、计算指标及权重进行排序。所述依赖关系用于表示任务原子之间的执行的依赖顺序,例如,要执行基金区间最大回撤计算任务原子,需要先执行获取基金收益数据任务原子;要执行基金超额收益计算任务原子,需要先执行获取基金收益数据任务原子和获取基金基准收益数据任务原子。
在操作S230,基于所述多个任务原子及依赖关系,构建所述排序流程的有向无环图,其中,所述有向无环图包括多个顶点和多条边,所述多个顶点中的每一个顶点对应一个任务原子,所述多条边中的每一条边表示该条边所连接的两个顶点之间的依赖关系。
在操作S240,遍历所述有向无环图,以执行所述多个顶点对应的任务原子,从而生成基金产品的排序结果,其中,在遍历所述有向无环图,以执行所述多个顶点对应的任务原子的步骤中,并行执行至少两个独立顶点对应的任务原子,其中,所述至少两个独立顶点之间不存在任何边相连。由于独立顶点对应的任务原子可以并行执行,从而加快了整体的计算速度。在最终完成基金量化排序过程有向无环图遍历执行后,可以得到最终的基金量化排序结果。
图3示意性示出了根据本公开实施例的执行多个顶点对应的任务原子的流程图。
如图3所示,该实施例的执行多个顶点对应的任务原子包括操作S310~操作S330。
在操作S310,利用广度优先遍历方法获取多个当前候选执行顶点。其中,广度优先遍历是从起点出发,先执行距离起点最近的一层中的顶点,执行完毕之后,再执行下一层的顶点。
在操作S320,从所述多个当前候选执行顶点中筛选出所有当前可执行顶点。由于各个顶点执行的速度并不相同,因此会出现某个顶点的前序顶点尚未执行完毕,因此当前顶点不可执行的状态,因此需要进行筛选。
在操作S330,并行执行与所述当前可执行顶点对应的任务原子,以加快整体的排序速度。
图4示意性示出了根据本公开实施例的从多个当前候选执行顶点中筛选出当前可执行顶点的流程图。
如图4所示,该实施例的从多个当前候选执行顶点中筛选出所有当前可执行顶点方法包括操作S410~操作S430。
在操作S410,对所述多个当前候选执行顶点中的每一个当前候选执行顶点,确定与所述每一个当前候选执行顶点相关联的至少一个前序顶点,其中,所述至少一个前序顶点与所述每一个当前候选执行顶点之间存在至少一条边相连,表示当前候选执行顶点与前序顶点之间存在依赖关系,当前候选执行顶点是否能执行取决于前序顶点的执行状态。
在操作S420,判断所述至少一个前序顶点当前的执行状态。由于前序顶点可能不唯一,因此所有前序顶点当前的执行状态都需要判断。
在操作S430,当所述至少一个前序顶点当前的执行状态是执行完成时,确定所述当前候选执行顶点是当前可执行顶点。由于前序顶点可能不唯一,只有所有前序顶点当前的执行状态是执行完成,则表示所述至少一个前序顶点当前的执行状态是执行完成,当前候选执行顶点是当前可执行顶点。示例性的,如果在有向无环图中所有以当前顶点为结束的边所对应的开始顶点所关联的任务原子是执行完成状态,则表示当前顶点关联的任务所依赖的全部任务原子已经执行完成,即所有前序顶点当前的执行状态是执行完成,此时可以执行当前顶点所关联的任务原子。
如图4所示,该实施例的从多个当前候选执行顶点中筛选出当前可执行顶点方法还包括操作S440。
在操作S440,当所述至少一个前序顶点当前的执行状态是未完成执行时,确定所述当前候选执行顶点是当前不可执行的顶点。由于前序顶点可能不唯一,只要有一个前序顶点当前的执行状态是未完成执行,则表示至少一个前序顶点当前的执行状态是未完成执行,当前候选执行顶点是当前不可执行的顶点。示例性的,如所依赖的任务原子没有全部执行完成,则当前顶点所关联的任务原子进入等待模式,等待所有依赖的任务原子全部执行完成。执行完当前顶点的任务原子后,可以继续对有向无环图进行广度优先遍历。
图5示意性示出了根据本公开实施例的基金产品排序流程的有向无环图的示意图。
如图5所示,数据获取任务的任务原子包括获取行业分类数据、获取基金经理数据、获取基金基础数据1、获取基金基础数据2、获取基金资产配置数据、获取基金收益数据、获取基金基准收益数据和获取分类表数据等。指标计算任务的任务原子包括基金投资板块权重计算、基金区间最大回撤计算、跟踪误差计算、基金超额收益计算、基金分类指标计算、风格指标计算、信息比率计算和Calmar指标计算等。排序任务的任务原子包括境外基金排序、主动权益排序、被动权益排序、主动债券排序、货币基金排序等。其中,这些任务原子中的部分原子之间有一定的依赖关系,例如基金区间最大回撤计算需要先获取基金收益数据;基金超额收益计算需要先获取基金收益数据和基金基准收益数据。但剩下的任务原子之间没有任何依赖关系,比如在获取基金资产配置数据的同时,也可以获取基准收益数据,或计算超额收益、最大回撤等指标。使用有向无环图中的顶点表达每个任务原子,从被依赖的任务原子所关联的顶点链接一条有方向的边到依赖的任务原子所关联的顶点,表达两个任务原子之间存在依赖关系。经过在任务原子之间进行若干次有向链接,可以完整构建出描述基金量化排序过程的有向无环图。例如,境外基金排序依赖基金超额收益计算的结果,基金超额收益计算依赖于基金的收益数据和基金基准的收益数据,通过一条有方向的线,链接获取基金收益数据顶点和基金简超额收益计算顶点,表达两个顶点执行的先后顺序。
遍历执行基金量化排序过程有向无环图中的每个顶点。对有向无环图进行广度优先遍历,遍历过程中尝试执行每一个顶点关联的任务原子。如果在有向无环图中所有以当前顶点为结束的边所对应的开始顶点所关联的任务原子是执行完成状态,则表示当前顶点关联的任务所依赖的全部任务原子已经执行完成,可以执行当前顶点所关联的任务原子。如所依赖的任务原子没有全部执行完成,则当前顶点所关联的任务原子进入等待模式,等待所有依赖的任务原子全部执行完成。执行完当前顶点的任务原子后,可以继续对有向无环图进行广度优先遍历。在最终完成基金量化排序过程有向无环图遍历执行后,可以得到最终的基金量化排序结果。如图5所示,在广度优先遍历时,可以同时并行执行获取行业分类数据、获取基金经理数据、获取基金基础数据等无依赖关系顶点所关联的任务,以加快计算速度。但由于存在依赖关系,只有获取行业分类数据顶点及基金资产配置数据顶点所有关联的任务都执行完成后,才可执行基金投资板块权重计算顶点所关联的任务原子。
本公开实施例提供的基于有向无环图的基金产品排序方法,将基金产品的排序流程进行细粒度拆分,得到与排序流程对应的多个任务原子,构建排序流程的有向无环图,明确表达计算任务之间的依赖关系,增加基金量化排序执行过程的并行性,从而简化了排序过程,大大加快基金的排序速度。
图6示意性示出了根据本公开实施例的执行导出子图中的所有顶点对应的任务原子的流程图。
如图6所示,该实施例的执行导出子图中的所有顶点对应的任务原子包括操作S610~操作S650。
在操作S610,确定所述多个顶点中至少一个顶点对应的任务原子的执行状态。
在操作S620,当至少一个顶点对应的任务原子的执行状态为执行失败时,确定执行失败的任务原子对应的至少一个顶点为失败顶点。
在操作S630,基于所述所述失败顶点,形成失败顶点集合,其中,所述失败顶点集合中的顶点包括所有所述失败顶点。由于对有向无环图执行的是广度优先遍历操作,因此,执行失败的顶点只会影响其下游的顶点,因此,在恢复操作时,只需要重新执行失败顶点和与失败顶点相关联的下游顶点即可。
在操作S640,基于所述有向无环图和所述失败顶点集合,生成导出子图,其中,所述导出子图包括所述失败顶点集合中的所有失败顶点和与所述失败顶点通过至少一条边相连且位于所述失败顶点下游的所有可达顶点,以及连接所有顶点的多条边。
以有向无环图中的某个节点为顶点集生成的导出子图,表达当前顶点对整个基金量化排序过程所产生的影响。
在操作S650,遍历所述导出子图,以重新执行所述导出子图中的所有顶点对应的任务原子。基于有向无环图的导出子图,可以明确发生错误时的影响范围,避免重新执行整个量化排序过程,加快从执行错误中恢复的速度。
在本公开实施例中,通过执行以失败顶点为顶点集的导出子图,明确出错时影响的范围,只需要重新执行受影响的顶点,而不是整个基金排序过程,从而可以加快从基金量化排序过程中错误恢复的速度
根据本公开的实施例,在所述遍历所述导出子图,以重新执行所述导出子图中的所有顶点对应的任务原子的步骤中,并行执行至少两个独立顶点对应的任务原子,其中,所述至少两个独立顶点之间不存在任何边相连。由于在实际执行时,可能出现多个顶点都执行失败的情况,此时利用所有失败顶点形成一个失败顶点集合,相应的导出子图中也包括该失败顶点集合中的所有失败顶点和与失败顶点通过至少一条边相连且位于所述失败顶点下游的所有可达顶点以及连接所有顶点的多条边。此时可通过广度优先遍历所述导出子图,获取多个当前候选执行顶点,然后基于前序顶点的执行状态,从所述多个当前候选执行顶点中筛选出所有当前可执行顶点,并行执行所述导出子图至少两个独立顶点对应的任务原子,以进一步缩短恢复时间,加快从错误中恢复的速度。
图7示意性示出了根据本公开实施例的基金产品排序流程的失败顶点集合的导出子图的示意图。
如图7所示,当需要从执行错误中恢复时,仅需要遍历执行以发生执行错误的失败顶点集合生成的导出子图,而不需要重新执行整个基金量化排序过程,可以缩短从错误中恢复的时间。例如当获取基金资产配置数据任务原子执行失败时,确认该执行失败的任务原子对应的获取基金资产配置数据顶点为失败顶点,然后基于图5所示的有向无环图和失败顶点,形成失败顶点集合,其中,失败顶点集合中的顶点包括获取基金资产配置数据顶点,基于有向无环图和失败顶点集合,生成的导出子图如图7所示,其中,导出子图中包括和与获取基金资产配置数据顶点通过至少一条边相连且位于获取基金资产配置数据顶点下游的所有顶点,具体有基金投资板块权重计算、风格指标计算、主动权益排序和货币基金排序,以及连接顶点的多条边。当恢复失败顶点时候,只需要将该导出子图中的所有顶点重新遍历执行即可,不需要将筛选流程整体重新执行,从而缩短恢复时间,加快从错误中恢复的速度。
图8示意性示出了根据本公开另一实施例的基金产品排序流程的失败顶点集合的导出子图的示意图。
如图8所示,当有两个失败顶点时,如获取行业分类数据任务原子也执行失败时,确认该执行失败的任务原子对应的获取基金资产配置数据顶点也为失败顶点,此时失败顶点有两个,分别为获取行业分类数据顶点和获取基金资产配置数据顶点。基于图5所示的有向无环图和两个失败顶点,形成一个失败顶点集合,以该失败顶点集合最终生成的导出子图如图8所示。然后当恢复失败顶点时候,将该导出子图中的所有顶点重新遍历执行即可,其中,由于获取行业分类数据和获取基金资产配置数据是两个独立的任务原子,可以并行执行,从而进一步缩短恢复时间,加快从错误中恢复的速度。
图9示意性示出了根据本公开实施例的确定影响至少一个排序任务原子的排序结果的影响顶点集合的流程图。
如图9所示,该实施例的确定影响至少一个排序任务原子的排序结果的影响顶点集合包括操作S910~操作S920。
在操作S910,对所述有向无环图整体取反,得到所述基金产品的排序流程的反向图。
在操作S920,基于所述反向图,针对至少一个排序任务原子,确定影响所述至少一个排序任务原子的排序结果的影响顶点集合,其中,所述影响顶点集合中的顶点包括在所述反向图中与所述至少一个排序任务原子通过至少一条边相连且位于所述至少一个排序任务原子对应的顶点下游的所有可达顶点。当需要分析排序结果时,可以直观获取当前结果所依赖的基础数据或指标。
根据本公开的实施例,所述数据获取任务包括多个数据获取任务原子,所述指标计算任务包括多个指标计算任务原子,例如,数据获取任务的任务原子包括获取行业分类数据、获取基金经理数据、获取基金基础数据1、获取基金基础数据2、获取基金资产配置数据、获取基金收益数据、获取基金基准收益数据和获取分类表数据等。指标计算任务的任务原子包括基金投资板块权重计算、基金区间最大回撤计算、跟踪误差计算、基金超额收益计算、基金分类指标计算、风格指标计算、信息比率计算和Calmar指标计算等。所述方法还包括:基于所述反向图和所述至少一个排序任务原子对应的顶点,生成反向导出子图,其中,所述反向导出子图包括所述至少一个排序任务原子对应的顶点和所述影响顶点集合中的所有顶点,以及在所述反向图中连接所有顶点的多条边;以及根据所述反向导出子图,确定影响所述至少一个排序任务原子的至少一个数据获取任务原子和至少一个指标计算任务原子。以不同排序任务的任务原子对应的顶点为顶点集,分别生成导出子图,可以清晰的表达出当前类型基金排序时所依赖的数据和指标。此外,当需要分析某类基金排序结果时,仅需要关注反向图中以此顶点为顶点集的导出子图中所涉及的任务原子,相比传统方式,大大提高了结果分析时的直观程度,需要说明的是,是以至少一个排序任务原子对应的顶点,生成反向导出子图,而不是基于影响顶点集合生成导出子图,此处影响顶点集合与上述失败顶点集合不同。
根据本公开的实施例,所述方法还包括:调整所述至少一个数据获取任务原子的数据获取方式,和/或,调整所述至少一个指标计算任务原子的参数设置方式,用于影响基金排序结果。例如,可以调整获取行业分类数据的方式,或者调整信息比率计算时的参数设置,从而使得基金排序结果更加准确。
图10示意性示出了根据本公开实施例的基金产品排序流程的反向图的示意图。
如图10所示,通过对图5的有向无环图进行整体取反,可以获得基金产品排序流程的反向图。通过边的连接可以看到任务原子之间的依赖关系。例如,主动债券基金排序任务原子与Calmar指标计算任务原子和获取基金经理数据任务原子相连,Calmar指标计算任务原子又与基金最大回撤指标计算任务原子、获取基金经理数据任务原子相连,因此,主动债券基金排序任务原子与Calmar指标计算任务原子、基金最大回撤指标计算任务原子、获取基金经理数据任务原子及获取基金收益数据任务原子相连,即,影响主动债券基金排序结果的指标计算有Calmar指标计算、基金最大回撤指标计算,影响主动债券基金排序结果的数据获取有获取基金经理数据和获取基金收益数据。当分析主动债券基金排序任务原子的排序结果时,只需要关注Calmar指标计算、基金最大回撤指标计算、获取基金经理数据及获取基金收益数据,结果展示非常直观。其余的顶点由于并未与主动债券基金排序任务原子相关联,因此,不会对其排序结果造成影响。当需要调整数据获取任务原子的数据获取方式或者指标计算任务原子的参数设置方式时,只需要调整Calmar指标计算任务原子和基金最大回撤指标计算任务原子的参数设置方式,以及获取基金经理数据任务原子和获取基金收益数据任务原子的数据获取方式即可。
根据本公开的实施例,所述指标计算任务原子包括基础指标计算任务原子和复合指标计算任务原子,其中,所述基础指标计算任务原子用于利用所述至少一个数据获取任务原子获取的数据计算基础指标,所述复合指标计算任务原子用于利用所述至少一个数据获取任务原子获取的数据和所述基础指标计算复合指标。例如,图5中的基础指标计算任务原子包括基金区间最大回撤计算任务原子,其的计算只依赖获取基金收益数据任务原子;复合指标计算任务原子包括Calmar指标计算任务原子,其的计算需要依赖基金区间最大回撤计算任务原子和获取基金收益数据任务原子。
基于上述基于有向无环图的基金产品排序方法,本公开还提供了一种基于有向无环图的基金产品排序装置。以下将结合图11对该装置进行详细描述。
图11示意性示出了根据本公开实施例的基于有向无环图的基金产品排序装置的结构框图。
如图11所示,该实施例的基于有向无环图的基金产品排序装置1100包括第一确定模块1110、拆分模块1120、构建模块1130和排序结果生成模块1140。
第一确定模块1110,用于确定基金产品的排序流程,所述排序流程包括数据获取任务、指标计算任务和排序任务。在一实施例中,第一确定模块1110可以用于执行前文描述的操作S210,在此不再赘述。
拆分模块1120,用于对所述排序流程进行细粒度拆分,得到与所述排序流程对应的多个任务原子及依赖关系,其中,所述数据获取任务、所述指标计算任务和所述排序任务中的每一个可拆分为多个任务原子。在一实施例中,拆分模块1120可以用于执行前文描述的操作S220,在此不再赘述。
构建模块1130,用于基于所述多个任务原子及依赖关系,构建所述排序流程的有向无环图,其中,所述有向无环图包括多个顶点和多条边,所述多个顶点中的每一个顶点对应一个任务原子,所述多条边中的每一条边表示该条边所连接的两个顶点之间的依赖关系。在一实施例中,构建模块1130可以用于执行前文描述的操作S230,在此不再赘述。
排序结果生成模块1140,用于遍历所述有向无环图,以执行所述多个顶点对应的任务原子,从而生成基金产品的排序结果,其中,在遍历所述有向无环图,以执行所述多个顶点对应的任务原子的步骤中,并行执行至少两个独立顶点对应的任务原子,其中,所述至少两个独立顶点之间不存在任何边相连。在一实施例中,排序结果生成模块1140可以用于执行前文描述的操作S240,在此不再赘述。
根据本公开的实施例,所述排序结果生成模块包括遍历单元,用于利用广度优先遍历方法获取多个当前候选执行顶点;筛选单元,用于从所述多个当前候选执行顶点中筛选出所有当前可执行顶点;以及并行执行单元,用于并行执行与所述当前可执行顶点对应的任务原子。
根据本公开的实施例,所述筛选单元包括第一确定子模块,用于对所述多个当前候选执行顶点中的每一个当前候选执行顶点,确定与所述每一个当前候选执行顶点相关联的至少一个前序顶点,其中,所述至少一个前序顶点与所述每一个当前候选执行顶点之间存在至少一条边相连;第一判断子模块,用于判断所述至少一个前序顶点当前的执行状态;以及第二确定子模块,用于当所述至少一个前序顶点当前的执行状态是执行完成时,确定所述当前候选执行顶点是当前可执行顶点。
根据本公开的实施例,所述筛选单元还包括第三确定子模块,用于当所述至少一个前序顶点当前的执行状态是未完成执行时,确定所述当前候选执行顶点是当前不可执行的顶点。
根据本公开的实施例,所述装置还包括:第二确定模块,用于确定所述多个顶点中至少一个顶点对应的任务原子的执行状态;第三确定模块,用于当至少一个顶点对应的任务原子的执行状态为执行失败时,确定执行失败的任务原子对应的至少一个顶点为失败顶点;第一顶点集合生成模块,用于基于所述失败顶点,形成失败顶点集合,其中,所述失败顶点集合中的顶点包括所有所述失败顶点;导出子图生成模块,用于基于所述有向无环图和所述失败顶点集合,生成导出子图,其中,所述导出子图包括所述失败顶点集合中的所有失败顶点和与所述失败顶点通过至少一条边相连且位于所述失败顶点下游的所有可达顶点,以及连接所有顶点的多条边;以及遍历模块,用于遍历所述导出子图,以重新执行所述导出子图中的所有顶点对应的任务原子。
根据本公开的实施例,所述遍历模块还用于并行执行至少两个独立顶点对应的任务原子,其中,所述至少两个独立顶点之间不存在任何边相连。
根据本公开的实施例,所述排序任务包括多个排序任务原子,所述装置还包括:反向图生成模块,用于对所述有向无环图整体取反,得到所述基金产品的排序流程的反向图;以及第二顶点集合生成模块,用于基于所述反向图,针对至少一个排序任务原子,确定影响所述至少一个排序任务原子的排序结果的影响顶点集合,其中,所述影响顶点集合中的顶点包括在所述反向图中与所述至少一个排序任务原子通过至少一条边相连且位于所述至少一个排序任务原子对应的顶点下游的所有可达顶点。
根据本公开的实施例,所述数据获取任务包括多个数据获取任务原子,所述指标计算任务包括多个指标计算任务原子,所述装置还包括:反向导出子图生成模块,用于基于所述反向图和所述至少一个排序任务原子对应的顶点,生成反向导出子图,其中,所述反向导出子图包括所述至少一个排序任务原子对应的顶点和所述影响顶点集合中的所有顶点,以及在所述反向图中连接所有顶点的多条边;以及第四确定模块,用于根据所述反向导出子图,确定影响所述至少一个排序任务原子的至少一个数据获取任务原子和至少一个指标计算任务原子。
根据本公开的实施例,所述装置还包括:第一调整模块,用于调整所述至少一个数据获取任务原子的数据获取方式,和/或,第二调整模块,用于调整所述至少一个指标计算任务原子的参数设置方式。
根据本公开的实施例,第一确定模块1110、拆分模块1120、构建模块1130和排序结果生成模块1140中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一确定模块1110、拆分模块1120、构建模块1130和排序结果生成模块1140中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一确定模块1110、拆分模块1120、构建模块1130和排序结果生成模块1140中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图12示意性示出了根据本公开实施例的适于实现基于有向无环图的基金产品排序方法的电子设备的方框图。
如图12所示,根据本公开实施例的电子设备1200包括处理器1201,其可以根据存储在只读存储器(ROM)1202中的程序或者从存储部分1208加载到随机访问存储器(RAM)1203中的程序而执行各种适当的动作和处理。处理器1201例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器1201还可以包括用于缓存用途的板载存储器。处理器1201可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1203中,存储有电子设备1200操作所需的各种程序和数据。处理器1201、ROM 1202以及RAM 1203通过总线1204彼此相连。处理器1201通过执行ROM 1202和/或RAM1203中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 1202和RAM 1203以外的一个或多个存储器中。处理器1201也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备1200还可以包括输入/输出(I/O)接口1205,输入/输出(I/O)接口1205也连接至总线1204。电子设备1200还可以包括连接至I/O接口1205的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1207;包括硬盘等的存储部分1208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1209。通信部分1209经由诸如因特网的网络执行通信处理。驱动器1210也根据需要连接至I/O接口1205。可拆卸介质1211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1210上,以便于从其上读出的计算机程序根据需要被安装入存储部分1208。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 1202和/或RAM 1203和/或ROM 1202和RAM 1203以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例的方法。
在该计算机程序被处理器1201执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分1209被下载和安装,和/或从可拆卸介质1211被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分1209从网络上被下载和安装,和/或从可拆卸介质1211被安装。在该计算机程序被处理器1201执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (12)
1.一种基于有向无环图的基金产品排序方法,其特征在于,所述方法包括:
确定基金产品的排序流程,所述排序流程包括数据获取任务、指标计算任务和排序任务三大类;
对所述排序流程进行细粒度拆分,得到与所述排序流程对应的多个任务原子及依赖关系,其中,所述数据获取任务、所述指标计算任务和所述排序任务中的每一个可拆分为多个任务原子;
基于所述多个任务原子及依赖关系,构建所述排序流程的有向无环图,其中,所述有向无环图包括多个顶点和多条边,所述多个顶点中的每一个顶点对应一个任务原子,所述多条边中的每一条边表示该条边所连接的两个顶点之间的依赖关系;
遍历所述有向无环图,以执行所述多个顶点对应的任务原子,其中,在遍历所述有向无环图,以执行所述多个顶点对应的任务原子的步骤中,并行执行至少两个独立顶点对应的任务原子,其中,所述至少两个独立顶点之间不存在任何边相连;
确定所述多个顶点中至少一个顶点对应的任务原子的执行状态;
当至少一个顶点对应的任务原子的执行状态为执行失败时,确定执行失败的任务原子对应的至少一个顶点为失败顶点;
基于所述失败顶点,形成失败顶点集合,其中,所述失败顶点集合中的顶点包括所有所述失败顶点;
基于所述有向无环图和所述失败顶点集合,生成导出子图,其中,所述导出子图包括所述失败顶点集合中的所有失败顶点和与所述失败顶点通过至少一条边相连且位于所述失败顶点下游的所有可达顶点,以及连接所有顶点的多条边;以及
遍历所述导出子图,以重新执行所述导出子图中的所有顶点对应的任务原子,从而生成基金产品的排序结果。
2.根据权利要求1所述的方法,其特征在于,所述遍历所述有向无环图,以执行所述多个顶点对应的任务原子的步骤包括:
利用广度优先遍历方法获取多个当前候选执行顶点;
从所述多个当前候选执行顶点中筛选出所有当前可执行顶点;以及
并行执行与所述当前可执行顶点对应的任务原子。
3.根据权利要求2所述的方法,其特征在于,所述从所述多个当前候选执行顶点中筛选出当前所有可执行顶点的步骤包括:
对所述多个当前候选执行顶点中的每一个当前候选执行顶点,确定与所述每一个当前候选执行顶点相关联的至少一个前序顶点,其中,所述至少一个前序顶点与所述每一个当前候选执行顶点之间存在至少一条边相连;
判断所述至少一个前序顶点当前的执行状态;以及
当所述至少一个前序顶点当前的执行状态是执行完成时,确定所述当前候选执行顶点是当前可执行顶点。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当所述至少一个前序顶点当前的执行状态是未完成执行时,确定所述当前候选执行顶点是当前不可执行的顶点。
5.根据权利要求1所述的方法,其特征在于,在所述遍历所述导出子图,以重新执行所述导出子图中的所有顶点对应的任务原子的步骤中,并行执行至少两个独立顶点对应的任务原子,其中,所述至少两个独立顶点之间不存在任何边相连。
6.根据权利要求1所述的方法,其特征在于,所述排序任务包括多个排序任务原子,所述方法还包括:
对所述有向无环图整体取反,得到所述基金产品的排序流程的反向图;以及
基于所述反向图,针对至少一个排序任务原子,确定影响所述至少一个排序任务原子的排序结果的影响顶点集合,
其中,所述影响顶点集合中的顶点包括在所述反向图中与所述至少一个排序任务原子通过至少一条边相连且位于所述至少一个排序任务原子对应的顶点下游的所有可达顶点。
7.根据权利要求6所述的方法,其特征在于,所述数据获取任务包括多个数据获取任务原子,所述指标计算任务包括多个指标计算任务原子,所述方法还包括:
基于所述反向图和所述至少一个排序任务原子对应的顶点,生成反向导出子图,其中,所述反向导出子图包括所述至少一个排序任务原子对应的顶点和所述影响顶点集合中的所有顶点,以及在所述反向图中连接所有顶点的多条边;以及
根据所述反向导出子图,确定影响所述至少一个排序任务原子的至少一个数据获取任务原子和至少一个指标计算任务原子。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
调整所述至少一个数据获取任务原子的数据获取方式,和/或,调整所述至少一个指标计算任务原子的参数设置方式。
9.根据权利要求7所述的方法,其特征在于,所述指标计算任务原子包括基础指标计算任务原子和复合指标计算任务原子,其中,所述基础指标计算任务原子用于利用所述至少一个数据获取任务原子获取的数据计算基础指标,所述复合指标计算任务原子用于利用所述至少一个数据获取任务原子获取的数据和所述基础指标计算复合指标。
10.一种基于有向无环图的基金产品排序装置,包括:
第一确定模块,用于确定基金产品的排序流程,所述排序流程包括数据获取任务、指标计算任务和排序任务;
拆分模块,用于对所述排序流程进行细粒度拆分,得到与所述排序流程对应的多个任务原子及依赖关系,其中,所述数据获取任务、所述指标计算任务和所述排序任务中的每一个可拆分为多个任务原子;
构建模块,用于基于所述多个任务原子及依赖关系,构建所述排序流程的有向无环图,其中,所述有向无环图包括多个顶点和多条边,所述多个顶点中的每一个顶点对应一个任务原子,所述多条边中的每一条边表示该条边所连接的两个顶点之间的依赖关系;以及
排序结果生成模块,用于遍历所述有向无环图,以执行所述多个顶点对应的任务原子,其中,在遍历所述有向无环图,以执行所述多个顶点对应的任务原子的步骤中,并行执行至少两个独立顶点对应的任务原子,其中,所述至少两个独立顶点之间不存在任何边相连,
确定所述多个顶点中至少一个顶点对应的任务原子的执行状态;
当至少一个顶点对应的任务原子的执行状态为执行失败时,确定执行失败的任务原子对应的至少一个顶点为失败顶点;
基于所述失败顶点,形成失败顶点集合,其中,所述失败顶点集合中的顶点包括所有所述失败顶点;
基于所述有向无环图和所述失败顶点集合,生成导出子图,其中,所述导出子图包括所述失败顶点集合中的所有失败顶点和与所述失败顶点通过至少一条边相连且位于所述失败顶点下游的所有可达顶点,以及连接所有顶点的多条边;
遍历所述导出子图,以重新执行所述导出子图中的所有顶点对应的任务原子,从而生成基金产品的排序结果。
11.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~9中任一项所述的方法。
12.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211314879.8A CN115658749B (zh) | 2022-10-25 | 2022-10-25 | 基于有向无环图的基金产品排序方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211314879.8A CN115658749B (zh) | 2022-10-25 | 2022-10-25 | 基于有向无环图的基金产品排序方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115658749A CN115658749A (zh) | 2023-01-31 |
CN115658749B true CN115658749B (zh) | 2023-05-26 |
Family
ID=84991536
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211314879.8A Active CN115658749B (zh) | 2022-10-25 | 2022-10-25 | 基于有向无环图的基金产品排序方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115658749B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293971A (zh) * | 2016-08-15 | 2017-01-04 | 张家林 | 一种分布式任务调度的方法和装置 |
CN109523187A (zh) * | 2018-11-27 | 2019-03-26 | 北京字节跳动网络技术有限公司 | 任务调度方法、装置和设备 |
CN113434302A (zh) * | 2021-08-12 | 2021-09-24 | 阿里云计算有限公司 | 分布式作业执行方法、主节点、系统、物理机及存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10366084B2 (en) * | 2016-09-15 | 2019-07-30 | Microsoft Technology Licensing, Llc | Optimizing pipelining result sets with fault tolerance in distributed query execution |
US11288073B2 (en) * | 2019-05-03 | 2022-03-29 | D-Wave Systems Inc. | Systems and methods for calibrating devices using directed acyclic graphs |
CN110134505A (zh) * | 2019-05-15 | 2019-08-16 | 湖南麒麟信安科技有限公司 | 一种集群系统的分布式计算方法、系统及介质 |
CN113487268B (zh) * | 2021-07-26 | 2023-07-18 | 亿海蓝(北京)数据技术股份公司 | 船舶航线识别方法、装置、电子设备及存储介质 |
CN113535367B (zh) * | 2021-09-07 | 2022-01-25 | 北京达佳互联信息技术有限公司 | 任务调度方法及相关装置 |
CN113986503A (zh) * | 2021-10-29 | 2022-01-28 | 中国平安人寿保险股份有限公司 | 任务调度方法、任务调度装置、任务调度设备及存储介质 |
CN114237619A (zh) * | 2021-12-17 | 2022-03-25 | 龙芯中科技术股份有限公司 | 节点融合处理方法、装置及电子设备 |
CN114281552A (zh) * | 2022-01-12 | 2022-04-05 | 平安普惠企业管理有限公司 | 一种基于有向无环图的任务调度方法、装置、设备及介质 |
CN114691658A (zh) * | 2022-03-22 | 2022-07-01 | 北京百度网讯科技有限公司 | 一种数据回溯方法、装置、电子设备及存储介质 |
CN115185659A (zh) * | 2022-07-05 | 2022-10-14 | 江苏云从曦和人工智能有限公司 | 任务实例运行方法、装置以及计算机可读存储介质 |
-
2022
- 2022-10-25 CN CN202211314879.8A patent/CN115658749B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293971A (zh) * | 2016-08-15 | 2017-01-04 | 张家林 | 一种分布式任务调度的方法和装置 |
CN109523187A (zh) * | 2018-11-27 | 2019-03-26 | 北京字节跳动网络技术有限公司 | 任务调度方法、装置和设备 |
CN113434302A (zh) * | 2021-08-12 | 2021-09-24 | 阿里云计算有限公司 | 分布式作业执行方法、主节点、系统、物理机及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115658749A (zh) | 2023-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9569288B2 (en) | Application pattern discovery | |
CN111427971B (zh) | 用于计算机系统的业务建模方法、装置、系统和介质 | |
CN111857674B (zh) | 业务产品生成方法及装置、电子设备和可读存储介质 | |
CN114827280B (zh) | 请求处理方法、装置、设备、介质 | |
CN113205402A (zh) | 对账方法、装置、电子设备及计算机可读介质 | |
CN114116065A (zh) | 获取拓扑图数据对象的方法、装置、及电子设备 | |
US10885565B1 (en) | Network-based data discovery and consumption coordination service | |
CN115658749B (zh) | 基于有向无环图的基金产品排序方法、装置和电子设备 | |
CN111311305A (zh) | 基于用户轨迹解析用户公共流量带的方法及系统 | |
CN113515271B (zh) | 服务代码生成方法、装置、电子设备及可读存储介质 | |
CN115760013A (zh) | 运维模型的构建方法、装置、电子设备及存储介质 | |
CN115330540A (zh) | 一种处理交易数据的方法和装置 | |
CN114490136A (zh) | 服务调用和提供方法、装置、电子设备、介质和程序产品 | |
CN113436003A (zh) | 时长确定方法、装置、电子设备、介质和程序产品 | |
CN113961797A (zh) | 资源推荐方法、装置、电子设备和可读存储介质 | |
US10475101B1 (en) | Determining potential causes of an issue associated with recommendations and changing recommendation filter settings based on the outcome of an action | |
CN113971007B (zh) | 信息处理方法、装置、电子设备及介质 | |
US11803416B1 (en) | Selection and management of devices for performing tasks within a distributed computing system | |
US20230306481A1 (en) | Digital artifact marketplace | |
CN116719949A (zh) | 跨媒体知识图谱的自助导航方法、装置、设备和存储介质 | |
CN116301732A (zh) | 用例的资产架构分析方法及系统 | |
CN113283829A (zh) | 成本信息确定方法、装置、电子设备和计算机可读介质 | |
CN116341945A (zh) | 对象评估方法及装置、电子设备和计算机可读存储介质 | |
CN113421152A (zh) | 由电子设备执行的任务执行方法及装置、电子设备 | |
CN117787963A (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 | ||
GR01 | Patent grant |