{
  "ticker": "VXUS",
  "ticker_name": "Vanguard Total International Stock ETF",
  "status": "success",
  "trade_date": "2026-04-15",
  "analysis_date": "2026-04-15",
  "decision": "{\n  \"rating\": \"OVERWEIGHT\",\n  \"portfolio_stance\": \"BULLISH\",\n  \"entry_action\": \"WAIT\",\n  \"setup_quality\": \"DEVELOPING\",\n  \"confidence\": 0.68,\n  \"time_horizon\": \"medium\",\n  \"entry_logic\": \"VXUS의 중기 배분 관점은 비중확대가 타당하다. 공격적 분석가와 중립 분석가가 지적했듯 2026-03-20 종가 74.71에서 2026-04-14 종가 82.81까지 회복했고, 10일 지수이동평균 80.11, 50일 단순이동평균 79.73, 200일 단순이동평균 약 74.14를 모두 회복했다. MACD 0.76과 히스토그램 0.81도 회복 모멘텀을 뒷받침한다. 다만 보수적 분석가의 우려처럼 현재 가격은 82.90 돌파 기준과 84.11-84.28 저항대에 가까우며, RSI가 31.11에서 66.06까지 빠르게 상승했고 ATR 1.52로 변동성도 높다. 따라서 오늘 즉시 추격 매수하지 않고 WAIT한다. 선호 진입은 80.10-79.70 재시험 뒤 반등 확인이며, 대안으로는 VXUS가 82.90 위에서 평균 이상 거래량과 종가 안착을 보일 때 제한적 스타터를 허용한다.\",\n  \"exit_logic\": \"전술 진입 후 VXUS가 79.70 아래에서 종가 마감하고 MACD 히스토그램이 둔화되면 축소 또는 청산한다. 84.11-84.28 저항대 돌파 실패 뒤 10일 지수이동평균 아래로 되밀리면 신규 매수는 중단하고 보유 전술 물량을 재평가한다. 기존 중기 국제주식 배분은 80.10-79.70 지지대가 무너지고 달러 강세, 유가 상승, 금리 인하 기대 후퇴, 지정학 위험이 동시에 악화될 때 방어적으로 낮춘다.\",\n  \"position_sizing\": \"현재 저항에 근접해 있어 전체 전술 포지션을 즉시 시작하지 않는다. 80.10-79.70 부근에서 반등이 확인되면 의도한 전술 규모의 약 1/3에서 1/2 수준으로 시작한다. 82.90 돌파 매수는 보수적·중립적 분석가의 경고를 반영해 약 1/3 이하의 작은 스타터로 제한하고, 84.28 위 안착과 과열 없는 후속 흐름이 확인될 때만 단계적으로 추가한다. 포트폴리오 차원에서는 미국 대형주 편중을 낮추기 위한 VXUS 비중확대 유지가 가능하지만 신규 자금은 분할 집행한다.\",\n  \"risk_limits\": \"핵심 전술 위험 구간은 80.10-79.70이며, 79.70 하향 종가 마감은 방어 전환 신호다. ATR 1.52, 가격 대비 약 1.83%의 변동성을 고려해 확정 진입가 기준 1.0-1.5 ATR 아래의 변동성 기반 손절을 사용하되, 그만큼 포지션 크기를 줄인다. 84.11-84.28 저항대에서는 거래량 확인 없이 추격하지 않는다. 달러 강세, 유가 급등, 금리 인하 기대 후퇴, Iran 관련 지정학 위험은 VXUS의 USD 기준 수익률과 글로벌 위험 선호를 훼손할 수 있어 상시 점검한다.\",\n  \"catalysts\": [\n    \"VXUS가 82.90 위에서 평균 이상 거래량으로 종가 안착하고 후속 매수가 이어지는 경우\",\n    \"84.11-84.28 저항대를 과열 없는 흐름으로 돌파하고 유지하는 경우\",\n    \"달러 약세가 지속되어 비미국 주식의 USD 기준 수익률이 개선되는 경우\",\n    \"국제주식이 미국 대형주 지수 대비 상대 강세를 이어가는 경우\",\n    \"미국 대형주 편중 포트폴리오에서 광범위한 비미국 ETF로 재배분 수요가 유입되는 경우\",\n    \"3월 급락 이후 변동성이 안정되고 VXUS가 10일 및 50일 평균 위에서 유지되는 경우\"\n  ],\n  \"invalidators\": [\n    \"VXUS가 79.70 아래에서 종가 마감하고 MACD 히스토그램이 약화되는 경우\",\n    \"84.11-84.28 저항대에서 거절된 뒤 10일 지수이동평균 아래로 되밀리는 경우\",\n    \"달러 강세, 유가 상승, 금리 인하 기대 후퇴가 동시에 지속되는 경우\",\n    \"뉴스 흐름이 국제 분산과 상대 강세에서 글로벌 위험회피 또는 해외 성장 둔화로 바뀌는 경우\",\n    \"지정학 악화가 지역 순환매가 아니라 전반적 위험자산 매도로 이어지는 경우\",\n    \"RSI가 70 위로 과열되는데 거래량 확인이나 가격 안착이 동반되지 않는 경우\"\n  ],\n  \"watchlist_triggers\": [\n    \"스타터 검토: VXUS가 80.10-79.70을 재시험한 뒤 모멘텀이 안정되며 반등하는 경우\",\n    \"돌파 스타터 검토: VXUS가 82.90 위에서 평균 이상 거래량으로 종가 안착하고 다음 거래에서도 유지되는 경우\",\n    \"추가 검토: VXUS가 84.28 위를 유지하면서 RSI 과열과 MACD 둔화가 나타나지 않는 경우\",\n    \"위험 축소: VXUS가 79.70 아래에서 종가 마감하거나 MACD 히스토그램이 여러 거래일 둔화되는 경우\",\n    \"진입 지연: VXUS가 저항대 근처에서 RSI 70 이상으로 상승하지만 거래량 확인이 부족한 경우\",\n    \"거시 점검: 달러, 유가, 금리 기대, 지정학 뉴스가 VXUS에 우호적인 방향으로 바뀌는 경우\"\n  ],\n  \"data_coverage\": {\n    \"company_news_count\": 3,\n    \"disclosures_count\": 1,\n    \"social_source\": \"news_derived\",\n    \"macro_items_count\": 1\n  }\n}",
  "started_at": "2026-04-15T22:38:53.441228+09:00",
  "finished_at": "2026-04-15T22:52:05.433623+09:00",
  "duration_seconds": 791.99,
  "metrics": {
    "llm_calls": 59,
    "tool_calls": 24,
    "tokens_in": 0,
    "tokens_out": 0,
    "tokens_available": false,
    "calls_by_model": {
      "gpt-5.4": 59
    }
  },
  "tool_telemetry": {
    "total_tool_calls": 24,
    "vendor_calls": {
      "yfinance": 17,
      "naver": 3,
      "ecos": 1,
      "opendart": 1,
      "alpha_vantage": 2
    },
    "fallback_count": 7,
    "events": [
      {
        "method": "get_stock_data",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_indicators",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_indicators",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_indicators",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_indicators",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_indicators",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_indicators",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_indicators",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_indicators",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_social_sentiment",
        "vendor": "naver",
        "status": "fallback",
        "fallback": true,
        "note": "naver: empty or unusable result"
      },
      {
        "method": "get_company_news",
        "vendor": "naver",
        "status": "fallback",
        "fallback": true,
        "note": "naver: empty or unusable result"
      },
      {
        "method": "get_company_news",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_social_sentiment",
        "vendor": "yfinance",
        "status": "fallback",
        "fallback": true,
        "note": "yfinance: empty or unusable result"
      },
      {
        "method": "get_macro_news",
        "vendor": "ecos",
        "status": "fallback",
        "fallback": true,
        "note": "ecos: ECOS API key is not configured."
      },
      {
        "method": "get_disclosures",
        "vendor": "opendart",
        "status": "fallback",
        "fallback": true,
        "note": "opendart: empty or unusable result"
      },
      {
        "method": "get_company_news",
        "vendor": "naver",
        "status": "fallback",
        "fallback": true,
        "note": "naver: empty or unusable result"
      },
      {
        "method": "get_company_news",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_macro_news",
        "vendor": "alpha_vantage",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_income_statement",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_cashflow",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_balance_sheet",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_insider_transactions",
        "vendor": "yfinance",
        "status": "fallback",
        "fallback": true,
        "note": "yfinance: empty or unusable result"
      },
      {
        "method": "get_insider_transactions",
        "vendor": "alpha_vantage",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_fundamentals",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      }
    ],
    "called_tools": [],
    "intraday_snapshot_used": false
  },
  "quality_flags": [
    "token_usage_unavailable",
    "intraday_snapshot_missing_same_day"
  ],
  "report_writer": {
    "status": "success",
    "scope": "ticker",
    "provider": "codex",
    "model": "gpt-5.4"
  },
  "provider": "codex",
  "models": {
    "quick_model": "gpt-5.4",
    "deep_model": "gpt-5.4",
    "output_model": "gpt-5.4"
  }
}