如何高效存储中高频多因子

news2024/11/25 14:46:27

2022年12月1日晚7点半,DolphinDB 进行了以「中高频多因子库存储最佳实践」为主题的直播,吸引了众多专业观众的注意。本文将回顾直播精彩内容。

DolphinDB 的因子库:

为了使广大用户更方便地实现因子计算和管理,助力更高效的投研和生产,DolphinDB 结合多年服务金融量化机构的经验,已经实现了 wq101alpha、gtja191Alpha、ta(Technical Analysis)、mytt 这四个国内常用因子库,并且支持研究和生产一体化。

DolphinDB 实现的因子库性能远优于传统的Python实现方式,并且用户可以直接使用论文中所列公式实现,无需用户自定义函数,方便后续修改和定制化生产因子。

 

DolphinDB 对窗口函数进行了优化,因此因子性能卓越,且实现起来非常简单,基本是原公式的照样翻译。此外,WorldQuant 101 中有部分行业因子,现已支持矩阵入参,且实现了批流一体。DolphinDB 也对 Alpha 因子流实现进行了优化,可以支持多个因子同时解析。

中高频多因子存储:

现有解决方案包括使用二进制文件、关系型数据库 SQL Server、MongoDB 以及 ClickHouse 等,但各自都存在一定问题,例如:

  • 二进制文件:一般以因子或因子+日期范围为单位来存储因子,类似于数据库的窄表存储,但数据查询和对齐缺乏灵活性,需要写程序来处理。一般没有压缩,且不能充分享受分布式带来的吞吐量提升。在用户较多时,版本管理和数据一致性会面对极大挑战。
  • 关系型数据库 SQL Server:大数据量时性能急剧下降。窄表存储时,拼接宽表性能低下;而宽表模式最多支持1024列,增删改因子性能不佳。
  • MongoDB:虽然增删因子较为方便,存储空间大,但数据导入导出和转换对齐的效率较低。
  • ClickHouse:宽表存储写入和查询效率高,但是宽表的增删改列的效率极低,超大宽表支持不好(每列一个文件);窄表转宽表效率极低,耗时是宽表查询的30倍以上。此外,ClickHouse 的分布式集群运维和管理较为复杂。

Why DolphinDB:

DolphinDB 在存储引擎、计算引擎和权限管理等方面都有丰富的功能开发和显著的性能优势。

存储引擎

  • 分布式存储,大幅提升读写吞吐量
  • 灵活的分区策略:支持三层分区,每层分区支持值,范围,哈希等多种方式
  • 支持分区内索引
  • 支持窄表存储和宽表存储(32767列)
  • 高压缩比
  • 灵活的数据去重策略
  • 高效的分区写入,删除和更新等操作
  • 支持 Array Vector
  • 支持多个分布式表的 Co-location存储
  • 多引擎满足不同场景需要

计算引擎

  • 分布式计算提升计算能力
  • 库内支持因子的批量计算和流式计算,支持批流一体
  • 支持SQL和 Join,尤其是Window Join 和Asof Join
  • 高效的数据过滤,对齐,转置,转换,平滑以及窗口处理
  • 1400+内置函数库
  • 内置多范式编程的脚本语言

权限管理

  • 支持按用户和用户组进行权限管理。对任一权限支持grant,revoke和 deny三种操作
  • 支持对数据库,表和函数视图三种对象进行管理
  • 区分创建、更新、删除、写、读、执行等权限
  • DB_OWNER 角色赋予某些用户独立创建和管理数据库的能
  • 函数视图帮助机构实现复杂的权限管理,譬如因子访问控制

……

最佳实践:

经过相同配置环境下不同存储方案的对比,我们发现,在10分钟级10000个因子数据场景下,宽表模式的因子写入速度高于窄表模型,但差距不大。因子数据查询方面,窄表模式略优于宽表模式。因子数据运维方面(包含新增因子、更新和删除因子),窄表模式的效率远远优于宽表模式。

综合来看,我们更加推荐DolphinDB用户在中高频多因子场景下,使用窄表模式解决方案。

值得期待的进展:

DolphinDB目前已经实现了诸多研发成果,未来也将在行情接入、研发回测、生产交易和基础设施等方面进一步发展。

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/84167.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Node.js计算机毕业设计大学生专业实习管理系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

C/C++ 高精度(加减乘除)算法简单实现

文章目录前言一、基本原理1、存储方式2、计算方式二、辅助方法1、字符串转高精度2、整型转高精度3、比较4、打印三、算法实现1、加法2、减法3、乘法4、除法四、使用示例1、加法2、减法3、乘法4、除法总结前言 由于上一章《C/C 高精度(加减乘除)算法实现…

NetSuite资产负债表编制技巧

在最近的项目上,发现大家对NetSuite资产负债的编制参数缺乏足够的了解,导致对客户需求的支支吾吾,产生了沟通上的浪费。所以今朝对三个典型应用做个介绍。 1. 如何在资产负债表中选择“会计期间区间”? 2. 期初、发生、结余报表…

【元宇宙欧米说】Web3如何为漫画产业创造更多玩法和可能性

