{
  "ticker": "TSLA",
  "ticker_name": "Tesla",
  "status": "success",
  "trade_date": "2026-04-16",
  "analysis_date": "2026-04-17",
  "decision": "{\n  \"rating\": \"HOLD\",\n  \"portfolio_stance\": \"BULLISH\",\n  \"entry_action\": \"WAIT\",\n  \"setup_quality\": \"DEVELOPING\",\n  \"confidence\": 0.57,\n  \"time_horizon\": \"medium\",\n  \"entry_logic\": \"TSLA의 중기 방향성은 조건부로 우호적이지만 오늘 신규 매수는 보류한다. 공격적 분석가는 391.95까지의 회복, 2026-04-15 거래량 113,810,400, RSI 56.19, MACD 개선, 440.59억 달러 현금과 유동비율 2.164를 근거로 상방 선택가치를 강조했다. 중립 분석가도 하락 모멘텀 둔화와 강한 반등의 질은 인정했다. 다만 보수적 분석가가 지적한 398.33 볼린저 상단과 398.37 200 SMA의 저항 밀집, P/E 356.8배와 선행 P/E 140.3배, 매출·마진·FCF·재고 부담 때문에 398 아래에서는 추격하지 않는다. 작은 starter는 398 위 종가, 다음 세션 지지 확인, 거래량 질 개선이 함께 나타날 때만 정당화된다.\",\n  \"exit_logic\": \"기존 노출은 유지하되 398 돌파 실패 후 390 아래 종가가 나오면 일부 감축한다. 368 아래의 결정적 종가는 전술적 노출 종료 신호로 본다. 2026-04-22 업데이트가 수요 안정, 자동차 마진 회복, FCF 지속성, 완제품 재고 통제, 로보택시 일정, AI·반도체 실행력을 숫자와 일정으로 뒷받침하지 못하면 돌파가 있더라도 추격하지 않고 노출을 줄인다.\",\n  \"position_sizing\": \"기존 핵심 보유는 reduced-to-low-normal 범위로 유지한다. 신규 자금은 398 위 안착과 후속 지지 확인 전까지 투입하지 않는다. 확인 후 starter를 허용하더라도 ATR 15.36, 가격 대비 약 3.9% 변동성을 반영해 정상보다 작게 시작하고, 추가 확대는 398 지지 지속과 하락 거래량 감소가 확인될 때 단계적으로만 한다.\",\n  \"risk_limits\": \"390은 1차 감축선, 368은 전술적 무효화선으로 둔다. 2026-04-22 이벤트 전 레버리지는 금지한다. 단일 종목 손실은 사전 설정된 포트폴리오 위험 한도 안에 제한하고, 넓은 가격 변동을 버티기보다 작은 포지션과 단계적 감축으로 관리한다. 밸류에이션 압축, 고금리·위험회피 환경, 자동차 매출 둔화, 영업이익률 4.7%, 순이익률 4.0%, FCF 감소, 완제품 재고 48.49억 달러 증가는 즉시 재평가 사유다.\",\n  \"catalysts\": [\n    \"TSLA가 398 위에서 종가를 만들고 다음 세션에서도 398을 지지로 확인하며 거래량이 유지되는 경우.\",\n    \"2026-04-22 업데이트가 수요 안정, 마진 회복, FCF 지속성, 로보택시 일정, AI·반도체 투자 계획을 구체적 숫자와 일정으로 제시하는 경우.\",\n    \"RSI가 과매수권에 진입하지 않은 상태에서 MACD 개선이 이어지고, 상승일 거래량은 높고 하락일 거래량은 줄어드는 경우.\",\n    \"AI 인프라, Terafab, 반도체 채용, 자율주행 관련 뉴스가 자동차 마진 둔화보다 비자동차 선택가치를 더 설득력 있게 만드는 경우.\",\n    \"높아진 회의론과 TSLL 공매도 증가가 398 위 확인 돌파 이후 숏커버링 압력으로 전환되는 경우.\"\n  ],\n  \"invalidators\": [\n    \"398 저항 돌파 실패 후 390 아래 종가가 발생하는 경우.\",\n    \"368 아래로 결정적으로 이탈해 고거래량 반등의 근거가 사라지는 경우.\",\n    \"2026-04-22 업데이트가 로보택시, AI, 반도체 실행력에 대해 추상적 설명에 그치고 자동차 본업 지표도 약한 경우.\",\n    \"매출 감소, gross margin 및 operating margin 둔화, FCF 감소, 완제품 재고 증가가 추가로 확인되는 경우.\",\n    \"고밸류 성장주에 불리한 위험회피, 금리 상승, 에너지·인플레이션 충격이 확대되는 경우.\",\n    \"경쟁사의 저비용 EV·배터리 전략이 TSLA의 가격 경쟁과 마진 압박을 더 키우는 경우.\"\n  ],\n  \"watchlist_triggers\": [\n    \"TSLA가 398 위에서 종가를 형성하고 다음 세션에도 그 가격대를 지지하는지 확인한다.\",\n    \"390 근처 pullback에서 분산 매도가 아니라 안정화와 거래량 감소가 나타나는지 확인한다.\",\n    \"상승일 거래량이 유지되고 하락일 거래량이 줄어드는지 확인한다.\",\n    \"RSI가 과매수 전 단계에 머물고 MACD가 양전환 방향으로 계속 개선되는지 확인한다.\",\n    \"2026-04-22에서 로보택시 상용화, 자동차 마진, 수요, FCF, capex 필요액에 대한 구체적 수치와 일정이 제시되는지 확인한다.\",\n    \"398 돌파 후 400~407 구간에서 매물 소화가 되는지, 또는 false breakout으로 되밀리는지 확인한다.\"\n  ],\n  \"data_coverage\": {\n    \"company_news_count\": 5,\n    \"disclosures_count\": 0,\n    \"social_source\": \"news_derived\",\n    \"macro_items_count\": 1\n  }\n}",
  "started_at": "2026-04-17T20:22:21.396846+09:00",
  "finished_at": "2026-04-17T20:34:40.244337+09:00",
  "duration_seconds": 738.85,
  "metrics": {
    "llm_calls": 53,
    "tool_calls": 18,
    "tokens_in": 0,
    "tokens_out": 0,
    "tokens_available": false,
    "calls_by_model": {
      "gpt-5.4": 53
    }
  },
  "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_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_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": "TSLA",
      "attempted": true,
      "success": true,
      "checkpoint": "05:05",
      "interval": "5m",
      "attempted_at": "2026-04-17T21:04:04.460185+09:00",
      "provider": "yfinance_intraday",
      "market_data_asof": "2026-04-16T15:55:00-04:00"
    },
    {
      "ticker": "TSLA",
      "attempted": true,
      "success": true,
      "checkpoint": "selective_rerun",
      "interval": "5m",
      "attempted_at": "2026-04-17T22:26:13.711812+09:00",
      "provider": "yfinance_intraday",
      "market_data_asof": "2026-04-16T15:55:00-04:00"
    },
    {
      "ticker": "TSLA",
      "attempted": true,
      "success": true,
      "checkpoint": "03:35",
      "interval": "5m",
      "attempted_at": "2026-04-18T04:41:46.090222+09:00",
      "provider": "yfinance_intraday",
      "market_data_asof": "2026-04-17T15:40:00-04:00"
    }
  ],
  "latest_intraday_snapshot_attempt": {
    "ticker": "TSLA",
    "attempted": true,
    "success": true,
    "checkpoint": "03:35",
    "interval": "5m",
    "attempted_at": "2026-04-18T04:41:46.090222+09:00",
    "provider": "yfinance_intraday",
    "market_data_asof": "2026-04-17T15:40:00-04:00"
  },
  "intraday_snapshot_latest_attempt": {
    "ticker": "TSLA",
    "attempted": true,
    "success": true,
    "checkpoint": "03:35",
    "interval": "5m",
    "attempted_at": "2026-04-18T04:41:46.090222+09:00",
    "provider": "yfinance_intraday",
    "market_data_asof": "2026-04-17T15:40:00-04:00"
  }
}