47 lines
1.6 KiB
Markdown
47 lines
1.6 KiB
Markdown
# Task: Complete rotation signals and macro view
|
|
|
|
## Goal
|
|
Implement the rotation signal generation and macro view endpoints for the sector rotation service.
|
|
|
|
## Requirements
|
|
|
|
### 1. Signal generation in `services/rotation_service.py`
|
|
|
|
Implement `generate_signals(ranked_sectors)` method:
|
|
- For each sector, determine rotation signal based on:
|
|
- `rank_change > 0` → `"bullish"` (rising)
|
|
- `rank_change < 0` → `"bearish"` (falling)
|
|
- `rank_change == 0` → `"neutral"` (unchanged)
|
|
- Return list of signal dicts with sector info and signal type
|
|
- Filter out sectors with insufficient data
|
|
|
|
### 2. Macro view in `routers/rotation.py`
|
|
|
|
Add `GET /api/v1/rotation/macro` endpoint:
|
|
- Returns top 3 rising sectors and bottom 3 falling sectors
|
|
- Includes sector name, ticker, momentum, and signal
|
|
- Response model: `MacroRotationResponse` with `rising` and `falling` lists
|
|
|
|
### 3. Add response model
|
|
|
|
Add `MacroRotationResponse` schema in `schemas/rotation.py`:
|
|
- `rising: list[RisingSector]`
|
|
- `falling: list[FallingSector]`
|
|
- Each sector: `sector_name`, `sector_ticker`, `momentum`, `signal`
|
|
|
|
## Acceptance Criteria
|
|
1. `generate_signals()` correctly classifies sectors
|
|
2. `/api/v1/rotation/macro` endpoint returns correct data
|
|
3. Response model is properly typed
|
|
4. Tests pass for new endpoints
|
|
|
|
## Files to Modify
|
|
- `src/backend/services/rotation_service.py`
|
|
- `src/backend/routers/rotation.py`
|
|
- `src/backend/schemas/rotation.py`
|
|
|
|
## Files to Read First
|
|
- `src/backend/services/rotation_service.py` — current state
|
|
- `src/backend/routers/rotation.py` — existing rotation endpoints
|
|
- `src/backend/schemas/rotation.py` — existing schemas
|