277 lines
5.8 KiB
Markdown
277 lines
5.8 KiB
Markdown
|
|
# 빠른 시작 가이드
|
||
|
|
|
||
|
|
## 🚀 로컬 개발 환경 설정
|
||
|
|
|
||
|
|
### 1. 환경 변수 설정
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# .env 파일 생성
|
||
|
|
cp .env.example .env
|
||
|
|
```
|
||
|
|
|
||
|
|
`.env` 파일 편집:
|
||
|
|
```env
|
||
|
|
POSTGRES_USER=pension_user
|
||
|
|
POSTGRES_PASSWORD=your_secure_password
|
||
|
|
POSTGRES_DB=pension_quant
|
||
|
|
SECRET_KEY=your-super-secret-key-min-32-chars-long
|
||
|
|
ENVIRONMENT=development
|
||
|
|
```
|
||
|
|
|
||
|
|
### 2. Docker 컨테이너 실행
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 모든 서비스 시작
|
||
|
|
docker-compose up -d
|
||
|
|
|
||
|
|
# 로그 확인
|
||
|
|
docker-compose logs -f
|
||
|
|
|
||
|
|
# 특정 서비스 로그 확인
|
||
|
|
docker-compose logs -f backend
|
||
|
|
```
|
||
|
|
|
||
|
|
### 3. 데이터베이스 초기화
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 데이터베이스 마이그레이션 실행
|
||
|
|
docker-compose exec backend alembic upgrade head
|
||
|
|
|
||
|
|
# TimescaleDB 확장 활성화 (수동으로 필요 시)
|
||
|
|
docker-compose exec postgres psql -U pension_user -d pension_quant -c "CREATE EXTENSION IF NOT EXISTS timescaledb;"
|
||
|
|
|
||
|
|
# price_data 테이블을 하이퍼테이블로 변환
|
||
|
|
docker-compose exec postgres psql -U pension_user -d pension_quant -c "SELECT create_hypertable('price_data', 'timestamp', if_not_exists => TRUE);"
|
||
|
|
```
|
||
|
|
|
||
|
|
### 4. 서비스 확인
|
||
|
|
|
||
|
|
모든 서비스가 정상적으로 실행되면 다음 URL에서 접근 가능합니다:
|
||
|
|
|
||
|
|
- **Backend API**: http://localhost:8000
|
||
|
|
- **API 문서 (Swagger)**: http://localhost:8000/docs
|
||
|
|
- **Frontend**: http://localhost:3000
|
||
|
|
- **Flower (Celery 모니터링)**: http://localhost:5555
|
||
|
|
- **PostgreSQL**: localhost:5432
|
||
|
|
|
||
|
|
헬스체크:
|
||
|
|
```bash
|
||
|
|
curl http://localhost:8000/health
|
||
|
|
```
|
||
|
|
|
||
|
|
응답:
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"status": "healthy",
|
||
|
|
"app_name": "Pension Quant Platform",
|
||
|
|
"environment": "development"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## 📊 백테스트 실행 예시
|
||
|
|
|
||
|
|
### API를 통한 백테스트 실행
|
||
|
|
|
||
|
|
```bash
|
||
|
|
curl -X POST "http://localhost:8000/api/v1/backtest/run" \
|
||
|
|
-H "Content-Type: application/json" \
|
||
|
|
-d '{
|
||
|
|
"name": "Multi-Factor 전략 백테스트",
|
||
|
|
"strategy_name": "multi_factor",
|
||
|
|
"start_date": "2020-01-01",
|
||
|
|
"end_date": "2023-12-31",
|
||
|
|
"initial_capital": 10000000,
|
||
|
|
"commission_rate": 0.0015,
|
||
|
|
"rebalance_frequency": "monthly",
|
||
|
|
"strategy_config": {
|
||
|
|
"count": 20,
|
||
|
|
"quality_weight": 0.3,
|
||
|
|
"value_weight": 0.3,
|
||
|
|
"momentum_weight": 0.4
|
||
|
|
}
|
||
|
|
}'
|
||
|
|
```
|
||
|
|
|
||
|
|
### 백테스트 결과 조회
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 백테스트 목록 조회
|
||
|
|
curl http://localhost:8000/api/v1/backtest/
|
||
|
|
|
||
|
|
# 특정 백테스트 조회 (ID는 위 실행 결과에서 반환됨)
|
||
|
|
curl http://localhost:8000/api/v1/backtest/{backtest_id}
|
||
|
|
```
|
||
|
|
|
||
|
|
### 사용 가능한 전략 목록 조회
|
||
|
|
|
||
|
|
```bash
|
||
|
|
curl http://localhost:8000/api/v1/backtest/strategies/list
|
||
|
|
```
|
||
|
|
|
||
|
|
응답:
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"strategies": [
|
||
|
|
{
|
||
|
|
"name": "multi_factor",
|
||
|
|
"description": "Multi-Factor Strategy (Quality + Value + Momentum)"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"name": "momentum",
|
||
|
|
"description": "Momentum Strategy (12M Return + K-Ratio)"
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## 🗄️ 데이터 마이그레이션 (MySQL → PostgreSQL)
|
||
|
|
|
||
|
|
기존 make-quant-py의 MySQL 데이터를 PostgreSQL로 마이그레이션:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 마이그레이션 스크립트 실행 (구현 예정)
|
||
|
|
docker-compose exec backend python scripts/migrate_mysql_to_postgres.py
|
||
|
|
```
|
||
|
|
|
||
|
|
## 🔧 개발 모드
|
||
|
|
|
||
|
|
### Backend만 로컬 실행
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd backend
|
||
|
|
|
||
|
|
# 가상환경 생성 및 활성화
|
||
|
|
python -m venv venv
|
||
|
|
source venv/bin/activate # Windows: venv\Scripts\activate
|
||
|
|
|
||
|
|
# 의존성 설치
|
||
|
|
pip install -r requirements.txt
|
||
|
|
|
||
|
|
# 환경 변수 설정 (PostgreSQL, Redis는 Docker로 실행 중)
|
||
|
|
export DATABASE_URL=postgresql://pension_user:pension_password@localhost:5432/pension_quant
|
||
|
|
export REDIS_URL=redis://localhost:6379/0
|
||
|
|
export CELERY_BROKER_URL=redis://localhost:6379/1
|
||
|
|
export SECRET_KEY=your-secret-key
|
||
|
|
|
||
|
|
# FastAPI 실행
|
||
|
|
uvicorn app.main:app --reload
|
||
|
|
```
|
||
|
|
|
||
|
|
### Frontend만 로컬 실행
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd frontend
|
||
|
|
|
||
|
|
# 의존성 설치
|
||
|
|
npm install
|
||
|
|
|
||
|
|
# 개발 서버 실행
|
||
|
|
npm start
|
||
|
|
```
|
||
|
|
|
||
|
|
### Celery 워커 로컬 실행
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd backend
|
||
|
|
|
||
|
|
# Worker
|
||
|
|
celery -A app.celery_worker worker --loglevel=info
|
||
|
|
|
||
|
|
# Beat (별도 터미널)
|
||
|
|
celery -A app.celery_worker beat --loglevel=info
|
||
|
|
|
||
|
|
# Flower (별도 터미널)
|
||
|
|
celery -A app.celery_worker flower
|
||
|
|
```
|
||
|
|
|
||
|
|
## 📈 데이터 수집
|
||
|
|
|
||
|
|
### 수동 데이터 수집 트리거
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# API를 통한 수집 트리거 (구현 예정)
|
||
|
|
curl -X POST http://localhost:8000/api/v1/data/collect/trigger
|
||
|
|
```
|
||
|
|
|
||
|
|
### Celery Beat 스케줄 확인
|
||
|
|
|
||
|
|
Flower UI (http://localhost:5555)에서 스케줄 확인 가능
|
||
|
|
|
||
|
|
## 🐛 문제 해결
|
||
|
|
|
||
|
|
### 컨테이너가 시작되지 않는 경우
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 모든 컨테이너 중지
|
||
|
|
docker-compose down
|
||
|
|
|
||
|
|
# 볼륨 포함 완전 삭제
|
||
|
|
docker-compose down -v
|
||
|
|
|
||
|
|
# 재시작
|
||
|
|
docker-compose up -d
|
||
|
|
```
|
||
|
|
|
||
|
|
### 데이터베이스 연결 오류
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# PostgreSQL 컨테이너 상태 확인
|
||
|
|
docker-compose ps postgres
|
||
|
|
|
||
|
|
# PostgreSQL 로그 확인
|
||
|
|
docker-compose logs postgres
|
||
|
|
|
||
|
|
# 수동 연결 테스트
|
||
|
|
docker-compose exec postgres psql -U pension_user -d pension_quant
|
||
|
|
```
|
||
|
|
|
||
|
|
### Backend 오류 확인
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Backend 로그 실시간 확인
|
||
|
|
docker-compose logs -f backend
|
||
|
|
|
||
|
|
# Backend 컨테이너 접속
|
||
|
|
docker-compose exec backend /bin/bash
|
||
|
|
|
||
|
|
# Python 패키지 확인
|
||
|
|
docker-compose exec backend pip list
|
||
|
|
```
|
||
|
|
|
||
|
|
## 🧪 테스트
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Backend 테스트
|
||
|
|
docker-compose exec backend pytest
|
||
|
|
|
||
|
|
# Coverage 포함
|
||
|
|
docker-compose exec backend pytest --cov=app --cov-report=html
|
||
|
|
```
|
||
|
|
|
||
|
|
## 📦 프로덕션 배포
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 프로덕션 모드로 빌드 및 실행
|
||
|
|
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
|
||
|
|
|
||
|
|
# 환경 변수는 반드시 프로덕션용으로 변경
|
||
|
|
# - SECRET_KEY: 강력한 랜덤 문자열
|
||
|
|
# - POSTGRES_PASSWORD: 강력한 비밀번호
|
||
|
|
# - CORS 설정 제한
|
||
|
|
```
|
||
|
|
|
||
|
|
## 📝 다음 단계
|
||
|
|
|
||
|
|
1. ✅ 백테스트 엔진 동작 확인
|
||
|
|
2. ⬜ 샘플 데이터 추가 (scripts/seed_data.py)
|
||
|
|
3. ⬜ 추가 전략 구현 (Magic Formula, Super Quality)
|
||
|
|
4. ⬜ Frontend UI 개발
|
||
|
|
5. ⬜ 리밸런싱 기능 구현
|
||
|
|
6. ⬜ Celery 데이터 수집 구현
|
||
|
|
|
||
|
|
## 🆘 도움말
|
||
|
|
|
||
|
|
- API 문서: http://localhost:8000/docs
|
||
|
|
- 이슈 리포트: GitHub Issues
|
||
|
|
- 문의: [프로젝트 관리자 이메일]
|