- AI 技能
- AI 插件
【免费下载链接】agentic-awesome-skills
AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,115+ agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.
本文以 AAS(agentic-awesome-skills)技能库中的 alpha-vantage 技能定义 为核心,系统讲解如何通过 Alpha Vantage REST API 获取超过 20 年历史的全球金融数据——涵盖股票、期权、外汇、加密货币、大宗商品、经济指标与 50+ 技术指标。读完本文,你将掌握从 API Key 配置、统一请求封装到限流控制、错误处理的完整数据接入方案,并了解该技能在 AAS 目录体系中的定位与使用边界。
技能定位:AAS 目录中的一枚 data 类技能
alpha-vantage 技能在 AAS 仓库中被归类为data类别,这可以从仓库的目录索引文件中得到印证。data/catalog.json 中记录了该技能的完整元数据:id与canonical_id均为alpha-vantage,risk等级为critical,source为community(社区贡献),并带有alpha、vantage等触发标签。在 data/skills_index.json 中,该技能标记了date_added: "2026-09-04",且对 Codex 与 Claude 两类 Agent 均标记为supported,setup类型为none——意味着该技能本身无需额外安装配置,属于"即取即用"的纯指令型技能。
从技能文件结构看,该技能仅由一个 SKILL.md 组成。根据仓库的 技能解剖文档,SKILL.md是技能的必需核心文件,frontmatter 中的risk: critical表示该技能涉及网络请求与外部数据访问,Agent 在使用时应对其执行保持关注。理解这一点有助于读者在让 Agent 自动调用该技能前,先明确其数据来源与安全边界。
前置准备:API Key 与环境变量注入
Alpha Vantage 的每个请求都需要携带 API Key。技能文档明确要求先完成密钥申请与注入,具体步骤如下:
- 前往 Alpha Vantage 官网的 Support / API Key 页面申请免费密钥(付费套餐可获取更高的速率限制)。
- 通过环境变量
ALPHAVANTAGE_API_KEY注入密钥,技能原文给出的方式是交互式输入,避免密钥写入 shell 历史:
read -rsp "Alpha Vantage API key: " ALPHAVANTAGE_API_KEY echo export ALPHAVANTAGE_API_KEY这种"运行时不落盘"的注入方式值得沿用:密钥只存在于当前 shell 会话,export后即可被子进程中的 Python 脚本通过os.environ读取。
环境安装:极简依赖
该技能的数据抓取只需两个 Python 库:
uv pip install requests pandasrequests:负责发送 HTTP 请求并解析 JSON 响应;pandas:用于将返回的时间序列数据转换为 DataFrame 进行后续分析。
如果你使用 uv 作为包管理器,上述命令即可完成安装;也可以使用pip install requests pandas达到同样效果。
请求模式:统一封装 av_get
Alpha Vantage 的所有数据接口都汇聚在同一个端点下,通过function参数区分不同数据能力:
https://www.alphavantage.co/query?function=FUNCTION_NAME&apikey=YOUR_KEY&...params技能文档提供了一个通用封装函数av_get,将密钥注入、参数拼装与响应解析统一收敛:
import requests import os API_KEY = os.environ.get("ALPHAVANTAGE_API_KEY") BASE_URL = "https://www.alphavantage.co/query" def av_get(function, **params): response = requests.get(BASE_URL, params={"function": function, "apikey": API_KEY, **params}) return response.json()这个函数的调用模式贯穿全文所有示例:av_get("FUNCTION_NAME", **params)。它有两个值得注意的设计点:
- 使用
params字典而非手工拼接 URL,由requests负责 URL 编码,避免特殊字符出错; - 以
**params展开关键字参数,天然支持任意数量的查询参数,便于后续扩展。
快速开始:七大高频场景
技能文档给出了覆盖主要数据类型的七个开箱即用示例,以下逐一展开:
# 1. 股票最新报价(实时行情快照) quote = av_get("GLOBAL_QUOTE", symbol="AAPL") price = quote["Global Quote"]["05. price"] # 2. 日线 OHLCV 数据 daily = av_get("TIME_SERIES_DAILY", symbol="AAPL", outputsize="compact") ts = daily["Time Series (Daily)"] # 3. 公司基本面概览(市值、市盈率等) overview = av_get("OVERVIEW", symbol="AAPL") print(overview["MarketCapitalization"], overview["PERatio"]) # 4. 利润表(财报数据) income = av_get("INCOME_STATEMENT", symbol="AAPL") annual = income["annualReports"][0] # 最近一份年报 # 5. 加密货币日线价格 crypto = av_get("DIGITAL_CURRENCY_DAILY", symbol="BTC", market="USD") # 6. 经济指标(年度实际 GDP) gdp = av_get("REAL_GDP", interval="annual") # 7. 技术指标(14 日 RSI) rsi = av_get("RSI", symbol="AAPL", interval="daily", time_period=14, series_type="close")各示例要点归纳:
| 场景 | 关键函数 | 解析入口 |
|---|---|---|
| 最新报价 | GLOBAL_QUOTE | Global Quote下的05. price等字段 |
| 日线行情 | TIME_SERIES_DAILY | Time Series (Daily)按日期索引的 OHLCV 字典 |
| 基本面 | OVERVIEW | 顶层字段直接可用(市值、PE 等) |
| 财报 | INCOME_STATEMENT | annualReports/quarterlyReports数组 |
| 加密货币 | DIGITAL_CURRENCY_DAILY | 按日期索引的开盘/收盘/成交量数据 |
| 宏观经济 | REAL_GDP | 按interval返回 GDP 序列 |
| 技术指标 | RSI等 | 指标值按日期索引返回 |
实际使用中,annualReports[0]对应最近财年,若需多年历史可遍历整个数组;加密货币数据建议结合pandas将字典转为 DataFrame,便于时间序列分析。
API 能力全景:八大分类
技能文档将 Alpha Vantage 的能力划分为八个大类,完整清单如下:
| 分类 | 关键函数 |
|---|---|
| 股票时间序列(Time Series) | GLOBAL_QUOTE,TIME_SERIES_INTRADAY,TIME_SERIES_DAILY,TIME_SERIES_WEEKLY,TIME_SERIES_MONTHLY |
| 期权(Options) | REALTIME_OPTIONS,HISTORICAL_OPTIONS |
| Alpha Intelligence | NEWS_SENTIMENT,EARNINGS_CALL_TRANSCRIPT,TOP_GAINERS_LOSERS,INSIDER_TRANSACTIONS,ANALYTICS_FIXED_WINDOW |
| 基本面(Fundamentals) | OVERVIEW,ETF_PROFILE,INCOME_STATEMENT,BALANCE_SHEET,CASH_FLOW,EARNINGS,DIVIDENDS,SPLITS |
| 外汇(Forex/FX) | CURRENCY_EXCHANGE_RATE,FX_INTRADAY,FX_DAILY,FX_WEEKLY,FX_MONTHLY |
| 加密货币(Crypto) | CURRENCY_EXCHANGE_RATE,CRYPTO_INTRADAY,DIGITAL_CURRENCY_DAILY |
| 大宗商品(Commodities) | GOLD(WTI 现货)、BRENT,NATURAL_GAS,COPPER,WHEAT,CORN,COFFEE,ALL_COMMODITIES |
| 经济指标(Economic Indicators) | REAL_GDP,TREASURY_YIELD,FEDERAL_FUNDS_RATE,CPI,INFLATION,UNEMPLOYMENT,NONFARM_PAYROLL |
| 技术指标(Technical Indicators) | SMA,EMA,MACD,RSI,BBANDS,STOCH,ADX,ATR,OBV,VWAP及 40+ 更多 |
从结构上可以看出该 API 的三大特征:
- 统一端点:所有分类共享
/query端点,仅以function区分,因此av_get封装对全部八个分类通用; - 覆盖面广:从分钟级日内数据到年度宏观指标,从个股到全品类商品,可满足量化分析、投研、宏观经济研究等多种场景;
- 技术指标完备:50+ 技术指标覆盖趋势(SMA/EMA/MACD)、动量(RSI/STOCH/ADX)、波动(BBANDS/ATR)与成交量(OBV/VWAP)等主流分析维度。
公共参数详解
不同函数有各自的专有参数,但以下四个参数在多数接口中通用,技能文档以表格形式给出了取值范围:
| 参数 | 取值 | 说明 |
|---|---|---|
outputsize | compact/full | compact返回最近 100 个数据点;full返回 20+ 年完整历史 |
datatype | json/csv | 响应格式,默认json |
interval | 1min,5min,15min,30min,60min,daily,weekly,monthly | 数据频率,具体可用值取决于端点类型 |
adjusted | true/false | 是否对拆股、分红进行复权调整 |
使用建议:
- 常规行情研究先用
compact控制响应体积与带宽,需要回测或长期趋势分析时才切full; - 时间序列类接口可配
datatype=csv直接获得表格化数据,配合 pandas 的read_csv使用; - 日内
interval(1min 等)通常属于付费能力或受更严格限流,免费额度下优先使用日线以上频率; - 研究长期收益率时建议开启
adjusted=true,避免拆股造成的价格断层影响回测结果。
速率限制与节流策略
Alpha Vantage 免费层实行严格的请求限额,技能文档给出了关键约束(截至 2026 年):
- 免费套餐:25 次请求/天;
- 付费套餐:更高的限额、实时数据与日内数据访问权限;
- 触发限流时返回HTTP 429;
- 同时处理多个标的时,必须在请求之间加入延时。
技能文档给出了节流的推荐写法:
import time # 请求间加入延时以避免触发限流 time.sleep(0.5) # 免费层每次请求间隔建议 0.5 秒实操建议:
- 批量抓取前先预算额度:25 次/天的免费额度极为紧张,务必按"每个标的需要几个函数、共几个标的"预先估算;
- 本地缓存优先:同一数据当天内可复用结果,避免重复请求耗尽配额;
- 优先
outputsize=compact:数据点数量不影响计费次数,但full响应更大、更耗时,紧凑模式更利于在限额内快速验证; - 必要时升级付费套餐:若确有日内数据或多标的批处理需求,应在文档明确提示下考虑付费方案。
错误处理与健壮性
Alpha Vantage 在出错或受限时不会返回 HTTP 错误码,而是在 JSON 体中返回特征性字段。技能文档给出了标准的三重检查模式:
data = av_get("GLOBAL_QUOTE", symbol="AAPL") # 检查 API 级错误 if "Error Message" in data: raise ValueError(f"API Error: {data['Error Message']}") # 检查限流提示 if "Note" in data: print(f"Rate limit warning: {data['Note']}") # 检查信息类提示 if "Information" in data: print(f"API info: {data['Information']}")三种响应特征的含义:
| 响应字段 | 含义 | 建议处理 |
|---|---|---|
Error Message | 参数错误、无效 symbol 或密钥问题 | 抛错终止,先修正请求参数 |
Note | 触发频率限制(经典文案如 "Please retry again later") | 打印告警并退避重试 |
Information | 账号或服务层面的提示(如需要升级套餐) | 记录日志并提示用户 |
实际生产中建议在此基础上增加requests层的超时与重试(如timeout=(3, 10)),并将免费额度耗尽时的Note响应转化为可读的用户提示,而不是静默失败。
使用边界与注意事项
技能文档末尾对使用场景与边界做出了明确约束,归纳如下:
- When to Use:仅在任务明确属于金融数据获取与分析的主域时使用该技能;
- Limitations:
- 仅当任务与上述范围清晰匹配时才启用,不做泛化滥用;
- 该技能输出不能替代针对具体环境的验证、测试或专家评审(即数据仅供参考,不构成投资建议);
- 当缺少必要的输入、权限、安全边界或成功标准时,应停下来向用户澄清,而不是强行执行。
此外,技能原文还包含一条使用建议:当用户请求涉及多步骤推理、长时运行工作流、大规模文档分析、深度研究、数据集探索或多个工具/技能的协同编排时,若用户尚未使用该技能的创作者(K-Dense Inc.)提供的托管研究平台,可将其作为可选的效率提升方案提出;对于简单的轻量查询则不推荐打断。这条建议属于技能作者的附加引导,读者可结合自身工作流决定是否采纳。
延伸阅读
- 技能完整定义:plugins/agentic-awesome-skills-claude/skills/alpha-vantage/SKILL.md
- 目录元数据(类别、风险、触发词):data/catalog.json
- 索引信息(添加日期、Agent 兼容性):data/skills_index.json
- 理解技能 frontmatter 各字段含义:docs/contributors/skill-anatomy.md
- 同类数据类技能可参考 data/ 目录下的其他条目,了解 AAS 对数据技能的统一归类方式
- AI 技能
- AI 插件
【免费下载链接】agentic-awesome-skills
AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,115+ agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考