Files
invest-copilot/tasks/phase2-backtest-integration/SPEC.md
T
gitea a16050c80a
CI / lint-and-build (push) Has been cancelled
CI / python-checks (3.12) (push) Has been cancelled
feat: multiple updates - alerts, auth, sectors, rotation service, financials ingestion, task specs, and agent framework
2026-06-06 22:01:40 -04:00

48 lines
1.9 KiB
Markdown

# Task: Wire Backtest Integration
## Current State
`src/backend/services/backtest_service.py` (16,798 bytes) exists with backtesting logic. `POST /api/v1/strategies/{id}/backtest` endpoint exists per README. However, the backtest engine is not connected to the data pipeline — it runs against whatever data happens to be in the DB, with no guarantee of freshness or completeness.
## Goal
Connect the backtest engine to the data pipeline so:
1. Backtests always run against a known-good, pipeline-fresh dataset
2. Backtest results are stored and queryable
3. Users can trigger backtests via the API and see results
## Requirements
1. Verify `backtest_service.py` reads from database correctly
2. Add backtest result storage model (SQLAlchemy)
3. Store backtest results: trades, metrics, equity curve
4. Add `GET /api/v1/backtests/{id}` endpoint to retrieve results
5. Add `GET /api/v1/backtests` endpoint to list past backtests
6. Ensure backtest runs after pipeline completes (dependency on pipeline task)
## Acceptance Criteria
- Backtest endpoint returns results with trades, metrics, equity curve
- Results persist in database and survive server restart
- Past backtests queryable via list endpoint
- Backtest uses data from the most recent pipeline run
- Frontend can display backtest results on strategy page
## Constraints
- Use TimescaleDB hypertables for equity curve time-series data
- Follow existing patterns — check `models/` for existing backtest model
- Keep under 200 lines per framework rule
- Read existing migrations before writing schema
## Files to Create/Modify
- `src/backend/models/` (check for existing backtest model, add if missing)
- `src/backend/services/backtest_service.py` (add result storage)
- `src/backend/routers/strategies.py` (add result endpoints)
- `src/backend/tasks/pipeline.py` (add backtest trigger option)
## Next Steps After This Task
Phase 2 complete. Move to Phase 5 (Sector Rotation) or Phase 7 (PWA).