#!/bin/bash # BAA 전략 빠른 테스트 스크립트 # 사용법: ./quick_baa_test.sh [variant] [capital] [date] BASE_URL="http://localhost:8000/api" # 기본값 설정 VARIANT="${1:-BAA-G4}" CAPITAL="${2:-50000}" DATE="${3:-null}" echo "==================================" echo "BAA 전략 빠른 실행" echo "==================================" echo "변형: $VARIANT" echo "초기 자본: \$$CAPITAL" echo "기준일: $DATE" echo "" # 날짜 처리 if [ "$DATE" = "null" ]; then DATE_JSON="null" else DATE_JSON="\"$DATE\"" fi # 실제 데이터 모드로 실행 echo "전략 실행 중..." RESPONSE=$(curl -s -X POST "${BASE_URL}/strategies/execute/" \ -H "Content-Type: application/json" \ -d "{ \"strategy_name\": \"BoldAssetAllocation\", \"version\": \"1.0.0\", \"parameters\": { \"initial_capital\": $CAPITAL, \"variant\": \"$VARIANT\", \"use_real_data\": true, \"as_of_date\": $DATE_JSON } }") EXEC_ID=$(echo "$RESPONSE" | jq -r '.execution_id') if [ "$EXEC_ID" = "null" ] || [ -z "$EXEC_ID" ]; then echo "오류: 실행 실패" echo "$RESPONSE" | jq '.' exit 1 fi echo "실행 ID: $EXEC_ID" echo "" # 진행 상황 표시 echo -n "데이터 다운로드 및 계산 중" for i in {1..10}; do sleep 1 echo -n "." done echo "" echo "" # 결과 조회 echo "결과 조회 중..." RESULT=$(curl -s -X GET "${BASE_URL}/executions/${EXEC_ID}/") STATUS=$(echo "$RESULT" | jq -r '.status') if [ "$STATUS" = "completed" ]; then echo "✓ 실행 완료!" echo "" # 주요 정보 추출 MODE=$(echo "$RESULT" | jq -r '.result.mode') AS_OF_DATE=$(echo "$RESULT" | jq -r '.result.as_of_date') TOTAL_ALLOCATED=$(echo "$RESULT" | jq -r '.result.total_allocated') CASH_REMAINING=$(echo "$RESULT" | jq -r '.result.cash_remaining') CANARY_BAD=$(echo "$RESULT" | jq -r '.result.canary_bad_count') echo "====== 포트폴리오 요약 ======" echo "기준일: $AS_OF_DATE" echo "모드: $MODE" echo "카나리아 bad 개수: $CANARY_BAD" echo "총 투자액: \$$TOTAL_ALLOCATED" echo "잔여 현금: \$$CASH_REMAINING" echo "" echo "====== 포트폴리오 구성 ======" echo "$RESULT" | jq -r '.result.portfolio[] | "\(.ticker): \(.shares)주 @ $\(.current_price) = $\(.actual_amount)"' echo "" echo "====== 카나리아 상태 ======" echo "$RESULT" | jq -r '.result.canary_status | to_entries[] | "\(.key): 모멘텀=\(.value.momentum | .*100 | round/100)%, bad=\(.value.is_bad)"' echo "" # 전체 JSON 저장 FILENAME="baa_result_${EXEC_ID}_$(date +%Y%m%d_%H%M%S).json" echo "$RESULT" | jq '.' > "$FILENAME" echo "전체 결과가 $FILENAME 에 저장되었습니다." elif [ "$STATUS" = "failed" ]; then echo "✗ 실행 실패" ERROR=$(echo "$RESULT" | jq -r '.error_message') echo "오류: $ERROR" else echo "상태: $STATUS" echo "전체 응답:" echo "$RESULT" | jq '.' fi echo "" echo "==================================" echo "사용 예시:" echo " ./quick_baa_test.sh # BAA-G4, \$50,000, 현재 날짜" echo " ./quick_baa_test.sh BAA-G12 # BAA-G12, \$50,000, 현재 날짜" echo " ./quick_baa_test.sh BAA-G4 100000 # BAA-G4, \$100,000, 현재 날짜" echo " ./quick_baa_test.sh BAA-G12 75000 2024-01-31 # BAA-G12, \$75,000, 2024-01-31" echo "=================================="