Skip to content

cz9874308/panda_quantflow

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PandaAI Quantflow 量化工作流平台

概述

PandaAI QuantFlow 是一个集成的量化交易和机器学习工作流平台,旨在为量化研究人员提供完整的端到端解决方案,降低AI门槛,打破传统量化高门槛壁垒,让主观交易者、学生乃至普通投资者都能参与策略研发。 预览 预览 预览 预览

🚀 核心功能

🔧 可视化工作流编排

  • 基于节点的可视化工作流设计器,支持拖拽式构建复杂的量化研究和交易策略流程
  • 丰富的内置工作节点,涵盖数据处理、特征工程、机器学习、因子分析和回测等各个环节
  • 灵活的插件系统,支持自定义工作节点开发和扩展

🤖 机器学习集成

  • 支持主流机器学习算法:XGBoost、LightGBM、RandomForest、SVM、神经网络等
  • 提供多任务学习(MTL)和深度学习解决方案
  • 自动化模型训练、验证和预测流程

📈 因子分析与回测策略验证

  • 高性能回测引擎,支持股票、期货
  • 完整的事件驱动架构,精确模拟真实交易环境
  • 兼容PandaFactor分析框架

🌐 企业级服务架构

  • 基于FastAPI的高性能REST API服务
  • 支持多用户工作流管理和权限控制
  • 分布式任务执行,支持云端和本地部署
  • 完善的日志系统和实时监控

🎯 适用场景

  • 量化研究:因子挖掘、策略开发、模型验证
  • 算法交易:策略回测、实盘验证、风险管理
  • 金融数据分析:市场研究、投资组合优化
  • 机器学习应用:金融预测模型、智能投顾

💡 技术特色

  • 微服务架构:模块化设计,易于扩展和维护
  • 插件化设计:通过 @work_node 装饰器轻松开发自定义节点
  • 工作流支持json导入导出:通过json文件快速传播和复现工作流
  • 容器化部署:支持Docker和Docker Compose快速部署

📚 新手入门教程

我们为零基础用户准备了详细的入门教程系列,帮助你快速掌握 PandaAI QuantFlow 的使用方法。

教程目录

课程 标题 时长 难度
第1课 项目介绍与环境搭建 1小时
第2课 快速开始 - 第一个工作流 1小时
第3课 核心概念理解 1.5小时 ⭐⭐
第4课 因子构建与分析 2小时 ⭐⭐
第5课 策略回测实战 2小时 ⭐⭐⭐
第6课 机器学习节点使用 2小时 ⭐⭐⭐
第7课 自定义插件开发 2小时 ⭐⭐⭐
第8课 完整实战项目 3小时 ⭐⭐⭐

👉 查看完整教程目录

已规划功能,欢迎加群内测

LLM支持

API代码式调用工作流

CTP实盘交易

QMT实盘交易

数字货币支持

服务安装与运行

安装包方式 (简单,快速体验)

  • 若是您不想花时间搭环境,可以用我们打包好的客户端,一键解压,可直接运行,因为内置数据库和行情数据,文件略大。 预览 内含工作流、超级图表、因子模块。
  • MacOS 系统: [准备中]
  • Windows 系统: 下载 Windows 安装包(因为文件大小限制,做了分包,请下载全部文件再解压)

从源码安装(高度自定义,适合二次开发)

前置条件

  1. 安装 ANACONDA 环境 (官网下载)
  2. 下载并启动PandaAI提供的数据库(含有行情数据)
    请联系小助理从网盘下载最新的数据库
    • MacOS 系统: 下载并解压后运行 chmod 600 conf/mongo.key bin/mongod -replSet rs0 --dbpath data/db --keyFile conf/mongo.key --port 27017 --quiet --auth
    • Windows 系统: 下载并解压后运行 bin\mongod.exe --replSet rs0 --dbpath data\db --keyFile conf\mongo.key --port 27017 --quiet --auth
  3. 安装 panda_factor 相关依赖,并且启动factor服务
    git clone https://github.com/PandaAI-Tech/panda_factor.git
    cd panda_factor
    pip install -r requirements.txt
    pip install -e  ./panda_common ./panda_factor ./panda_data ./panda_data_hub ./panda_llm ./panda_factor_server 
    python ./panda_factor_server/panda_factor_server/__main__.py
    panda_factor还有若干功能,例如数据自动更新等,具体请查看(PandaFactor)

