> Source: https://ashareapi.com/docs/endpoints/backtest/  ·  Markdown version for LLMs / AI agents

付费端点 · 付费

# 量化回测（策略回测 · 单标的实时 / 组合预计算） API
 ⭐ 量化回测：对给定标的或组合，按内置策略跑历史回测，返回收益/风险指标（可选净值曲线）。

两种模式（用 `mode` 区分）：
- `mode=single`（默认）：单标的择时回测，实时计算（毫秒级）。传 `code` + `strategy`。
- `mode=portfolio`：组合回测（多标的选股），查预计算结果（全市场回测耗时较长，故预先算好）。传 `strategy`。

`strategy` 取值（单标的 20 条）：`buy_hold` `low_vol` `dca` `vol_target` `ma_stop` `ma_cross` `grid` `mom20` `turtle` `rev5` `breakout` `atr_stop` `macd` `rsi` `boll` `kdj` `wr` `obv` `cci` `sar`
（组合 9 条）：`buy_hold_equal` `lowvol20` `mom20` `mom20_ex_st` `rev5` `ma_cross` `volume_breakout` `smallcap` `largecap`

⚠️ 成本已计入：佣金（万三，最低 5 元）/ 印花税（卖出 0.05%）/ 过户费（沪市）/ 滑点（千一）。
⚠️ 已计入约束：涨跌停（不可成交则顺延）/ 停牌（缺行情即不成交）。
⚠️ ST 按当前名单近似（历史逐日 ST 状态无公开源）——ST 股占全市场约 3.6%，影响局限在触及板限时。
⚠️ 未计入：冲击成本、容量约束。

⚠️ 属付费层（需 API Key）—— 门槛 `pro`（¥99）及以上。
⚠️ 历史回测结果不代表未来表现，仅供研究，不构成投资建议。
 付费 `GET /v1/backtest`
 接口签名
```
GET /v1/backtest?mode=list
```
 一行可跑

```
curl "https://api.ashareapi.com/v1/backtest?mode=list&key=YOUR_KEY"
```
 参数：`mode · strategy · code · start · end · initial_cash · include_equity` 带 * 为必填

## 快速开始
 把下面的代码里的 Key 换成你的（免费端点无需 Key，直接调）：
 curl

```
# 推荐：Authorization 头（密钥不进日志）
curl -H "Authorization: Bearer YOUR_KEY" \
 "https://api.ashareapi.com/v1/backtest?mode=list"

# 快速测试：直接浏览器打开（?key= 会留在日志/历史里，别用于生产）
curl "https://api.ashareapi.com/v1/backtest?mode=list&key=YOUR_KEY"
```
 Python

```
import requests

r = requests.get(
 "https://api.ashareapi.com/v1/backtest",
 headers={"Authorization": "Bearer YOUR_KEY"},
 params={},
 timeout=30,
)
print(r.json())
```
 JavaScript

```
const r = await fetch("https://api.ashareapi.com/v1/backtest?mode=list", {
 headers: { Authorization: "Bearer YOUR_KEY" },
});
console.log(await r.json());
```

## 参数
 |
| | 参数 | 类型 | 必填 | 说明

| | mode | string | 否 | single=单标的实时 / portfolio=组合（查预计算）

| | strategy | string | 否 | 内置策略名（见描述）

| | code | string | 否 | mode=single 时必填：A股代码 sh600519

| | start | string | 否 | 回测起始日 YYYY-MM-DD

| | end | string | 否 | 回测结束日 YYYY-MM-DD（省略=最新）

| | initial_cash | number | 否 | 初始资金（默认 100 万）

| | include_equity | boolean | 否 | 是否返回净值曲线

 `mode` string
 single=单标的实时 / portfolio=组合（查预计算）

 `strategy` string
 内置策略名（见描述）

 `code` string
 mode=single 时必填：A股代码 sh600519

 `start` string
 回测起始日 YYYY-MM-DD

 `end` string
 回测结束日 YYYY-MM-DD（省略=最新）

 `initial_cash` number
 初始资金（默认 100 万）

 `include_equity` boolean
 是否返回净值曲线

 返回
 统一返回信封： `{ ok, endpoint, tier, elapsed_ms, source, data }`
 数据在 `data` 字段；上游为空时 `ok:false` 且**不扣次数**。

 限流与额度
 免费端点无需 Key（匿名 5 次/分，解一次 PoW 可到 15 次/分；每次最多 250 根 K 线、每天最多 10 万条）。付费端点按档位限流：体验 30 · 标准 120 · 专业 300 · 不限量 600 次/分；买断档按总量计（不用完不过期）。
[看错误码对照表 →](/docs/errors)

## 常见问题

### 通用问题（所有端点通用）
 这些端点需要 API Key 吗？
 **免费端点不需要**：health、challenge、quote、kline、hot、market-overview、changedist 匿名即可调用。**付费端点需要**：在请求头带 `Authorization: Bearer `。⚠️ 匿名额度**按调用者类型分级**：浏览器（真人）**5 次/分**；脚本 / SDK / AI Agent（curl、requests、axios、openai 等 UA）**2 次/分** —— 自动化流量更易被滥用。解一次 PoW 挑战（`GET /v1/challenge`，再带 `X-PoW` 头）可提到 **15 次/分**，与类型无关。⚠️ 另外，匿名调用**单次最多取 250 根 K 线、每天最多 10 万条** —— 要一次拿满 1212 根或不限日量，请用 API Key。

 返回为空或上游报错时，会扣我的调用次数吗？
 **不会**。上游失败或空结果时返回 `ok:false`，并**自动退回**本次计费（total_calls / usage_log / ep_log 三处同时回滚）。只有真正取到数据的请求才计入用量。

 数据多久更新一次？
 行情类（quote / kline / orderbook / changedist）为**实时或当日**；财务、股东、分红、事件等为**上游披露后 T+1 内**。响应里的 `source` 字段标明本次实际命中的数据通道。

 一次请求能批量拿多只股票吗？
 **不能**。`code` 是单值参数，一次一只；批量请并发调用（注意各自档位的每分钟限流）。

 怎么在 Claude / Cursor / ChatGPT 里直接调用？
 配一次 MCP 即可，之后直接问 AI「查一下……」它会自己调。MCP 暴露 26 个工具，覆盖行情 / 财务 / 选股 / 板块 / 宏观。

## 相关端点
 [全历史 K线（10 年日线 · 原始价 + 复权因子）](/docs/endpoints/kline-full)[量化策略清单（单标的 20 + 组合 9）](/docs/endpoints/strategies)[量化因子库（88 因子 + 50 筛选入口 + 预设模板）](/docs/endpoints/factors)[量化方法论库（怎么判断市场 · 怎么避坑）](/docs/endpoints/playbooks)[分时（当日 / 近 5 日盘中走势）](/docs/endpoints/minute)[财务报表](/docs/endpoints/finance)[个股资金+龙虎榜+大宗+两融（综合）](/docs/endpoints/fund)[技术指标](/docs/endpoints/technical)

 要把它接进 AI Agent？
 配一次 MCP，之后问 AI「查一下……」它自己调。

 [MCP 接入说明](/mcp)[查看定价](/pricing)

 [← 返回完整端点清单](/endpoints)
