华人澳洲中文论坛

热图推荐

    上海财经大学如何构建量化高频数据核心?

    [复制链接]

    2022-9-14 09:39:22 31 0

    本文作者:上海财经大学试验核心副主任、金融学院副传授 谢斐
    以前上海财经大学使用的零碎在数据存储、紧缩、调用和运算等方面存在很大问题,需求耗损少量时间进行数据整顿。为探究如何存储 CTP 数据,教研团队编写了一套专门存储少量二进制文件的紧缩零碎,但在使历时发现零碎无奈处置多来源冗余等问题。
    咱们在总结教训后建设了零碎,能够间接存储 HDF5文件同时完成间接检索,然而该零碎响应速度慢、无奈静态办理数据。
    之后咱们尝试了 Hadoop 的 hive 系列,发现该零碎不克不及高效钻研构造化数据,需求将构造化问题转化为 MapReduce 脚本落后行处置。
    针对继续增长的时序数据,咱们但愿搭建一套优秀的、使用便利的新零碎。
    我和钻研团队用 Python 编写的基于 DolphinDB 的量化高频数据核心零碎整体机能良好,次要解决长期收集少数据点、实时因子计算和高频数据收集等问题。目前这套零碎曾经成为教学和科研中的首要工具。接上去本文将从研发配景、数据类型、功用架构、机能测试、选择 DolphinDB 和综上所述等方面对量化高频数据核心零碎进行引见。


    研发配景
    共性化需要:行情厂商规范数据无奈提供自定义的 MinBar、HourBar、延续合约及自定义合约等拼接规定,致使量化战略无奈完成。历史数据收集现状:数据量大,收集慢,拜候慢。收集一年数据可能要耗时几天,无奈包管数据没有脱漏。行情实时处置现状:不足高效的内存型数据库,无奈实时计算因子。自建零碎难题:自建数据库收集工具本钱高,高频处置零碎开发难度高。数据类型
    次要钻研 level2 的地下数据,包罗每只股票每3秒钟的快照数据,每10毫秒收集多笔的逐笔成交数据和逐笔拜托数据。经过数据商获得实时收集数据和盘后数据,数据规模是全市场,包罗股票、债券、商品期货、金融期货和期权等。
    咱们将这两种数据汇总在一同,对数据进行备份、比对,荡涤和入库。在目前的钻研中,咱们入库了2013年到当初的市场全景数据,原始数据共计在 60TB 摆布。
    功用架构
    功用要点
    比拟传统数据收集计划,本套零碎采取机能优秀、牢靠性高的架构设计,能够完成高速、自动收集证券或期货的历史数据。借助 AirFlow 任务流平台全自动调度处置金融资产高频历史数据。结合实时行情为多因子量化投资战略等工具提供高效残缺的数据计算根底。使用高机能散布式数据库 DolphinDB 进行数据存储。采取 ETL 计划一致数据构造,包管了数据品质和先后依赖瓜葛,同时确保数据的统一性和不乱性。扩展性强,反对 Python、C++、C#、Java 等接口对接第三方零碎。核心功用模块引见
    量化高频数据核心零碎的核心功用次要分六大模块:数据收集、数据存储、数据处置、下层运用、形态监控和对外接口。数据核心功用模块的展现图如下:


    数据收集:反对 CSV 文件,零碎能够收集 SQL、Orcale、万德、国泰安、通联、聚宽等数据源的历史行情、实时行情及根底数据。数据存储:使用 DolphinDB 存储包罗流模式和库模式的 Ticks 和 Bar、合约信息、基类、因子及自定义合约。PostgresSQL 存储数据核心的日志、工作、自动或手动方案及门户前端数据库信息。数据处置:Builder 完成历史及实时 Ticks 拼接 MinBar 和 HourBar,延续合约和配对合约。Validator 校检日线数据和 Tick 数据的精确性。下层运用:次要分办理后盾和收集工作办理。办理后盾提供合约办理功用,包罗查问、自定义合约、延续合约和因子等。收集工作办理包罗自动或手动收集办理数据,方案工作办理及数据残缺性反省。形态运用:提供 AirFlow 调度平台的运转形态、日志办事及通知网关。对外接口:反对 Python,C++,C#等 API 接口。架构引见
    数据核心使用 AirFlow 经过 TaskID、JobID 调度全部零碎的运转程序和形态。TaskID 和 JobID 能够包管数据收集的残缺性和犯错重做机制。将收集的数据写入 DolphinDB 集群和内存中以便利调用,同时对数据进行拼接和校验。零碎提供 Exporter 输入接口,经过 Manager 后盾对总体进行配置和办理。数据核心零碎的架构图如下:


    机能测试
    写入机能测试
    分别测试等同硬件前提下,采取 MongoDB 和 DolphinDB 两种数据库存储数据的零碎收集入库上海期货买卖所一周 Tick 数据(7十二万条)的机能。详细测试数据如下:
    DolphinDB 写入速度超过 MongoDB 近8倍


    以前使用 MongoDB 入库一周 tick 级的数据需求1000秒钟摆布。重构零碎后使用 DolphinDB 多线程收集宏汇的数据源,在包管全部原始工作的逻辑瓜葛的根底上进行入库保留。由于 DolphinDB 目前还不反对同区多线程写入,所以我按照 DolphinDB 的特性编写了入库顺序进行工作分派,入库上海期货买卖所一周 tick 级的数据仅需求十二0秒钟摆布。
    比拟 MongoDB,DolphinDB 的速度晋升成果是对比显著的,足以反对咱们下信心推销这套商业零碎。咱们在使用其余开源零碎时,好比做大数据并行时遇到过不少问题,然而无奈及时失掉解决。DolphinDB 的技术反对团队在数据入库和分区等方面为咱们提供了得多计划, 能够包管及时、专业的技术反对。
    读取机能测试
    用基于 DolphinDB 研发的量化高频数据核心零碎读取深市某股票一年数据,详细测试后果如下:


    以前是在每台机器两块硬盘的状况下进行测试,将一切数据放入一个库中进行处置。当初按照 DolphinDB 技术专家的倡议,提出对数据进行分区别表的新计划。目前的实际速度要比表中的速度更为快。
    实时数据计算机能
    测试零碎实时计算的机能,详细测试后果如下:


    借助 DolphinDB 专有的流计算引擎,在实际使用中能够完成10毫秒内因子计算,好比获得行情,将行情数据转换成计算因子如均线、K 线等而后进行存储,同时根据需要定阅需求的多个合约和因子数据。
    选择 DolphinDB
    首先,DolphinDB 的机能很好。咱们在2018年推销了5台 256GB 内存、十几 TB 硬盘的办事器和一套办事零碎,次要钻研市场宏观构造,好比钻研融资融券,思考买卖如何影响市场。再好比辨认、探索定单户数据时,数据量大略在天天八千万到一亿条。以前咱们天天要花大略3个小时去处置数据,修正数据十分难题。当初使用 DolphinDB 提供的一站式办事只需求花30分钟便可实现处置,使用变得十分便捷。
    在做高频量化买卖时,模型和参数的迭代是很快的,拔取以周为单位、一年的历史数据曾经在单机上占用了很大内存。咱们以前使用 5十二GB 内存的办事器钻研无关市场构造的课题,想以全部市场截面查问得多证券的操作状况,需求的数据量大略在 500GB 摆布,常常会超限。
    所以咱们需求做一套散布式的处置零碎,这对咱们团队的代码编写和顺序设计才能有很高的要求。因为咱们不是并行处置方面的专家,我会用 Python 或者 MATLAB 在多节点中离开计算,但面对数据在500GB 以上的场景时仍是对比力所能及,需求用小的截面重复去做,而后统计一切截面数据寻觅相干性。这块任务的强度很大,而且需求破费不少时间。
    然而在使用 DolphinDB 后,钻研变得十分便利。一切节点的总内存是1.0TB,DolphinDB 处置这个范围数量级的数据是对比不乱疾速的,能够自动进行散布式计算。
    其次,DolphinDB 上手快,学习门坎低。由于 DolphinDB 的脚本言语是类 SQL 的逻辑,我会支配先生先学习 SQL,学会用 SQL 读取数据后,再学习使用 DolphinDB Script 进行繁杂操作。因为先生都有 Python 根底,在学习 SQL 后大略一个星期就可以上手 DolphinDB。教学内容包罗数据导入、查问、战略回测和 DolphinDB 的一些特性操作如表拼接等。关于学金融和量化投资的先生来讲,DolphinDB 是一套上手容易、使用敌对的数据库。
    综上所述
    基于 DolphinDB 研发的量化高频数据核心零碎很好地知足了天天进行实时战略回测、摹拟买卖等业务的需要。不论是学校的科研名目,仍是与券商、基金公司等协作的名目,尤为在高频量化场景等首要场景中,都会使用这套零碎来开发相应的战略和运用。
    目前 DolphinDB 曾经正式成为我的量化投资和顺序化买卖课程中十分首要的一部份。我以为 DolphinDB 好学、好用、好保护,十分合适IT气力单薄的机构。咱们与 DolphinDB 的协作是相互尊敬、敌对踊跃的,诚挚但愿将来能够有更多的协作时机。

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    返回列表 本版积分规则

    :
    注册会员
    :
    论坛短信
    :
    未填写
    :
    未填写
    :
    未填写

    主题33

    帖子35

    积分165

    图文推荐