[WATCH-02] ML: 예측 곡선 API 추가 (GET /predictions/{symbol})
작업 내용 (설계 의도)
변경 사항
기술적 모멘텀(선형회귀 기울기 + momentum_score 가중) 기반으로 단기 가격 방향 참고 시그널을 계산하는 build_prediction 함수와 /predictions/{symbol} 엔드포인트를 추가한다.
반환 구조: 최근 20일 실제 종가(historical) + 향후 5일 예측(predicted, upper/lower 밴드) + 주의 문구.
WATCH-01과 파일 충돌 없음(prediction.py 신규 파일).
다이어그램
처리 흐름
sequenceDiagram participant FE participant ML as ML :8000 participant TC as TossClient FE->>ML: GET /predictions/{symbol} ML->>TC: get_closes(symbol, 20) ML->>ML: build_prediction(closes, momentum_score) ML-->>FE: {historical, predicted, note}
클래스 의존
flowchart LR main.py --> prediction.py prediction.py --> indicators.py prediction.py --> momentum.py
테스트 케이스
build_prediction(closes=[...20개...], momentum_score=0.3)이 5일 예측 포인트를 반환한다predicted[0].price > closes[-1]이면 momentum_score > 0이다 (방향 일치)upper[d] > predicted[d].price > lower[d]가 모든 d에 대해 성립한다- closes가 5개 미만이면 ValueError를 발생시킨다
/predictions/{symbol}엔드포인트가 unknown symbol에 404를 반환한다- 토스 API 5xx 에 502를 반환한다
- 응답
note필드에 “투자 판단 근거로 사용하지 마십시오” 문구가 포함된다