秒级响应与低成本实现!TDengine 助力多元量化交易系统的背后故事 | 征文

小T导读:在不久前的“2024,我想和 TDengine 谈谈”征文活动中,我们收到了许多精彩的投稿,反映了用户与 TDengine 之间的真实故事和独特见解。今天,我们很高兴地分享此次活动的第一名作品。这篇文章详细阐述了广西多元量化科技有限公司如何利用 TDengine 构建高效的量化交易系统,提升交易效率和决策质量。通过深入分析数据库选型和数据架构设计,作者展示了 TDengine 在金融领域的强大优势和广泛应用前景。接下来让我们一同阅读,探索这一前沿技术如何推动现代金融交易的智能化与高效化。

我们的核心产品是多元量化 App,旨在以客户的舒心与安心为本,共同创造智能交易的新体验,让每个人都能轻松玩转 AI 量化。该 App 面向各层次用户,支持手机和电脑端使用,确保随时随地享受便捷、高效的量化交易体验。核心优势在于强大的交易策略构建能力,提供零代码 AI 策略、DO 语言策略以及 Python 语言策略,满足不同用户的需求。

此外,该系统还支持实时行情、AI 智选、一键配置、拆单算法、深度回测及信息实时推送服务,确保用户不错过任何重要市场动态。多元量化 App致力于为投研者和金融机构提供全面的量化解决方案,通过先进的技术手段提升交易效率和决策质量,实现资产的稳健增长。

数据库选型

多元量化 App 本身是一套大数据 AI 处理系统,涉及各交易平台的海量交易数据,对数据存储、处理、响应及安全等方面有极高的要求。数据库选型直接影响系统的性能、可扩展性、数据一致性和可靠性,对交易行情系统的开发至关重要。理想的数据库需要确保交易数据的快速读写,支持高并发访问,并提供必要的数据备份和恢复机制,保障数据安全。此外,考虑到交易行情系统的实时性要求,数据库还需具备高效的事务处理能力和低延迟的数据访问特性。

多元量化 App 在初始开发阶段及功能升级过程中,每次系统迭代到一定体量,数据库的性能都会成为系统的瓶颈,因此设计一个合适的数据库方案显得尤为重要。

在数据库选型方面,我们重点考虑以下几点:

  1. 选择一个高效、稳定且可扩展的数据库系统,以确保大数据处理的实时性和准确性。

  2. 数据模型的适应性也是选型时需要考虑的因素。多元量化 AI 策略交易系统需要实时从各交易平台提取交易行情,因此数据库应具备足够的灵活性,以适配不同类型的金融数据。选择与大数据系统需求相匹配的数据模型,可以提高数据存储和查询的效率。考虑到金融行业的特殊性和监管要求,数据的可访问性也非常重要,用户及合作方可以方便快捷地访问和查询所需数据。

  3. 数据库的可扩展性对于大数据系统来说也很重要。随着系统功能的迭代,数据量的不断增长,数据库需要支持水平或垂直扩展,以适应数据量的增加,避免性能瓶颈。

  4. 数据库的安全性非常关键。由于交易数据涉及敏感信息,选择具备高级安全特性的数据库可以有效保护数据不被未授权访问或泄露。

  5. 成本效益分析也是数据库选型时需要考虑的。除了初始投资成本外,还需考虑维护成本、运营成本及长期可支持性。

在多元量化交易系统研发初期,我们使用的是基于 PostgreSQL 的时序数据库——TimescaleDB,它结合了传统关系型数据库的功能与时序数据存储和查询的优化。然而,随着系统和数据逐步扩展,TimescaleDB 的问题逐渐显现:

  • 写入性能:由于量化系统数据写入存在高并发,TimescaleDB 在高吞吐量写入时出现瓶颈,同时增大了硬件系统的工作负载。

  • 读取延时:尽管 TimescaleDB 使用了多种索引和机制来加速查询,但在需要扫描大量历史数据的回测功能中,仍然存在延迟。

  • 空间占用:由于 TimescaleDB 是基于 PostgreSQL 实现,并且为了支持高效的时序数据管理增加了额外的数据结构,因此在存储相同数量的数据时占用更多的磁盘空间,这对每日处理海量行情数据的量化系统非常不利。

