{
  "ticker": "VXUS",
  "ticker_name": "Vanguard Total International Stock ETF",
  "status": "success",
  "trade_date": "2026-04-14",
  "analysis_date": "2026-04-15",
  "decision": "{\n  \"rating\": \"NO_TRADE\",\n  \"portfolio_stance\": \"BULLISH\",\n  \"entry_action\": \"WAIT\",\n  \"setup_quality\": \"DEVELOPING\",\n  \"confidence\": 0.66,\n  \"time_horizon\": \"medium\",\n  \"entry_logic\": \"VXUS의 방향성은 건설적이다. 공격 측과 중립 측이 지적한 것처럼 가격은 50일 단순이동평균선 79.73 위를 회복했고, 200일 단순이동평균선 74.14는 상승 중이며, MACD는 0.7515로 양전환했고 히스토그램도 0.8042로 개선되었다. 다만 보수 측과 중립 측의 우려처럼 74.63 부근에서 저점 형성 후 저 81달러대까지 빠르게 반등했고 ATR이 1.51까지 확대되어, 현 가격에서 즉시 추격 매수할 위험 보상이 충분하지 않다. 따라서 방향성은 BULLISH로 유지하되 즉시 진입은 WAIT이다. 우선순위가 높은 진입 조건은 80.10-79.73 구간으로의 통제된 되돌림 후 하루 이상 안정되는 모습이며, 81.89 상향 돌파는 단일 종가만으로는 부족하고 추가 종가 확인, 상대강도 유지, 변동성 안정이 동반될 때만 작은 선발 진입을 검토한다.\",\n  \"exit_logic\": \"기보유분은 VXUS가 79.73 위를 유지하고 77.98 VWMA 위험선 위에 있는 한 유지할 수 있다. 79.73 하회 종가는 신규 매수를 중단하고 전술 관점을 중립으로 낮추는 신호다. 77.98 하회 종가는 반등 실패로 간주해 전술 보유분을 축소하거나 청산한다. 82-84 저항 구간에서 RSI가 70에 접근하거나 초과하고 MACD 히스토그램이 둔화되면 추가 매수보다 이익 보호를 우선한다. 74.14 부근의 200일 단순이동평균선 상실 또는 ex-US 상대강도 훼손은 중기 강세 논리의 핵심 무효화 신호다.\",\n  \"position_sizing\": \"오늘 신규 전체 포지션은 열지 않는다. 조건이 충족될 경우에도 ATR 1.51 확대와 82-84 저항 근접성을 반영해 목표 배분의 20%-25% 선발 진입으로 제한한다. 80.10-79.73 지지 확인이 가장 선호되는 진입이며, 81.89 돌파형 진입은 추가 종가 확인과 상대강도 유지가 있을 때 더 작게 시작한다. 이후 VXUS가 79.73 위를 유지하고 모멘텀이 꺾이지 않을 때만 분할로 증액한다.\",\n  \"risk_limits\": \"전술 진입의 초기 위험은 진입가 기준 약 1 ATR 이내로 제한한다. 79.73 하회 종가는 신규 진입 중단 및 전술 중립 전환, 77.98 하회 종가는 반등 실패 및 전술 익스포저 축소 기준이다. 74.14는 신규 매수의 손절선으로 쓰기에는 너무 멀지만 중기 추세 훼손 여부를 판단하는 전략적 기준이다. RSI가 70 부근까지 상승한 상태로 82-84 저항에 진입하면 추격 매수를 금지한다.\",\n  \"catalysts\": [\n    \"미국 주식 집중 위험을 줄이고 국제 분산으로 이동하려는 자금 배분 흐름 지속\",\n    \"달러 약세가 비미국 주식의 USD 기준 수익률을 지지\",\n    \"VXUS가 80.10-79.73 지지 구간을 방어하며 변동성이 안정되는 모습\",\n    \"81.89 상향 종가 후 추가 종가 확인과 82-84 구간으로의 후속 흐름\",\n    \"국제 주식이 S&P 500 또는 VOO 대비 상대강도를 유지하거나 개선\"\n  ],\n  \"invalidators\": [\n    \"VXUS의 79.73 하회 종가로 단기 지지 회복이 실패하는 경우\",\n    \"77.98 VWMA 하회 종가로 고변동성 반등이 실패하는 경우\",\n    \"82-84 저항에서 실패하면서 MACD 히스토그램 둔화 또는 RSI 하락 반전이 나타나는 경우\",\n    \"달러 재강세로 비미국 주식의 USD 기준 수익률이 압박받는 경우\",\n    \"미국 대형 성장주 주도력이 재개되어 국제 주식 상대강도가 되돌려지는 경우\",\n    \"글로벌 위험회피, 지정학 충격, 지역 정책 스트레스가 비미국 주식 전반을 압박하는 경우\",\n    \"74.14 부근 200일 단순이동평균선 상실로 중기 상승 구조가 훼손되는 경우\"\n  ],\n  \"watchlist_triggers\": [\n    \"VXUS가 80.10-79.73으로 되돌린 뒤 개선된 폭 또는 거래 흐름과 함께 안정되는지 확인\",\n    \"81.89 위 종가 후 추가로 81.89 위를 유지하는지 확인\",\n    \"82-84 저항 접근 시 RSI가 70에 접근하거나 초과하는지 감시\",\n    \"79.73 하회 종가 발생 시 신규 매수 중단 및 전술 중립 전환\",\n    \"77.98 하회 종가 발생 시 반등 실패 및 전술 익스포저 축소\",\n    \"달러 지수 추세 반전 또는 미국 주식 상대강도 재개 여부 감시\",\n    \"ATR이 1.51 부근에서 안정 또는 하락하는지 확인\"\n  ],\n  \"data_coverage\": {\n    \"company_news_count\": 4,\n    \"disclosures_count\": 0,\n    \"social_source\": \"news_derived\",\n    \"macro_items_count\": 4\n  }\n}",
  "started_at": "2026-04-15T03:37:13.257114+09:00",
  "finished_at": "2026-04-15T03:49:32.536728+09:00",
  "duration_seconds": 739.28,
  "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_macro_news",
        "vendor": "alpha_vantage",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_company_news",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_income_statement",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_balance_sheet",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_cashflow",
        "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_fundamentals",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_insider_transactions",
        "vendor": "alpha_vantage",
        "status": "success",
        "fallback": false,
        "note": null
      }
    ]
  },
  "quality_flags": [
    "token_usage_unavailable"
  ],
  "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"
  }
}