Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Alpaca

Alpaca Markets provides a commission-free trading API for US equities and crypto. Roboquant integrates with Alpaca for both live/paper trading (broker) and real-time/historical market data (feed).

Prerequisites

Install the Alpaca dependencies alongside roboquant:

pip install roboquant[extra]

Set your API credentials as environment variables (or put them in a .env file that you don’t put under version control):

export ALPACA_API_KEY="your-api-key"
export ALPACA_SECRET_KEY="your-secret-key"

AlpacaFeed — Market Data

The AlpacaHistoricStockFeed fetches historical stock data from Alpaca’s API. It supports stocks with configurable bar sizes and timeframes.

Basic Usage

import os
from dotenv import load_dotenv

from datetime import datetime, timedelta
from roboquant.feeds.alpaca import AlpacaHistoricStockFeed, AlpacaHistoricCryptoFeed

load_dotenv()

api_key = os.environ["ALPACA_API_KEY"]
secret_key = os.environ["ALPACA_SECRET"]


# Fetch 1-minute bars for the last 5 trading days
feed = AlpacaHistoricStockFeed(api_key, secret_key)
feed.retrieve_bars("F", "TSLA", "JPM", start="2026-03-01", end="2026-03-02")
print(feed)

feed = AlpacaHistoricCryptoFeed(api_key, secret_key)
feed.retrieve_trades("BTC/USDT", start="2026-04-01", end="2026-04-10")
print(feed)
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
Cell In[1], line 9
      5 from roboquant.feeds.alpaca import AlpacaHistoricStockFeed, AlpacaHistoricCryptoFeed
      7 load_dotenv()
----> 9 api_key = os.environ["ALPACA_API_KEY"]
     10 secret_key = os.environ["ALPACA_SECRET"]
     13 # Fetch 1-minute bars for the last 5 trading days

File <frozen os>:685, in __getitem__(self, key)

KeyError: 'ALPACA_API_KEY'

AlpacaBroker — Live & Paper Trading

The AlpacaBroker allows you to execute orders against an Alpaca live or paper trading account. It can be used standalone or passed into run for live or paper trading execution.

from roboquant.brokers.alpaca import AlpacaBroker

broker = AlpacaBroker(
    api_key=api_key,
    secret_key=secret_key
)

account = broker.sync()
print(account)