How putra10/papertrad works
This is an LLM-driven Alpaca paper-trading bot: it checks the market session, assembles candidates and context, asks a model for decisions, executes paper orders, and records results for monitoring. Its main runtime is concentrated in paper_trader.py; the README documents additional dashboard and scheduled-session capabilities. Source excerpts are partial, so the graph omits uncertain internal wiring and treats the documented workflow as evidence for unsampled features.
Main entry points: paper_trader.py Session runner · trade_log.jsonl Trade event log · sync_dashboard.py Portfolio mirror sync · build_dashboard.py Dashboard generator
Components 19
Trading workflow
- Session runner
paper_trader.py - Market calendar
paper_trader.py - Candidate screening
paper_trader.py - Market data context
paper_trader.py - News context
paper_trader.py - Decision prompt
paper_trader.py - LLM decisions
paper_trader.py - Order planning
paper_trader.py - Paper order execution
paper_trader.py
External services
- Alpaca paper and market APIs
- OpenRouter
- Supabase account store
Trading records
- Trade event log
trade_log.jsonl - Buy-and-hold baseline state
baseline_state.json
Monitoring
- Dashboard generator
build_dashboard.py - Equity and portfolio dashboard
docs/index.html - Portfolio mirror sync
sync_dashboard.py
Other components
- Operator or scheduler
- Local dashboard accounts
Connections 30
- Operator or scheduler → Session runner: starts run
- Session runner → Market calendar: checks session
- Market calendar → Alpaca paper and market APIs: requests clock/calendar
- Session runner → Candidate screening: requests candidates
- Candidate screening → Alpaca paper and market APIs: screens stocks
- Session runner → Market data context: fetches tape and bars
- Market data context → Alpaca paper and market APIs: reads snapshots/bars
- Session runner → News context: fetches headlines
- News context → Alpaca paper and market APIs: reads news
- Session runner → Decision prompt: assembles context
- Market calendar → Decision prompt: provides day context
- Candidate screening → Decision prompt: provides candidates
- Market data context → Decision prompt: provides price history
- News context → Decision prompt: provides headlines
- Decision prompt → LLM decisions: supplies prompt
- LLM decisions → OpenRouter: requests completion
- LLM decisions → Order planning: returns decisions
- Session runner → Order planning: provides account/positions
- Order planning → Paper order execution: dispatches orders
- Paper order execution → Alpaca paper and market APIs: submits and checks fills
- Session runner → Trade event log: records decisions and snapshots
- Paper order execution → Trade event log: records fills
- Session runner → Buy-and-hold baseline state: reads/updates benchmark state
- Session runner → Dashboard generator: rebuilds dashboard
- Trade event log → Dashboard generator: provides events
- Dashboard generator → Equity and portfolio dashboard: writes page
- Session runner → Portfolio mirror sync: invokes optional sync
- Trade event log → Portfolio mirror sync: provides latest portfolio
- Portfolio mirror sync → Supabase account store: upserts account
- Portfolio mirror sync → Local dashboard accounts: writes account