CN109165863B - 基于分布式数据流基金资产实时估值的方法、系统及应用 - Google Patents
基于分布式数据流基金资产实时估值的方法、系统及应用 Download PDFInfo
- Publication number
- CN109165863B CN109165863B CN201811039814.0A CN201811039814A CN109165863B CN 109165863 B CN109165863 B CN 109165863B CN 201811039814 A CN201811039814 A CN 201811039814A CN 109165863 B CN109165863 B CN 109165863B
- Authority
- CN
- China
- Prior art keywords
- fund
- data
- product
- task
- calculation
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0639—Performance analysis of employees; Performance analysis of enterprise or organisation operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/06—Asset management; Financial planning or analysis
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Human Resources & Organizations (AREA)
- Development Economics (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Economics (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Game Theory and Decision Science (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Educational Administration (AREA)
- Physics & Mathematics (AREA)
- Operations Research (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Technology Law (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明提出一种分布式数据流基金资产实时估值的方法、系统及应用在横向扩展基础计算资源的基础上,能够稳定快速进行大量基金资产数据导入并处理是实时计算,可以满足10000支产品3秒内完成基金所有资产的估值核算,同时输出资产净值、单位净值、实收资本等关键指标数据。解决了基金管理人无法实时获取基金资产净值波动的问题,使用户能够在市场行情波动以及基金经理投资后立马获取基金实时的资产净值。使用本发明方法和系统投资人员能够在日间及时准确感知基金投资结果,基金经理在投资后能立即感知基金净值的变化,能获取反馈基金净值。本发明方法和系统。
Description
技术领域
本发明涉及一种基于分布式数据流的实时计算方法,具体的说是一种基于分布式数据流基金资产实时估值的方法、系统及应用,应用于证券行业基金资产实时估值并快速发布实时资产净值、实时单位净值。
背景技术
基金估值是指按照公允价格对基金资产和负债的价值进行计算、评估,以确定基金资产净值和基金份额净值的过程。基金估值过程中涉及数据导入、清算、核算等步骤,随着私募基金产品越来越多,交易量越来越庞大,基金估值所消耗的时间也在不断增长。
目前传统估值仅能在日终进行估值,大量的估值产品同一时刻进行处理,对于数据库以及计算核心有很高的要求,且随着产品增多,完成1000个产品单次估值至少需要20分钟以上的时间(市场上成熟产品:赢时胜和恒生相关估值系统均在此范围);即使具备实时估值的能力,其单次估值间隔至少在分钟级别以上。
随着基金经理对于投资的风控、止损、投资效率的关注,对于基金整体净值的掌握要求越来越高,传统估值只能在日终进行相关资产估值,投资人员无法在日间及时准确感知基金投资结果。如何让基金经理在投资后立马感知基金净值的变化是一个重要的辅助决策问题,而受限于估值数据以及估值效率的影响,无法立马反馈基金净值。因此如何能够稳定快速进行大量基金资产数据导入并处理是实时计算的一个重要问题。
发明内容
为了解决上述技术问题,本发明提出一种基于分布式数据流基金资产实时估值的方法,包括以下步骤:
步骤1、产品基础数据同步;根据产品类别、产品资金账户、产品证券账户,使用多线程按照数据来源分类抽取基金估值所需最近日期的估值表、交易数据、汇率数据、基金申购赎回数据至Redis中;
步骤2、数据分布化;获取到步骤1相应数据后,根据产品账户进行分类,将相同产品的相同类型数据分别归类,并按照产品代码、表名、日期等作为主键,数据内容作为键值存储至内存数据库Redis中进行数据分布化;
步骤3、实时交易数据同步;根据产品类别、产品资金账户、产品证券账户,使用多线程按照数据来源分类抽取基金估值所需实时交易数据至Redis中,剔除上次已抽取数据,同时记录本次数据抽取位置;执行完本步骤后进行步骤4;
步骤4、持仓计算任务生成;根据产品列表,生成唯一任务ID、任务生成时间以及待估值产品代码,拼接后形成任务信息表;通过消息分发服务高吞吐量的分布式发布订阅消息系统中不同的消息主题TOPIC,向服务端分别发布持仓计算任务和基金净值计算任务;
步骤5、计算任务分布化;本步骤在服务端完成,由流式处理框架storm进行自动分布式计算,根据步骤4中的任务信息表,将任务拆分为“任务号+时间+产品代码”的格式,并将各任务分发至流式处理框架storm中的计算核心进行计算,同时由流式处理框架storm进行自动负载均衡。
步骤6、持仓分布式计算;每个计算核心以产品为维度进行计算;在收到持仓计算任务时,每个计算核心从Redis中根据主键获取待计算产品的基础持仓,根据步骤1和步骤2所生成的Redis;然后计算核心从Redis中获取基金交易数据,根据步骤3和步骤2所生成的Redis,在计算核心内存重新计算基金的持仓数据,并将最新持仓更新至Redis中;
步骤7、基金净值行情分布式计算;每个计算核心以产品为维度进行计算;在收到行情更新任务时,每个计算核心从Redis中根据主键获取待计算产品的最新持仓表,根据步骤6更新;然后计算核心根据持仓表逐个获取持仓证券的行情,从Redis中行情源获取,并计算各持仓证券的市值;计算核心加总所有资产净值后利用公式“单位净值=round(资产净值/基金份额,4)”,得出最终的基金净值行情;最后通过消息分发服务kafka将结果发布到指定消息主题TOPIC中,并通过消息分发服务kafka负载均衡分散至不同的消息主题TOPIC分区中;
步骤8、接收计算结果;客户端根据基金净值结果消息主题TOPIC的分区数量建立对应的线程;当基金净值行情结果中存在未消费数据,对应线程将接受数据,按照当前任务ID过滤,满足条件存入内存中;当接受到所有产品估值结果后,将内存中结果转存,并存储至数据库中;完成单次估值后等待定时器触发步骤3或者步骤4。
进一步优选地,所述步骤3实时交易数据同步,根据基金实时交易抽取定时器触发本步骤;所述步骤4持仓计算任务生成;根据基金行情生成定时器触发本步骤。
进一步优选地,步骤4持仓计算任务生成,所述消息分发服务Kafka为高吞吐量的分布式发布订阅消息系统。
进一步优选地,步骤5计算任务分布化,所述流式处理框架storm为分布式流式处理框架。
进一步地,本发明还提出一种基于分布式数据流基金资产实时估值的系统,包括:控制台,服务端,客户端;所述控制台包括:
产品基础数据同步模块;所述产品基础数据同步模块根据产品类别、产品资金账户、产品证券账户,使用多线程按照数据来源分类抽取基金估值所需最近日期的估值表、交易数据、汇率数据、基金申购赎回数据;
数据分布化模块;所述数据分布化模块在基础数据同步模块中获取到相应数据后,根据产品账户进行分类,将相同产品的相同类型数据分别归类,并按照产品代码、表名、日期等作为主键,数据内容作为键值存储至内存数据库Redis中进行数据分布化;
实时交易数据同步模块;所述实时交易数据同步模块,根据产品类别、产品资金账户、产品证券账户,使用多线程按照数据来源分类抽取基金估值所需实时交易数据,剔除上次已抽取数据,同时记录本次数据抽取位置;本模块执行完后进行持仓计算任务生成模块的执行;
以及,持仓计算任务生成模块;所述持仓计算任务生成模块,根据产品列表,生成唯一任务ID、任务生成时间以及待估值产品代码,拼接后形成任务信息表;通过消息分发服务Kafka中不同的消息主题TOPIC,向服务端分别发布持仓计算任务和基金净值计算任务;
所述服务端包括:
计算任务分布化模块;所述计算任务分布化模块由流式处理框架storm进行自动分布式计算,将实时交易数据同步模块中的任务信息表中的任务拆分为“任务号+时间+产品代码”的格式,并将各任务分发至流式处理框架storm中的计算核心进行计算,同时由流式处理框架storm进行自动负载均衡;
持仓分布式计算模块;所述持仓分布式计算模块,每个计算核心以产品为维度进行计算;在收到持仓计算任务时,每个计算核心从Redis中根据主键获取待计算产品的基础持仓,根据产品基础数据同步模块和数据分布化模块所生成的Redis;然后计算核心从Redis中获取基金交易数据,(根据实时交易数据同步模块和数据分布化模块所生成的Redis,在计算核心内存重新计算基金的持仓数据,并将最新持仓更新至Redis中;
以及,基金净值行情分布式计算模块;所述基金净值行情分布式计算模块,每个计算核心以产品为维度进行计算;在收到行情更新任务时,每个计算核心从Redis中根据主键获取待计算产品的最新持仓表,最新持仓表根据持仓分布式计算模块更新获得;然后计算核心根据持仓表逐个获取持仓证券的行情,从Redis中行情源获取,并计算各持仓证券的市值;计算核心加总所有资产净值后利用公式“单位净值=round(资产净值/基金份额,4)”,得出最终的基金净值行情;最后通过消息分发服务kafka将结果发布到指定消息主题TOPIC中,并通过消息分发服务kafka负载均衡分散至不同的消息主题TOPIC分区中;
所述客户端包括:接收计算结果模块;所述接收计算结果模块,根据基金净值结果消息主题TOPIC的分区数量建立对应的线程;当基金净值行情结果中存在未消费数据,对应线程将接受数据,按照当前任务ID过滤,满足条件存入内存中;当接受到所有产品估值结果后,将内存中结果转存,并存储至数据库中;完成单次估值后等待定时器触发控制台中的实时交易数据同步模块或者持仓计算任务生成模块。
进一步优选地,所述实时交易数据同步模块,根据基金实时交易抽取定时器触发该模块;所述持仓计算任务生成模块,根据基金行情生成定时器触发该模块。
进一步优选地,持仓计算任务生成模块,所述消息分发服务Kafka为高吞吐量的分布式发布订阅消息系统。
进一步优选地,计算任务分布化模块,所述流式处理框架storm为分布式流式处理框架。
进一步地,本发明还提出基于分布式数据流基金资产实时估值的方法在证券行业基金资产实时估值并快速发布实时资产净值、实时单位净值的应用。
进一步地,本发明还提出基于分布式数据流基金资产实时估值的系统在证券行业基金资产实时估值并快速发布实时资产净值、实时单位净值的应用。
有益效果:本发明基于分布式数据流基金资产实时估值的方法、系统及应用在横向扩展基础计算资源的基础上,能够稳定快速进行大量基金资产数据导入并处理是实时计算,可以满足10000支产品3秒内完成基金所有资产的估值核算,同时输出资产净值、单位净值、实收资本等关键指标数据。解决了基金管理人无法实时获取基金资产净值波动的问题,使用户能够在市场行情波动以及基金经理投资后立马获取基金实时的资产净值。使用本发明方法和系统投资人员能够在日间及时准确感知基金投资结果,基金经理在投资后能立即感知基金净值的变化,能获取反馈基金净值。本发明方法和系统。
附图说明
图1为本发明架构图;
图2为本发明数据流转图;
图3显示在流式处理框架storm端的计算任务分布化(Product_Split_Bolt)以及持仓分布式计算(Product_Task_Bolt)的计算延时以及计算数量;
图4显示控制台中实时数据分布化、生成计算任务、接受计算结果等步骤。
具体实施方式
实施例1:如图1、2所示,一种基于分布式数据流基金资产实时估值的方法,包括以下步骤:
步骤1、产品基础数据同步;根据产品类别、产品资金账户、产品证券账户,使用多线程按照数据来源分类抽取基金估值所需最近日期的估值表、交易数据、汇率数据、基金申购赎回数据至Redis中;
步骤2、数据分布化;获取到步骤1相应数据后,根据产品账户进行分类,将相同产品的相同类型数据分别归类,并按照产品代码、表名、日期等作为主键,数据内容作为键值存储至内存数据库Redis中进行数据分布化;
步骤3、实时交易数据同步;根据产品类别、产品资金账户、产品证券账户,使用多线程按照数据来源分类抽取基金估值所需实时交易数据至Redis,剔除上次已抽取数据,同时记录本次数据抽取位置;执行完本步骤后进行步骤4;
步骤4、持仓计算任务生成;根据产品列表,生成唯一任务ID、任务生成时间以及待估值产品代码,拼接后形成任务信息表;通过消息分发服务高吞吐量的分布式发布订阅消息系统中不同的消息主题TOPIC,向服务端分别发布持仓计算任务和基金净值计算任务;
步骤5、计算任务分布化;本步骤在服务端完成,由流式处理框架storm进行自动分布式计算,根据步骤4中的任务信息表,将任务拆分为“任务号+时间+产品代码”的格式,并将各任务分发至流式处理框架storm中的计算核心进行计算,同时由流式处理框架storm进行自动负载均衡。
步骤6、持仓分布式计算;每个计算核心以产品为维度进行计算;在收到持仓计算任务时,每个计算核心从Redis中根据主键获取待计算产品的基础持仓,根据步骤1和步骤2所生成的Redis;然后计算核心从Redis中获取基金交易数据,根据步骤3和步骤2所生成的Redis,在计算核心内存重新计算基金的持仓数据,并将最新持仓更新至Redis中;
步骤7、基金净值行情分布式计算;每个计算核心以产品为维度进行计算;在收到行情更新任务时,每个计算核心从Redis中根据主键获取待计算产品的最新持仓表,根据步骤6更新;然后计算核心根据持仓表逐个获取持仓证券的行情,从Redis中行情源获取,并计算各持仓证券的市值;计算核心加总所有资产净值后利用公式“单位净值=round(资产净值/基金份额,4)”,得出最终的基金净值行情;最后通过消息分发服务kafka将结果发布到指定消息主题TOPIC中,并通过消息分发服务kafka负载均衡分散至不同的消息主题TOPIC分区中;
步骤8、接收计算结果;客户端根据基金净值结果消息主题TOPIC的分区数量建立对应的线程;当基金净值行情结果中存在未消费数据,对应线程将接受数据,按照当前任务ID过滤,满足条件存入内存中;当接受到所有产品估值结果后,将内存中结果转存,并存储至数据库中;完成单次估值后等待定时器触发步骤3或者步骤4。
进一步优选地,所述步骤3实时交易数据同步,根据基金实时交易抽取定时器触发本步骤;所述步骤4持仓计算任务生成;根据基金行情生成定时器触发本步骤。
进一步优选地,步骤4持仓计算任务生成,所述消息分发服务Kafka为高吞吐量的分布式发布订阅消息系统。
进一步优选地,步骤5计算任务分布化,所述流式处理框架storm为分布式流式处理框架。
本发明基于分布式数据流基金资产实时估值实时计算方法,在横向扩展基础计算资源的基础上,能够稳定快速进行大量基金资产数据导入并处理是实时计算,可以满足10000支产品3秒内完成基金所有资产的估值核算,同时输出资产净值、单位净值、实收资本等关键指标数据。解决了基金管理人无法实时获取基金资产净值波动的问题,使用户能够在市场行情波动以及基金经理投资后立马获取基金实时的资产净值。
实施例2:如图1、2所示,一种基于分布式数据流基金资产实时估值的系统,包括:控制台,服务端,客户端;所述控制台包括:
产品基础数据同步模块;所述产品基础数据同步模块根据产品类别、产品资金账户、产品证券账户,使用多线程按照数据来源分类抽取基金估值所需最近日期的估值表、交易数据、汇率数据、基金申购赎回数据;
数据分布化模块;所述数据分布化模块在基础数据同步模块中获取到相应数据后,根据产品账户进行分类,将相同产品的相同类型数据分别归类,并按照产品代码、表名、日期等作为主键,数据内容作为键值存储至内存数据库Redis中进行数据分布化;
实时交易数据同步模块;所述实时交易数据同步模块,根据产品类别、产品资金账户、产品证券账户,使用多线程按照数据来源分类抽取基金估值所需实时交易数据,剔除上次已抽取数据,同时记录本次数据抽取位置;本模块执行完后进行持仓计算任务生成模块的执行;
以及,持仓计算任务生成模块;所述持仓计算任务生成模块,根据产品列表,生成唯一任务ID、任务生成时间以及待估值产品代码,拼接后形成任务信息表;通过消息分发服务Kafka中不同的消息主题TOPIC,向服务端分别发布持仓计算任务和基金净值计算任务;
所述服务端包括:
计算任务分布化模块;所述计算任务分布化模块由流式处理框架storm进行自动分布式计算,将实时交易数据同步模块中的任务信息表中的任务拆分为“任务号+时间+产品代码”的格式,并将各任务分发至流式处理框架storm中的计算核心进行计算,同时由流式处理框架storm进行自动负载均衡;
持仓分布式计算模块;所述持仓分布式计算模块,每个计算核心以产品为维度进行计算;在收到持仓计算任务时,每个计算核心从Redis中根据主键获取待计算产品的基础持仓,根据产品基础数据同步模块和数据分布化模块所生成的Redis;然后计算核心从Redis中获取基金交易数据,(根据实时交易数据同步模块和数据分布化模块所生成的Redis,在计算核心内存重新计算基金的持仓数据,并将最新持仓更新至Redis中;
以及,基金净值行情分布式计算模块;所述基金净值行情分布式计算模块,每个计算核心以产品为维度进行计算;在收到行情更新任务时,每个计算核心从Redis中根据主键获取待计算产品的最新持仓表,最新持仓表根据持仓分布式计算模块更新获得;然后计算核心根据持仓表逐个获取持仓证券的行情,从Redis中行情源获取,并计算各持仓证券的市值;计算核心加总所有资产净值后利用公式“单位净值=round(资产净值/基金份额,4)”,得出最终的基金净值行情;最后通过消息分发服务kafka将结果发布到指定消息主题TOPIC中,并通过kafka负载均衡分散至不同的消息主题TOPIC分区中;
所述客户端包括:接收计算结果模块;所述接收计算结果模块,根据基金净值结果消息主题TOPIC的分区数量建立对应的线程;当基金净值行情结果中存在未消费数据,对应线程将接受数据,按照当前任务ID过滤,满足条件存入内存中;当接受到所有产品估值结果后,将内存中结果转存,并存储至数据库中;完成单次估值后等待定时器触发控制台中的实时交易数据同步模块或者持仓计算任务生成模块。
进一步优选地,所述实时交易数据同步模块,根据基金实时交易抽取定时器触发该模块;所述持仓计算任务生成模块,根据基金行情生成定时器触发该模块。
进一步优选地,持仓计算任务生成模块,所述消息分发服务Kafka为高吞吐量的分布式发布订阅消息系统。
进一步优选地,计算任务分布化模块,所述流式处理框架storm为分布式流式处理框架。
实施例3 :一种基于分布式数据流基金资产实时估值的方法在证券行业基金资产实时估值并快速发布实时资产净值、实时单位净值的应用。在证券行业基金资产实时估值并快速发布实时资产净值、实时单位净值中应用基于分布式数据流基金资产实时估值的方法。如图1、2所示,该方法包括:
步骤1、产品基础数据同步;根据产品类别、产品资金账户、产品证券账户,使用多线程按照数据来源分类抽取基金估值所需最近日期的估值表、交易数据、汇率数据、基金申购赎回数据至Redis;
步骤2、数据分布化;获取到步骤1相应数据后,根据产品账户进行分类,将相同产品的相同类型数据分别归类,并按照产品代码、表名、日期等作为主键,数据内容作为键值存储至内存数据库Redis中进行数据分布化;
步骤3、实时交易数据同步;根据产品类别、产品资金账户、产品证券账户,使用多线程按照数据来源分类抽取基金估值所需实时交易数据至Redis,剔除上次已抽取数据,同时记录本次数据抽取位置;执行完本步骤后进行步骤4;
步骤4、持仓计算任务生成;根据产品列表,生成唯一任务ID、任务生成时间以及待估值产品代码,拼接后形成任务信息表;通过消息分发服务高吞吐量的分布式发布订阅消息系统中不同的消息主题TOPIC,向服务端分别发布持仓计算任务和基金净值计算任务;
步骤5、计算任务分布化;本步骤在服务端完成,由流式处理框架storm进行自动分布式计算,根据步骤4中的任务信息表,将任务拆分为“任务号+时间+产品代码”的格式,并将各任务分发至流式处理框架storm中的计算核心进行计算,同时由流式处理框架storm进行自动负载均衡。
步骤6、持仓分布式计算;每个计算核心以产品为维度进行计算;在收到持仓计算任务时,每个计算核心从Redis中根据主键获取待计算产品的基础持仓,根据步骤1和步骤2所生成的Redis;然后计算核心从Redis中获取基金交易数据,根据步骤3和步骤2所生成的Redis,在计算核心内存重新计算基金的持仓数据,并将最新持仓更新至Redis中;
步骤7、基金净值行情分布式计算;每个计算核心以产品为维度进行计算;在收到行情更新任务时,每个计算核心从Redis中根据主键获取待计算产品的最新持仓表,根据步骤6更新;然后计算核心根据持仓表逐个获取持仓证券的行情,从Redis中行情源获取,并计算各持仓证券的市值;计算核心加总所有资产净值后利用公式“单位净值=round(资产净值/基金份额,4)”,得出最终的基金净值行情;最后通过消息分发服务kafka将结果发布到指定消息主题TOPIC中,并通过消息分发服务kafka负载均衡分散至不同的消息主题TOPIC分区中;
步骤8、接收计算结果;客户端根据基金净值结果消息主题TOPIC的分区数量建立对应的线程;当基金净值行情结果中存在未消费数据,对应线程将接受数据,按照当前任务ID过滤,满足条件存入内存中;当接受到所有产品估值结果后,将内存中结果转存,并存储至数据库中;完成单次估值后等待定时器触发步骤3或者步骤4。
进一步优选地,所述步骤3实时交易数据同步,根据基金实时交易抽取定时器触发本步骤;所述步骤4持仓计算任务生成;根据基金行情生成定时器触发本步骤。
进一步优选地,步骤4持仓计算任务生成,所述消息分发服务Kafka为高吞吐量的分布式发布订阅消息系统。
进一步优选地,步骤5计算任务分布化,所述流式处理框架storm为分布式流式处理框架。
实施例4 :基于分布式数据流基金资产实时估值的系统在证券行业基金资产实时估值并快速发布实时资产净值、实时单位净值的应用。在证券行业基金资产实时估值并快速发布实时资产净值、实时单位净值中应用基于分布式数据流基金资产实时估值的系统,如图1、2所示,所述系统包括:控制台,服务端,客户端;
所述控制台包括:
产品基础数据同步模块;所述产品基础数据同步模块根据产品类别、产品资金账户、产品证券账户,使用多线程按照数据来源分类抽取基金估值所需最近日期的估值表、交易数据、汇率数据、基金申购赎回数据;
数据分布化模块;所述数据分布化模块在基础数据同步模块中获取到相应数据后,根据产品账户进行分类,将相同产品的相同类型数据分别归类,并按照产品代码、表名、日期等作为主键,数据内容作为键值存储至内存数据库Redis中进行数据分布化;
实时交易数据同步模块;所述实时交易数据同步模块,根据产品类别、产品资金账户、产品证券账户,使用多线程按照数据来源分类抽取基金估值所需实时交易数据,剔除上次已抽取数据,同时记录本次数据抽取位置;本模块执行完后进行持仓计算任务生成模块的执行;
以及,持仓计算任务生成模块;所述持仓计算任务生成模块,根据产品列表,生成唯一任务ID、任务生成时间以及待估值产品代码,拼接后形成任务信息表;通过消息分发服务Kafka中不同的消息主题TOPIC,向服务端分别发布持仓计算任务和基金净值计算任务;
所述服务端包括:
计算任务分布化模块;所述计算任务分布化模块由流式处理框架storm进行自动分布式计算,将实时交易数据同步模块中的任务信息表中的任务拆分为“任务号+时间+产品代码”的格式,并将各任务分发至流式处理框架storm中的计算核心进行计算,同时由流式处理框架storm进行自动负载均衡;
持仓分布式计算模块;所述持仓分布式计算模块,每个计算核心以产品为维度进行计算;在收到持仓计算任务时,每个计算核心从Redis中根据主键获取待计算产品的基础持仓,根据产品基础数据同步模块和数据分布化模块所生成的Redis;然后计算核心从Redis中获取基金交易数据,(根据实时交易数据同步模块和数据分布化模块所生成的Redis,在计算核心内存重新计算基金的持仓数据,并将最新持仓更新至Redis中;
以及,基金净值行情分布式计算模块;所述基金净值行情分布式计算模块,每个计算核心以产品为维度进行计算;在收到行情更新任务时,每个计算核心从Redis中根据主键获取待计算产品的最新持仓表,最新持仓表根据持仓分布式计算模块更新获得;然后计算核心根据持仓表逐个获取持仓证券的行情,从Redis中行情源获取,并计算各持仓证券的市值;计算核心加总所有资产净值后利用公式“单位净值=round(资产净值/基金份额,4)”,得出最终的基金净值行情;最后通过消息分发服务kafka将结果发布到指定消息主题TOPIC中,并通过消息分发服务kafka负载均衡分散至不同的消息主题TOPIC分区中;
所述客户端包括:接收计算结果模块;所述接收计算结果模块,根据基金净值结果消息主题TOPIC的分区数量建立对应的线程;当基金净值行情结果中存在未消费数据,对应线程将接受数据,按照当前任务ID过滤,满足条件存入内存中;当接受到所有产品估值结果后,将内存中结果转存,并存储至数据库中;完成单次估值后等待定时器触发控制台中的实时交易数据同步模块或者持仓计算任务生成模块。
进一步优选地,所述实时交易数据同步模块,根据基金实时交易抽取定时器触发该模块;所述持仓计算任务生成模块,根据基金行情生成定时器触发该模块。
进一步优选地,持仓计算任务生成模块,所述消息分发服务Kafka为高吞吐量的分布式发布订阅消息系统。
进一步优选地,计算任务分布化模块,所述流式处理框架storm为分布式流式处理框架。
实施例5:本实施例提出一种实时计算方法。此方法在横向扩展基础计算资源的基础上,可以满足10000支产品3秒内完成基金所有资产的估值核算,同时输出资产净值、单位净值、实收资本等关键指标数据。
本发明的目的是为了解决基金管理人无法实时获取基金资产净值波动的问题,使用户能够在市场行情波动以及基金经理投资后立马获取基金实时的资产净值。
为实现以上目标。本实施例提供一种分布式计算核心以及分布式数据流的计算方法。如图1、2所示,该方法具体包括:
步骤1、产品基础数据同步。本步骤在控制台完成,根据产品类别、产品资金账户、产品证券账户,使用多线程按照数据来源分类抽取基金估值所需最近日期的估值表、交易数据、汇率数据、基金申购赎回数据至Redis。
步骤2、数据分布化。本步骤在控制台完成,获取到相应数据后,根据产品账户进行分类,将相同产品的相同类型数据分别归类,并按照产品代码、表名、日期等作为主键(例如940033@A股交易数据@20170101),数据内容作为键值存储至内存数据库Redis中进行数据分布化。
步骤3、实时交易数据同步。本步骤在控制台完成,根据基金实时交易抽取定时器触发本步骤;根据产品类别、产品资金账户、产品证券账户,使用多线程按照数据来源分类抽取基金估值所需实时交易数据至Redis,剔除上次已抽取数据,同时记录本次数据抽取位置;执行完本步骤后进行步骤4。
步骤4、持仓计算任务生成。本步骤在控制台完成,根据基金行情生成定时器触发本步骤;根据产品列表,生成唯一任务ID、任务生成时间以及待估值产品代码,拼接后形成任务信息表;通过消息分发服务Kafka(一种高吞吐量的分布式发布订阅消息系统)中不同的消息主题TOPIC,向服务端分别发布持仓计算任务和基金净值计算任务。
步骤5、计算任务分布化。本步骤在服务端完成,由流式处理框架storm(一种分布式流式处理框架)进行自动分布式计算,根据步骤4中的任务信息表(例如:00000001-20170101 12:12:11-940001,940002,940003,940002……),将任务拆分为“任务号+时间+产品代码”的格式,并将各任务分发至流式处理框架storm中的计算核心进行计算,同时由流式处理框架storm进行自动负载均衡。
步骤6、持仓分布式计算。本步骤在服务端完成,每个计算核心以产品为维度进行计算;在收到持仓计算任务时,每个计算核心从Redis中根据主键(例如940001@持仓表)获取待计算产品的基础持仓(根据步骤1和步骤2所生成的Redis);然后计算核心从Redis中获取基金交易数据(根据步骤3和步骤2所生成的Redis),在计算核心内存重新计算基金的持仓数据,并将最新持仓更新至Redis中。
步骤7、基金净值行情分布式计算。本步骤在服务端完成,每个计算核心以产品为维度进行计算;在收到行情更新任务时,每个计算核心从Redis中根据主键(例如940001@持仓表)获取待计算产品的最新持仓表(根据步骤6更新);然后计算核心根据持仓表逐个获取持仓证券的行情(从Redis中行情源获取),并计算各持仓证券的市值;计算核心加总所有资产净值后利用公式“单位净值=round(资产净值/基金份额,4)”得出最终的基金净值行情;最后通过消息分发服务kafka将结果发布到指定消息主题TOPIC中,并通过消息分发服务kafka负载均衡分散至不同的消息主题TOPIC分区中。
步骤8、接收计算结果。本步骤在客户端完成,客户端根据基金净值结果消息主题TOPIC的分区数量建立对应的线程;当基金净值行情结果中存在未消费数据,对应线程将接受数据,按照当前任务ID过滤,满足条件存入内存中;当接受到所有产品估值结果后,将内存中结果转存,并存储至数据库中;完成单次估值后等待定时器触发步骤3或者步骤4。
实施例6:一种基于分布式数据流的实时计算方法的实施例,这里使用基金940001的实时估值为例。
先进行日初始化任务,根据产品代码、产品证券账户、资金账户从基金估值系统中获取最近日期的估值表、历史交易数据等。
根据不同的数据将基础数据进行分布化,将相同产品相同类型数据分别归类,并按照产品代码、表名、日期等作为主键(例如940001@A股交易数据@20170101),数据内容作为键值存储至Redis内存数据库中进行数据分布化。
开启两个定时器,按照设定频率分别触发日间实时交易数据抽取任务以及日间计算任务。
日间实时交易数据抽取任务按照固定频率执行,根据产品类别、产品资金账户、产品证券账户,使用多线程按照数据来源分类抽取基金估值所需实时交易数据、汇率数据、基金申购赎回数据;获取完需要根据已抽取记录剔除上次已抽取数据,同时记录本次数据抽取位置,完成后进行数据分布化。
日间计算任务按照固定频率执行;根据产品列表,生成唯一任务ID、任务生成时间以及待估值产品代码,拼接后形成任务信息表(例如:00000001-20170101 12:12:11-940001,940002,940003,940002……);通过消息分发服务Kafka中不同的消息主题TOPIC(dailybusiness,dailyPrice),向服务端分别发布持仓计算任务和基金净值计算任务。
流式处理框架storm根据接收的任务类别,将任务拆分为“任务号+时间+产品代码”的格式,并将各任务分发至流式处理框架storm中的计算核心进行计算,同时由流式处理框架storm进行自动负载均衡。如图3中Product_Split_Bolt任务。
持仓计算任务核心在收到940001持仓计算任务时,从Redis中根据主键(例如940001@持仓表)获取待计算产品的基础持仓;然后计算核心从Redis中获取基金最新的交易数据,在计算核心内存中重新计算基金的持仓数据,并将最新持仓更新至Redis中,最后从Redis中删除已经处理的基金交易数据。如图3中Product_Task_Bolt任务。
基金净值计算任务核心在收到940001计算任务后,从Redis中根据主键(例如940001@持仓表)获取待计算产品的最新持仓表;然后计算核心根据持仓表逐个获取持仓证券的行情(从Redis中行情源获取),并计算各持仓证券的市值;计算核心加总所有资产净值后利用公式单位净值=round(资产净值/基金份额,4),得出最终的基金净值行情;最后通过消息分发服务kafka将结果发布到指定消息主题TOPIC中,并通过消息分发服务kafka负载均衡分散至不同的消息主题TOPIC分区中。
客户端根据基金净值结果消息主题TOPIC的分区数量建立对应的线程;当基金净值行情结果中存在未消费数据,对应线程将接受数据,按照当前任务ID过滤,满足条件存入内存中;
最后当接受到所有产品估值结果后,系统将内存中结果转存,并存储至数据库中,外部系统即可获取940001的最新单位净值等指标。如图4任务的开始至结束可在1秒内完成,完全满足大量数据即时处理。
Claims (6)
1.一种基于分布式数据流基金资产实时估值的方法,其特征在于包括:
步骤1、产品基础数据同步;根据产品类别、产品资金账户、产品证券账户,使用多线程按照数据来源分类抽取基金估值所需最近日期的估值表、交易数据、汇率数据、基金申购赎回数据至内存数据库Redis中;
步骤2、数据分布化;获取到步骤1相应数据后,根据产品账户进行分类,将相同产品的相同类型数据分别归类,并按照产品代码、表名、日期作为主键,数据内容作为键值存储至内存数据库Redis中进行数据分布化;
步骤3、实时交易数据同步;根据产品类别、产品资金账户、产品证券账户,使用多线程按照数据来源分类抽取基金估值所需实时交易数据至内存数据库Redis中,剔除上次已抽取数据,同时记录本次数据抽取位置;执行完本步骤后进行步骤4;
步骤4、持仓计算任务生成;根据产品列表,生成唯一任务ID、任务生成时间以及待估值产品代码,拼接后形成任务信息表;通过消息分发服务高吞吐量的分布式发布订阅消息系统中不同的消息主题TOPIC,向服务端分别发布持仓计算任务和基金净值计算任务;
步骤5、计算任务分布化;本步骤在服务端完成,由流式处理框架storm进行自动分布式计算,根据步骤4中的任务信息表,将任务拆分为“任务号+时间+产品代码”的格式,并将各任务分发至流式处理框架storm中的计算核心进行计算,同时由流式处理框架storm进行自动负载均衡;
步骤6、持仓分布式计算;每个计算核心以产品为维度进行计算;在收到持仓计算任务时,每个计算核心从Redis中根据主键获取待计算产品的基础持仓,根据步骤1和步骤2所生成的Redis;然后计算核心从Redis中获取基金交易数据,根据步骤3和步骤2所生成的Redis,在计算核心内存重新计算基金的持仓数据,并将最新持仓更新至Redis中;
步骤7、基金净值行情分布式计算;每个计算核心以产品为维度进行计算;在收到行情更新任务时,每个计算核心从Redis中根据主键获取待计算产品的最新持仓表,根据步骤6更新;然后计算核心根据持仓表逐个获取持仓证券的行情,从Redis中行情源获取,并计算各持仓证券的市值;计算核心加总所有资产净值后利用公式“单位净值=round(资产净值/基金份额,4)”,得出最终的基金净值行情;最后通过消息分发服务kafka将结果发布到指定消息主题TOPIC中,并通过消息分发服务kafka负载均衡分散至消息主题TOPIC的多个分区中;
步骤8、 接收计算结果;客户端根据基金净值结果消息主题TOPIC的分区数量建立对应的线程;当基金净值行情结果中存在未消费数据,对应线程将接受数据,按照当前任务ID过滤,满足条件存入内存中;当接受到所有产品估值结果后,将内存中结果转存,并存储至数据库中;完成单次估值后等待定时器触发步骤3或者步骤4。
2.根据权利要求1所述的基于分布式数据流基金资产实时估值的方法,其特征在于:所述步骤3实时交易数据同步,根据基金实时交易抽取定时器触发本步骤;所述步骤4持仓计算任务生成;根据基金行情生成定时器触发本步骤。
3.一种基于分布式数据流基金资产实时估值的系统,其特征在于包括:控制台,服务端,客户端;所述控制台包括:
产品基础数据同步模块;所述产品基础数据同步模块根据产品类别、产品资金账户、产品证券账户,使用多线程按照数据来源分类抽取基金估值所需最近日期的估值表、交易数据、汇率数据、基金申购赎回数据;
数据分布化模块;所述数据分布化模块在基础数据同步模块中获取到相应数据后,根据产品账户进行分类,将相同产品的相同类型数据分别归类,并按照产品代码、表名、日期作为主键,数据内容作为键值存储至内存数据库Redis中进行数据分布化;
实时交易数据同步模块;所述实时交易数据同步模块,根据产品类别、产品资金账户、产品证券账户,使用多线程按照数据来源分类抽取基金估值所需实时交易数据,剔除上次已抽取数据,同时记录本次数据抽取位置;本模块执行完后进行仓计算任务生成模块的执行;
以及,持仓计算任务生成模块;所述持仓计算任务生成模块,根据产品列表,生成唯一任务ID、任务生成时间以及待估值产品代码,拼接后形成任务信息表;通过消息分发服务Kafka中不同的消息主题TOPIC消息,向服务端分别发布持仓计算任务和基金净值计算任务;
所述服务端包括:
计算任务分布化模块;所述计算任务分布化模块由流式处理框架storm进行自动分布式计算,将实时交易数据同步模块中的任务信息表中的任务拆分为“任务号+时间+产品代码”的格式,并将各任务分发至流式处理框架storm中的计算核心进行计算,同时由流式处理框架storm进行自动负载均衡;
持仓分布式计算模块;每个计算核心以产品为维度进行计算;在收到持仓计算任务时,每个计算核心从Redis中根据主键获取待计算产品的基础持仓,其依据是产品基础数据同步模块和数据分布化模块所生成的Redis数据;然后计算核心从Redis中获取基金交易数据,根据实时交易数据同步模块和数据分布化模块所生成的Redis数据,计算核心内存并重新生成基金的持仓数据,并将最新持仓更新至Redis中;
以及,基金净值行情分布式计算模块;所述基金净值行情分布式计算模块,每个计算核心以产品为维度进行计算;在收到行情更新任务时,每个计算核心从Redis中根据主键获取待计算产品的最新持仓表,最新持仓表根据持仓分布式计算模块更新获得;然后计算核心根据持仓表逐个获取持仓证券的行情,从Redis中行情源获取,并计算各持仓证券的市值;计算核心加总所有资产净值后利用公式“单位净值=round(资产净值/基金份额,4)”,得出最终的基金净值行情;最后通过消息分发服务kafka将结果发布到指定消息主题TOPIC中,并通过消息分发服务kafka负载均衡分散至不同的消息主题TOPIC分区中;
所述客户端包括:接收计算结果模块;所述接收计算结果模块,根据基金净值结果消息主题TOPIC的分区数量建立对应的线程;当基金净值行情结果中存在未消费数据,对应线程将接受数据,按照当前任务ID过滤,满足条件存入内存中;当接受到所有产品估值结果后,将内存中结果转存,并存储至数据库中;完成单次估值后等待定时器触发控制台中的实时交易数据同步模块或者持仓计算任务生成模块。
4.根据权利要求3所述的基于分布式数据流基金资产实时估值的系统,其特征在于:所述实时交易数据同步模块,根据基金实时交易抽取定时器触发该模块;所述持仓计算任务生成模块,根据基金行情生成定时器触发该模块。
5.根据权利要求3所述的基于分布式数据流基金资产实时估值的系统,其特征在于:持仓计算任务生成模块,所述消息分发服务Kafka为高吞吐量的分布式发布订阅消息系统。
6.根据权利要求3所述的基于分布式数据流基金资产实时估值的系统,其特征在于:计算任务分布化模块,所述流式处理框架storm为分布式流式处理框架。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811039814.0A CN109165863B (zh) | 2018-09-06 | 2018-09-06 | 基于分布式数据流基金资产实时估值的方法、系统及应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811039814.0A CN109165863B (zh) | 2018-09-06 | 2018-09-06 | 基于分布式数据流基金资产实时估值的方法、系统及应用 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109165863A CN109165863A (zh) | 2019-01-08 |
CN109165863B true CN109165863B (zh) | 2022-03-22 |
Family
ID=64894456
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811039814.0A Active CN109165863B (zh) | 2018-09-06 | 2018-09-06 | 基于分布式数据流基金资产实时估值的方法、系统及应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109165863B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110727724B (zh) * | 2019-09-09 | 2023-03-24 | 未鲲(上海)科技服务有限公司 | 数据抽取方法、装置、计算机设备和存储介质 |
CN111030983B (zh) * | 2019-10-15 | 2023-05-26 | 深圳壹账通智能科技有限公司 | 基于分布式分发的数据处理方法、装置及相关设备 |
CN110782354A (zh) * | 2019-10-23 | 2020-02-11 | 中国工商银行股份有限公司 | 披露基金投资的方法及装置 |
CN112506902A (zh) * | 2020-11-30 | 2021-03-16 | 派衍信息科技(苏州)有限公司 | 基金净值智能处理系统 |
CN112561708A (zh) * | 2020-12-07 | 2021-03-26 | 泰康保险集团股份有限公司 | 处理数据的方法、装置、设备和计算机可读介质 |
CN112365355B (zh) * | 2020-12-10 | 2023-12-26 | 深圳迅策科技有限公司 | 实时计算基金估值和风险指标的方法、装置及可读介质 |
CN112862526B (zh) * | 2021-02-04 | 2024-01-12 | 深圳迅策科技有限公司 | 一种大数据金融资产实时估值方法、装置及可读介质 |
CN114186842A (zh) * | 2021-12-09 | 2022-03-15 | 北京百度网讯科技有限公司 | 资源估值方法、装置、设备以及存储介质 |
CN115329016B (zh) * | 2022-10-14 | 2023-04-25 | 深圳迅策科技有限公司 | 一种金融资产交易数据处理方法、系统及可读介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108334556A (zh) * | 2017-12-31 | 2018-07-27 | 江苏易润信息技术有限公司 | 一种分析互联网金融海量日志的方法及系统 |
CN108573449A (zh) * | 2017-03-09 | 2018-09-25 | 派衍信息科技(苏州)有限公司 | 一种分级基金净值计算处理系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10296981B2 (en) * | 2016-09-14 | 2019-05-21 | Swiss Reinsurance Company Ltd. | Method and system for automated location-dependent recognition of storm risks and exposure-based parametric risk-transfer |
-
2018
- 2018-09-06 CN CN201811039814.0A patent/CN109165863B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108573449A (zh) * | 2017-03-09 | 2018-09-25 | 派衍信息科技(苏州)有限公司 | 一种分级基金净值计算处理系统 |
CN108334556A (zh) * | 2017-12-31 | 2018-07-27 | 江苏易润信息技术有限公司 | 一种分析互联网金融海量日志的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109165863A (zh) | 2019-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109165863B (zh) | 基于分布式数据流基金资产实时估值的方法、系统及应用 | |
CN109657978A (zh) | 一种风险识别方法和系统 | |
WO2002097574A3 (en) | Methods and systems for portfolio cash flow valuation | |
HUP0301769A2 (en) | Rapid valuation of portfolios of assets such as financial instruments | |
CN116662577B (zh) | 基于知识图谱的大型语言模型训练方法及装置 | |
Goodspeed | Rethinking the Keynesian revolution: Keynes, Hayek, and the Wicksell connection | |
CN112153426A (zh) | 一种内容账号管理方法、装置、计算机设备及存储介质 | |
CN107067282B (zh) | 一种消费品返利销售营销管理系统及其使用方法 | |
CN110727761A (zh) | 对象信息获取方法、装置及电子设备 | |
CN108537522A (zh) | 一种区块链区块内账户余额计算方法 | |
DE10302777A1 (de) | Erstellung einer Umsatzvolumenprognose | |
CN111932310A (zh) | 一种银行产品的潜在对公客户挖掘方法及装置 | |
CN107193837A (zh) | 数据汇总方法及装置 | |
CN112862526B (zh) | 一种大数据金融资产实时估值方法、装置及可读介质 | |
CN107909481B (zh) | 一种投资共建展示与认股信息分析系统及方法 | |
CN109933643B (zh) | 专利交易大数据采集和处理方法 | |
CN114022258A (zh) | 一种拍卖交易方法、智能拍卖平台及存储介质 | |
CN113850662A (zh) | 一种舆情预警处理系统及方法 | |
CN109767248A (zh) | 客户需求信息处理方法、装置及系统 | |
CN109658095A (zh) | 自助设备日志存储管理方法、系统及存储介质 | |
RU27344U1 (ru) | Автоматизированная контрольно-информационная система учета источников антропогенных выбросов и стоков парниковых газов, результатов мероприятий по сокращению их уровней и операций по переуступке достигнутых результатов | |
CN117056432B (zh) | 一种线下与线上商品零售系统间的数据同步方法及系统 | |
WO2014145577A1 (en) | System and method for financial matching | |
CN113837764B (zh) | 风险预警方法、装置、电子设备和存储介质 | |
RU2225640C1 (ru) | Автоматизированная контрольно-информационная система учета источников антропогенных выбросов и стоков парниковых газов, результатов мероприятий по сокращению их уровней и операций по переуступке достигнутых результатов |
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 |