漫画和NFT的碰撞会产生什么火花?NFT如何为传统的漫画收藏增加额外价值?Web3时代如何为漫画带来更多玩法和可能性? 12月15日下午三点,MadManga 创始人Jun将以“Web3如何为漫画产业创造更多玩法和可能性”为题,与大家共…

构建文本摘要Baseline并且开始训练

构建文本摘要Baseline并且开始训练 基于前面word2vec的原理与训练实践、seq2seq模型的原理与实践以及attention机制,已经分别写了相关的文章来记录,此篇文章就是基于前面所学,开始着手训练文本摘要模型,当然仅是一个比较普通的ba…

[附源码]Node.js计算机毕业设计大学体育馆预约系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

vue框架搭建大屏自适应方案

vue框架搭建大屏自适应方案 1.可使用flexible.js rem实现宽高,字体自适应 附上flexible.js代码 (function flexible(window, document) {var docEl document.documentElement;var dpr window.devicePixelRatio || 1;// adjust body font sizefunction setBody…

NocasRule负载均衡与服务实例的权重设置

NocasRule负载均衡 .yml 配置文件配置 server:port: 8080 spring:application:name: orderservicecloud:nacos:server-addr: localhost:8848 #nocas服务地址discovery:cluster-name: HZ #集群名字 userservice: #要做配置的微服务名称ribbon:NFLoadBalancerRuleClassName: com…

游戏开发57课 性能优化14

5. 内存优化 内存优化目的是加快IO,防止卡主线程,防止频繁操作(创建/删除)内存,避免内存碎片化和占用过高。 5.1 缓存法 与CPU的缓存计算类似,思路是将需要重复创建的对象缓存起来,销毁时将它…

安装、启动与停止Apache服务

安装、启动与停止Apache服务 安装Apache相关软件 [rootcentos7 ~]# rpm -q httpd [rootcentos7-1 ~]# mkdir /opt/centos //创建目录/opt/centos [rootcentos7-1 ~]# mount /dev/cdrom /opt/centos //挂载光盘到/opt/centos 下 mount: /dev/sr0 写保护…

Spring Boot 3.0.0正式发布,Banner不再支持图片增强可观测性

本文已被https://yourbatman.cn收录;女娲Knife-Initializr工程可公开访问啦;程序员专用网盘https://wangpan.yourbatman.cn;技术专栏源代码大本营:https://github.com/yourbatman/tech-column-learning;公号后台回复“…

openCV(一)基础背景

1 认识计算机视觉 2012年AlexNet模型在ImageNet图像分类中获得比赛冠军,深度学习开始在计算机视觉领域流行。早期的计算机视觉主要集中在重建方面,2012年以后在感知和重建两个领域都受到了深度学习的影响。应用场景包括自动驾驶、机器视觉、安防监控、其…

猿如意中的【PostgreSQL 数据库】工具详情介绍

猿如意中的【PostgreSQL 数据库】工具详情介绍 一、工具名称 PostgreSQL 数据库 二、下载安装渠道 PostgreSQL 数据库V14.2 通过CSDN官方开发的【猿如意】客户端进行下载安装。 2.1 什么是猿如意? 猿如意是一款面向开发者的辅助开发工具箱,包含了效…

jenkins-pipeline与变量

本文介绍如何在pipeline中使用变量 使用jenkins预定义的环境变量 jenkins预先定义了一些环境变量,在pipeline中使用${env.key}来调用 另外安装了第三方插件,会有新的环境变量,可以使用插件Environment Inject来查看 在pipeline中使用预定义…

Java二维数组项目练习

T1.显示所有书店客户的信息 示例代码 public static void main(String[] args) {String[][] users{{"1100","18","100"},{"1101","24","834"},{"1102","13","20000"},{"1103…

软件测试——用例篇

文章目录为什么在测试前要设计测试用例基于需求设计测试用例等价类边界值错误猜测法场景法因果图正交法为什么在测试前要设计测试用例 测试用例是执行测试的依据。可以复用(回归测试的时候)衡量需求的覆盖率自动化测试的依据有借鉴意义,后续…

OH----原子量的妙用--保护usb时序

1、问题: 展锐平台,usb otg高概率不能正确检测识别到 2、思路: usb使用musb控制器,展锐的平台处理代码是musb_sprd.c,在这个文件中对usb mode做检测和切换,log级别跳到最高,在probe中的关键函…

用 Taichi 加速 Python:提速 100+ 倍!

Python 已经成为世界上最流行的编程语言,尤其在深度学习、数据科学等领域占据主导地位。但是由于其解释执行的属性,Python 较低的性能很影响它在计算密集(比如多重 for 循环)的场景下发挥作用,实在让人又爱又恨。如果你…

PAT(乙级)2022年冬季考试

此前先后花了十元去做了乙级题,从最开始分别是70,35,43,33(途中做了RobpCom,只搞定了签到题),想着报今年的冬季赛,但是报名费有点高啊,加上做下来感觉不怎么样&#xff0…

[附源码]Python计算机毕业设计Django的黄河文化科普网站

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…