安装流程

  1. 安装 panda_quantflow
    git clone https://github.com/PandaAI-Tech/panda_quantflow.git
    cd panda_quantflow
    pip install -e .
  2. 启动 panda_quantflow 服务
    python src/panda_server/main.py
  3. 打开 UI 图形界面
    超级图表:http://127.0.0.1:8000/charts/
    工作流:http://127.0.0.1:8000/quantflow/

编写自定义插件

  • 开发者可以在项目目录.src/panda_plugins/custom/中编写自定义插件, 以在工作流中使用
  • 自定义插件需要继承 BaseWorkNode 并实现 input_model, output_modelrun 3 个方法
  • 自定义插件示例 (更多示例在.src/panda_plugins/custom/examples/中)
    from typing import Optional, Type
    from panda_plugins.base import BaseWorkNode, work_node
    from pydantic import BaseModel
    
    class InputModel(BaseModel):
       """
       Define the input model for the node.
       Use pydantic to define, which is a library for data validation and parsing.
       Reference: https://pydantic-docs.helpmanual.io
       
       
       为工作节点定义输入模型.
       使用 Pydantic 定义, Pydantic 是一个用于数据验证和解析的库.
       参考文档: https://pydantic-docs.helpmanual.io
       """
       number1: int
       number2: int
    
    class OutputModel(BaseModel):
       """
       Define the output model for the node.
       Use pydantic to define, which is a library for data validation and parsing.
       Reference: https://pydantic-docs.helpmanual.io
       
       为工作节点定义输出模型.
       使用 Pydantic 定义, Pydantic 是一个用于数据验证和解析的库.
       参考文档: https://pydantic-docs.helpmanual.io
       """
       result: int
    
    @work_node(name="示例-两数求和", group="测试节点")
    class ExamplePluginAddition(BaseWorkNode):
       """
       Implement a example node, which can add two numbers and return the result.
       实现一个示例节点, 完成一个简单的加法运算, 输入 2 个数值, 输出 2 个数值的和.
       """
    
       # Return the input model
       # 返回输入模型
       @classmethod
       def input_model(cls) -> Optional[Type[BaseModel]]:
          return InputModel
    
       # Return the output model
       # 返回输出模型
       @classmethod
       def output_model(cls) -> Optional[Type[BaseModel]]:
          return OutputModel
    
       # Node running logic
       # 节点运行逻辑
       def run(self, input: BaseModel) -> BaseModel:
          result = input.number1 + input.number2
          return OutputModel(result=result)
    
    if __name__ == "__main__":
       node = ExamplePluginAddition()
       input = InputModel(number1=1, number2=2)
       print(node.run(input))

我们欢迎每一位用户加入节点贡献行列,共同点燃量化开源的火焰🔥

如果有新的节点需求,也欢迎进群告诉我们,只要有助于项目发展,我们都愿意免费支持开发。

项目结构**

panda_workflow/
├── src/                    # 所有源代码
│   ├── common/             # 通用工具和配置
│   ├── panda_ml/           # 机器学习组件
│   ├── panda_plugins/      # 插件系统
│   ├── panda_server/       # API服务
│   ├── panda_backtest/     # 回测系统
│   └── panda_trading/      # 交易执行系统
├── tests/                  # 测试目录
├── pyproject.toml          # 项目配置和依赖
├── Dockerfile              # Docker配置
└── docker-compose.yml      # Docker Compose配置

系统架构图

┌─────────────────────────────────────────────────────────────────────────┐
│                          前端界面层 (panda_web)                          │
│                    ┌──────────────┐  ┌──────────────┐                  │
│                    │  工作流编辑器  │  │  超级图表    │                  │
│                    └──────┬───────┘  └──────┬───────┘                  │
└────────────────────────────┼────────────────┼──────────────────────────┘
                             │                │
                             ▼                ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                      API 服务层 (panda_server)                            │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐                  │
│  │ 工作流路由   │  │  插件路由    │  │  回测路由    │                  │
│  └──────┬───────┘  └──────┬───────┘  └──────┬───────┘                  │
│         │                 │                  │                          │
│         └────────┬────────┴────────┬─────────┘                          │
│                  ▼                ▼                                     │
│         ┌──────────────────────────────────┐                            │
│         │    工作流执行引擎                 │                            │
│         │  (拓扑排序 + 分层执行)            │                            │
│         └──────────────┬───────────────────┘                            │
└────────────────────────┼────────────────────────────────────────────────┘
                         │
                         ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                      插件系统层 (panda_plugins)                          │
