원클릭으로
alpaca-data
Market Data API de Alpaca: acciones, crypto, opciones. Historical y real-time data para 5000+ stocks.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Market Data API de Alpaca: acciones, crypto, opciones. Historical y real-time data para 5000+ stocks.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
History of Market (historyofmarket.com) — API publica con 88 datasets historicos de indices US desde 1871. S&P 500 (price, CAPE, EPS, drawdowns, changes, constituents), Nasdaq Composite/Nasdaq 100 (price, volatility, VXN, changes), Dow Jones, SOX/SMH, sector ETFs (XLK, XLF), Magnificent 7 y macro. Sin API key, CORS libre, CC BY 4.0.
API no oficial de Yahoo Finance: precios, históricos, fundamentales, opciones, noticias en JSON puro sin wrappers.
Construcción y optimización cuantitativa de portafolios: Markowitz (scipy.optimize + Monte Carlo), Black-Litterman (prior CAPM, views absolutas/relativas, posterior bayesiano), HRP/HERC/NCO (clustering jerárquico, risk parity, NCO con restricciones). Todo flat numpy + scipy, sin Riskfolio-Lib ni PyPortfolioOpt.
Trading API de Primary (Matba ROFEX): futuros, opciones, acciones, bonos. Órdenes, posiciones, cuenta, market data.
Academic backtesting framework for quantitative research. ~30 risk and performance ratios, 10 classes of indicators, event-driven engine with 6+ strategies, MPT optimizer, forward-looking simulation with Johnson SU + t-Copula, walk-forward CV, stress testing, fundamental analysis (Altman Z, Piotroski, DuPont). All flat Python + numpy.
Pricing completo de opciones europeas y americanas. 9 metodos: Black-Scholes, Binomial CRR, Trinomial, Monte Carlo (antithetic) + Longstaff-Schwartz, Bjerksund-Stensland 2002 / BAW (American closed-form), Heston 1993 (vol estocastica, sonrisa via Fourier), Bates 1996 (Heston + Merton jumps, crash risk), greeks (BS), implied vol, P(ITM) y P(Profit). Disenado para backtesting: cada funcion es flat Python vectorizado con numpy (sin abstracciones), usa math.erfc (no scipy). BS 2.4 us/op, BS2 3.6 us, Heston 400 us, Binomial N=500 5.6 ms. CLI con 15 modos mas validate y bench. Time complexity O(1) para todos los closed-form.
| name | alpaca-data |
| description | Market Data API de Alpaca: acciones, crypto, opciones. Historical y real-time data para 5000+ stocks. |
| license | MIT |
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
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.
| Plan | Requests/Min | Datos |
|---|---|---|
| Free (IEX) | 200 | ~5 años historia, 1 exchange |
| Paid (SIP) | Mayor | Todas las bolsas US, ~7 años |
limit=10000 — máximo por requestnext_page_token — para datos grandes| Feed | Descripción | Costo |
|---|---|---|
iex | Investors Exchange (~2.5% del volumen) | Gratis |
sip | Todas las bolsas US (consolidado) | Paid |
boats | Blue Ocean ATS (horas extendidas) | Paid |
otc | Over-the-counter | Paid |
Free tier = solo IEX
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.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)
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
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)
Ver ./references/options_reference.md para:
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()
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/
| 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 | ✅ | ❌ |
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.