1 界面预览
金融市场分析平台的搭建是看盘交易和程序化交易的首要条件,通过对市场数据进行采集与清洗,为量化交易提供了必要的数据基础,而数据处理和分析能力为量化交易策略的开发与优化提供了技术支持。
这可以说是量化交易的第一步,也是我们后续合规给出买卖点的关键一步。
出于上述原因,本篇文章提出了金融市场分析平台的搭建思路,它通过整合第三方开源组件的方式来使得搭建过程产生的成本与时间尽可能压缩,同时保证整个平台的功能性与工程化。
图一:金融市场分析平台的可视化界面
2 整体架构
在本篇文章中,量化交易系统被拆分成四个子平台,它们在功能上具有互补性,分别是市场分析平台、看盘择时平台、策略研究平台和实盘交易平台。
市场分析平台无需多说,其就是本篇文章的主题,它是整个后续流程的前奏与先验的铺垫。
看盘择时平台通过接入市场分析平台的数据,同时提供丰富的画图工具与美观的可视化界面,为诸如均线、缠论、波浪等技术分析方法埋下灵感的土壤。
策略研究平台是使用一系列程序化方法,评估一个交易策略的好坏,更深层次,它往往涉及许多概率统计的数学概念,以及算子的复现。
实盘交易平台主要操作现实的证券账号,根据已通过检验的策略代码来自动执行实际的买卖操作,获取真实的收益或亏损。
在这里,我们仅针对第一个平台,也就是市场分析平台的搭建进行讨论。图二是我们的平台架构示意图,它一共分成两个部分,左边是组件流程图,右边是组件工具图。
在组件流程图中,我们使用开源的 python 策略工具包 trade-learn 作为平台的数据源接口,它会把通达信交易软件、雅虎财经网站、东方财富网站和其它数据源进行统一封装;
为了管理未来繁琐且数量庞大的数据处理任务,在数据采集与清洗的同时,我们会以有向无环图的形式来绘制数据处理管道;最终将清洗后的数据集合接入至可视化 BI 系统,用户可以直接进行浏览与分析。
其中,trade-learn 提供的与策略研发相关的功能,会被嵌入至第三个平台——策略研究平台中继续发挥作用。
在组件工具图中,给出了整个市场分析平台的基本组件名称,它们分别是 trade-learn、maga-ai、duckdb、minio 和 apache superset。
图二:市场分析平台的架构示意图
trade-learn 是近期推出来的面向交易策略爱好者的 python 工具包,它将多个专业策略研发工具进行整合与封装,为整个策略研发流程提供了简单易用的程序接口,并创新性引入了因果关系分析方法。
仓库地址:https://github.com/MuuYesen/trade-learn
图三:trade-learn 提供的工具概览图
图四:trade-learn 提供的结果可视化图
对于数据库的选择,我们没有采用传统的 mysql 传统数据库,而是使用面向分析的内存数据库,这主要取决于我们的使用目的。
如果你只是想要数据面板进行固定展示,偶尔进行一下分析操作,那么传统数据库也会更加合适,它在数据的持久性和大规模存储上依旧具有良好的优势。
在去年的 dataframe 处理效率对比的结果报告中,duckdb 在常见算子上的运行速度在多个评测工具包中位于前列,证明 duckdb 作为内存数据库的执行效率。
图五:dataframe 处理效率对比图
作为老牌时序开源数据库 arcticdb 的开发者英仕曼集团,也与彭博公司合作了一款面向时序数据的内存数据库 arctic,依旧令人满怀期待,不过这个仓库由于去年刚刚上线,稳定性与兼容性尚未可知,还是让我们的子弹先飞一会吧。
3 相关技术
3.1 apache superset 商业分析系统
Apache Superset 是一个先进的数据可视化和数据探索平台,它拥有丰富的可视化效果,从简单的条形图到复杂的地理空间图都能轻松实现,被认为是当今最优秀的开源商业智能工具之一。
Superset 不仅可以替代许多团队使用的专有商业智能工具,还能与各种数据源进行友好地集成。它与多种数据源完美集成,用户无需编写代码即可快速生成图表,同时其强大的 Web SQL 编辑器对 Oracle、MySQL、Doris 等几乎所有 SQL 数据库提供开箱即用的支持。
3.2 mage-ai 任务管理系统
Mage.ai 是一个开源的且易于使用的数据管道工具,旨在转换和集成数据,它赋予你的数据团队魔法般的力量,让数据处理变得轻松愉快。它具备数据集的可视化功能,让用户可以通过用户界面直观地查看数据集,便于分析和调试,同时大大简化了管道定义过程,减少了复杂代码编写的负担。
3.3 duckdb 数据库管理系统
DuckDB 是一个开源的 OLAP 数据库,专为数据分析而设计。类似于 SQLite,它是一个可嵌入到应用程序中的内存数据库。
DuckDB 利用矢量化查询处理,在 CPU 缓存内实现高效操作,并最大限度地减少函数调用开销。支持从 CSV、JSON 和 Apache Parquet 等源中摄取数据,并使用熟悉的 SQL 语法快速查询,提供了库供各种编程语言使用。
3.4 minio 文件存储系统
MinIO 是一个开源的对象存储服务器,专为大规模数据集和高并发工作负载而设计。它兼容 Amazon S3 API,并提供了高度可扩展性和性能。MinIO 可以在本地部署,也可以在云端或混合环境中使用,为用户提供了灵活的存储解决方案。
在现代数据架构中,MinIO 通常与 DuckDB 结合使用,用于存储和管理大规模数据集,为 DuckDB 提供高效的数据访问和查询能力。MinIO 的高可用性和可靠性,与 DuckDB 的高性能和灵活性相辅相成,共同构建了现代化的数据堆栈。