alpaca-data について
alpaca-dataは、株式、暗号資産、オプションの市場データを扱う開発者向けのスキルです。履歴データとリアルタイムデータに対応し、Pythonの例やダウンロードスクリプトを備えています。
主な機能
- 01株式の履歴バー、気配値、約定を取得
- 02暗号資産とオプションのデータを取得
- 03ニュース、スナップショット、活況銘柄を取得
- 04リアルタイムの株式データストリームを購読
- 05スクリプトで市場データをダウンロード
活用シーン
- 01株式や暗号資産の戦略をバックテスト
- 02オプション契約と履歴データを取得
- 03株式のリアルタイム価格を監視
- 04指定銘柄のデータを一括ダウンロード
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ gauss314/ skills --skill alpaca-dataインストール後、Claude Code で/alpaca-dataを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/options_reference.mdscripts/download_crypto_bars.pydownload_options.pydownload_stock_bars.py詳細
Alpaca Data — Market Data API
株式、暗号資産、オプションの過去データとリアルタイムデータを提供する市場データ API です。
Base URL: https://data.alpaca.markets
SDK: pip install alpaca-py
Docs: docs.alpaca.markets
認証
API Keys の取得
- app.alpaca.markets にアクセスします
- アカウントを作成します(ペーパートレーディングは無料です)
- 「API Keys」→ Generate New Keys に進みます
- API Key と Secret Key を保存します
設定
import os
from alpaca.data.historical import StockHistoricalDataClient
# Keys (requerido para datos de acciones)
API_KEY = os.getenv("APCA_API_KEY_ID")
SECRET_KEY = os.getenv("APCA_API_SECRET_KEY")
client = StockHistoricalDataClient(API_KEY, SECRET_KEY)
# Crypto NO requiere keys
from alpaca.data.historical import CryptoHistoricalDataClient
crypto_client = CryptoHistoricalDataClient()
⚠️ 共有するコードにキーを絶対にハードコードしないでください。
レート制限
| プラン | Requests/Min | データ |
|---|---|---|
| Free (IEX) | 200 | 約5年分の履歴、1つの取引所 |
| Paid (SIP) | より多い | 米国の全取引所、約7年分 |
推奨事項
- データをキャッシュする — 過去データは変更されません
- リクエストをバッチ処理する — 複数のシンボルを1回の呼び出しで取得します
limit=10000を使用する — 1リクエストあたりの最大値ですnext_page_tokenでページネーションする — 大量のデータを取得する場合に使用します
データフィード
| フィード | 説明 | 費用 |
|---|---|---|
iex | Investors Exchange(取引量の約2.5%) | 無料 |
sip | 米国の全取引所(統合) | 有料 |
boats | Blue Ocean ATS(取引時間延長) | 有料 |
otc | 店頭取引 | 有料 |
無料プランでは IEX のみ利用できます
過去の株式データ
バー(OHLCV)
from alpaca.data.requests import StockBarsRequest
from alpaca.data.timeframe import TimeFrame
from datetime import datetime
request = StockBarsRequest(
symbol_or_symbols=["AAPL", "GOOGL"],
timeframe=TimeFrame.Day,
start=datetime(2023, 1, 1),
end=datetime(2024, 12, 31),
feed="iex" # free tier
)
bars = client.get_stock_bars(request)
df = bars.df # DataFrame
利用可能な TimeFrames:
TimeFrame.Minute/TimeFrame(5, TimeFrame.Minute)TimeFrame.HourTimeFrame.DayTimeFrame.WeekTimeFrame.Month
気配値(Bid/Ask)
from alpaca.data.requests import StockQuotesRequest
request = StockQuotesRequest(
symbol_or_symbols=["AAPL"],
start=datetime(2024, 1, 1),
end=datetime(2024, 1, 31),
feed="iex"
)
quotes = client.get_stock_quotes(request)
取引
from alpaca.data.requests import StockTradesRequest
request = StockTradesRequest(
symbol_or_symbols=["AAPL"],
start=datetime(2024, 1, 1),
feed="iex"
)
trades = client.get_stock_trades(request)
最新データ
# Latest bar
bars = client.get_stock_latest_bar(["AAPL", "GOOGL"])
# Latest quote
quotes = client.get_stock_latest_quote(["AAPL"])
# Latest trade
trades = client.get_stock_latest_trade(["AAPL"])
スナップショット
from alpaca.data.requests import SnapshotRequest
request = SnapshotRequest(
symbol_or_symbols=["AAPL", "GOOGL"]
)
snapshots = client.get_snapshot(request)
過去の暗号資産データ
API キーは不要です
from alpaca.data.historical import CryptoHistoricalDataClient
from alpaca.data.requests import CryptoBarsRequest
from alpaca.data.timeframe import TimeFrame
from datetime import datetime
client = CryptoHistoricalDataClient()
request = CryptoBarsRequest(
symbol_or_symbols=["BTC/USD", "ETH/USD"],
timeframe=TimeFrame.Day,
start=datetime(2023, 1, 1),
end=datetime(2024, 12, 31)
)
bars = client.get_crypto_bars(request)
df = bars.df
暗号資産のオーダーブック
from alpaca.data.requests import CryptoLatestQuoteRequest
request = CryptoLatestQuoteRequest(symbol_or_symbols=["BTC/USD"])
quotes = client.get_crypto_latest_quote(request)
過去のオプションデータ
オプションチェーン
# Obtener contratos disponibles
from alpaca.data.requests import OptionContractsRequest
request = OptionContractsRequest(
underlying_symbols=["AAPL"],
expiration_date_gte="2024-01-01", # desde esta fecha
expiration_date_lte="2024-12-31", # hasta esta fecha
strike_price_gte=100, # strikes mínimo
strike_price_lte=200 # strikes máximo
)
contracts = client.get_option_contracts(request)
オプションのバー/取引/気配値
from alpaca.data.requests import OptionBarsRequest
# Buscar contract ID primero
contract_id = "6e58f870-fe73-4583-81e4-b9a37892c36f"
request = OptionBarsRequest(
symbol_or_contract_ids=[contract_id],
start=datetime(2024, 1, 1),
end=datetime(2024, 1, 31)
)
bars = client.get_option_bars(request)
オプションティッカーのリファレンス
./references/options_reference.md を参照してください。内容は以下のとおりです。
- オプションシンボル(AAPL240119C00100000)
- フィルタリングパラメーター
- 必要な取引レベル
ニュース
from alpaca.data.requests import StockNewsRequest
request = StockNewsRequest(
symbol_or_symbols=["AAPL", "GOOGL"],
start=datetime(2024, 1, 1),
end=datetime(2024, 1, 31)
)
news = client.get_stock_news(request)
スクリーナー
from alpaca.data.requests import MostActivesRequest
request = MostActivesRequest(
by="volume", # volume, share, number
top=10,
date="2024-01-15"
)
movers = client.get_most_actives(request)
WebSocket によるリアルタイムデータ(任意)
from alpaca.data.stream import StockDataStream
ws = StockDataStream(API_KEY, SECRET_KEY)
async def handle_bar(bar):
print(bar)
ws.subscribe_bars(handle_bar, "AAPL", "GOOGL")
ws.run()
ダウンロードスクリプト
./scripts/ のスクリプトを使用します。
# Descargar bars de acciones
python ./scripts/download_stock_bars.py --symbols AAPL,GOOGL --days 365 --output data/
# Descargar crypto
python ./scripts/download_crypto_bars.py --symbols BTC,ETH --days 90 --output data/
# Descargar option contracts
python ./scripts/download_options.py --symbol AAPL --output data/
よくあるエラー
| エラー | 原因 | 解決方法 |
|---|---|---|
| 403 Forbidden | キーが無効、または権限がありません | API キーを確認します |
| 429 Too Many Requests | レート制限 | 待機するか、キャッシュを使用します |
| Empty response | シンボルのデータがありません | シンボルを確認します |
| "options_enabled" | シンボルにオプションがありません | オプションのあるシンボルを使用します |
他の API との比較
| Feature | Alpaca | Alpha Vantage | Data912 |
|---|---|---|---|
| 無料プラン | ✅ IEX(1つの取引所) | ✅ 25件/日 | ✅ アルゼンチンペソの全データ |
| 米国株 | ✅ | ✅ | ❌ |
| 暗号資産 | ✅ | ✅ | ❌ |
| オプション | ✅ | ❌ | ❌ |
| 過去データの期間 | IEX で約5年 | 限定的 | 限定的 |
| Python SDK | ✅ alpaca-py | ✅ | ❌ |
以下の場合は Alpaca を選択してください: 米国のデータ(株式、暗号資産、オプション)、日中データ。
以下の場合は Data912 を選択してください: アルゼンチン市場のデータ。
以下の場合は Alpha Vantage を選択してください: テクニカル指標、外国為替。
コメント
Markdown 対応