根据行情模块技术开发和拓展需求,以及后期运营拓展的考量,我们需要对整个时序数据库(Time Series Database)进行迭代,通过对目前常用的数据库类型进行评判和分析:

  • ClickHouse:面临的问题包括高昂的运维成本、复杂的扩展过程以及对资源的大量需求。

  • InfluxDB:擅长高效查询和存储时序数据,广泛用于监控数据和物联网行业的实时数据处理,但其集群功能尚未开源。

  • TDengine:在性能、成本和运维简易性方面表现良好,支持水平扩展,并具备高可用性。

针对行情数据的时效性需求,时序数据库是最合适的存储解决方案。通过对比,我们发现,在相同的数据集和硬件条件下,TDengine 的写入速度远超 InfluxDB。此外,TDengine 还提供丰富的数据接口支持,包括 C/C++、Java、Python、Go 和 RESTful 等,满足各种开发需求。

因此,我们最终选择了 TDengine。

建模及应用

多元量化 AI 策略交易系统需从多个交易所中提取大量行情数据。数据提取呈现以下特点:

Tick 快照数据:

  1. 每日生成超过亿条记录;

  2. 快照数据需长期保留,且频繁调用。

Daily数据:

  1. 多子表结构,每日新增约 20 万张;

  2. 数据量巨大,每秒约 6 万条数据写入;

  3. 数据需长期保存。

通用特性:

  • 数据格式固定,并附带时间戳;

  • 数据几乎无需更新或删除;

  • 标签列数量少且稳定;

  • 单条记录的字段数量少、数据量小。

基于 TDengine 推荐的数据架构,我们将针对不同特性的数据分别构建独立的数据库,并根据各自特性进行参数优化。在每个数据库中,根据数据品种(如期货、期权等)创建超级表,并将标的实体的标签信息直接作为超级表的标签字段,以此为不同品种的数据创建子表。此数据模型的构建方式高度契合了我们的数据特性和应用场景。

当前,我们的业务主要面向国内的期货和期权市场,股票业务仍在研发阶段。数据库的应用分为离线业务(回测)和实时业务两部分。回测用于计算基本框架和参数范围,实时业务结合最新数据对框架进行动态调整,二者相辅相成,共同生成交易策略。

在数据写入方面,TDengine 轻松满足了上述业务需求。在数据查询方面,针对离线和在线业务,我们主要使用如下两类高频 SQL 查询。由于 TDengine 支持缓存最新数据,并采用顺序读取机制,即使在高并发查询下也毫无压力,均可实现毫秒级返回。这为我们在离线与实时数据分析中提供了坚实的技术保障。

在线查询:

SELECT last_row(*) FROM tick_CZCE_SA501;

离线查询:

SELECT * FROM tick_CZCE_SA501 WHERE ts < '2024-10-09 15:00:00.000' ORDER BY ts DESC LIMIT 1000;

实施经验分享

为确保数据的稳定高效获取,实施过程中需要重点考虑查询性能、线上数据更新和运维情况。在此过程中,我们参考了官方博客中同花顺在 TDengine 上处理类似行情数据的解决方案。

最终,我们选择了如下硬件配置来搭建数据库:双路 AMD 48 核 96 线程 CPU,128GB 内存,8TB 固态硬盘。当前系统每日负载情况如下:CPU 使用率平均约为 20%,内存使用率 20%,数据压缩率控制在 10% 以内。

TDengine 的最大优势在于处理大规模时序数据,非常适合金融行情数据(如期货、期权价格及交易记录)。这些数据的特点在于高频写入、固定查询模式,且通常基于时间范围进行聚合或分析。然而,作为一款金融应用系统,除了时序数据外,还涉及大量其他类型的数据和复杂的业务逻辑需求,因此我们仍然保留了 PostgreSQL 关系数据库,以支持多样化的数据需求。

结语

TDengine 在成本控制、性能表现和用户友好性方面表现出色,尤其在成本节约方面尤为突出。展望未来,我们期待 TDengine 持续优化其性能和稳定性。同时,我们将基于业务需求开展二次开发,并积极向社区分享成果,共同推动 TDengine 的进步与发展。

关于多元量化

