过去学量化,路径通常很长:
先学 Python,再学 pandas,再学金融市场基础,再学技术指标,再学回测,再学调参,再学实盘接口。每一步都没错,但对普通人来说,门槛确实高。很多人不是没有想法,而是卡在“我不知道怎么把想法写成代码”。
现在有了 Codex 这类编程智能体,学习路径可以换一种方式。
你不需要先把所有语法背完,也不需要先掌握完整的回测框架。你可以先做一件事:把数据源接好,然后让 Codex 根据你的研究问题写代码、运行、报错、修复、优化。
AlphaFeed 在这里很适合做量化入门的数据底座。它的 Python SDK 足够直接:安装、初始化、拿 K 线、拿实时行情、拿五档盘口、拿标的信息。Codex 只要知道这套接口怎么用,就可以围绕它生成策略研究代码。
这篇文章讲一个实战流程:如何把 AlphaFeed 接入 Codex,然后让 Codex 帮你完成一个从想法到回测结果的量化研究。
1. 先告诉 Codex:数据源怎么接
你可以把下面这段提示词直接发给 Codex:
我正在做量化研究,数据源使用 AlphaFeed。
请记住 AlphaFeed Python SDK 的基本用法:
安装:
pip install alphafeed
初始化:
from alphafeed import AlphaFeed
af = AlphaFeed(api_key="your-api-key")
也可以从环境变量读取:
export ALPHAFEED_API_KEY="your-api-key"
af = AlphaFeed()
常用标的代码:
- A 股上交所:600519.SH
- A 股深交所:000001.SZ
- 美股:AAPL.US
- 港股:00700.HK
获取 K 线:
df = af.klines.get("600519.SH", period="1d", count=300, adjust="forward", to_dataframe=True)
批量获取 K 线:
dfs = af.klines.batch(["600519.SH", "000001.SZ"], period="1d", count=300, adjust="forward", to_dataframe=True)
获取日内分时:
df = af.klines.intraday("600519.SH", period="1m", to_dataframe=True)
获取实时行情:
quotes = af.quotes.get(symbols=["600519.SH", "000001.SZ"], to_dataframe=True)
获取全量 A 股行情:
all_cn = af.quotes.get(universes="CN_Stock", to_dataframe=True)
获取五档盘口:
depth = af.depth.get("600519.SH")
常见 DataFrame 字段:
- trade_date
- trade_time
- open
- high
- low
- close
- volume
- amount
- symbol
- name
请用这些接口帮我写策略研究代码,并在每次写回测时注意:
1. 不要使用未来函数。
2. 信号必须 shift 后再计算收益。
3. 输出累计收益、年化收益、最大回撤、夏普比率。
4. 尽量把代码拆成函数,便于我复用。
如果你想让 Codex 读取官方文档,可以补一句:
AlphaFeed Python SDK 文档在这里:
https://docs.alphafeed.org/zh-Hans/sdk/python-quickstart
请优先按这个文档里的接口写代码。
这个动作很关键。很多人使用 AI 写量化代码,失败不是因为 AI 不会写策略,而是因为它不知道你实际的数据源长什么样。你把 AlphaFeed 的接口、字段、标的格式交代清楚,后面的生成质量会明显提高。
2. 让 Codex 先写一个最小可运行回测
不要一上来就让 Codex 写“年化 30%、回撤 5% 的策略”。这类目标容易把研究带偏。
更好的第一句是:
请用 AlphaFeed 写一个最小可运行的双均线回测脚本。
要求:
1. 标的使用 600519.SH。
2. 获取最近 800 根日 K,前复权。
3. 计算 20 日和 60 日均线。
4. 20 日均线高于 60 日均线时持有,否则空仓。
5. 信号后移一天,避免未来函数。
6. 输出累计收益、年化收益、最大回撤、夏普比率。
7. 保存净值曲线图到 ma_strategy.png。
Codex 大概率会生成类似这样的结构:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from alphafeed import AlphaFeed
def calc_metrics(equity: pd.Series, returns: pd.Series) -> dict:
total_return = equity.iloc[-1] / equity.iloc[0] - 1
annual_return = (1 + total_return) ** (252 / len(equity)) - 1
drawdown = equity / equity.cummax() - 1
max_drawdown = drawdown.min()
sharpe = 0 if returns.std() == 0 else returns.mean() / returns.std() * np.sqrt(252)
return {
"total_return": total_return,
"annual_return": annual_return,
"max_drawdown": max_drawdown,
"sharpe": sharpe,
}
def run_backtest(symbol: str) -> tuple[pd.DataFrame, dict]:
af = AlphaFeed()
df = af.klines.get(
symbol,
period="1d",
count=800,
adjust="forward",
to_dataframe=True,
)
df = df.sort_values("trade_date").reset_index(drop=True)
df["ma20"] = df["close"].rolling(20).mean()
df["ma60"] = df["close"].rolling(60).mean()
df["signal"] = (df["ma20"] > df["ma60"]).astype(int)
df["position"] = df["signal"].shift(1).fillna(0)
df["ret"] = df["close"].pct_change().fillna(0)
df["strategy_ret"] = df["position"] * df["ret"]
df["equity"] = (1 + df["strategy_ret"]).cumprod()
df["buy_hold"] = (1 + df["ret"]).cumprod()
metrics = calc_metrics(df["equity"], df["strategy_ret"])
return df, metrics
df, metrics = run_backtest("600519.SH")
print(metrics)
df.set_index("trade_date")[["equity", "buy_hold"]].plot(figsize=(10, 5))
plt.tight_layout()
plt.savefig("ma_strategy.png", dpi=160)
这份代码不复杂,但它有一个重要意义:它把“想法”变成了“可运行研究对象”。
从这里开始,你就可以让 Codex 继续迭代,而不是自己在语法里打转。
3. 让 Codex 帮你做参数扫描
下一步不要急着换策略。先问一个基础问题:均线参数对结果敏感吗?
提示词:
请在刚才的 AlphaFeed 双均线策略基础上,增加参数扫描。
要求:
1. short_window 测试 [5, 10, 20, 30]。
2. long_window 测试 [40, 60, 120, 250]。
3. short_window 必须小于 long_window。
4. 每组参数输出 total_return、annual_return、max_drawdown、sharpe。
5. 最后按 sharpe 从高到低排序。
6. 不要只输出最优结果,也要输出完整参数表,避免过拟合。
为什么要强调“不要只输出最优结果”?
因为量化研究里,最危险的东西之一就是参数过拟合。你扫 1000 组参数,总会找到一组历史表现很好。但这不代表它未来也好。完整参数表能让你观察策略是否有“参数稳定区间”。
如果只有 17/43 一组参数特别好,周围参数都很差,那更像偶然。如果 10/60、20/60、20/120 都还不错,说明策略逻辑可能更稳。
4. 让 Codex 扩展到股票池
单只股票回测只是玩具。真正研究时,你需要一组标的。
提示词:
请把策略扩展到多标的回测。
使用 AlphaFeed 批量获取 K 线:
dfs = af.klines.batch(symbols, period="1d", count=800, adjust="forward", to_dataframe=True, show_progress=True)
股票池:
["600519.SH", "000001.SZ", "601318.SH", "600000.SH", "000858.SZ"]
要求:
1. 对每只股票单独运行同一个双均线策略。
2. 输出每只股票的收益、回撤、夏普。
3. 再计算一个简单等权组合:每天持有所有 signal=1 的股票,平均分配仓位。
4. 注意不同股票日期可能不完全一致,需要按 trade_date 对齐。
5. 输出组合净值曲线图。
这里开始,Codex 的价值会更明显。
对齐日期、处理缺失值、组合收益计算,这些细节很容易写错,也很容易消耗新手的耐心。你可以让 Codex 写第一版,然后让它自己检查:
请检查这份回测代码是否存在未来函数、日期错位、收益重复计算、缺失值处理不当的问题。
如果有,请直接修改代码,并解释修改原因。
这比“从零背 pandas”更适合普通人入门。你仍然需要理解代码,但你不用把每个低层细节都靠手搓完成。
5. 让 Codex 加入交易成本和滑点
没有成本的回测,很容易过度乐观。
提示词:
请给策略加入交易成本。
要求:
1. 当 position 发生变化时,认为发生一次交易。
2. 单边手续费设置为 0.0003。
3. 滑点设置为 0.0002。
4. 总交易成本 = abs(position.diff()) * (fee + slippage)。
5. 策略收益 = position.shift 后的持仓收益 - 交易成本。
6. 输出加入成本前后的指标对比。
加入成本后,你会发现很多高频切换的策略表现大幅下降。这不是坏事,而是回测更接近真实世界了。
对于普通人来说,量化学习最重要的不是一开始就写复杂模型,而是尽早建立“研究纪律”:
| 研究纪律 | 目的 |
|---|---|
| 信号后移 | 避免未来函数 |
| 加交易成本 | 避免高估收益 |
| 多标的测试 | 避免个股偶然性 |
| 参数扫描 | 检查稳定性 |
| 输出完整指标 | 避免只看收益 |
Codex 可以帮你写代码,但这些原则需要你自己掌握。掌握之后,你给 Codex 的指令会越来越清楚,得到的结果也会越来越可靠。
6. 用 AlphaFeed 实时行情做盘中监控
历史回测之外,你还可以让 Codex 写一个盘中监控脚本。
提示词:
请使用 AlphaFeed 写一个盘中行情监控脚本。
要求:
1. 使用 af.quotes.get(universes="CN_Stock", to_dataframe=True) 获取全量 A 股实时行情。
2. 计算涨跌幅,如果 ext.change_pct 存在就优先使用;否则用 (last_price - prev_close) / prev_close。
3. 筛选涨幅前 20、跌幅前 20、成交量前 20。
4. 每 60 秒刷新一次。
5. 输出到终端,格式尽量清晰。
6. 代码里加入异常处理,接口失败时等待后重试。
这类脚本看起来简单,但很适合练习“研究到观察”的过渡。
你可以进一步让 Codex 加规则:
请在盘中监控脚本里加入一个观察条件:
如果某只股票涨幅超过 3%,且成交量位于全市场前 20%,就打印 ALERT。
注意,这仍然只是观察,不是交易建议。量化研究的第一步是看清数据和规则,不是马上下单。
7. 一套适合普通人的 Codex 量化提示词模板
如果你不知道怎么问,可以用这个模板:
我想研究一个量化策略,请你用 AlphaFeed Python SDK 帮我完成。
研究目标:
[写你的想法,比如:突破 20 日新高后持有 5 天]
数据要求:
- 市场:[A 股/美股/港股]
- 标的:[例如 600519.SH,或一个股票列表]
- K 线周期:[1d/1m/5m]
- 数据长度:[例如最近 800 根]
- 复权方式:[forward/none]
回测要求:
- 不使用未来函数
- 信号后移一天
- 加入交易成本,单边 0.0003
- 输出累计收益、年化收益、最大回撤、夏普比率
- 输出净值曲线图
代码要求:
- 使用 pandas
- 拆成函数
- 可以直接运行
- 如果运行报错,请根据错误修改
这个模板的好处是,它把“我要一个策略”拆成了 Codex 可以执行的工程任务。
8. AI 不会替你解决的部分
Codex 能帮你写代码、调试、改结构、检查常见错误,但它不会替你判断一个策略是否真的值得实盘。
你仍然需要自己回答几个问题:
- 策略逻辑是否有经济含义?
- 收益是否来自少数极端样本?
- 参数是否过拟合?
- 回撤是否符合你的承受能力?
- 交易频率是否会被成本吃掉?
- 数据频率和执行频率是否匹配?
换句话说,AI 可以降低技术门槛,但不能取消研究责任。
结语
普通人做量化,过去最难的是入门链条太长:数据、代码、回测、调试,每一步都可能让人放弃。
AlphaFeed + Codex 提供了一条更短的路径:AlphaFeed 负责把市场数据变成清晰可用的 Python 接口,Codex 负责把你的研究想法快速转成可运行代码。你要做的,是提出问题、检查逻辑、理解结果,并持续迭代。
这并不会让量化变成“一键赚钱”。但它会让量化学习从“先学半年再动手”,变成“今天就能跑出第一条净值曲线”。
相关链接:
- AlphaFeed 官网:AlphaFeed

