1.9 KiB
1.9 KiB
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:
- Backtests always run against a known-good, pipeline-fresh dataset
- Backtest results are stored and queryable
- Users can trigger backtests via the API and see results
Requirements
- Verify
backtest_service.pyreads from database correctly - Add backtest result storage model (SQLAlchemy)
- Store backtest results: trades, metrics, equity curve
- Add
GET /api/v1/backtests/{id}endpoint to retrieve results - Add
GET /api/v1/backtestsendpoint to list past backtests - 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).