想用 AI 写量化策略?先给它一个好用的数据接口

用户头像sh_*2176oo
2026-09-01 发布

想用 AI 写量化策略?先给它一个好用的数据接口

2026 年,越来越多人开始用 ChatGPT、Claude、Cursor、Codex 来写量化代码。

思路很简单:把你的策略想法告诉 AI,让它直接生成可运行的 Python 代码。不用自己写循环,不用自己查 API 文档,不用自己调试数据格式。

但实际操作下来,很多人发现:AI 生成的代码跑不通。

不是 AI 不行,是你给它的数据接口太难用了。

AI 写代码的质量,取决于你给它什么工具

你让 AI 用 akshare 写一个选股脚本,它需要处理这些事情:

  • 记住 stock_zh_a_hist 这个函数名(不是 get_kline,不是 stock_history
  • 知道列名是中文的(收盘成交量,不是 closevolume
  • 知道要加 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))

常见问题:

  1. kdf["收盘"] 还是 kdf["close"]?AI 经常搞混,因为 akshare 不同版本列名可能不同
  2. start_date 要手动算——AI 不知道"最近 20 天"从哪天开始(要排除周末节假日)
  3. 没有批量接口,AI 只能生成循环代码
  4. AI 经常忘记加 time.sleep,你一跑就被封 IP
  5. 涨跌幅 的单位是百分比还是小数?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.batchAPI 可预测 = 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

评论