{
  "ticker": "GOOGL",
  "ticker_name": "Alphabet Class A",
  "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.68,\n  \"time_horizon\": \"medium\",\n  \"entry_logic\": \"GOOGL의 방향성은 우호적이다. 공격적 분석가는 2026-03-31 MACD -8.02에서 2026-04-14 +4.43으로 회복되고 히스토그램이 4.87까지 확대된 점, 가격이 10일 EMA 312.65, 50일 SMA 307.79, 200일 SMA 269.80 위에 있는 점을 근거로 반등이 단순한 기술적 반발 이상이라고 보았다. 다만 보수적·중립적 분석가가 지적한 것처럼 2026-03-26 저점 278.50 부근에서 저 320대까지 빠르게 상승했고 RSI가 69.33으로 과열권에 근접했으며, 2026-04-08 거래량 33.5백만 주 이후 18-19백만 주대로 줄어 가격 확인이 부족하다. 따라서 오늘 저 320대에서는 추격 매수하지 않는다. 선호 진입은 307-313 지지권으로 조정 후 313 부근을 회복·유지하고 MACD가 안정되며 분배성 거래량이 나타나지 않는 경우다. 대안 진입은 321-322 위 일간 종가와 최근 18-19백만 주를 뚜렷이 넘는 거래량 확장, 그리고 다음 거래일 즉시 이탈하지 않는 수급 확인이 동반될 때만 starter가 정당화된다.\",\n  \"exit_logic\": \"starter 진입 후 GOOGL이 313을 잃고 MACD 히스토그램이 약화되면 먼저 재평가한다. 50일 SMA 부근인 307 아래 일간 종가는 반등 실패 신호로 보고 감축 또는 청산한다. 307-313 지지권 이탈과 함께 거래량이 증가하면 방어보다 손실 제한을 우선한다. 또한 검색·광고 기술 경제성에 구조적 손상을 줄 수 있는 규제 결과, 2180억 USD 최대 손해배상 노출의 현실화 가능성 상승, AI 설비투자가 수익화와 잉여현금흐름보다 빠르게 악화되는 증거, YouTube 가격 인상 이후 유의미한 이탈 징후가 확인되면 포지션을 축소하거나 논리를 폐기한다.\",\n  \"position_sizing\": \"현재 가격에서는 신규 진입 없음. 기존 보유자는 핵심 비중은 유지하되 GOOGL이 이미 큰 포트폴리오 비중이면 320 위 전술 초과분은 일부 줄인다. 307-313 지지 확인 진입은 의도 비중의 약 1/3로 시작하고, 더 보수적인 계정은 1/4로 제한한다. 321-322 거래량 동반 돌파 진입은 가격이 더 확장된 경로이므로 1/3 이하 starter가 적절하다. 추가 매수는 321-322 돌파 후 성공적 재시험 또는 313 위 재안착이 확인될 때만 검토한다.\",\n  \"risk_limits\": \"ATR가 약 8.64로 가격의 약 2.7%이므로 정상 일중 변동 안에 너무 촘촘한 손절을 두지 않는다. 전술 리스크는 307 아래 일간 종가 또는 진입가 대비 1 ATR 초과 불리한 이탈을 기준으로 제한한다. 거래량 확인 또는 규제 불확실성 완화 전까지 총 GOOGL 노출은 정상 목표 비중보다 낮게 유지한다. 313 이탈과 MACD 약화는 조기 경고, 307 이탈은 명확한 실패선으로 구분한다.\",\n  \"catalysts\": [\n    \"YouTube Premium 미국 개인 요금이 13.99 USD에서 15.99 USD로 인상되고 가족 요금이 26.99 USD로 유지·확대되는 흐름이 이탈 없이 정착하면 구독 매출과 마진 서사를 강화할 수 있다\",\n    \"TPU, Broadcom, Marvell 관련 AI 인프라 뉴스는 GOOGL이 AI 비용을 단순 부담이 아니라 자체 스택과 플랫폼 레버리지로 전환할 수 있다는 공격적 분석가의 핵심 논리를 지지한다\",\n    \"Nasdaq 100 강세와 금리 인하 기대가 이어지면 대형 AI 플랫폼에 대한 위험 선호가 유지될 수 있다\",\n    \"독점 및 광고 기술 소송에서 완화, 합의, 지연, 또는 예상보다 낮은 구조적 제재가 확인되면 규제 할인 해소가 빠르게 나타날 수 있다\",\n    \"Cloud 성장, AI 수익화, 데이터센터 투자 효율이 설비투자 부담을 상쇄한다는 실적 코멘트가 나오면 중기 상승 논리가 강화된다\"\n  ],\n  \"invalidators\": [\n    \"GOOGL이 307-313 지지권을 잃고 특히 307 아래 일간 종가를 기록하는 경우\",\n    \"RSI 70 부근에서 거절된 뒤 MACD 히스토그램이 악화되고 가격이 313 아래로 밀리는 경우\",\n    \"2180억 USD 최대 손해배상 노출이나 독점·광고 기술 소송에서 구조적 처분, 대형 손해배상, 광고 사업 제한 가능성이 높아지는 경우\",\n    \"Meta 등 경쟁 플랫폼이 Google의 디지털 광고 점유율을 지속적으로 잠식한다는 증거가 확인되는 경우\",\n    \"AI 설비투자와 반도체 비용이 매출 전환보다 빠르게 증가해 잉여현금흐름이나 영업마진을 압박하는 경우\",\n    \"YouTube 가격 인상 이후 이탈률, 참여도 약화, 경쟁 서비스 이동이 뚜렷해지는 경우\"\n  ],\n  \"watchlist_triggers\": [\n    \"GOOGL이 307-313으로 조정된 뒤 313 부근을 회복·유지하고 MACD가 안정되며 분배성 거래량이 나타나지 않는지 확인\",\n    \"GOOGL이 321-322 위에서 일간 종가를 만들고 거래량이 최근 18-19백만 주 구간을 뚜렷하게 상회하는지 확인\",\n    \"돌파 다음 거래일에 321-322 아래로 즉시 되밀리지 않고 가격 수용이 이어지는지 확인\",\n    \"307 아래 종가 발생 시 반등 실패로 간주하고 신규 진입 논리를 중단\",\n    \"다음 실적에서 Cloud 성장, AI 수익화, 설비투자 강도, 영업마진 지속성에 대한 경영진 코멘트 확인\",\n    \"2180억 USD 잠재 손해배상 및 독점·광고 기술 관련 후속 법률 보도 확인\"\n  ],\n  \"data_coverage\": {\n    \"company_news_count\": 3,\n    \"disclosures_count\": 0,\n    \"social_source\": \"news_derived\",\n    \"macro_items_count\": 2\n  }\n}",
  "started_at": "2026-04-15T01:38:16.721459+09:00",
  "finished_at": "2026-04-15T01:52:12.515746+09:00",
  "duration_seconds": 835.79,
  "metrics": {
    "llm_calls": 57,
    "tool_calls": 21,
    "tokens_in": 0,
    "tokens_out": 0,
    "tokens_available": false,
    "calls_by_model": {
      "gpt-5.4": 57
    }
  },
  "tool_telemetry": {
    "total_tool_calls": 21,
    "vendor_calls": {
      "yfinance": 15,
      "naver": 3,
      "ecos": 1,
      "opendart": 1,
      "alpha_vantage": 1
    },
    "fallback_count": 4,
    "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_company_news",
        "vendor": "naver",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_social_sentiment",
        "vendor": "naver",
        "status": "fallback",
        "fallback": true,
        "note": "naver: empty or unusable result"
      },
      {
        "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": "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": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_fundamentals",
        "vendor": "yfinance",
        "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"
  }
}