想用 AI 写量化策略?先给它一个好用的数据接口
2026 年,越来越多人开始用 ChatGPT、Claude、Cursor、Codex 来写量化代码。
思路很简单:把你的策略想法告诉 AI,让它直接生成可运行的 Python 代码。不用自己写循环,不用自己查 API 文档,不用自己调试数据格式。
但实际操作下来,很多人发现:AI 生成的代码跑不通。
不是 AI 不行,是你给它的数据接口太难用了。
AI 写代码的质量,取决于你给它什么工具
你让 AI 用 akshare 写一个选股脚本,它需要处理这些事情:
- 记住
stock_zh_a_hist这个函数名(不是get_kline,不是stock_history) - 知道列名是中文的(
收盘、成交量,不是close、volume) - 知道要加
time.sleep防封 IP - 知道批量获取只能循环
- 知道不同函数的参数和返回格式不一样
AI 经常搞混这些细节。生成的代码一跑就报 KeyError: 'close'——因为 AI 习惯用英文列名,但 akshare 返回的是中文。
你让 AI 用 AlphaFeed 写同样的脚本,它只需要知道:
af.klines.get(symbol, period, count, adjust, to_dataframe=True)af.klines.batch(symbols, ...)af.quotes.get(universes=..., to_dataframe=True)- 列名统一是
open,high,low,close,volume,amount
API 越简单、越一致,AI 写出来的代码越可能一次跑通。
实测:同一个需求,AI + 不同数据源的效果
我用完全相同的 prompt 让 AI 分别用 akshare 和 AlphaFeed 写代码,看结果差异。
需求
"帮我写一个 Python 脚本:获取全部 A 股的今日行情,筛选出涨幅大于 5% 且成交额大于 3 亿的股票,然后批量获取这些股票最近 20 天的日 K 线,计算 MA20,找出站上 MA20 的标的。"
AI 用 akshare 生成的代码(典型输出)
import akshare as ak
import pandas as pd
import time
# 获取全市场行情
df = ak.stock_zh_a_spot_em()
# 筛选
df["涨跌幅"] = pd.to_numeric(df["涨跌幅"], errors="coerce")
df["成交额"] = pd.to_numeric(df["成交额"], errors="coerce")
candidates = df[(df["涨跌幅"] > 5) & (df["成交额"] > 3e8)]
# 获取 K 线并计算 MA20
results = []
for _, row in candidates.iterrows():
code = row["代码"]
try:
kdf = ak.stock_zh_a_hist(symbol=code, period="daily",
start_date="20260801", adjust="qfq")
if kdf is not None and len(kdf) >= 20:
kdf["close"] = pd.to_numeric(kdf["收盘"]) # ← 这里经常出错
ma20 = kdf["close"].rolling(20).mean().iloc[-1]
if kdf["close"].iloc[-1] > ma20:
results.append({"code": code, "close": kdf["close"].iloc[-1],
"ma20": ma20})
except Exception as e:
print(f"Error: {code} - {e}")
time.sleep(0.5)
print(pd.DataFrame(results))
常见问题:
kdf["收盘"]还是kdf["close"]?AI 经常搞混,因为 akshare 不同版本列名可能不同start_date要手动算——AI 不知道"最近 20 天"从哪天开始(要排除周末节假日)- 没有批量接口,AI 只能生成循环代码
- AI 经常忘记加
time.sleep,你一跑就被封 IP 涨跌幅的单位是百分比还是小数?AI 不确定,经常弄反
AI 用 AlphaFeed 生成的代码(典型输出)
from alphafeed import AlphaFeed
import pandas as pd
af = AlphaFeed()
# 获取全市场行情
df = af.quotes.get(universes="CN_Stock", to_dataframe=True)
# 筛选
candidates = df[
(df["change_rate"].astype(float) > 0.05) &
(df["amount"].astype(float) > 3e8)
]
symbols = candidates["symbol"].tolist()
print(f"筛选出 {len(symbols)} 只")
# 批量获取 K 线
dfs = af.klines.batch(symbols, period="1d", count=25,
adjust="forward", to_dataframe=True)
# 计算 MA20 并筛选
results = []
for sym, kdf in dfs.items():
if len(kdf) < 20:
continue
ma20 = kdf["close"].rolling(20).mean().iloc[-1]
if kdf["close"].iloc[-1] > ma20:
results.append({"symbol": sym, "close": round(kdf["close"].iloc[-1], 2),
"ma20": round(ma20, 2)})
print(pd.DataFrame(results))
差异一目了然:
| 对比 | akshare 版本 | AlphaFeed 版本 |
|---|---|---|
| 能否一次跑通 | ⚠️ 大概率需要手动修 | ✅ 基本一次跑通 |
| 列名问题 | 经常中英文搞混 | 统一英文,AI 不会搞错 |
| 批量获取 | 只能生成循环 + sleep | 直接用batch |
| 日期计算 | AI 需要手算 start_date | count=25 直接指定条数 |
| 代码行数 | ~25 行 | ~15 行 |
为什么 API 设计影响 AI 代码质量
AI 生成代码的原理是:根据 API 的文档和常见用法模式来"推测"怎么写。
API 设计越规律、越一致,AI 推测得越准。
AlphaFeed 的 API 有几个对 AI 友好的特点:
1. 层级命名,可预测
af.klines.get() # 获取 K 线
af.klines.batch() # 批量获取 K 线
af.quotes.get() # 获取行情
af.depth.get() # 获取盘口
af.depth.batch() # 批量获取盘口
af.instruments.get() # 获取标的信息
AI 看到 klines.get 就能猜到有 klines.batch;看到 depth.get 就能猜到有 depth.batch。API 可预测 = AI 代码正确率高。
对比 akshare 的函数名:
ak.stock_zh_a_hist() # A 股日 K 线
ak.stock_zh_a_spot_em() # A 股实时行情
ak.stock_us_daily() # 美股日线
ak.stock_hk_spot_em() # 港股行情
AI 无法从 stock_zh_a_hist 推测出实时行情的函数名是 stock_zh_a_spot_em。每个函数名都要查文档,AI 经常猜错。
2. 参数统一
# AlphaFeed 所有 K 线接口的参数风格一致:
af.klines.get(symbol, period="1d", count=60, adjust="forward", to_dataframe=True)
af.klines.batch(symbols, period="1d", count=60, adjust="forward", to_dataframe=True)
af.klines.intraday(symbol, period="1m", to_dataframe=True)
AI 学会一个函数的参数,就能正确使用所有函数。
3. 返回格式统一
不管查什么数据,DataFrame 的列名都是固定的:open, high, low, close, volume, amount。AI 不需要猜列名。
怎么用 AI + AlphaFeed 做量化
方式 1:直接在对话中告诉 AI 用 AlphaFeed
Prompt 示例:
用 Python + AlphaFeed SDK 帮我写一个脚本:
1. 获取全部 A 股今日行情(af.quotes.get(universes="CN_Stock"))
2. 筛选出成交额 > 5 亿、涨幅 > 3% 的票
3. 批量拉这些票最近 30 天的日 K 线(af.klines.batch,前复权)
4. 找出 RSI14 < 30 且站上 MA20 的票
5. 输出到 CSV
AlphaFeed 安装:pip install alphafeed
列名:open, high, low, close, volume, amount
告诉 AI 关键的 API 调用方式和列名,它生成的代码基本可以直接运行。
方式 2:在 Cursor / Codex 里写
如果你用 Cursor 或 Codex 这样的 AI 编程工具,可以在项目里放一个简短的说明文件,让 AI 知道怎么用 AlphaFeed:
# 文件:CONTEXT.md 或者 Cursor Rules
"""
本项目使用 AlphaFeed 作为数据源。
常用 API:
- af.quotes.get(universes="CN_Stock", to_dataframe=True) — 全市场实时行情
- af.klines.get(symbol, period="1d", count=N, adjust="forward", to_dataframe=True) — K 线
- af.klines.batch(symbols_list, ...) — 批量 K 线
- af.depth.get(symbol) — 五档盘口
- af.klines.intraday(symbol, period="1m", to_dataframe=True) — 分钟线
DataFrame 列名:open, high, low, close, volume, amount
代码格式:600519.SH, AAPL.US, 0700.HK
"""
AI 读到这个文件后,后续写的所有量化代码都会自动用 AlphaFeed 的正确写法。
方式 3:让 AI 帮你迭代策略
AI 最强大的用法不是"帮你写第一版代码",而是快速迭代。
第一轮:写一个双均线策略 → AI 5 秒生成
第二轮:加上 RSI 过滤 → 告诉 AI "加一个条件:RSI14 < 70 才入场"
第三轮:加止损 → "加一个 ATR 止损,2 倍 ATR"
第四轮:批量回测 → "在沪深 300 成分股上批量跑一遍"
第五轮:优化参数 → "把均线周期做成参数,测试 (5,20) (10,30) (20,60) 三组"
每一轮 AI 修改代码只需要几秒。如果数据接口够简洁(一个 batch 搞定批量),AI 修改起来不会出错。如果数据接口要循环 + sleep + try/except,每次修改 AI 都可能破坏原来的错误处理逻辑。
AI + 好数据接口 = 量化门槛降低 90%
传统做量化的门槛:
学 Python → 学数据获取 → 调试数据格式 → 学 pandas → 写策略逻辑 → 调试 → 回测
↑ ↑
2 周 1 周
AI + AlphaFeed 的做法:
告诉 AI 你的策略想法 → AI 生成代码 → 运行 → 看结果 → 让 AI 改进
↑ ↑
5 分钟 5 分钟
你不需要成为 Python 专家。你需要的是一个想法、一个 AI 工具、和一个 AI 能用好的数据接口。
AlphaFeed 的 API 设计——统一的函数命名、统一的参数风格、统一的返回格式、原生批量接口——让它成为目前最适合 AI 编程的量化数据源。
不信你试试:把上面的 prompt 复制到 ChatGPT 或 Claude 里,看它生成的代码能不能直接跑。
pip install alphafeed
- AlphaFeed 官网:https://alphafeed.org/
- Python SDK 文档:https://docs.alphafeed.org/zh-Hans/sdk/python-quickstart

