Loading...
Loading...
Market Data API de Alpaca: acciones, crypto, opciones. Historical y real-time data para 5000+ stocks.
npx skill4agent add gauss314/skills alpaca-dataimport 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()| Plan | Requests/Min | Datos |
|---|---|---|
| Free (IEX) | 200 | ~5 años historia, 1 exchange |
| Paid (SIP) | Mayor | Todas las bolsas US, ~7 años |
limit=10000next_page_token| Feed | Descripción | Costo |
|---|---|---|
| Investors Exchange (~2.5% del volumen) | Gratis |
| Todas las bolsas US (consolidado) | Paid |
| Blue Ocean ATS (horas extendidas) | Paid |
| Over-the-counter | Paid |
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 # DataFrameTimeFrame.MinuteTimeFrame(5, TimeFrame.Minute)TimeFrame.HourTimeFrame.DayTimeFrame.WeekTimeFrame.Monthfrom 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)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.dffrom 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)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)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()# 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/| Error | Causa | Solución |
|---|---|---|
| 403 Forbidden | Keys inválidas o sin permisos | Verificar API keys |
| 429 Too Many Requests | Rate limit | Esperar, usar cache |
| Empty response | Sin datos para el símbolo | Verificar símbolo |
| "options_enabled" | Symbol sin opciones | Usar símbolo con opciones |
| Feature | Alpaca | Alpha Vantage | Data912 |
|---|---|---|---|
| Free tier | ✅ IEX (1 exchange) | ✅ 25/day | ✅ Todo ARS |
| Stocks US | ✅ | ✅ | ❌ |
| Crypto | ✅ | ✅ | ❌ |
| Opciones | ✅ | ❌ | ❌ |
| Historical depth | ~5 años IEX | Limitado | Limitado |
| SDK Python | ✅ alpaca-py | ✅ | ❌ |