Skip to main content

AQuant 量化框架 —— Crypto 优先·纯 Python·JSON 驱动

Project description

AQuant

一个纯 Python、Crypto 优先、JSON 驱动的量化交易框架。

CI PyPI Python License


核心特性

  • 纯 Python — Python 3.11+,asyncio 异步事件驱动,无 C++ 依赖
  • Crypto 优先 — 原生支持 Binance、OKX、Bybit 等主流交易所
  • JSON 驱动 — 一个策略就是一个 JSON 配置文件,声明式定义经纪商/风控/资金/模式
  • 回测/实盘一致 — Broker、Risk、Execution 统一抽象,同一套代码两种模式
  • 多策略资金隔离 — SubPortfolio 独立风控 + MasterPortfolio 组合归因
  • ML 内建 — ONNX Runtime 推理 + FeaturePipeline + FactorRegistry
  • 全局结构化日志 — JSON 日志标准,全系统字段一致,直接对接 Loki/ELK

快速开始

安装

pip install aquant

回测一个双均线策略

# 1. 准备配置
cat > my_strategy.json << 'EOF'
{
  "$schema": "aquant://config/v1",
  "meta": {"strategy_id": "demo_dual_ma", "version": "1.0.0"},
  "mode": "backtest",
  "capital": {"base_currency": "USDT", "initial": 10000},
  "broker": {"exchange": "binance", "market_type": "spot"},
  "data": {
    "feeds": [{
      "symbol": "BTCUSDT", "timeframe": "1h", "source": "parquet",
      "path": "data/BTCUSDT_1h.parquet",
      "start": "2024-01-01T00:00:00Z", "end": "2024-12-31T23:59:59Z"
    }],
    "warmup_bars": 100
  },
  "strategy": {
    "module": "strategies.dual_ma",
    "class": "DualMAStrategy",
    "params": {"fast_period": 10, "slow_period": 30}
  },
  "risk": {
    "pre_trade": {"max_position_ratio": 0.95},
    "stop_loss": {"enabled": true, "type": "fixed", "trigger": 0.05}
  },
  "sizer": {"type": "percent", "params": {"percents": 90}},
  "logging": {"level": "INFO"}
}
EOF

# 2. 运行回测
aquanta backtest my_strategy.json

# 3. 查看报告
aquanta plot my_strategy.json
aquanta report my_strategy.json

编写自定义策略

from aquant import Strategy, indicators

class MyStrategy(Strategy):
    def __init__(self):
        self.fast = indicators.SMA(period=self.p.fast_period)
        self.slow = indicators.SMA(period=self.p.slow_period)

    def next(self):
        if self.fast > self.slow and not self.position:
            self.buy(size=self.sizer.getsizing())
        elif self.fast < self.slow and self.position:
            self.sell(size=self.position.size)

目录结构

