Files
executor/README_API.md

288 lines
6.3 KiB
Markdown

# BAA 전략 API - 빠른 시작 가이드
## 📁 제공된 파일
### 실행 스크립트
1. **`baa_api_examples.sh`** - 전체 기능 테스트 스크립트
2. **`quick_baa_test.sh`** - 빠른 단일 포트폴리오 생성 스크립트
### 문서
3. **`BAA_CURL_EXAMPLES.md`** - 상세한 curl 명령어 예제 모음
4. **`API_USAGE_GUIDE.md`** - 완전한 API 사용 가이드
5. **`BAA_STRATEGY_README.md`** - BAA 전략 설명 및 이론
---
## 🚀 5분 안에 시작하기
### 1단계: 서버 실행
```bash
python manage.py runserver
```
### 2단계: 포트폴리오 생성
```bash
# 스크립트 실행 권한 부여 (최초 1회)
chmod +x quick_baa_test.sh
# BAA-G4 전략으로 $50,000 포트폴리오 생성
./quick_baa_test.sh
```
**출력 예시:**
```
====== 포트폴리오 요약 ======
기준일: 2025-10-04
모드: offensive
총 투자액: $49947.08
잔여 현금: $52.92
====== 포트폴리오 구성 ======
VEA: 818주 @ $61.06 = $49947.08
```
완료! 🎉
---
## 📋 주요 사용 사례
### 사례 1: 다양한 전략 비교
```bash
./quick_baa_test.sh BAA-G12 # 균형형
./quick_baa_test.sh BAA-G4 # 공격형
./quick_baa_test.sh BAA-SPY # 단순형
```
### 사례 2: 예산별 포트폴리오
```bash
./quick_baa_test.sh BAA-G4 25000 # $25,000
./quick_baa_test.sh BAA-G4 100000 # $100,000
./quick_baa_test.sh BAA-G4 250000 # $250,000
```
### 사례 3: 과거 날짜 기준 분석
```bash
./quick_baa_test.sh BAA-G12 100000 2024-01-31
./quick_baa_test.sh BAA-G12 100000 2024-06-30
./quick_baa_test.sh BAA-G12 100000 2024-09-30
```
---
## 🎯 전략 선택 가이드
| 전략 | 위험도 | 자산 수 | CAGR | Max DD | 추천 대상 |
|------|--------|---------|------|--------|-----------|
| **BAA-G12** | 중 | 12개, Top6 선택 | 14.6% | 8.7% | 균형 잡힌 포트폴리오 |
| **BAA-G4** | 고 | 4개, Top1 선택 | 21.0% | 14.6% | 높은 수익 추구 |
| **BAA-G12/T3** | 중상 | 12개, Top3 선택 | 16.4% | 11.4% | 적당한 분산 |
| **BAA-G4/T2** | 상 | 4개, Top2 선택 | 17.7% | 12.7% | 적당한 집중 |
| **BAA-SPY** | 중하 | 1개 (SPY) | 11.4% | 16.2% | 단순함 선호 |
---
## 🔧 고급 사용법
### curl 명령어로 직접 호출
```bash
# 1. 전략 실행
EXEC_ID=$(curl -s -X POST http://localhost:8000/api/strategies/execute/ \
-H "Content-Type: application/json" \
-d '{
"strategy_name": "BoldAssetAllocation",
"parameters": {
"initial_capital": 50000,
"variant": "BAA-G4",
"use_real_data": true
}
}' | jq -r '.execution_id')
# 2. 결과 조회
sleep 10
curl http://localhost:8000/api/executions/${EXEC_ID}/ | jq '.result'
```
### 모든 예제 한번에 실행
```bash
chmod +x baa_api_examples.sh
./baa_api_examples.sh
```
---
## 📚 더 알아보기
### 전략 이해하기
👉 **`BAA_STRATEGY_README.md`** 읽기
- BAA 전략의 원리와 메커니즘
- 모멘텀 계산 방식
- 카나리아 유니버스의 역할
### API 완전 가이드
👉 **`API_USAGE_GUIDE.md`** 읽기
- 모든 API 엔드포인트 설명
- 워크플로우 예시
- 트러블슈팅 가이드
### curl 명령어 레퍼런스
👉 **`BAA_CURL_EXAMPLES.md`** 읽기
- 다양한 curl 명령어 예제
- 응답 샘플
- 에러 처리 예시
---
## ❓ 자주 묻는 질문
### Q1: 어떤 전략을 선택해야 하나요?
**A:**
- 처음 시작: **BAA-G12** (균형형)
- 높은 수익 추구: **BAA-G4** (공격형)
- 단순함 선호: **BAA-SPY**
### Q2: 얼마나 자주 리밸런싱해야 하나요?
**A:** 월말 (마지막 거래일)에 리밸런싱을 권장합니다.
### Q3: 최소 투자 금액은?
**A:** 제한 없지만, $10,000 이상을 권장합니다 (적절한 분산을 위해).
### Q4: 실행 시간은 얼마나 걸리나요?
**A:**
- 시뮬레이션 모드: ~2초
- 실제 데이터 모드: ~5-15초 (데이터 다운로드 포함)
### Q5: 공격/방어 모드는 무엇인가요?
**A:**
- **공격 모드**: 시장이 좋을 때, 주식 중심 포트폴리오
- **방어 모드**: 시장 위험 감지 시, 채권 중심 포트폴리오
- 카나리아 자산(SPY, VWO, VEA, BND)의 모멘텀으로 자동 전환
---
## 🛠️ 의존성
### 필수
- Python 3.13+
- Django 5.2.7
- yfinance
- pandas, numpy
### 선택 (추천)
- `jq`: JSON 포맷팅을 위해 설치 권장
```bash
# macOS
brew install jq
# Ubuntu/Debian
sudo apt-get install jq
```
---
## 🎬 실행 예제 영상
### 1. 기본 실행
```bash
$ ./quick_baa_test.sh
==================================
BAA 전략 빠른 실행
==================================
변형: BAA-G4
초기 자본: $50000
기준일: null
전략 실행 중...
실행 ID: 1
데이터 다운로드 및 계산 중..........
✓ 실행 완료!
====== 포트폴리오 요약 ======
기준일: 2025-10-04
모드: offensive
총 투자액: $49947.08
잔여 현금: $52.92
====== 포트폴리오 구성 ======
VEA: 818주 @ $61.06 = $49947.08
```
### 2. 전략 비교
```bash
# 세 가지 전략 비교
for variant in BAA-G12 BAA-G4 BAA-SPY; do
echo "=== $variant ==="
./quick_baa_test.sh $variant 100000
sleep 2
done
```
---
## 📊 포트폴리오 예시
### 공격 모드 예시 (2025-10-04)
```json
{
"mode": "offensive",
"portfolio": [
{
"ticker": "VEA",
"weight": 100.0,
"shares": 818,
"current_price": 61.06,
"actual_amount": 49947.08
}
],
"canary_status": {
"SPY": {"momentum": 0.0854, "is_bad": false},
"VWO": {"momentum": 0.1015, "is_bad": false},
"VEA": {"momentum": 0.0863, "is_bad": false},
"BND": {"momentum": 0.0132, "is_bad": false}
}
}
```
### 방어 모드 예시 (2024-01-31)
```json
{
"mode": "defensive",
"portfolio": [
{"ticker": "DBC", "weight": 33.33, "shares": 1555},
{"ticker": "TLT", "weight": 33.33, "shares": 374},
{"ticker": "LQD", "weight": 33.33, "shares": 327}
],
"canary_status": {
"VWO": {"momentum": -0.0110, "is_bad": true}
}
}
```
---
## 🔗 관련 링크
- **전략 논문**: [SSRN 4166845](https://ssrn.com/abstract=4166845)
- **Django 공식 문서**: https://docs.djangoproject.com/
- **yfinance 문서**: https://github.com/ranaroussi/yfinance
---
## 📝 라이선스
교육 및 연구 목적으로만 사용하세요.
---
## 🆘 도움말
문제가 발생하면:
1. 서버가 실행 중인지 확인
2. `BAA_CURL_EXAMPLES.md`의 예제 참조
3. Django 서버 로그 확인
**Happy Trading! 📈**