Files
trading-bot/docs/manual-test
2026-08-11 20:23:59 +03:00
..
2026-08-11 20:23:59 +03:00

Manual Test Instructions

Alpaca Daily Fetcher

This test checks the Alpaca data fetcher and confirms it writes a symbol-named Parquet file.

The fetcher currently requests:

  • symbol: provided as a command line argument;
  • end date: provided with --end-date YYYYMMDD, defaulting to yesterday;
  • end date can also be derived with --end-date-from-parquet;
  • duration: provided with --duration, defaulting to 1 W;
  • bar size: 1 day;
  • data source: Alpaca stock bars through alpaca-py;
  • output: a Parquet file in data/alpaca/daily/.

Prerequisites

  1. Create or confirm Alpaca API credentials.
  2. Provide credentials through ALPACA_API_KEY and ALPACA_SECRET_KEY, a local .env, or CLI arguments.
  3. Sync Python dependencies:
mise exec -- uv sync

Run The Test

From the repository root, run:

mise exec -- uv run python src/trading_bot/data/fetch_alpaca_daily.py SPY

To fetch a specific Alpaca range, pass an end date and duration:

mise exec -- uv run python src/trading_bot/data/fetch_alpaca_daily.py SPY --end-date 20250605 --duration "1 M"

To fetch backward from the oldest date already stored in data/alpaca/daily/SPY.parquet:

mise exec -- uv run python src/trading_bot/data/fetch_alpaca_daily.py SPY --end-date-from-parquet

--end-date and --end-date-from-parquet cannot be used together. If the symbol Parquet file does not exist or has no rows, --end-date-from-parquet uses today's US/Eastern date.

Expected Output

The tool should first print the request range:

Fetching SPY daily candles ending 2025-06-05 for duration 1 M via Alpaca API

If the request succeeds, it should print how many candles were fetched and where the merged Parquet file was written:

Fetched 21 daily candles for SPY.
Wrote 21 total daily rows to data/alpaca/daily/SPY.parquet

Exact row counts depend on the requested date range and market calendar.

The tool should then write or update:

data/alpaca/daily/SPY.parquet

If the Parquet file already exists, rows from the latest fetch are merged into it. The trading date is used as the row key, so a symbol file keeps only one row for each date.

Common Issues

  • Missing credentials: set ALPACA_API_KEY and ALPACA_SECRET_KEY or pass them with CLI flags.
  • No historical bars: confirm the symbol, requested range, and Alpaca market data permissions.
  • Authentication or entitlement errors: confirm the keys belong to the intended Alpaca account and data plan.
  • Rate-limit errors: wait before retrying or reduce repeated requests.