diff --git a/docs/plans/2026-02-22-sprint-plan.md b/docs/plans/2026-02-22-sprint-plan.md new file mode 100644 index 0000000..d05111c --- /dev/null +++ b/docs/plans/2026-02-22-sprint-plan.md @@ -0,0 +1,134 @@ +# Trading Bot — Sprint Plan + +## Sprint 1: Foundation +**Goal:** Working project skeleton with database, shared libraries, and infrastructure containers. + +**Acceptance Criteria:** +- [ ] `docker compose up -d postgres redis` boots healthy containers +- [ ] `python -m alembic upgrade head` applies all migrations cleanly +- [ ] `python -m pytest tests/` — all unit tests pass +- [ ] Shared libraries importable: `shared.config`, `shared.redis_streams`, `shared.telemetry`, `shared.models`, `shared.schemas`, `shared.db` + +**Deliverables:** +- `pyproject.toml` with all dependency groups +- `docker-compose.yml` with postgres+timescaledb, redis, ollama +- `.env.example`, `.gitignore` +- `shared/` package: config, redis_streams, telemetry, db +- `shared/models/` — all SQLAlchemy models (trading, news, learning, auth, timeseries) +- `shared/schemas/` — all Pydantic schemas +- `alembic/` — initial migration with hypertables +- Unit tests for redis_streams, models, schemas + +**Tasks (Plan Tasks 1-4):** +- Task 1: Python monorepo setup + shared utilities +- Task 2: Docker Compose infrastructure +- Task 3: Database models + Alembic migrations +- Task 4: Pydantic schemas + +--- + +## Sprint 2: Data Pipeline +**Goal:** News articles flow from RSS/Reddit through sentiment analysis into scored Redis stream. + +**Acceptance Criteria:** +- [ ] News fetcher polls RSS feeds and publishes `RawArticle` to `news:raw` stream +- [ ] Sentiment analyzer consumes `news:raw`, scores with FinBERT, publishes to `news:scored` +- [ ] Broker abstraction interface defined, Alpaca implementation can fetch account/positions +- [ ] All unit tests pass + +**Deliverables:** +- `shared/broker/` — abstract interface + Alpaca implementation +- `services/news-fetcher/` — RSS + Reddit sources +- `services/sentiment-analyzer/` — FinBERT + Ollama fallback + ticker extraction +- Unit tests for broker, news fetcher, sentiment analyzer + +**Tasks (Plan Tasks 5-7):** +- Task 5: Brokerage abstraction layer +- Task 6: News fetcher service +- Task 7: Sentiment analyzer service + +--- + +## Sprint 3: Trading Core +**Goal:** System generates trade signals from market data + sentiment and executes paper trades. + +**Acceptance Criteria:** +- [ ] 3 strategies (momentum, mean reversion, news-driven) produce correct signals for known inputs +- [ ] Signal generator combines strategies via weighted ensemble, publishes to `signals:generated` +- [ ] Trade executor applies risk checks, submits orders via broker, records trades in DB +- [ ] All unit tests pass + +**Deliverables:** +- `shared/strategies/` — base interface + 3 strategy implementations +- `services/signal-generator/` — market data consumer + weighted ensemble +- `services/trade-executor/` — risk manager + execution loop +- Unit tests for strategies, signal generator, trade executor + +**Tasks (Plan Tasks 8-10):** +- Task 8: Strategy implementations +- Task 9: Signal generator service +- Task 10: Trade executor service + +--- + +## Sprint 4: Intelligence +**Goal:** System learns from trade outcomes and can replay historical data for backtesting. + +**Acceptance Criteria:** +- [ ] Learning engine computes P&L, adjusts strategy weights respecting all guardrails +- [ ] Backtester replays historical data through same strategies, produces equity curves + metrics +- [ ] Weight adjustments logged in `learning_adjustments` table +- [ ] All unit tests pass + +**Deliverables:** +- `services/learning-engine/` — evaluator + weight adjuster +- `backtester/` — engine, simulated broker, data loader, metrics +- Unit tests for learning engine, backtester + +**Tasks (Plan Tasks 11-12):** +- Task 11: Learning engine service +- Task 12: Backtesting engine + +--- + +## Sprint 5: API & Dashboard +**Goal:** Web interface for monitoring and controlling the trading bot. + +**Acceptance Criteria:** +- [ ] Passkey registration and login works end-to-end +- [ ] All API endpoints return correct data (portfolio, trades, signals, strategies, news) +- [ ] Control endpoints pause/resume trading, force-close positions +- [ ] Dashboard renders all 5 views with real-time WebSocket updates +- [ ] All tests pass (backend + frontend) + +**Deliverables:** +- `services/api-gateway/` — FastAPI with passkey auth, all routes, WebSocket +- `dashboard/` — React app with auth, portfolio, trades, strategies, news, backtest views +- Unit tests for API routes, auth flow + +**Tasks (Plan Tasks 13-16):** +- Task 13: API Gateway — Auth +- Task 14: API Gateway — Trading endpoints +- Task 15: Dashboard — Setup & Auth +- Task 16: Dashboard — Trading views + +--- + +## Sprint 6: Integration & Deployment +**Goal:** Full system runs in Docker Compose, passes integration tests. + +**Acceptance Criteria:** +- [ ] `docker compose up` starts all services, all health checks pass +- [ ] Smoke test script passes (hits key endpoints, verifies responses) +- [ ] Integration tests pass (news pipeline end-to-end, trading flow end-to-end) +- [ ] Default strategies seeded in database + +**Deliverables:** +- `docker/` — Dockerfiles for all services +- Updated `docker-compose.yml` with all application services +- `scripts/smoke-test.sh`, `scripts/seed_strategies.py` +- `tests/integration/` — pipeline and trading flow tests + +**Tasks (Plan Tasks 17-18):** +- Task 17: Dockerfiles & full Docker Compose +- Task 18: Integration testing & seed data