如果你正在找 FMP(Financial Modeling Prep)的免費替代品,或想自架(self-host)解決方案來降低成本,目前市面上已經有不少選項。以下整理免費 API 服務與開源自架方案,方便你依 Agent 的需求做選擇。
免費 API 服務比較
不同供應商在額度、資料範圍上差異很大,選擇時要特別注意 rate limit 是否符合你的 Agent 呼叫頻率。
| 服務 | 免費額度 | 資料涵蓋 | 主要限制 |
|---|---|---|---|
| FMP(現有) | 250 次/天 | 全球基本面 + 價格,30年+ 財報 | 價格資料是快照式 |
| yfinance(Python 套件) | 無官方限制,實務約 2000 次/小時 | 全球股票、選擇權、基本面,20年+ 日線 | 非官方、無 SLA,格式可能隨時變動 |
| Finnhub | 60 次/分鐘 | 全球股票、另類資料,30年美股歷史 | 免費層有 15 分鐘延遲 |
| Alpaca | 200 次/分鐘 | 美股、加密貨幣,5年+歷史 | 需開券商帳戶才能用 |
| Alpha Vantage | 25 次/天 | 全球股票、外匯、加密貨幣、技術指標 | 額度太低,難做跨股票分析 |
| Polygon.io | 5 次/分鐘 | 美股 | 歷史資料僅約2年 |
| Eulerpool | 1000 次/天 | 即時+歷史股價、基本面、外匯、大宗商品、經濟指標 | 較新服務,穩定性待觀察 |
其中 yfinance 是 quant 社群最常用的免費資料源,因為它完全免費、不需要 API key,且涵蓋範圍廣,非常適合拿來當 Trading AI Agent 的資料層 。但要注意它是非官方套件,抓取 Yahoo Finance 網頁資料,格式可能隨時改變,正式生產環境建議加上容錯機制。
如果你的 Agent 需要較高頻率的呼叫(例如同時追蹤上百檔股票),Finnhub 或 Alpaca 的免費層會比 FMP 更寬鬆,Alpaca 的 200 次/分鐘額度在免費方案中最為大方,只是需要開一個 Alpaca 券商帳戶(不強制要真實交易)。
開源 Self-Host 方案
自架方案能避免供應商端的 rate limit 問題,且資料主權掌握在自己手上,適合長期經營的 Trading Agent。
- OpenBB Platform:目前最完整的開源金融資料整合平台,可用
pip install openbb安裝,一支程式碼就能串接數十個資料供應商(含免費源),並提供 FastAPI 後端讓 AI Agent 直接呼叫,支援股票、選擇權、加密貨幣、宏觀經濟等資料 。這是目前社群最活躍、擴充性最好的方案。 - Equibles:專為 AI Agent 設計的自架「迷你 Bloomberg Terminal」,整合 SEC 申報文件、機構持股、內部人交易、國會議員交易與放空資料,走的是替代資料(alternative data)路線,適合想做更深入基本面/事件驅動策略的 Agent 。
- yfinance + 自建快取層:最簡單的自架做法是用 yfinance 抓資料,寫入本地資料庫(如 SQLite/PostgreSQL)做快取,這樣可以繞開 Yahoo 端偶發的封鎖問題,同時降低重複呼叫的次數。
選擇建議
如果你只是要驗證策略邏輯、還在 prototype 階段,yfinance 幾乎是零成本且最快上手的選擇 。若已進入正式部署、需要穩定 SLA 與更高呼叫額度,OpenBB Platform 因為能同時串接多個免費/付費資料源並統一介面,長期來看維護成本最低 。若你的策略需要另類資料(內部人交易、國會交易等),Equibles 這類專門為 AI Agent 設計的自架方案會比單純股價 API 更有價值 。
你的 Trading AI Agent 主要是做即時交易決策,還是偏向歷史資料回測分析?這會影響該優先考慮 rate limit 還是歷史資料深度。
OpenBB Platform 整合 AI Agent 的實作方式
OpenBB 目前提供三種主要方式讓 AI Agent 使用其金融資料:作為 Python 函式庫直接被 LLM function calling 呼叫、透過 OpenBB AI SDK 建立相容 OpenBB Workspace 的自架 Agent 服務、以及透過 MCP(Model Context Protocol)server 讓 Claude 等任意支援 MCP 的 Agent 直接存取資料 。以下分別說明三種實作路徑與範例程式碼。
方式一:Function Calling 驅動的 OpenBB Agent
OpenBB 官方有一個實驗性專案 experimental-openbb-platform-agent,示範 LLM 如何透過 function calling 自動呼叫 OpenBB Platform 的資料函式,來回答自然語言問題 。設定好資料供應商的憑證後(存在 ~/.openbb_platform/user_settings.json 或用 OpenBB Hub 的 PAT),就能這樣使用:
from openbb_agents.agent import openbb_agent
result = openbb_agent("What is the current market cap of TSLA?")
print(result)
# 輸出:TSLA 目前市值約 $695,833,798,800.00,
# 依據最新股價與流通股數計算得出
這種設計特別適合處理跨多步驟的複雜查詢,例如先查詢同業清單再依市值排序,Agent 會自動拆解子問題並依序呼叫對應的 OpenBB 資料函式 。也提供 async 版本 aopenbb_agent,方便整合進非同步的 Trading Agent 架構中。
方式二:自架相容 OpenBB Workspace 的 Agent 服務
如果你想讓自己的 AI Agent 直接顯示在 OpenBB Workspace 介面中(而不只是後端呼叫資料),需要用 OpenBB AI SDK 建立一個符合 HTTP 合約的 FastAPI 服務 。核心邏輯是提供兩個端點:/agents.json 描述 Agent 資訊,/v1/query 處理實際對話並以 SSE(Server-Sent Events)串流回應 。
from fastapi import FastAPI
from fastapi.responses import JSONResponse
from sse_starlette.sse import EventSourceResponse
import openai
app = FastAPI()
@app.get("/agents.json")
def get_copilot_description():
return JSONResponse(content={
"financial_prompt_optimizer": {
"name": "Financial Prompt Optimizer",
"endpoints": {"query": "http://localhost:7777/v1/query"},
}
})
@app.post("/v1/query")
async def query(request):
client = openai.AsyncOpenAI()
async def execution_loop():
async for event in await client.chat.completions.create(
model="gpt-4o", messages=[...], stream=True,
):
if chunk:= event.choices[^2_0].delta.content:
yield message_chunk(chunk)
return EventSourceResponse(content=execution_loop())
部署完成後,只要在 OpenBB Workspace 的 Copilot 設定裡輸入你的服務網址,Workspace 會自動抓取 /agents.json 並開始對話 。OpenBB 也提供完整範例庫 agents-for-openbb,涵蓋讀取 widget 資料、產生圖表、產生表格、處理 PDF 並加註引用、根據 workspace 功能設定動態調整行為等九種以上的可運行範例,非常適合直接改寫成 Trading Agent 的資料讀取層 。
方式三:透過 MCP Server 直接串接 Claude 等 Agent
若你的 Trading AI Agent 是用 Claude、Claude Code 或其他支援 MCP 協定的框架建構,OpenBB 的 Open Data Platform(ODP) 可以直接以 MCP server 的形式暴露股票、固定收益、宏觀經濟指標等結構化資料,不需要額外寫轉接程式 。只要在 MCP client 端設定 ODP 的 server 位址,Claude 就能直接呼叫這些金融資料函式,等同於把 OpenBB 變成 Agent 的「資料工具箱」。這種方式最省工程量,因為不需要自己維護 HTTP 合約,只要 Agent 支援 MCP 標準即可接上。
三種方式怎麼選
| 實作方式 | 適合場景 | 主要限制 |
|---|---|---|
Function calling(openbb_agents) |
純後端 Trading Agent,需要自動拆解多步驟查詢 | 目前標記為實驗性專案,穩定性待觀察 |
| OpenBB AI SDK 自架服務 | 想要在 OpenBB Workspace 介面中操作 Agent、產生圖表/表格 | 需自行維護 FastAPI 服務與 SSE 串流邏輯 |
| MCP Server(ODP) | 已用 Claude/MCP 生態系開發 Agent,想快速接上資料 | 需另外設定 ODP 資料供應商憑證 |
如果你的 Trading AI Agent 是純程式化交易(沒有對話介面需求),方式一的 function calling 模式會是最直接的整合方式,因為它讓 LLM 自主決定何時查詢哪些資料 。若你未來想加上人機互動的分析儀表板,方式二能讓策略解釋、圖表輸出直接呈現在 OpenBB Workspace 上 。若你的技術棧本身就建立在 Claude 或其他 MCP 相容框架上,方式三的 ODP MCP server 會是接線最少的做法 。
你的 Trading Agent 目前是用哪個 LLM 框架開發(例如 LangChain、純 OpenAI function calling,還是 Claude/MCP)?這會決定哪種整合路徑最省工。