AQuant/
├── README.md                   # 本文档
├── LICENSE                     # MIT License
├── pyproject.toml              # Poetry 配置,依赖定义
│
├── docs/                       # 文档(项目唯一真理源)
│   ├── ARCHITECTURE_v1.md      # 架构总览
│   ├── STANDARDS.md            # 项目技术标准与开发规范
│   ├── LOGGING_STANDARD.md     # 全局日志标准
│   ├── JSON_SCHEMA.md          # JSON 配置 Schema
│   ├── DECISIONS.md            # 架构决策记录(ADR)
│   │
│   ├── modules/                # 子模块设计文档(一模块一文档)
│   │   ├── engine.md           # AQuantEngine 核心编排 → 见 docs/modules/engine.md
│   │   ├── strategy.md         # Strategy 基类与生命周期 → 见 docs/modules/strategy.md
│   │   ├── data.md             # DataFeed 与数据源 → 见 docs/modules/data.md
│   │   ├── broker.md           # Broker 抽象与实现 → 见 docs/modules/broker.md
│   │   ├── execution.md        # 订单与执行 → 见 docs/modules/execution.md
│   │   ├── risk.md             # RiskEngine 与规则 → 见 docs/modules/risk.md
│   │   ├── portfolio.md        # 组合与资金隔离 → 见 docs/modules/portfolio.md
│   │   ├── indicators.md       # 技术指标系统 → 见 docs/modules/indicators.md
│   │   ├── ml.md               # 机器学习集成 → 见 docs/modules/ml.md
│   │   ├── alpha.md            # 多因子平台 → 见 docs/modules/alpha.md
│   │   ├── analyzers.md        # 绩效分析器 → 见 docs/modules/analyzers.md
│   │   ├── observers.md        # 监控与绘图 → 见 docs/modules/observers.md
│   │   ├── config.md           # 配置系统 → 见 docs/modules/config.md
│   │   ├── logger.md           # 结构化日志 → 见 docs/modules/logger.md
│   │   ├── events.md           # 事件系统 → 见 docs/modules/events.md
│   │   ├── exceptions.md       # 异常体系 → 见 docs/modules/exceptions.md
│   │   └── cli.md              # 命令行接口 → 见 docs/modules/cli.md
│   │
│   ├── api/                    # API 参考文档
│   │   └── strategy_api.md     # Strategy 开发 API → 见 docs/api/strategy_api.md
│   │
│   └── guides/                 # 用户指南
│       ├── quickstart.md       # 快速入门 → 见 docs/guides/quickstart.md
│       ├── backtesting.md      # 回测指南 → 见 docs/guides/backtesting.md
│       ├── live_trading.md     # 实盘交易指南 → 见 docs/guides/live_trading.md
│       └── custom_strategy.md  # 自定义策略开发 → 见 docs/guides/custom_strategy.md
│
├── aquant/                     # 主 Python 包
│   ├── __init__.py             # 公共 API 暴露
│   ├── __version__.py          # 版本号单一来源
│   ├── engine.py               # AQuantEngine(核心编排入口)
│   ├── config.py               # Pydantic 配置模型(JSON Schema 的代码实现)
│   ├── logger.py               # 结构化日志系统
│   ├── events.py               # 事件定义与事件总线
│   ├── exceptions.py           # 自定义异常树
│   ├── cli.py                  # 命令行入口
│   │
│   ├── core/                   # 核心抽象(借鉴 Backtrader)
│   │   ├── __init__.py
│   │   ├── strategy.py         # Strategy 基类
│   │   ├── data.py             # DataFeed / Bar / Tick 归一化数据结构
│   │   ├── broker.py           # BaseBroker 抽象接口
│   │   ├── sizer.py            # Sizer 基类与内置实现
│   │   ├── observer.py         # Observer 基类
│   │   ├── analyzer.py         # Analyzer 基类
│   │   ├── commission.py       # 手续费模型
│   │   └── slippage.py         # 滑点模型
│   │
│   ├── data/                   # 数据模块
│   │   ├── __init__.py
│   │   ├── feeds/              # 数据源实现
│   │   │   ├── __init__.py
│   │   │   ├── base.py         # BaseDataFeed 抽象
│   │   │   ├── csv.py          # CSV 文件源
│   │   │   ├── parquet.py      # Parquet 文件源
│   │   │   ├── binance.py      # Binance 实时/历史
│   │   │   ├── okx.py          # OKX 实时/历史
│   │   │   └── bybit.py        # Bybit 实时/历史
│   │   ├── store.py            # 数据存储管理
│   │   └── utils.py            # 数据工具(复权、对齐、清洗)
│   │
│   ├── broker/                 # 经纪商实现
│   │   ├── __init__.py
│   │   ├── base.py             # 共享工具(签名、重连、时间同步)
│   │   ├── backtest.py         # 回测撮合引擎
│   │   ├── paper.py            # 模拟交易(连接实盘行情,模拟下单)
│   │   ├── binance.py          # Binance 实盘 Broker
│   │   ├── okx.py              # OKX 实盘 Broker
│   │   └── bybit.py            # Bybit 实盘 Broker
│   │
│   ├── execution/              # 订单与执行
│   │   ├── __init__.py
│   │   ├── order.py            # Order / OrderState / OrderResult 定义
│   │   ├── position.py         # Position 持仓模型
│   │   └── algos/              # 算法执行
│   │       ├── __init__.py
│   │       ├── twap.py
│   │       └── vwap.py
│   │
│   ├── risk/                   # 风控引擎
│   │   ├── __init__.py
│   │   ├── engine.py           # RiskEngine 主类
│   │   ├── rules.py            # 规则库(限额、价格、流量、时间)
│   │   ├── stop.py             # 止损止盈模块
│   │   └── circuit.py          # 熔断器
│   │
│   ├── portfolio/              # 组合管理
│   │   ├── __init__.py
│   │   ├── master.py           # MasterPortfolio(组合级)
│   │   ├── sub.py              # SubPortfolio(策略级隔离)
│   │   ├── allocator.py        # 资金分配策略
│   │   └── attribution.py      # P&L 归因分析
│   │
│   ├── indicators/             # 技术指标
│   │   ├── __init__.py
│   │   ├── base.py             # Indicator 基类(Lines 概念)
│   │   ├── trend.py            # SMA, EMA, MACD, ADX...
│   │   ├── volatility.py       # ATR, Bollinger Bands...
│   │   ├── momentum.py         # RSI, Stochastic, CCI...
│   │   └── volume.py           # OBV, VWAP, MFI...
│   │
│   ├── ml/                     # 机器学习
│   │   ├── __init__.py
│   │   ├── pipeline.py         # FeaturePipeline(特征工程管道)
│   │   ├── onnx_runner.py      # ONNX Runtime 封装
│   │   └── features/           # 内置特征算子
│   │
│   ├── alpha/                  # 多因子平台
│   │   ├── __init__.py
│   │   ├── registry.py         # FactorRegistry(因子注册与计算)
│   │   └── factors/            # 内置因子实现
│   │
│   ├── analyzers/              # 绩效分析器
│   │   ├── __init__.py
│   │   ├── returns.py          # 收益分析
│   │   ├── drawdown.py         # 回撤分析
│   │   ├── sharpe.py           # 夏普/索提诺比率
│   │   └── report.py           # 综合报告生成器
│   │
│   ├── observers/              # 监控与绘图
│   │   ├── __init__.py
│   │   ├── equity.py           # 净值曲线 Observer
│   │   ├── trades.py           # 交易标记 Observer
│   │   └── plotter.py          # Matplotlib / Plotly 绘图引擎
│   │
│   └── utils/                  # 通用工具
│       ├── __init__.py
│       ├── time.py             # 时区/时间工具
│       ├── decimal.py          # Decimal 精度处理
│       └── validation.py       # 通用校验函数
│
├── strategies/                 # 示例策略(用户参考)
│   ├── __init__.py
│   ├── dual_ma.py              # 双均线策略
│   ├── bollinger_bands.py      # 布林带策略
│   ├── ml_enhanced.py          # ML 增强策略
│   └── arbitrage.py            # 套利策略示例
│
├── configs/                    # 配置示例
│   ├── backtest_dual_ma.json
│   ├── paper_dual_ma.json
│   ├── live_dual_ma.json
│   └── portfolio_multi.json
│
├── tests/                      # 测试
│   ├── unit/                   # 单元测试
│   ├── integration/            # 集成测试
│   └── fixtures/               # 测试数据与夹具
│
├── notebooks/                  # Jupyter 示例
│   ├── 01_quickstart.ipynb
│   ├── 02_backtest.ipynb
│   └── 03_ml_strategy.ipynb
│
└── scripts/                    # 辅助脚本
    ├── download_history.py     # 历史数据下载
    └── convert_format.py       # 数据格式转换

