{
  "ticker": "LLY",
  "ticker_name": "Eli Lilly",
  "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\": \"LLY의 중기 방향성은 우호적으로 유지한다. 공격적 분석은 Mounjaro와 Zepbound 수요, 영업이익률 44.90%, 순이익률 31.67%, 최근 분기 매출 19.292B와 순이익 6.638B, 선행 P/E 21.49, 애널리스트 목표가 1300을 근거로 구조적 성장주 조정 구간이라고 보았다. 다만 보수적·중립적 분석이 지적한 것처럼 현재 905.03은 200일선 902.67 바로 위에 있고, 10일 EMA 924.68, VWMA 925.86, 50일선 976.87을 모두 밑돌며 RSI 42.16과 MACD -13.75도 아직 추세 회복을 확인하지 못한다. 따라서 legacy rating은 OVERWEIGHT, 방향성은 BULLISH이나, 오늘의 즉시 실행은 WAIT이다. 902-905 종가 방어가 확인되고 거래량이 안정되면 아주 작은 starter는 정당화될 수 있으나, 기본 진입은 925-926 종가 회복 후가 더 적절하다. 955 돌파와 RSI 50 회복은 추가 매수 조건이고, 976-977 회복은 본격적인 중기 overweight 전환 신호다.\",\n  \"exit_logic\": \"전술 포지션은 902 아래 고거래량 종가가 나오면 신규 매수를 중단하고 축소한다. 877-878 이탈은 200일선 방어 실패와 3월 저점 및 하단 Bollinger 지지 훼손으로 보고 전술 노출을 철수한다. 중기 thesis는 Q1에서 GLP-1 수요 둔화, 마진 압박, 공급 확대의 sell-through 부진, 약한 가이던스, Foundayo 규제 조건 악화가 확인되면 하향 조정한다.\",\n  \"position_sizing\": \"확인 전에는 full overweight를 실행하지 않는다. ATR 27.64, 약 3% 일간 변동성을 감안해 902-905 방어가 반복될 때만 탐색적 starter를 매우 작게 허용하고, 925-926 회복 후 1차 비중을 늘린다. 955 돌파와 RSI 50 회복 전에는 제한적 비중을 유지하며, 976-977 회복 전에는 포트폴리오상 본격적인 overweight까지 확대하지 않는다. 1 ATR 변동이 강제 청산을 유발하지 않도록 손실 허용액 기준으로 역산해 sizing한다.\",\n  \"risk_limits\": \"925-926 회복 전 추격 매수는 금지한다. 902-905 부근은 ATR 27.64 때문에 흔들림이 큰 구간이므로 장중 이탈보다 종가와 거래량을 우선한다. 902 아래 고거래량 종가는 경고, 877-878 이탈은 전술 thesis 무효화로 본다. 가격이 VWMA 925.86 아래에 머물거나 하락일 거래량이 4,230,100처럼 확대되면 반등 신뢰도를 낮춘다. P/E 39.27, P/B 30.45, 순부채 35.235B, 부채비율 165.31, 낮은 자유현금흐름 254.2M은 기대 미달 실적 시 밸류에이션 압축 위험을 키우므로 과도한 선취 비중을 피한다.\",\n  \"catalysts\": [\n    \"Q1 결과에서 Mounjaro와 Zepbound 매출 가속, 마진 유지, EPS 성장 지속이 확인되는 경우\",\n    \"공급 확대, 재고 13.744B, 건설중인 자산 13.013B, capex가 실제 sell-through와 매출 포착 능력으로 연결된다는 경영진 설명\",\n    \"Foundayo 후속 자료나 FDA 소통에서 안전성, label, post-marketing 요구가 상업성을 훼손하지 않는다는 명확성\",\n    \"925-926 회복 후 955 돌파, RSI 50 회복, MACD 개선이 동반되는 기술적 회복\",\n    \"Centessa, CrossBridge Bio, AC Immune 관련 파이프라인 다각화가 GLP-1 의존도 완화와 장기 옵션으로 인정받는 경우\",\n    \"추가 애널리스트 목표가 상향 또는 추정치 상향이 GLP-1 수요와 마진 내구성을 반영하는 경우\"\n  ],\n  \"invalidators\": [\n    \"902 아래 고거래량 종가 후 200일선 902.67을 빠르게 회복하지 못하는 경우\",\n    \"877-878 이탈로 3월 저점과 하단 지지대가 동시에 훼손되는 경우\",\n    \"Q1에서 GLP-1 수요 둔화, margin compression, 약한 가이던스, 공급 확장의 sell-through 부진이 확인되는 경우\",\n    \"Foundayo에 대한 FDA 요구가 예상보다 제한적 label, 높은 비용, 상업화 지연을 의미하는 경우\",\n    \"자유현금흐름 254.2M 수준의 약세가 지속되는 가운데 capex -2.9704B, 배당 -1.3455B, 자사주 매입 -1.5077B, 순부채 35.235B 부담이 커지는 경우\",\n    \"10일 EMA 924.68과 VWMA 925.86 회복 시도가 반복적으로 실패하고 하락일 거래량이 확대되는 경우\"\n  ],\n  \"watchlist_triggers\": [\n    \"902-905 위에서 일간 종가 방어가 반복되고 거래량이 안정되는지 확인: 이 조건 충족 시 제한적 starter 검토\",\n    \"925-926 종가 회복: 10일 EMA 924.68과 VWMA 925.86 회복으로 1차 진입 조건 확인\",\n    \"RSI 50 회복과 MACD의 양호한 개선: 과매도 반등에서 추세 회복으로 전환되는지 확인\",\n    \"955 돌파: 200일선 방어 이후 반등 신뢰도 강화 및 추가 매수 검토\",\n    \"976-977 회복: 50일선 976.87 회복으로 중기 추세 복구와 본격 overweight 확대 검토\",\n    \"902 아래 고거래량 종가: 신규 매수 중단 및 877-878 지지 재시험 경보\"\n  ],\n  \"data_coverage\": {\n    \"company_news_count\": 5,\n    \"disclosures_count\": 0,\n    \"social_source\": \"news_derived\",\n    \"macro_items_count\": 3\n  }\n}",
  "started_at": "2026-04-17T03:06:06.169549+09:00",
  "finished_at": "2026-04-17T03:28:04.258685+09:00",
  "duration_seconds": 1318.09,
  "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_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_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_balance_sheet",
        "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_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"
  ],
  "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": "LLY",
      "attempted": true,
      "success": true,
      "checkpoint": "selective_rerun",
      "interval": "5m",
      "attempted_at": "2026-04-17T03:59:04.060167+09:00",
      "provider": "yfinance_intraday",
      "market_data_asof": "2026-04-16T14:55:00-04:00"
    },
    {
      "ticker": "LLY",
      "attempted": true,
      "success": true,
      "checkpoint": "03:35",
      "interval": "5m",
      "attempted_at": "2026-04-17T04:47:36.618392+09:00",
      "provider": "yfinance_intraday",
      "market_data_asof": "2026-04-16T15:45:00-04:00"
    }
  ],
  "latest_intraday_snapshot_attempt": {
    "ticker": "LLY",
    "attempted": true,
    "success": true,
    "checkpoint": "03:35",
    "interval": "5m",
    "attempted_at": "2026-04-17T04:47:36.618392+09:00",
    "provider": "yfinance_intraday",
    "market_data_asof": "2026-04-16T15:45:00-04:00"
  },
  "intraday_snapshot_latest_attempt": {
    "ticker": "LLY",
    "attempted": true,
    "success": true,
    "checkpoint": "03:35",
    "interval": "5m",
    "attempted_at": "2026-04-17T04:47:36.618392+09:00",
    "provider": "yfinance_intraday",
    "market_data_asof": "2026-04-16T15:45:00-04:00"
  }
}