Skip to content

Getting Started

Prerequisites

  • Python 3.12+
  • uv package manager

Installation

git clone <repo-url>
cd bo-finance
uv sync

Or with dev dependencies (for testing and docs):

make install-dev

Verify Installation

uv run bof --help

You should see the top-level command groups: account, portfolio, order, quote, market, watchlist, earnings, news, search, thesis, sec, review, db, and service.

Configuration

Copy .env.example to .env and fill in your API keys:

cp .env.example .env

Required Keys

Key Service How to get it
SNAPTRADE_CLIENT_ID SnapTrade (brokerage) Sign up at snaptrade.com
SNAPTRADE_CONSUMER_KEY SnapTrade Same as above
SNAPTRADE_USER_ID SnapTrade Same as above
SNAPTRADE_USER_SECRET SnapTrade Same as above
FINNHUB_API_KEY Finnhub (market data) Free at finnhub.io/register
FRED_API_KEY FRED (macro indicators) Free at fred.stlouisfed.org

Optional Keys

Key Service How to get it
TELEGRAM_BOT_TOKEN Telegram event source Create bot via @BotFather
BRAVE_API_KEY Brave Search (web research) Free at brave.com/search/api
SEC_USER_AGENT SEC EDGAR (filings) Set to "Your Name your@email.com" per SEC fair access policy

Validate Setup

uv run bof init

This checks all keys are present and validates connections to SnapTrade and FRED.

Watchlist

Watchlist tickers are stored in investments/watchlist.txt, one ticker per line.

Investment Theses

Per-symbol thesis files live in investments/theses/ as YAML. See CLI Reference for the schema and usage.

Data Sources

Source Provider What it provides API key
Market data Finnhub Quotes, index/sector performance, earnings calendar, news headlines FINNHUB_API_KEY
Brokerage SnapTrade Account balances, positions, order history SNAPTRADE_*
Macro FRED Fed funds rate, treasury yields, CPI, unemployment, jobless claims FRED_API_KEY
Web search Brave Search Recent news, analyst coverage, research per symbol BRAVE_API_KEY
SEC filings EDGAR 10-K, 10-Q, 8-K annual and quarterly reports SEC_USER_AGENT

Next Steps