Historical Auctions

The auctions module provides access to opening and closing auction data for stocks.

Overview

The auctions module allows you to retrieve:

  • Opening auction prices and volumes

  • Closing auction prices and volumes

  • Intraday returns between auctions

  • Daily aggregated auction data

Usage

Historical Auctions

from py_alpaca_api import PyAlpacaAPI

api = PyAlpacaAPI(
    api_key="your_api_key",
    api_secret="your_secret_key"
)

# Get auction data for a single symbol
auctions = api.stock.auctions.get_auctions(
    "AAPL",
    start="2024-01-01",
    end="2024-01-31"
)

# Returns a DataFrame with columns:
# - opening_price: Opening auction price
# - opening_volume: Opening auction volume
# - closing_price: Closing auction price
# - closing_volume: Closing auction volume
# - intraday_return: Return from opening to closing

Multiple Symbol Auctions

# Get auctions for multiple symbols
symbols = ["AAPL", "MSFT", "GOOGL"]
auctions = api.stock.auctions.get_auctions(
    symbols,
    start="2024-01-01",
    end="2024-01-31"
)

# Returns a dictionary mapping symbols to DataFrames
for symbol, df in auctions.items():
    print(f"{symbol}: {len(df)} auctions")
    print(f"Average intraday return: {df['intraday_return'].mean():.2f}%")

Daily Aggregated Auctions

# Get daily aggregated auction data
daily_auctions = api.stock.auctions.get_daily_auctions(
    "AAPL",
    start="2024-01-01",
    end="2024-01-31"
)

# Returns daily aggregated data with:
# - One row per trading day
# - Opening and closing prices for the day
# - Daily return calculation

Parameters

get_auctions()

  • symbols: Single symbol string or list of symbols

  • start: Start date in YYYY-MM-DD format

  • end: End date in YYYY-MM-DD format

  • limit: Maximum number of auctions per symbol (default: 10000)

  • asof: As-of date for corporate actions adjustments

  • feed: Data feed to use (“iex”, “sip”, or “otc”)

  • page_token: Pagination token from previous request

  • sort: Sort order (“asc” or “desc”)

get_daily_auctions()

  • symbols: Single symbol string or list of symbols

  • start: Start date in YYYY-MM-DD format

  • end: End date in YYYY-MM-DD format

  • feed: Data feed to use (“iex”, “sip”, or “otc”)

Features

Intraday Return Calculation

The module automatically calculates intraday returns:

# Analyze intraday returns
auctions = api.stock.auctions.get_auctions("AAPL", start="2024-01-01", end="2024-01-31")

print(f"Average intraday return: {auctions['intraday_return'].mean():.2f}%")
print(f"Max intraday return: {auctions['intraday_return'].max():.2f}%")
print(f"Min intraday return: {auctions['intraday_return'].min():.2f}%")

# Find days with large movements
large_moves = auctions[abs(auctions['intraday_return']) > 2]
print(f"Days with >2% intraday move: {len(large_moves)}")

Auction Volume Analysis

# Analyze auction volumes
auctions = api.stock.auctions.get_auctions("AAPL", start="2024-01-01", end="2024-01-31")

# Compare opening vs closing volumes
avg_opening_vol = auctions['opening_volume'].mean()
avg_closing_vol = auctions['closing_volume'].mean()

print(f"Average opening volume: {avg_opening_vol:,.0f}")
print(f"Average closing volume: {avg_closing_vol:,.0f}")
print(f"Closing/Opening ratio: {avg_closing_vol/avg_opening_vol:.2f}")

Daily Aggregation

# Get daily summary
daily = api.stock.auctions.get_daily_auctions(
    "AAPL",
    start="2024-01-01",
    end="2024-01-31"
)

# Analyze daily patterns
print(f"Average daily return: {daily['daily_return'].mean():.2f}%")
print(f"Volatility (std): {daily['daily_return'].std():.2f}%")

# Find trending days
up_days = daily[daily['daily_return'] > 0]
down_days = daily[daily['daily_return'] < 0]
print(f"Up days: {len(up_days)} ({len(up_days)/len(daily)*100:.1f}%)")
print(f"Down days: {len(down_days)} ({len(down_days)/len(daily)*100:.1f}%)")

Pagination

The module handles pagination automatically:

# Automatically handles pagination for large requests
auctions = api.stock.auctions.get_auctions(
    "AAPL",
    start="2023-01-01",
    end="2024-12-31",
    limit=50000  # Will paginate as needed
)

Error Handling

from py_alpaca_api.exceptions import ValidationError

try:
    auctions = api.stock.auctions.get_auctions(
        "AAPL",
        start="invalid-date",
        end="2024-01-01"
    )
except ValidationError as e:
    print(f"Validation error: {e}")