│  ┌──────────────────────────────────────────────────────────────┐    │
│  │                    插件注册表 (ALL_WORK_NODES)                  │    │
│  └──────┬───────────────────────────────────────────┬──────────────┘    │
│         │                                           │                   │
│    ┌────▼─────┐  ┌──────────┐  ┌──────────┐  ┌───▼────┐              │
│    │ 内置插件  │  │ 数据处理  │  │ 机器学习  │  │ 回测节点│              │
│    │ internal │  │  节点    │  │   节点    │  │        │              │
│    └──────────┘  └──────────┘  └──────────┘  └────────┘              │
│         │                                           │                   │
│    ┌────▼───────────────────────────────────────────▼────┐             │
│    │           自定义插件 (custom)                        │             │
│    │     继承 BaseWorkNode + @work_node 装饰器             │             │
│    └─────────────────────────────────────────────────────┘             │
└────────────────────────┬────────────────────────────────────────────────┘
                         │
         ┌───────────────┼───────────────┐
         │               │               │
         ▼               ▼               ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 回测引擎      │ │ 机器学习组件  │ │ 交易执行系统  │
│(panda_backtest│ │ (panda_ml)   │ │(panda_trading)│
│              │ │              │ │              │
│ 事件驱动架构  │ │ XGBoost      │ │ CTP/QMT      │
│ 股票/期货     │ │ LightGBM     │ │ 实盘交易      │
│ 策略回测      │ │ PyTorch      │ │ 风险控制      │
└──────┬───────┘ └──────────────┘ └──────────────┘
       │
       ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                        数据存储层                                        │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐                  │
│  │   MongoDB    │  │    Redis     │  │  GridFS      │                  │
│  │              │  │              │  │              │                  │
│  │ 工作流定义    │  │   缓存/队列   │  │ 节点输出数据  │                  │
│  │ 运行状态      │  │   任务队列    │  │ 回测结果      │                  │
│  │ 用户数据      │  │              │  │              │                  │
│  └──────────────┘  └──────────────┘  └──────────────┘                  │
└─────────────────────────────────────────────────────────────────────────┘
                         │
                         ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                      消息队列层 (可选)                                   │
│                    ┌──────────────┐                                    │
│                    │   RabbitMQ    │                                    │
│                    │               │                                    │
│                    │ CLOUD模式使用 │                                    │
│                    │ 分布式任务执行 │                                    │
│                    └──────────────┘                                    │
└─────────────────────────────────────────────────────────────────────────┘

数据流程图

┌─────────────────────────────────────────────────────────────────────────┐
│                        工作流执行完整流程                                  │
└─────────────────────────────────────────────────────────────────────────┘

【1. 工作流定义阶段】
    ┌──────────────┐
    │  用户创建/编辑 │
    │   工作流定义   │
    └───────┬───────┘
            │
            ▼
    ┌──────────────────┐
    │  MongoDB 存储     │
    │  - workflow      │
    │  - nodes[]       │
    │  - links[]       │
    └───────┬──────────┘
            │
            ▼
【2. 工作流执行触发】
    ┌──────────────────┐
    │  API 请求执行     │
    │  /workflow/run   │
    └───────┬──────────┘
            │
            ▼
    ┌──────────────────┐
    │  创建运行实例     │
    │  workflow_run    │
    │  status: PENDING │
    └───────┬──────────┘
            │
            ▼
    ┌──────────────────┐      ┌──────────────┐
    │  LOCAL 模式       │      │ CLOUD 模式   │
    │  直接执行         │      │ 消息队列     │
    └───────┬──────────┘      └──────┬───────┘
            │                        │
            │                        ▼
            │                ┌──────────────┐
            │                │  RabbitMQ    │
            │                │  任务队列     │
            │                └──────┬───────┘
            │                        │
            └────────┬───────────────┘
                     │
                     ▼
【3. 拓扑排序与分层】
    ┌──────────────────────────────┐
    │  拓扑排序算法                 │
    │  - 构建依赖图                 │
    │  - 计算入度                   │
    │  - 分层组织节点               │
    └───────┬──────────────────────┘
            │
            ▼
    ┌──────────────────────────────┐
    │  执行层序列                   │
    │  Layer 1: [Node1, Node2]     │
    │  Layer 2: [Node3]            │
    │  Layer 3: [Node4, Node5]      │
    └───────┬──────────────────────┘
            │
            ▼
【4. 分层执行节点】
    ┌──────────────────────────────┐
    │  遍历每一层                   │
    └───────┬──────────────────────┘
            │
            ▼
    ┌──────────────────────────────┐
    │  并行执行当前层节点            │
    │  (同一层节点可并行)           │
    └───────┬──────────────────────┘
            │
            ▼
    ┌──────────────────────────────┐
    │  对每个节点:                  │
    │  1. 加载节点类                 │
    │  2. 收集输入数据               │
    │     - 静态输入                │
    │     - 前置节点输出            │
    │  3. Pydantic 验证              │
    │  4. 执行 run() 方法           │
    │  5. 保存输出到 GridFS         │
    └───────┬──────────────────────┘
            │
            ▼
    ┌──────────────────────────────┐
    │  节点输出存储                  │
    │  MongoDB GridFS               │
    │  - workflow_run_id            │
    │  - node_id                   │
    │  - output_data                │
    └───────┬──────────────────────┘
            │
            ▼
    ┌──────────────────────────────┐
    │  更新执行状态                  │
    │  - success_node_ids[]         │
    │  - progress: 0-100%          │
    │  - running_node_ids[]        │
    └───────┬──────────────────────┘
            │
            ▼
    ┌──────────────────────────────┐
    │  所有层执行完成?               │
    │  ┌──────┐      ┌──────┐      │
    │  │ 是   │      │ 否   │      │
    │  └──┬───┘      └──┬───┘      │
    │     │             │          │
    │     │             └──► 继续下一层
    │     │                        │
    │     ▼                        │
    └──────────────────────────────┘
            │
            ▼
【5. 回测节点执行】
    ┌──────────────────────────────┐
    │  回测节点 (backtest_stock/     │
    │           backtest_future)    │
    │  - 接收因子数据 (df_factor)   │
    │  - 接收回测参数               │
    └───────┬──────────────────────┘
            │
            ▼
    ┌──────────────────────────────┐
    │  回测引擎初始化                │
    │  - 加载策略代码               │
    │  - 初始化账户                 │
    │  - 设置时间范围               │
    └───────┬──────────────────────┘
            │
            ▼
    ┌──────────────────────────────┐
    │  事件驱动回测循环              │
    │  ┌────────────────────────┐  │
    │  │ 1. initialize(context) │  │
    │  │ 2. before_trading()    │  │
    │  │ 3. handle_data()       │  │
    │  │    - 计算信号          │  │
    │  │    - 执行交易          │  │
    │  │ 4. after_trading()     │  │
    │  └────────────────────────┘  │
    └───────┬──────────────────────┘
            │
            ▼
    ┌──────────────────────────────┐
    │  交易执行                     │
    │  - 订单生成                   │
    │  - 撮合模拟                   │
    │  - 持仓更新                   │
    │  - 账户结算                   │
    └───────┬──────────────────────┘
            │
            ▼
    ┌──────────────────────────────┐
    │  回测结果计算                 │
    │  - 收益率曲线                 │
    │  - 最大回撤                   │
    │  - 夏普比率                   │
    │  - 交易统计                   │
    └───────┬──────────────────────┘
            │
            ▼
    ┌──────────────────────────────┐
    │  结果存储                     │
    │  MongoDB                     │
    │  - backtest_result           │
    │  - 回测报告数据               │
    └───────┬──────────────────────┘
            │
            ▼
【6. 工作流完成】
    ┌──────────────────────────────┐
    │  更新最终状态                  │
    │  status: SUCCESS              │
    │  progress: 100%               │
    │  output_data_obj: {...}       │
    └───────┬──────────────────────┘
            │
            ▼
    ┌──────────────────────────────┐
    │  前端获取结果                  │
    │  - 工作流执行状态              │
    │  - 节点输出数据                │
    │  - 回测结果报告                │
    └──────────────────────────────┘

核心组件交互图

┌─────────────┐
│   用户操作   │
└──────┬──────┘
       │
       ▼
┌─────────────────────────────────────────────────────────────┐
│                    FastAPI 服务 (panda_server)                │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐     │
│  │ workflow_   │  │ plugins_     │  │ backtest_    │     │
│  │ routes      │  │ routes       │  │ routes        │     │
│  └──────┬──────┘  └──────┬───────┘  └──────┬───────┘     │
│         │                │                  │              │
│         └────────┬───────┴────────┬─────────┘              │
│                  ▼                ▼                          │
│         ┌──────────────────────────────────┐                │
│         │    workflow_run_logic             │                │
│         │    - 权限验证                     │                │
│         │    - 创建运行实例                 │                │
│         │    - 触发执行                     │                │
│         └──────────────┬───────────────────┘                │
└───────────────────────┼────────────────────────────────────┘
                        │
                        ▼
┌─────────────────────────────────────────────────────────────┐
│              工作流执行引擎 (run_workflow_utils)              │
│  ┌──────────────────────────────────────────────────────┐   │
│  │  determine_workflow_execution_order()                 │   │
│  │  - 拓扑排序                                          │   │
│  │  - 分层组织                                          │   │
│  └───────────────────────┬───────────────────────────────┘   │
│                          │                                   │
│                          ▼                                   │
│  ┌──────────────────────────────────────────────────────┐   │
│  │  按层执行:                                            │   │
│  │  for layer in execution_layers:                      │   │
│  │      for node in layer:                              │   │
│  │          1. 加载节点类                                │   │
│  │          2. 收集输入 (静态+前置输出)                   │   │
│  │          3. Pydantic 验证                             │   │
│  │          4. 执行 node.run()                          │   │
│  │          5. 保存输出到 GridFS                        │   │
│  └───────────────────────┬───────────────────────────────┘   │
└──────────────────────────┼────────────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────────┐
│                    插件系统 (panda_plugins)                  │
│  ┌──────────────────────────────────────────────────────┐   │
│  │  ALL_WORK_NODES 注册表                               │   │
│  │  - 内置插件 (internal/)                              │   │
│  │  - 自定义插件 (custom/)                              │   │
│  └───────────────────────┬───────────────────────────────┘   │
│                          │                                   │
│                          ▼                                   │
│  ┌──────────────────────────────────────────────────────┐   │
│  │  BaseWorkNode 基类                                    │   │
│  │  - input_model()  → Pydantic 模型                    │   │
│  │  - output_model() → Pydantic 模型                    │   │
│  │  - run()         → 业务逻辑                          │   │
│  │  - logger        → 日志记录                          │   │
│  └───────────────────────┬───────────────────────────────┘   │
└──────────────────────────┼────────────────────────────────────┘
                          │
        ┌─────────────────┼─────────────────┐
        │                 │                 │
        ▼                 ▼                 ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 数据处理节点  │ │ 机器学习节点 │ │  回测节点    │
│ - CSV读取     │ │ - XGBoost   │ │ - 股票回测   │
│ - 公式计算    │ │ - LightGBM  │ │ - 期货回测   │
│ - 因子构建    │ │ - PyTorch   │ │ - 结果分析   │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
       │                │                 │
       └────────────────┼─────────────────┘
                        │
                        ▼
┌─────────────────────────────────────────────────────────────┐
│                    数据存储层                                 │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐     │
│  │  MongoDB    │  │  GridFS      │  │  Redis        │     │
│  │             │  │              │  │              │     │
│  │ workflow    │  │ 节点输出数据  │  │ 缓存/队列     │     │
│  │ workflow_run│  │ 回测结果     │  │              │     │
│  │ backtest_   │  │              │  │              │     │
│  │ result      │  │              │  │              │     │
│  └──────────────┘  └──────────────┘  └──────────────┘     │
└─────────────────────────────────────────────────────────────┘

加群答疑

PandaAI 交流群

贡献

欢迎贡献代码、提出 Issue 或 PR:

  • Fork 本项目
  • 新建功能分支 git checkout -b feature/AmazingFeature
  • 提交更改 git commit -m 'Add some AmazingFeature'
  • 推送分支 git push origin feature/AmazingFeature
  • 发起 Pull Request

致谢

感谢量化李不白的粉丝们对我们的支持
感谢所有开源社区的贡献者

许可证

本项目采用 GPLV3 许可证

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 89.0%
  • Python 11.0%