# Trading Platform — TODO > Last updated: 2026-04-01 ## Current State - **268 tests passing**, lint clean - 6 microservices + CLI + shared library - 8 strategies, REST API, Prometheus/Grafana/Loki, CI/CD, multi-exchange, advanced risk --- ## Critical (기능 오류 — 즉시 수정 필요) ### 1. Strategy Engine 멀티 심볼 버그 - **파일:** `services/strategy-engine/src/strategy_engine/main.py:54-63` - **문제:** `for symbol in config.symbols:` 안에 `while True` 루프가 있어서 첫 번째 심볼만 처리 - **영향:** BTC/USDT, ETH/USDT, SOL/USDT 설정 시 BTC/USDT만 영원히 처리 - **수정:** `asyncio.create_task()`로 각 심볼 병렬 처리 ### 2. Portfolio Snapshot 첫 실행 지연 - **파일:** `services/portfolio-manager/src/portfolio_manager/main.py:48` - **문제:** `snapshot_loop()`이 `asyncio.sleep()` 먼저 실행 → 첫 스냅샷이 24시간 후 - **수정:** 스냅샷을 먼저 찍고 sleep, 또는 시작 시 즉시 한 번 실행 ### 3. .env.example 누락 필드 - **파일:** `.env.example` - **누락:** `RISK_TRAILING_STOP_PCT`, `RISK_MAX_OPEN_POSITIONS`, `RISK_VOLATILITY_LOOKBACK`, `RISK_VOLATILITY_SCALE` - **수정:** 4개 필드 추가 ### 4. API 서비스 헬스체크 없음 - **파일:** `docker-compose.yml` — api 서비스에 `healthcheck` 블록 없음 - **수정:** curl 기반 healthcheck 추가 ### 5. API 엔드포인트 에러 처리 없음 - **파일:** `services/api/src/trading_api/routers/*.py` - **문제:** DB 연결 실패 시 500 에러 + 스택 트레이스 노출 - **수정:** try/except + HTTPException으로 적절한 에러 응답 ### 6. Alembic 하드코딩된 DB 인증정보 - **파일:** `shared/alembic.ini:3` - **문제:** `postgresql+asyncpg://postgres:postgres@localhost:5432/trading` — docker-compose는 `trading:trading` 사용 - **수정:** `DATABASE_URL` 환경변수 우선 참조 (env.py에서 이미 처리하지만 alembic.ini 기본값 불일치) --- ## High Priority (Production 전) ### 7. Binance WebSocket 전용 문제 - **파일:** `services/data-collector/src/data_collector/binance_ws.py` - **문제:** `exchange_id` 설정은 있지만 WebSocket은 Binance 하드코딩 - **수정:** 거래소별 WebSocket 추상화 또는 ccxt pro의 watchOHLCV 사용 ### 8. Backtester Config 상속 오류 - **파일:** `services/backtester/src/backtester/config.py` - **문제:** `BacktestConfig(BaseSettings)` — 다른 서비스는 `Settings` 상속 - **수정:** `class BacktestConfig(Settings):`로 변경, 중복 `database_url` 제거 ### 9. CI에 Docker 빌드 테스트 없음 - **파일:** `scripts/ci.sh` - **문제:** pytest + ruff만 실행, Dockerfile 빌드 검증 없음 - **수정:** `docker compose build` 단계 추가 ### 10. Health Port 오프셋 문서화 - **파일:** 각 서비스 main.py - **문제:** `health_port + 0/1/2/3` 하드코딩, 변경 시 혼란 - **수정:** 각 서비스별 `HEALTH_PORT` 환경변수 또는 문서화 --- ## Medium Priority (안정화) ### 11. 테스트 미커버 모듈 - CLI 명령어 6개 (backtest, data, portfolio, strategy, trade, service) - API 라우터 3개 (portfolio, orders, strategies) - BinanceWebSocket 클래스 - 각 서비스 main.py 실행 루프 ### 12. Realized PnL 미추적 - **파일:** `services/portfolio-manager/src/portfolio_manager/main.py:32` - **문제:** `realized_pnl=Decimal("0")` 하드코딩 — 실현 손익 미계산 - **수정:** 매도 시 실현 PnL 누적 → 스냅샷에 반영 ### 13. Test Warning 수정 - **파일:** `shared/tests/test_db.py:315` - **문제:** `RuntimeWarning: coroutine was never awaited` - **수정:** `MagicMock()` → `AsyncMock()` ### 14. Order Executor last_id 추적 - **파일:** `services/order-executor/src/order_executor/main.py:92-96` - **문제:** `last_id`가 실제로 업데이트되지 않음 (항상 "$") - **영향:** 재시작 시 메시지 유실 가능 - **수정:** Redis consumer group 사용 또는 last_id 추적 --- ## Future Ideas (미계획) - WebSocket 기반 실시간 대시보드 - 백테스트 결과 시각화 (matplotlib/plotly) - OpenTelemetry 분산 추적 - 멀티 타임프레임 전략 - 머신러닝 시그널 필터 - 주문 유형 확장 (LIMIT, STOP_LIMIT, OCO) - Kubernetes 배포 - 알림 채널 확장 (Discord, Slack) - 백테스트 결과 DB 저장 및 비교 --- ## Estimated Effort | 카테고리 | 예상 작업량 | |----------|------------| | Critical (1-6) | 2-3시간 | | High (7-10) | 4-6시간 | | Medium (11-14) | 1-2주 | --- ## Quick Start ```bash cp .env.example .env # API 키 입력 pip install -e shared/ # 의존성 설치 make infra # Redis + PostgreSQL 시작 make migrate # DB 마이그레이션 make test # 268 tests 실행 make up # 서비스 시작 make e2e # E2E 테스트 curl localhost:8000/health # API 헬스체크 ```