QuantGPT 是开源的 AI 因子研究引擎 — 让 Claude / Cursor 等 AI Agent 通过 MCP 工具自主完成因子设计、回测、评分、反过拟合验证。在本地研究好因子,再上传到 Cloud 做样本外跟踪。
将下面的 prompt 复制到 Claude Code / Cursor,AI 会帮你完成全部流程。需要先配置 QuantGPT。
帮我用 QuantGPT 研究一个因子,并上传到 QuantGPT Cloud 做样本外跟踪。 ## 第一步:本地研究(用 QuantGPT) 1. 确认 QuantGPT 已安装(pip install quantgpt),启动服务 2. 用 MCP 工具调用 list_operators 和 list_universes 了解可用算子和股票池 3. 设计一个 5 日反转因子,表达式:-ts_delta(close, 5) / ts_shift(close, 5) 4. 用 score_factor 评分,目标 B 级(60+)以上 5. 用 run_backtest 生成完整回测报告 6. 用 run_anti_overfit 做反过拟合检验 7. 如果不达标,用 diagnose_factor 诊断并调整表达式,重复 3-6 ## 第二步:上传到 Cloud(研究满意后) Cloud API 文档(先读完再开始):/api/v1/guide 推荐通过 MCP 工具提交数据到 Cloud。如果 MCP 不可用,改用 HTTP API。 1. 注册 Cloud 账户并获取 API Key(如果已有就跳过) 2. 用 akshare 获取近 150 个交易日的行情数据,计算因子截面值 3. 通过 API 创建因子、分批上传截面数据、提交验证 4. 验证通过后持续上传新数据,平台每日自动计算样本外 IC 我的邮箱:<填入> 我的密码:<填入>
提示:将 <填入> 替换为你的实际信息。如果没有账户,AI 会帮你注册。
如果你已配置好 QuantGPT,可以在 Claude Code 中直接调用 /factor-mine Skill — AI 会自主完成因子设计、回测、评估、迭代的完整循环:
/factor-mine reversal # 研究反转类因子
/factor-mine "new: 波动率调整因子" # 开启新方向
/factor-mine auto max_hours=4 # 自主模式,限时 4 小时
研究过程中 AI 会积累知识库(发现 + 失败路径),跨会话复用。研究出满意的因子后,再按下面的步骤上传到 Cloud。
安装 QuantGPT 开源引擎,在本地完成因子设计和验证。AI Agent 通过 MCP 工具自主完成回测、评分、反过拟合检验。
# 安装 QuantGPT
pip install quantgpt
# 启动服务
quantgpt serve
# 在 Claude Code / Cursor 中配置 MCP 连接后,AI Agent 可用的工具:
# score_factor — 因子评分(0-100, A/B/C/D)
# run_backtest — 完整回测(IC 分析 + 分组收益 + 净值曲线)
# run_anti_overfit — 反过拟合检验(IC 稳定性 + 安慰剂 + 半衰期)
# diagnose_factor — 失败模式诊断 + 改进建议
# 详细配置见 https://github.com/Miasyster/QuantGPT
在 QuantGPT Cloud 注册账户,生成 API Key 用于上传因子数据。
# 注册
curl -X POST /api/v1/auth/register \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]", "password": "your_password"}'
# 生成 API Key(推荐,长期有效)
curl -X POST /api/v1/auth/api-keys \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"name": "my-key"}'
# 后续请求都用 X-API-Key 头
-H "X-API-Key: qgc_xxxxxxxxxx"
用 QuantGPT 本地回测验证通过的因子,计算截面值并上传到 Cloud。平台要求至少 120 个交易日。
import requests
API = ""
HEADERS = {"X-API-Key": "qgc_xxxxxxxxxx"}
# 创建因子(名称和表达式与 QuantGPT 本地研究一致)
r = requests.post(f"{API}/api/v1/factors", headers=HEADERS, json={
"name": "Rev5D",
"universe": "csi500",
"description": "5-day reversal factor"
})
factor_id = r.json()["id"]
# factor_data 来自你本地计算的截面值
# 格式:{"2025-09-08": {"600519": -0.032, "000858": 0.015, ...}, ...}
# 分批上传(每次最多 500 条)
sorted_dates = sorted(factor_data.keys())
batch = []
for date_str in sorted_dates:
batch.append({"date": date_str, "values": factor_data[date_str]})
if len(batch) == 500:
requests.post(f"{API}/api/v1/factors/{factor_id}/values",
headers=HEADERS, json={"entries": batch})
batch = []
if batch:
requests.post(f"{API}/api/v1/factors/{factor_id}/values",
headers=HEADERS, json={"entries": batch})
上传满 120 天后,因子状态变为 ready。提交后平台用自有行情数据独立计算 IC、换手率、相关性等指标。
# 提交验证(同步返回结果,通常 < 5 秒)
r = requests.post(f"{API}/api/v1/factors/{factor_id}/submit",
headers=HEADERS)
result = r.json()
print(f"状态:{result['status']}") # active = 通过,rejected = 未通过
print(f"IC Mean:{result['is']['ic_mean']}")
print(f"IC IR:{result['is']['ic_ir']}")
print(f"Sharpe:{result['is']['sharpe']}")
# 查看各项检查详情
for c in result["checks"]:
print(f" {c['name']}: {c['result']} (值={c['value']}, 阈值={c['limit']})")
| 检查项 | 要求 | 含义 |
|---|---|---|
| IC Mean | |值| > 0.015 | 因子需要有预测能力 |
| IC IR | |值| > 0.15 | 预测能力需要稳定 |
| 换手率 | < 0.35 | 排名不能太随机(疑似过拟合) |
| 相关性 | < 0.7 | 不能与你已有的因子太像 |
| 数据量 | ≥ 120 天 | 至少半年的历史数据 |
因子状态变为 active,进入平台跟踪体系。
score_factor 评分 B 级以上再上传,避免浪费时间run_anti_overfit 做反过拟合检验,确保因子不是数据挖掘产物diagnose_factor 诊断改进