{
  "ticker": "GOOGL",
  "ticker_name": "Alphabet Class A",
  "status": "success",
  "trade_date": "2026-04-16",
  "analysis_date": "2026-04-17",
  "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\": \"GOOGL에 대한 중기 배분 관점은 조건부로 긍정적이다. 공격적 분석가는 274.34에서 337.12까지의 강한 회복, 10 EMA 320.61·50 SMA 307.60·200 SMA 271.40 상회, MACD의 -1.63에서 7.47로의 빠른 전환, TTM 매출 402.8B·순이익 132.2B·순이익률 32.8%·최근 분기 영업현금흐름 52.4B·자유현금흐름 24.6B를 근거로 재평가 가능성을 강조했다. 그러나 보수적 및 중립적 분석이 지적한 RSI 70.19, ATR 8.29, 274.34에서 mid-330s까지의 빠른 반등, 31배 TTM PER, 실적 및 AI capex 가이던스 리스크를 감안하면 오늘 추격 진입은 정당화되지 않는다. 즉 방향성은 BULLISH이나 즉시 행동은 WAIT이다. 신규 또는 추가 진입은 317.24-321.31 지지 확인 및 10 EMA 320.61 회복, 또는 337.12를 거래량 증가와 함께 종가 기준 돌파할 때만 허용한다. 조건 충족 시에는 소규모 starter가 정당화될 수 있지만, 현재는 full-size 진입 구간이 아니다.\",\n  \"exit_logic\": \"진입 후 GOOGL이 10 EMA 320.61을 종가 기준으로 결정적으로 이탈하면 전술 포지션을 축소하거나 청산한다. 50 SMA 307.60 하향 이탈은 단순 변동성이 아니라 4월 반등 실패 가능성으로 보고 중기 OVERWEIGHT 관점을 재평가한다. Q1에서 광고, YouTube, Google Cloud 모멘텀이 둔화되고 동시에 capex 가이던스 상승, 감가상각 부담, 자유현금흐름 마진 압박이 확인되면 기술적 지지가 남아 있어도 bullish allocation view를 낮춘다. 반복적인 337.12 돌파 실패와 약한 거래량도 노출 축소 근거다.\",\n  \"position_sizing\": \"실적 전에는 정상 비중이 아니라 제한적이고 단계적인 비중만 사용한다. 317.24-321.31 지지 반등 또는 337.12 거래량 동반 돌파가 확인되면 정상 목표 비중의 일부로 시작하고, 가격이 해당 지지 또는 돌파 구간 위에서 유지되며 거래량이 확대될 때만 추가한다. Q1에서 광고, YouTube, Cloud 성장과 capex 효율성, Cloud 마진, 자유현금흐름 전환이 확인되면 다음 단계 증액을 검토한다. ATR 8.29를 감안해 너무 촘촘한 손절은 피하되, 320.61과 307.60은 리스크 축소 기준으로 엄격히 적용한다.\",\n  \"risk_limits\": \"단일 종목 리스크는 중간 이하로 제한한다. 보수적 분석이 지적한 31배 TTM PER, 약 25배 선행 PER, PBR 9.78, 최근 분기 capex -27.851B 및 전년 동기 -14.276B 대비 증가, 연간 AI 인프라 투자 기대 175-185B 범위는 좋은 회사라도 나쁜 진입 가격이 될 수 있는 위험을 만든다. 실적 전 full-size 노출은 피하고, 50 SMA 307.60 아래에서는 새 근본적 확인 없이 평균단가를 낮추지 않는다. AI 검색 신뢰도 15%, Nest 소송, 규제·반독점·소비자 신뢰 이슈는 핵심 검색 사용량, 광고 품질, 브랜드 신뢰에 영향을 줄 수 있으므로 이벤트 리스크로 관리한다.\",\n  \"catalysts\": [\n    \"Q1에서 광고, YouTube, Google Cloud 성장세가 유지되고 자유현금흐름 마진이 방어되는 경우\",\n    \"AI capex 가이던스가 매출 성장, Cloud 수요, 수익화 가능성과 연결되어 있고 감가상각 부담이 통제 가능하다는 점이 확인되는 경우\",\n    \"NiSource 전력 계약, NetApp 4년 Google Cloud 협력, Gray Media AI 스트리밍 배포와 유사한 기업·공공·주권 클라우드 수요 증거가 추가되는 경우\",\n    \"337.12를 거래량 증가와 함께 종가 기준 돌파하고 348.75 재시험 경로가 열리는 경우\",\n    \"RSI가 과열권에서 식는 동안 가격이 10 EMA 320.61 위를 유지하고 MACD histogram이 재가속하는 경우\",\n    \"금리 하락 또는 위험 선호 개선으로 고품질 초대형 성장주에 대한 수요가 회복되는 경우\"\n  ],\n  \"invalidators\": [\n    \"capex 가이던스가 매출 성장보다 빠르게 확대되고 마진 또는 자유현금흐름 압박이 뚜렷해지는 경우\",\n    \"Google Cloud 성장률, Cloud 마진, AI 수익화가 높아진 인프라 투자에도 실망스러운 경우\",\n    \"GOOGL이 320.61을 잃고 이어 307.60도 하향 이탈해 4월 반등 실패 신호를 보이는 경우\",\n    \"AI 검색 신뢰, 광고 품질, 핵심 검색 사용량, 브랜드 신뢰가 규제·소송·제품 신뢰 문제로 훼손되는 경우\",\n    \"337.12 위 돌파 시도가 반복적으로 약한 거래량에 실패하는 경우\",\n    \"Q1에서 광고 또는 YouTube 모멘텀이 둔화되고 capex 효율성에 대한 설명이 부족한 경우\"\n  ],\n  \"watchlist_triggers\": [\n    \"317.24-321.31 구간에서 매수세가 확인되고 가격이 10 EMA 320.61을 회복하거나 유지하는지\",\n    \"337.12 위 일간 종가와 최근 대비 거래량 증가가 동시에 나타나는지\",\n    \"348.75 이전 고점 재시험 과정에서 거래량과 MACD histogram이 동반 개선되는지\",\n    \"Q1 실적 발표에서 AI capex, 감가상각, Cloud 마진, 자유현금흐름 전환에 대한 경영진 설명이 명확한지\",\n    \"RSI 70.19 부근의 과열이 가격 붕괴 없이 완화되는지\",\n    \"연간 AI 인프라 투자 기대 175-185B 범위에 대한 업데이트가 투자 효율성 우려를 낮추는지\",\n    \"AI 검색 신뢰도, 규제, 반독점, Nest 관련 소비자 신뢰 이슈가 핵심 검색 또는 광고 사업에 영향을 주기 시작하는지\"\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-17T21:19:32.107793+09:00",
  "finished_at": "2026-04-17T21:31:13.896275+09:00",
  "duration_seconds": 701.79,
  "metrics": {
    "llm_calls": 57,
    "tool_calls": 18,
    "tokens_in": 0,
    "tokens_out": 0,
    "tokens_available": false,
    "calls_by_model": {
      "gpt-5.4": 57
    }
  },
  "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_company_news",
        "vendor": "alpha_vantage",
        "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": "alpha_vantage",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_company_news",
        "vendor": "alpha_vantage",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_insider_transactions",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_cashflow",
        "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_fundamentals",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      }
    ],
    "called_tools": [],
    "intraday_snapshot_used": false
  },
  "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"
  },
  "intraday_snapshot_attempts": [
    {
      "ticker": "GOOGL",
      "attempted": true,
      "success": true,
      "checkpoint": "selective_rerun",
      "interval": "5m",
      "attempted_at": "2026-04-17T22:25:04.291848+09:00",
      "provider": "yfinance_intraday",
      "market_data_asof": "2026-04-16T15:55:00-04:00"
    },
    {
      "ticker": "GOOGL",
      "attempted": true,
      "success": true,
      "checkpoint": "01:35",
      "interval": "5m",
      "attempted_at": "2026-04-18T02:25:58.556664+09:00",
      "provider": "yfinance_intraday",
      "market_data_asof": "2026-04-17T13:25:00-04:00"
    }
  ],
  "latest_intraday_snapshot_attempt": {
    "ticker": "GOOGL",
    "attempted": true,
    "success": true,
    "checkpoint": "01:35",
    "interval": "5m",
    "attempted_at": "2026-04-18T02:25:58.556664+09:00",
    "provider": "yfinance_intraday",
    "market_data_asof": "2026-04-17T13:25:00-04:00"
  },
  "intraday_snapshot_latest_attempt": {
    "ticker": "GOOGL",
    "attempted": true,
    "success": true,
    "checkpoint": "01:35",
    "interval": "5m",
    "attempted_at": "2026-04-18T02:25:58.556664+09:00",
    "provider": "yfinance_intraday",
    "market_data_asof": "2026-04-17T13:25:00-04:00"
  }
}