mcpField
A
alpaca-data

alpaca-data

github.com/gauss314Data & databases252255 installsUpdated 19w ago
Repository

About alpaca-data

alpaca-data is a skill for accessing Alpaca market data, aimed at developers working with stocks, crypto, and options. It covers historical and real-time data, with Python examples and download scripts.

Key features

  1. 01Retrieve historical stock bars, quotes, and trades
  2. 02Access crypto and options data
  3. 03Fetch news, snapshots, and most-active lists
  4. 04Subscribe to real-time stock streams
  5. 05Download market data with scripts

Use cases

  1. 01Backtest stock or crypto strategies
  2. 02Retrieve option contracts and historical data
  3. 03Monitor real-time stock prices
  4. 04Batch-download data for selected symbols

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/gauss314/skills --skill alpaca-data

After installing, type/alpaca-datain Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
options_reference.md
scripts/
download_crypto_bars.py
download_options.py
download_stock_bars.py

Details

From the project README

Alpaca Data — Market Data API

API de datos de mercado con datos históricos y en tiempo real para acciones, crypto y opciones.

Base URL: https://data.alpaca.markets
SDK: pip install alpaca-py
Docs: docs.alpaca.markets


Autenticación

Obtener API Keys
  1. Ir a app.alpaca.markets
  2. Crear cuenta (paper trading es gratis)
  3. Ir a "API Keys" → Generate New Keys
  4. Guardar API Key y Secret Key
Configuración
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()

⚠️ NUNCA hardcodear keys en código que se comparte.


Rate Limits

PlanRequests/MinDatos
Free (IEX)200~5 años historia, 1 exchange
Paid (SIP)MayorTodas las bolsas US, ~7 años
Recomendaciones
  • Cachear datos — los datos históricos no cambian
  • Batch requests — pedir múltiples símbolos en una llamada
  • Usar limit=10000 — máximo por request
  • Paginar con next_page_token — para datos grandes

Data Feeds

FeedDescripciónCosto
iexInvestors Exchange (~2.5% del volumen)Gratis
sipTodas las bolsas US (consolidado)Paid
boatsBlue Ocean ATS (horas extendidas)Paid
otcOver-the-counterPaid

Free tier = solo IEX


Historical Stock Data

Bars (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 disponibles:

  • TimeFrame.Minute / TimeFrame(5, TimeFrame.Minute)
  • TimeFrame.Hour
  • TimeFrame.Day
  • TimeFrame.Week
  • TimeFrame.Month
Quotes (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)
Trades
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 Data
# 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"])
Snapshots
from alpaca.data.requests import SnapshotRequest

request = SnapshotRequest(
    symbol_or_symbols=["AAPL", "GOOGL"]
)
snapshots = client.get_snapshot(request)

Historical Crypto Data

No requiere API keys

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
Crypto Orderbook
from alpaca.data.requests import CryptoLatestQuoteRequest

request = CryptoLatestQuoteRequest(symbol_or_symbols=["BTC/USD"])
quotes = client.get_crypto_latest_quote(request)

Historical Options Data

Option Chains
# 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)
Option Bars/Trades/Quotes
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)

Options Tickers Reference

Ver ./references/options_reference.md para:

  • Símbolos de opciones (AAPL240119C00100000)
  • Parámetros de filtrado
  • Trading levels requeridos

News

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)

Screener

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 Real-Time (Opcional)

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 de Descarga

Usá los scripts en ./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/

Errores Comunes

ErrorCausaSolución
403 ForbiddenKeys inválidas o sin permisosVerificar API keys
429 Too Many RequestsRate limitEsperar, usar cache
Empty responseSin datos para el símboloVerificar símbolo
"options_enabled"Symbol sin opcionesUsar símbolo con opciones

Comparación con Otras APIs

FeatureAlpacaAlpha VantageData912
Free tier✅ IEX (1 exchange)✅ 25/day✅ Todo ARS
Stocks US✅✅❌
Crypto✅✅❌
Opciones✅❌❌
Historical depth~5 años IEXLimitadoLimitado
SDK Python✅ alpaca-py✅❌

Elegí Alpaca para: datos de EE.UU. (stocks, crypto, opciones), datos intraday.
Elegí Data912 para: datos del mercado argentino.
Elegí Alpha Vantage para: indicadores técnicos, forex.

Comments

Markdown supported