## 项目概述

QuantLab 是一个面向中国 A 股市场的量化交易系统，融合了微软的三个开源项目（Qlib、Kronos、RD-Agent），构建了一个统一的 T+1 日频交易流水线。项目通过自然语言驱动的 AI 智能分析（也支持港股/美股），聚合多数据源行情、量化策略和 LLM 后处理分析，并公开一个 A 股 T+1 预测策略，每日盘前进行推荐。

## 核心功能

- **多信号管线**：集成 Alpha158 因子 + LightGBM、Kronos Transformer 预测、RD-Agent 进化因子三条独立信号管线。
- **信号融合**：基于滚动 IC 动态加权，支持冷启动、相关性惩罚和不确定性惩罚。
- **交易执行**：模拟 A 股 T+1 交易规则，包含佣金、印花税、滑点、涨跌停、整手约束。
- **风险控制**：三级风控（个股止损、行业集中度、组合熔断）。
- **Agentic 审查层**：对候选股票进行流动性检查、板块资金流暴露、行业集中度审查，并输出否决/减仓/批准决策。
- **数据管理**：支持多数据源（Yahoo、Baostock、腾讯）下载、增量更新、时间隔离访问。
- **可视化**：提供 K 线图、持仓概览、性能仪表盘等 HTML 可视化。

## 适用与不适用场景

**适用场景：**
- A 股日频量化策略研究与回测。
- 需要融合多种信号源（技术因子、深度学习、LLM 进化因子）的选股系统。
- 对数据时间隔离（防止前视偏差）有严格要求的量化研究。
- 希望利用 LLM 自动发现新因子的研究团队。

**不适用场景：**
- 高频交易（系统设计为日频 T+1 交易）。
- 非 A 股市场（虽然支持美股数据下载，但策略和风控逻辑针对 A 股）。
- 生产级实盘交易（项目定位为实验项目，未提供实盘接口）。
- 无 GPU 环境下的 Kronos 模型训练（CPU 可用但速度极慢）。

## 技术架构与依赖

项目基于以下主要组件：

- **Qlib**：数据基础设施、Alpha158 因子引擎、回测框架。
- **Kronos**：用于 K 线序列预测的 Transformer 模型。
- **RD-Agent**：LLM 驱动的进化研发代理，用于自动发现因子/模型。
- **LightGBM**：用于 Alpha158 信号的梯度提升树模型。
- **PyTorch**：Kronos 模型的深度学习框架。
- **Baostock / Yahoo Finance / 腾讯**：数据源。
- **Plotly**：可视化。

## 安装与快速开始

### 环境要求

- Python 3.10 或 3.11
- C++ 编译器（Qlib 需要 Cython 扩展）
- 推荐 NVIDIA GPU（用于 Kronos 模型）

### 安装步骤

```bash
# 克隆仓库（包含子模块）
git clone --recursive https://github.com/sqyangx/quantlab.git
cd quantlab

# 创建 conda 环境
conda create -n quantlab python=3.11 -y
conda activate quantlab

# 安装 qlib（本地源码，触发 Cython 编译）
pip install -e ./qlib

# 安装 quantlab
pip install -e .

# 验证环境并下载 A 股数据（约 200-500MB）
python quantlab/setup_and_verify.py
```

### 运行回测

```bash
# 完整回测
python quantlab/main.py --config quantlab/configs/backtest.yaml

# 从检查点恢复
python quantlab/main.py --resume checkpoints/checkpoint_2024-06-28.pkl
```

### 运行测试

```bash
python -m pytest quantlab/tests/ -v
```

## 典型使用方法

### 数据管理

```bash
# 下载数据
python quantlab/data/data_download.py

# 增量更新（使用 Baostock）
python quantlab/data/data_update.py --source baostock

# 导出 CSV
python quantlab/data/data_export.py --symbols SH600519 --start 2024-01-01 --end 2024-12-31
```

### 信号生成

```bash
# Alpha158 信号
python quantlab/signal/signal_alpha_predict.py --anchor-date 2024-06-28

# Kronos 信号
python quantlab/signal/kronos_predict.py --anchor-date 2024-06-28

# RD-Agent 信号
python quantlab/signal/rdagent_compute.py --anchor-date 2024-06-28
```

### 信号融合与执行

```bash
# 融合信号
python quantlab/signal/ensemble_combine.py --anchor-date 2024-06-28 \
    --alpha-signal ./outputs/alpha/signals.csv \
    --kronos-signal ./outputs/kronos/signals.csv

# 执行交易
python quantlab/execution/execution_run.py --anchor-date 2024-06-28 \
    --signal ./outputs/ensemble/signal.csv \
    --close-prices ./data/close.csv \
    --open-prices ./data/open.csv
```

## 配置与部署要点

主要配置文件为 `quantlab/configs/backtest.yaml`，包含回测周期、市场、资金、信号开关、执行参数和风控参数。

关键配置项：

- `start_date` / `end_date`：回测区间
- `market`：股票池（如 csi300）
- `initial_cash`：初始资金
- `enable_alpha` / `enable_kronos` / `enable_rdagent`：信号管线开关
- `max_positions` / `max_single_weight`：持仓限制
- `stop_loss_pct` / `max_industry_pct` / `circuit_breaker_pct`：风控参数

部署时需注意：

- 数据下载需先落到 staging 目录，验证后再写回正式数据目录。
- 所有数据访问必须通过 DataManager，并遵守 `anchor_date` 时间隔离。
- RD-Agent 管线默认禁用，需要配置 LLM API 才能启用。
- Kronos 模型需要 GPU 才能高效运行。

## 限制、风险与许可证

**限制：**

- 项目为实验性质，不构成投资建议。
- 回测结果不代表未来表现，存在过拟合风险。
- 数据源可能不稳定（如 Yahoo 对 A 股支持不佳）。
- 腾讯 5 分钟数据的 amount 为近似值。

**风险：**

- 量化策略存在市场风险、流动性风险、模型风险。
- LLM 生成的因子代码可能包含错误或恶意代码，需在沙箱中执行。
- 前视偏差风险，需严格遵守时间隔离。

**许可证：**

- 项目采用 MIT 许可证（仓库资料未提供许可证文件，但 README 中声明为 MIT）。

## 官方链接

- GitHub 仓库：https://github.com/sqyangx/quantlab
- Qlib：https://github.com/microsoft/qlib
- Kronos：https://github.com/microsoft/Chronos-Forecasting
- RD-Agent：https://github.com/microsoft/RD-Agent

## 信息来源和分析时间

- 信息来源：GitHub 仓库 README、文档目录（docs/）中的模块使用文档。
- 分析时间：2026-05-28（基于仓库中提到的数据日期）。