@ -225,12 +225,23 @@ async def get_alpaca_price_data(
response_model = AlpacaMultiBarsResponse ,
summary = " Get intraday bars for multiple tickers via Alpaca (DB-backed) " ,
description = (
" Fetch intraday OHLCV bars for up to ~500 tickers. Results are stored in DB "
" so subsequent calls for the same period skip Alpaca. \n \n "
" Fetch intraday OHLCV bars for up to ~500 tickers via Alpaca IEX feed. "
" Results are stored in DB so subsequent calls for the same period skip Alpaca. \n \n "
" **⚠️ Alpaca IEX 피드 분봉 데이터 한계** \n \n "
" | 항목 | 내용 | \n "
" |------|------| \n "
" | 피드 | **IEX 피드** (무료 플랜 기본값) | \n "
" | 지연 | **실시간** (지연 없음) | \n "
" | 거래량 커버리지 | 미국 전체 시장의 약 **2~5 % ** (IEX 거래소 거래만 집계) | \n "
" | OHLCV 정확도 | SIP 대비 **거래량 대폭 낮게** 표시됨 (가격 레벨은 유사) | \n "
" | 당일 장 중 재요청 | max_date < end_dt 조건으로 **항상 Alpaca 재호출** | \n "
" | SIP 피드 사용 시 | 유료 구독 + `feed=sip` 파라미터 추가 필요 | \n "
" | 히스토리 한계 | 과거 데이터는 SIP 기준이므로 무료 플랜 접근 범위 제한 없음 | \n \n "
" **권장 용도**: 당일 실시간 분봉 조회, ORB 전략 (가격 레벨 기준), 실시간 장 중 모니터링 \n \n "
" **거래량 정확도가 중요하면** → 유료 Alpaca 플랜 + `feed=sip` 사용 \n \n "
" - `tickers`: comma-separated list, e.g. `AAPL,MSFT,BF-B` \n "
" - `interval`: `1m`, `5m`, `15m`, `30m`, `1h` (also accepts `5min`, `15min`, etc.) \n "
" - Ticker normalization: `BF-B` → `BF.B` handled automatically. \n "
" - During market hours, same-day requests always fetch from Alpaca (new bars forming). \n "
" - `interval`: `1m`, `5m`, `15m`, `30m`, `1h` (또는 `5min`, `15min` 등) \n "
" - DB 저장 후 재요청 시 Alpaca 미사용 \n "
" - Requires `ALPACA_API_KEY` / `ALPACA_SECRET_KEY`. "
) ,
)