广西多元量化科技有限公司成立于 2023 年,是一家专注于人工智能技术研发与应用的领先企业。其致力于将大数据与人工智能相结合,服务于金融资产管理系统。多元量化提供程序化快速交易系统、量化策略开发及植入服务,结合先进的 IT 技术与丰富的行业经验,为机构和投资者量身定制高效的量化解决方案。多元量化产品线涵盖行情分析系统、程序化智能交易系统、策略模型平台和量化资产管理平台,并提供专属定制服务,满足客户的多样化需求。

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

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

相关文章

【nginx】client timed out和send_timeout的大小设置

websocket连接会断开&#xff0c;抓包检查后发现是中间的代理服务器nginx断开的&#xff0c;同时将后端和浏览器都断开了。将nginx日志调到debug级别后&#xff0c;有下面的断开信息。 [info] 125923#125923: *34 client timed out (110: Connection timed out) while proxyin…

什么是RAG? LangChain的RAG实践!

1. 什么是RAG RAG的概念最先在2020年由Facebook的研究人员在论文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》中提出来。在这篇论文中他们提出了两种记忆类型&#xff1a; 基于预训练模型&#xff08;当时LLM的概念不像现在这么如日中天&#xff0…

A027-基于Spring Boot的农事管理系统

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600…

13. 基于yolov8苹果叶片病害识别系统(含UI界、Python代码、训练好的模型、数据集)

项目介绍 项目中所用到的算法模型和数据集等信息如下&#xff1a; 算法模型&#xff1a;     yolov8、yolov8 SE注意力机制 或 yolov5、yolov5 SE注意力机制 &#xff0c; 直接提供最少两个训练好的模型。模型十分重要&#xff0c;因为有些同学的电脑没有 GPU&#xff0…

新的服务器Centos7.6 安装基础的环境配置(新服务器可直接粘贴使用配置)

常见的基础服务器配置之Centos命令 正常来说都是安装一个docker基本上很多问题都可以解决了&#xff0c;我基本上都是通过docker去管理一些容器如&#xff1a;mysql、redis、mongoDB等之类的镜像&#xff0c;还有一些中间件如kafka。下面就安装一个 docker 和 nginx 的相关配置…

Three.js性能优化和实践建议

Three.js 是一个功能强大的 3D 引擎&#xff0c;当场景足够大的时候&#xff0c;就会出现卡顿的现象&#xff0c;首先要保证电脑的性能够用&#xff0c;然后看看下面方法&#xff0c;帮助你提高应用的运行效率。 1. 使用 stats.js 监视性能 在进行任何优化之前&#xff0c;首…

ima.copilot-腾讯智能工作台

一、产品描述 ima.copilot是腾讯推出的基于腾讯混元大模型技术的智能工作台&#xff0c;通过先进的人工智能技术&#xff0c;为用户提供了一个全新的搜读写体验&#xff0c;让知识管理变得更加智能和高效。它不仅是一个工具&#xff0c;更是一个智能的伙伴&#xff0c;能够帮助…

Jdbc学习笔记(二)核心API--ResultSet

ResultSet之滚动结果集 ResultSet默认只能往下移 ResultSet表示结果集&#xff0c;它是一个二维的表格&#xff01;ResultSet内部维护一个行光标&#xff08;游标&#xff09;&#xff0c;ResultSet提供了一系列的方法来移动游标&#xff1a; void beforeFirst()&#xff1a;…

【服务器】本地安装X11 服务器-Windows

【服务器】本地安装X11 服务器-Windows X11 服务器概述X Window System 简介 本地安装X11 服务器另&#xff1a;采用 MobaXterm (自带 X server) 连接远程服务器简单说明流程&#xff1a; 参考 X11 服务器概述 X11 服务器 是 X Window System&#xff08;简称 X11 或 X&#x…

【机器学习】机器学习中用到的高等数学知识-3.微积分 (Calculus)

3. 微积分 (Calculus) 导数和梯度&#xff1a;用于优化算法&#xff08;如梯度下降&#xff09;中计算损失函数的最小值。偏导数&#xff1a;在多变量函数中优化目标函数。链式法则&#xff1a;在反向传播算法中用于计算神经网络的梯度。 导数和梯度&#xff1a;用于优化算法…

