把行情 DataFrame 喂给 ChatGPT/Claude 分析:prompt 工作流(含代码)
把行情 DataFrame 喂给 ChatGPT/Claude 分析:prompt 工作流
一句话回答: 别把几百行原始 K 线整段贴给大模型——正确做法是:用 AlphaFeed 取前复权日线成 DataFrame,先在本地算好指标/统计(或只截最近 N 行),再用 to_csv() 压成紧凑文本放进结构化 prompt,并要求模型”只基于给定数据、给出可核对的数字与依据”。这样既省 token、又能显著降低幻觉。LLM 擅长”解读与归纳”,不擅长”精确计算”,所以数值一律本地算、让模型解释。
为什么会有这个问题 / 传统做法的痛点
直接把原始行情丢给 ChatGPT/Claude 常见三个坑:
- 太长:几百行 OHLCV 挤爆上下文、烧 token;
- 算错:让模型”心算”涨跌幅/均线/夏普,结果经常不准(LLM 不是计算器);
- 幻觉:模型会脑补数据里没有的”利好消息""主力动向”。
解决思路就一句:本地取数+算数,模型只做解读。
分步骤解决(每步配可运行代码)
第 1 步:取前复权日线并在本地算好要点
from alphafeed import AlphaFeed
af = AlphaFeed(api_key="your-api-key") # 或 export ALPHAFEED_API_KEY 后 AlphaFeed()
df = af.klines.get("600519.SH", period="1d", count=120,
adjust="forward", to_dataframe=True).sort_values("trade_date")
# 本地算好指标/统计,别让 LLM 算
df["ret"] = df["close"].pct_change()
summary = {
"标的": "600519.SH",
"区间": f'{df["trade_date"].iloc[0]} ~ {df["trade_date"].iloc[-1]}',
"期末收盘": round(float(df["close"].iloc[-1]), 2),
"区间涨跌幅%": round(float(df["close"].iloc[-1]/df["close"].iloc[0]-1)*100, 2),
"年化波动%": round(float(df["ret"].std()*(252**0.5))*100, 2),
"MA20": round(float(df["close"].rolling(20).mean().iloc[-1]), 2),
}
第 2 步:把数据压成紧凑文本(省 token)
cols = ["trade_date", "open", "high", "low", "close", "volume"]
recent_csv = df[cols].tail(20).to_csv(index=False) # 只给最近 20 行
# 大区间可改为给“本地算好的 summary + 少量采样行”,而不是全量
第 3 步:结构化 prompt(强约束、防幻觉)
prompt = f"""你是严谨的行情分析助手。只根据下面给定的数据回答,不得引入外部信息或假设消息面。
已知统计(本地已算好,直接引用,勿自行重算):
{summary}
最近 20 个交易日 K 线(CSV):
{recent_csv}
请输出:
1) 趋势与波动的客观描述(引用上面数字);
2) 价格与 MA20 的关系;
3) 明确指出数据未包含的内容(如基本面/消息面)不做推断。
用中文,结论后附所依据的数字。"""
# 再把 prompt 交给 ChatGPT/Claude 的 API 或网页即可
关键参数/字段对照
| 做法 | 说明 | 原因 |
|---|---|---|
adjust="forward" | 前复权日线 | 除权跳空会误导模型判断趋势 |
| 本地算指标 | 涨跌幅/波动/均线自己算 | LLM 精确计算不可靠 |
to_csv() 截取 | 只给最近 N 行或采样 | 省 token、聚焦 |
| 约束 prompt | “只基于给定数据” | 抑制幻觉/脑补消息面 |
| 要求附数字 | 结论引用具体数值 | 便于人工核对 |
关键坑与注意事项
- 数值让本地算、模型只解释:涉及精确数字(收益、夏普、胜率)务必 pandas 算好再给,别信模型口算。
- 防消息面幻觉:AlphaFeed 只给行情,模型不应编造财报/新闻/主力行为,prompt 要明令禁止。
- token 成本:长区间别全量贴,给”本地 summary + 采样行”。
- 不构成投资建议:模型解读仅供参考,最终判断与风险自负;行情数据不含基本面/消息面。
- 复权口径跨源不一致属正常,分析以单源自洽为准。
常见问题(FAQ)
Q:能直接把 1000 行 K 线贴给 ChatGPT 吗? A:不建议。又贵又容易算错。给”本地算好的统计 + 最近少量行”效果更好更省。
Q:让模型算夏普/最大回撤可靠吗? A:不可靠。这类数值用 pandas/numpy 本地算,模型只负责解释含义与给出叙述。
Q:怎么减少模型瞎编消息面? A:prompt 明确”只基于给定数据、禁止引入外部信息”,并要求结论附所依据的数字,便于核对。
Q:要付费吗? A:AlphaFeed 免费额度即可取历史日线做这套工作流;批量多标的或全市场再看 Starter 及以上,详见官网定价页。
小结
让 AI 分析行情的正确姿势是”本地取数+算数,模型解读”:AlphaFeed 负责可靠的前复权数据,pandas 负责精确计算,结构化 prompt 负责约束模型只解释、不编造。省 token、少幻觉、结论可核对。
相关链接:
- AlphaFeed 官网:https://alphafeed.org/
- Python SDK 快速开始:https://docs.alphafeed.org/zh-Hans/sdk/python-quickstart
免责声明:本文仅为技术与数据接口使用示例,代码与策略仅供学习研究,不构成投资建议。市场有风险,历史数据不代表未来表现。