架构文档索引

文档 说明
docs/ARCHITECTURE_v1.md 系统全景、核心模块关系、数据流、部署架构
docs/STANDARDS.md 开发规范、AI 协作流程、代码规范、依赖白名单
docs/LOGGING_STANDARD.md 全局 JSON 日志 Schema、事件类型、级别规范
docs/JSON_SCHEMA.md 策略配置 JSON 完整 Schema、校验规则、示例
docs/DECISIONS.md 架构决策记录(ADR)

子模块设计文档

所有子模块的详细设计接口与实现规划,参见 docs/modules/*.md


开发规范

本项目采用 AI 原生开发 + 文档先行 模式:

  1. 文档先行:任何子模块在写代码前,必须先完成 docs/modules/*.md 设计文档
  2. 零扩散:不允许私自增加功能、修改接口、引入未审批依赖
  3. 文档即契约:代码实现必须与文档一致

详见 docs/STANDARDS.md


许可证

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aquant_trade-0.1.0.tar.gz (77.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aquant_trade-0.1.0-py3-none-any.whl (109.6 kB view details)

Uploaded Python 3

File details

Details for the file aquant_trade-0.1.0.tar.gz.

File metadata

  • Download URL: aquant_trade-0.1.0.tar.gz
  • Upload date:
  • Size: 77.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aquant_trade-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f1a177bf9dbf5342656b01ebfbcd692467d41f1f5df4fc1090ee40f32f67b557
MD5 44b075c9269a59917552f93811a5f139
BLAKE2b-256 7afdaa79808827dc1ae50810a36b7314bedfb71ad447cb1d1a5ca6548828dc38

See more details on using hashes here.

Provenance

The following attestation bundles were made for aquant_trade-0.1.0.tar.gz:

Publisher: python-publish.yml on bench-prog/AQuant

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aquant_trade-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: aquant_trade-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 109.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aquant_trade-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4bfc782a3363d932c04c072ee98d6346baea33686b02ab7c7dcd6f3e16f34cd9
MD5 88f166f42760646c08265c57ff6bb437
BLAKE2b-256 d502b668beacae063d061539915223b21ae7c86b298443ac4e54a4591b2c1457

See more details on using hashes here.

Provenance

The following attestation bundles were made for aquant_trade-0.1.0-py3-none-any.whl:

Publisher: python-publish.yml on bench-prog/AQuant

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page