{
  "ticker": "GOOGL",
  "ticker_name": "Alphabet Class A",
  "status": "success",
  "trade_date": "2026-04-16",
  "analysis_date": "2026-04-16",
  "decision": "{\n  \"rating\": \"OVERWEIGHT\",\n  \"portfolio_stance\": \"BULLISH\",\n  \"entry_action\": \"WAIT\",\n  \"setup_quality\": \"DEVELOPING\",\n  \"confidence\": 0.69,\n  \"time_horizon\": \"medium\",\n  \"entry_logic\": \"GOOGL의 중기 배분 관점은 OVERWEIGHT로 유지한다. 공격적 분석가는 2026-03-30 종가 273.50에서 2026-04-15 종가 337.12까지 약 23% 회복했고, 10일 EMA 317.19, 50일 SMA 307.67, 200일 SMA 270.60을 모두 상회하며 MACD가 -1.63에서 6.24로 전환됐다는 점을 근거로 추세 회복을 강조했다. 중립 분석가도 Gemini, Google Cloud, Cadence-Google 협업, 대형 AI 플랫폼 선호가 동시에 개선되고 있어 단순 과열로만 볼 수 없다고 판단했다. 다만 보수적 분석가가 지적한 RSI 71.34, ATR 8.51, 10일 EMA 대비 약 19.93달러 괴리, 규제와 실적 이벤트 위험 때문에 오늘 즉시 추격 매수는 보류한다. 신규 진입은 GOOGL이 337.48을 종가로 돌파하고 거래량이 최소 25M, 가능하면 30M에 근접하거나, 323.75-317.19 구간으로 통제된 되돌림 후 지지와 higher low가 확인될 때 starter만 허용한다.\",\n  \"exit_logic\": \"돌파 진입 후 337.48 돌파가 실패하고 323.75를 상승 거래량으로 이탈하면 전술 노출을 줄인다. 되돌림 진입은 317.19 부근 10일 EMA를 종가로 이탈한 뒤 빠르게 회복하지 못하면 종료한다. 307.67의 50일 SMA 이탈은 중기 회복 시나리오 훼손으로 보고 OVERWEIGHT를 재검토한다. 실적에서 검색 성장, Google Cloud 가속, AI 수익화, 영업이익률, 자유현금흐름이 AI capex 부담을 상쇄하지 못하거나, DOJ 또는 EU 조치가 Chrome, 검색 유통, 데이터 접근, 광고 경제성에 구조적 타격을 줄 경우 즉시 하향 조정한다.\",\n  \"position_sizing\": \"기존 보유자는 core exposure를 유지하되, 가격이 확장된 현재 구간에서 공격적 추가 매수는 피한다. 신규 자금은 돌파든 되돌림이든 정상 비중보다 작은 starter tranche로만 시작한다. 337.48 돌파와 25M 이상 거래량은 starter에는 충분하지만, 공격적 분석가가 주장한 즉시 의미 있는 전술 비중 확대는 보류한다. 342.05 위에서 유지되거나 337.48-330.90 재시험이 성공하면 두 번째 tranche를 검토하고, 실적에서 검색, Cloud, margin, 자유현금흐름, AI capex 효율이 확인될 때만 정상 비중으로 확대한다.\",\n  \"risk_limits\": \"단일 종목 위험은 modest로 제한한다. 돌파 진입 시 위험 기준은 330.90 아래 또는 1 ATR 하단에 가까운 328.61 부근으로 둔다. 되돌림 진입 시 위험 기준은 317.19 아래이며, 중기 계정은 307.67의 50일 SMA를 더 넓은 thesis stop으로 사용할 수 있다. 보수적 분석가가 지적한 갭다운과 규제 헤드라인 위험 때문에 기술적 손절만으로 충분하다고 보지 말고, DOJ, EU, OpenAI 광고 플랫폼화, 실적 관련 뉴스가 멀티플을 훼손하면 가격 수준과 별개로 노출을 축소한다.\",\n  \"catalysts\": [\n    \"337.48 종가 돌파와 25M 이상, 가능하면 30M에 가까운 거래량이 확인되면 상승 참여 신뢰도가 높아진다.\",\n    \"GOOGL은 10일 EMA 317.19, 50일 SMA 307.67, 200일 SMA 270.60을 모두 상회하고 MACD가 양수로 전환돼 추세 회복 근거가 있다.\",\n    \"Gemini macOS 앱, 정부 또는 방위 배포 논의, Google Cloud AI 통합 기대가 AI 재평가 서사를 지지한다.\",\n    \"Cadence-Google 칩 설계 협업과 자체 AI 인프라 진전은 장기 선택 가치를 높인다.\",\n    \"순이익률 32.8%, 영업이익률 31.6%, ROE 35.7%, 현금 및 단기투자 1,268억 달러는 높은 품질과 투자 여력을 뒷받침한다.\",\n    \"최근 분기 매출이 902억 달러, 964억 달러, 1,023억 달러, 1,138억 달러로 순차 증가했다는 공격적 분석가의 근거는 성장 지속성을 지지한다.\"\n  ],\n  \"invalidators\": [\n    \"317.19 아래 종가 이탈 후 10일 EMA를 빠르게 회복하지 못하는 경우.\",\n    \"307.67 아래 이탈로 50일 SMA와 중기 회복 구조가 훼손되는 경우.\",\n    \"337.48 돌파 실패 후 323.75를 상승 거래량으로 이탈하는 경우.\",\n    \"실적 또는 가이던스에서 검색, Google Cloud, AI monetization, 영업이익률, 자유현금흐름 중 핵심 항목이 기대를 충족하지 못하는 경우.\",\n    \"AI capex가 2025-12-31 분기 -278.51억 달러 수준으로 확대된 부담을 매출 가속이나 margin leverage가 상쇄하지 못하는 경우.\",\n    \"DOJ의 Chrome 관련 요구 또는 EU DMA 압박이 검색 유통, 데이터 접근, 광고 경제성에 예상보다 큰 구조적 영향을 주는 경우.\",\n    \"OpenAI 또는 다른 AI 검색 경쟁자가 광고 예산과 사용자 검색 습관에서 신뢰할 만한 침투를 보이는 경우.\"\n  ],\n  \"watchlist_triggers\": [\n    \"조건부 starter: GOOGL이 337.48을 종가로 돌파하고 거래량이 25M 이상, 신뢰도 개선은 30M 이상일 때.\",\n    \"돌파 후 확인: 342.05 위에서 유지되거나 337.48-330.90 구간 재시험이 성공하면 추가 tranche 검토.\",\n    \"선호 손익비 진입: 323.75-317.19 구간으로 통제된 되돌림이 나오고 지지와 higher low가 확인될 때 starter 검토.\",\n    \"위험 축소: 337.48 돌파 실패 후 323.75를 상승 거래량으로 이탈할 때.\",\n    \"중기 하향 재검토: 307.67의 50일 SMA를 이탈할 때.\",\n    \"실적 확인: 검색 성장, Google Cloud 가속, margin resilience, 자유현금흐름 안정성, AI capex 효율이 동시에 확인될 때 정상 비중 확대 검토.\",\n    \"뉴스 재평가: DOJ, EU, Chrome, 검색 유통, DMA, 광고 경제성 관련 헤드라인이 예상보다 더 악화되거나 완화될 때.\"\n  ],\n  \"data_coverage\": {\n    \"company_news_count\": 4,\n    \"disclosures_count\": 0,\n    \"social_source\": \"news_derived\",\n    \"macro_items_count\": 1\n  }\n}",
  "started_at": "2026-04-16T23:56:22.571215+09:00",
  "finished_at": "2026-04-17T00:09:21.499527+09:00",
  "duration_seconds": 778.93,
  "metrics": {
    "llm_calls": 62,
    "tool_calls": 18,
    "tokens_in": 0,
    "tokens_out": 0,
    "tokens_available": false,
    "calls_by_model": {
      "gpt-5.4": 62
    }
  },
  "tool_telemetry": {
    "total_tool_calls": 18,
    "vendor_calls": {
      "yfinance": 15,
      "alpha_vantage": 3
    },
    "fallback_count": 1,
    "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": "yfinance",
        "status": "fallback",
        "fallback": true,
        "note": "yfinance: empty or unusable result"
      },
      {
        "method": "get_company_news",
        "vendor": "alpha_vantage",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_macro_news",
        "vendor": "alpha_vantage",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_company_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
      }
    ],
    "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"
  },
  "intraday_snapshot_attempts": [
    {
      "ticker": "GOOGL",
      "attempted": true,
      "success": true,
      "checkpoint": "01:35",
      "interval": "5m",
      "attempted_at": "2026-04-17T02:51:25.676274+09:00",
      "provider": "yfinance_intraday",
      "market_data_asof": "2026-04-16T13:50:00-04:00"
    },
    {
      "ticker": "GOOGL",
      "attempted": true,
      "success": true,
      "checkpoint": "selective_rerun",
      "interval": "5m",
      "attempted_at": "2026-04-17T03:58:47.266241+09:00",
      "provider": "yfinance_intraday",
      "market_data_asof": "2026-04-16T14:55:00-04:00"
    },
    {
      "ticker": "GOOGL",
      "attempted": true,
      "success": true,
      "checkpoint": "05:05",
      "interval": "5m",
      "attempted_at": "2026-04-17T06:02:27.493203+09:00",
      "provider": "yfinance_intraday",
      "market_data_asof": "2026-04-16T15:55:00-04:00"
    }
  ],
  "latest_intraday_snapshot_attempt": {
    "ticker": "GOOGL",
    "attempted": true,
    "success": true,
    "checkpoint": "05:05",
    "interval": "5m",
    "attempted_at": "2026-04-17T06:02:27.493203+09:00",
    "provider": "yfinance_intraday",
    "market_data_asof": "2026-04-16T15:55:00-04:00"
  },
  "intraday_snapshot_latest_attempt": {
    "ticker": "GOOGL",
    "attempted": true,
    "success": true,
    "checkpoint": "05:05",
    "interval": "5m",
    "attempted_at": "2026-04-17T06:02:27.493203+09:00",
    "provider": "yfinance_intraday",
    "market_data_asof": "2026-04-16T15:55:00-04:00"
  }
}