Files
executor/README_API.md

6.3 KiB

BAA 전략 API - 빠른 시작 가이드

📁 제공된 파일

실행 스크립트

  1. baa_api_examples.sh - 전체 기능 테스트 스크립트
  2. quick_baa_test.sh - 빠른 단일 포트폴리오 생성 스크립트

문서

  1. BAA_CURL_EXAMPLES.md - 상세한 curl 명령어 예제 모음
  2. API_USAGE_GUIDE.md - 완전한 API 사용 가이드
  3. BAA_STRATEGY_README.md - BAA 전략 설명 및 이론

🚀 5분 안에 시작하기

1단계: 서버 실행

python manage.py runserver

2단계: 포트폴리오 생성

# 스크립트 실행 권한 부여 (최초 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: 다양한 전략 비교

./quick_baa_test.sh BAA-G12    # 균형형
./quick_baa_test.sh BAA-G4     # 공격형
./quick_baa_test.sh BAA-SPY    # 단순형

사례 2: 예산별 포트폴리오

./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: 과거 날짜 기준 분석

./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 명령어로 직접 호출

# 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'

모든 예제 한번에 실행

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 포맷팅을 위해 설치 권장
    # macOS
    brew install jq
    
    # Ubuntu/Debian
    sudo apt-get install jq
    

🎬 실행 예제 영상

1. 기본 실행

$ ./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. 전략 비교

# 세 가지 전략 비교
for variant in BAA-G12 BAA-G4 BAA-SPY; do
  echo "=== $variant ==="
  ./quick_baa_test.sh $variant 100000
  sleep 2
done

📊 포트폴리오 예시

공격 모드 예시 (2025-10-04)

{
  "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)

{
  "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}
  }
}

🔗 관련 링크


📝 라이선스

교육 및 연구 목적으로만 사용하세요.


🆘 도움말

문제가 발생하면:

  1. 서버가 실행 중인지 확인
  2. BAA_CURL_EXAMPLES.md의 예제 참조
  3. Django 서버 로그 확인

Happy Trading! 📈