[Import REC] Import REC下载及使用Import REC重建引入表Import table详细过程(附有下载文件)

前言 下载 使用夸克网盘打开链接&#xff0c;给出的是绿化版免安装 Import REC 链接&#xff1a;https://pan.quark.cn/s/552e4c1ea7d6 提取码&#xff1a;qEMM 下载之后解压得到 里面有使用更新说明 使用修复import table 演示 现在有一个程序&#xff0c;放入PEiD进行查壳…

MySQL技巧之跨服务器数据查询:高级篇-先调用A数据库的MySql存储过程再复制到B数据库的表中

MySQL技巧之跨服务器数据查询&#xff1a;高级篇-先调用A数据库的MySql存储过程再复制到B数据库的表中 基础篇已经描述&#xff1a;借用微软的SQL Server ODBC 即可实现MySQL跨服务器间的数据查询。 而且还介绍了如何获得一个在MS SQL Server 可以连接指定实例的MySQL数据库的…

AI制作表情包,每月躺赚1W+,完整流程制作多重变现教学

项目介绍 AI制作表情包项目是一个利用ai&#xff0c;快速生成表情包的副业项目。 在社交平台如微信、QQ等&#xff0c;表情包已成为日常沟通不可或缺的一部分。通过AI技术&#xff0c;我们可以轻松制作出大量表情包&#xff0c;并通过多种渠道实现变现&#xff0c;非常适合追…

excel使用

上中下旬的逾期金额 步骤&#xff1a; 1、先判断上中下旬的时间范围 2、根据城市和时间求和&#xff0c;算出对应的逾期金额 问题&#xff1a;当从左插入列时&#xff0c;列的格式与原本一致&#xff0c;当我们想看数值时&#xff0c;发现为日期 解决&#xff1a;在开始-数据格…

MySQL算数运算符基础:详解与入门

目录 背景&#xff1a; 过程&#xff1a; 1.加法与减法运算符 1.2扩展&#xff1a; 1.3运算结果得出结论 &#xff1a; 2.乘法和除法运算 ​2.1练习&#xff1a; 2.2运算结果得出结论 &#xff1a; 3.求模取余运算符 3.1练习&#xff1a; 总结&#xff1a; 背景&a…

2024年AI办公工具API:高效办公的智能选择

在2024年&#xff0c;AI技术已经深入到我们工作生活的方方面面&#xff0c;极大地提高了办公效率和质量。这些工具通过集成先进的算法和模型&#xff0c;使得日常任务自动化、数据分析智能化、内容创作高效化。以下是2024年最受欢迎的AI办公工具API&#xff0c;它们正在重新定义…

力扣 LeetCode 142. 环形链表II(Day2:链表)

解题思路&#xff1a; 使用set判断是否重复添加&#xff0c;如果set加入不进去证明之前到达过该节点&#xff0c;有环 public class Solution {public ListNode detectCycle(ListNode head) {Set<ListNode> set new HashSet<>();ListNode cur head;while (cur …

基于Spring Boot的电子商务系统设计

5 系统实现 系统实现部分就是将系统分析&#xff0c;系统设计部分的内容通过编码进行功能实现&#xff0c;以一个实际应用系统的形式展示系统分析与系统设计的结果。前面提到的系统分析&#xff0c;系统设计最主要还是进行功能&#xff0c;系统操作逻辑的设计&#xff0c;也包括…

使用 Vue 配合豆包MarsCode 实现“小恐龙酷跑“小游戏

作者&#xff1a;BLACK595 “小恐龙酷跑”&#xff0c;它是一款有趣的离线游戏&#xff0c;是Google给Chrome浏览器加的一个有趣的彩蛋。当我们浏览器断网时一只像素小恐龙便会出来提示断网。许多人认为这只是一个可爱的小图标&#xff0c; 但当我们按下空格后&#xff0c;小恐…

Attention is all you need详细解读

transformer目的是解决NLP中使用RNN不能并行计算问题。 Encoder-Decoder, Attention, Transformer 三者关系 1.基础储备 &#xff08;1&#xff09;CV基础知识 1.首先拿CV中的分类任务来说&#xff0c;训练前我们会有以下几个常见步骤&#xff1a; 2.获取图片 3.定义待分类的类…