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

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 在不久前的“2024,我想和 TDengine 谈谈”征文活动中,我们收到了许多精彩的投稿,反映了用户与 TDengine 之间的真实故事和独特见解。今天,我们很高兴地分享此次活动的第一名作品。这篇文章详细阐述了广西多元量化科技有限公司如何利用 TDengine 构建高效的量化交易系统,提升交易效率和决策质量。通过深入分析数据库选型和数据架构设计,作者展示了 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 等,满足各种开发需求。

image.png
因此,我们最终选择了 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 技术与丰富的行业经验,为机构和投资者量身定制高效的量化解决方案。多元量化产品线涵盖行情分析系统、程序化智能交易系统、策略模型平台和量化资产管理平台,并提供专属定制服务,满足客户的多样化需求。

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
存储 网络协议 文件存储
|
XML 开发工具 Android开发
Repo工作原理及常用命令总结——2023.07(上)
Repo工作原理及常用命令总结——2023.07(上)
2136 0
|
3月前
|
Linux 定位技术
kali Linux 2025.2 安装失败-解决
在安装 Kali Linux 时,若出现“选择并安装软件”步骤失败,通常由网络连接、软件源或硬件驱动问题引起。建议首先尝试重试,若仍失败,可更换为国内镜像源(如阿里云、清华大学或中科大镜像)以提高下载速度和安装成功率。
970 0
kali Linux 2025.2 安装失败-解决
|
编解码 前端开发 UED
探索无界:前端开发中的响应式设计深度解析与实践####
【10月更文挑战第29天】 本文深入探讨了响应式设计的核心理念,即通过灵活的布局、媒体查询及弹性图片等技术手段,使网站能够在不同设备上提供一致且优质的用户体验。不同于传统摘要概述,本文将以一次具体项目实践为引,逐步剖析响应式设计的关键技术点,分享实战经验与避坑指南,旨在为前端开发者提供一套实用的响应式设计方法论。 ####
305 4
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
455 1
服务架构的演进:从单体到微服务的探索之旅
|
网络协议 数据库 网络架构
OSPF的LSA类型详解
OSPF的LSA类型详解
611 3
|
缓存 Cloud Native 安全
探索阿里巴巴新型ORM框架:超越MybatisPlus?
【10月更文挑战第9天】在Java开发领域,Mybatis及其增强工具MybatisPlus长期占据着ORM(对象关系映射)技术的主导地位。然而,随着技术的发展,阿里巴巴集团推出了一种新型ORM框架,旨在提供更高效、更简洁的开发体验。本文将对这一新型ORM框架进行探索,分析其特性,并与MybatisPlus进行比较。
557 0
|
搜索推荐 Java API
如何在Java应用中实现全文搜索功能
如何在Java应用中实现全文搜索功能
|
NoSQL Shell MongoDB
【Python】已解决:(MongoDB安装报错)‘mongo’ 不是内部或外部命令,也不是可运行的程序
【Python】已解决:(MongoDB安装报错)‘mongo’ 不是内部或外部命令,也不是可运行的程序
1382 0
|
SQL 数据挖掘 Serverless
SQL 窗口函数简直太厉害啦!复杂数据分析的超强利器,带你轻松攻克数据难题,快来一探究竟!
【8月更文挑战第31天】在数据驱动时代,高效处理和分析大量数据至关重要。SQL窗口函数可对一组行操作并返回结果集,无需分组即可保留原始行信息。本文将介绍窗口函数的分类、应用场景及最佳实践,助您掌握这一强大工具。例如,在销售数据分析中,可使用窗口函数计算累计销售额和移动平均销售额,更好地理解业务趋势。
442 0