{
  "ticker": "ORCL",
  "ticker_name": "Oracle",
  "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.62,\n  \"time_horizon\": \"short\",\n  \"entry_logic\": \"ORCL에 대한 방향성은 건설적이지만 오늘 즉시 진입할 근거는 부족하다. 공격적 분석가가 지적한 138.09에서 155.62까지의 급반등, 49,480,800 거래량, 10일 EMA 148.40·50일 SMA 149.87·VWMA 146.45 회복은 단기 수급 개선의 증거다. 그러나 보수적·중립적 분석가가 강조한 것처럼 160~163 저항이 바로 위에 있고, 2026-03-11에도 83,247,500 거래량을 동반한 162.55 반등 후 약화된 전례가 있으며, MACD는 -0.82로 아직 0선 아래다. 따라서 지금 155~163 구간 추격 매수는 하지 않는다. 148~150 조정에서 거래량이 진정되고 VWMA 146.45를 지키며 RSI가 50 위를 유지하면 소형 starter를 검토한다. 또는 163 위 종가, 평균 이상 거래량, MACD 0선 회복 또는 명확한 추가 개선이 확인되면 돌파형 starter를 허용한다.\",\n  \"exit_logic\": \"진입 후 148~150 이탈은 1차 경고로 보고 노출을 줄인다. 146.45 VWMA를 종가 기준으로 이탈하고 빠르게 회복하지 못하면 starter를 정리한다. 138~140 붕괴는 반등 시나리오의 완전한 무효화로 간주한다. 돌파 진입이 성사되면 171.16 부근에서 일부 이익을 실현한다. 가격이 200일 SMA 214.65보다 크게 낮고 장기 하락 구조가 아직 해소되지 않았으므로, 163 돌파만으로 장기 추세 전환을 확정하지 않는다.\",\n  \"position_sizing\": \"오늘은 무포지션을 유지한다. 조건이 충족될 경우에도 정상 규모가 아니라 관찰용 partial starter만 허용하며, 초기 노출은 일반 기준의 25% 이하로 제한한다. ATR 7.87, beta 1.597, 이벤트성 뉴스 반응, 총부채 153.117B, 순부채 96.15B, TTM 자유현금흐름 -22.298B를 감안해 추가 매수는 148~150 지지 재확인 또는 160~163 돌파 후 지지 확인이 있을 때만 단계적으로 실행한다.\",\n  \"risk_limits\": \"리스크는 단일 가격 손절이 아니라 구조 기준으로 관리한다. 148~150 하향 이탈은 경고, 146.45 VWMA 이탈과 미회복은 강제 축소, 138~140 붕괴는 전면 철수 기준이다. ATR 7.87 때문에 정상 변동성만으로 흔들릴 수 있으므로 종가, 거래량, VWMA 회복 여부를 함께 본다. 대규모 데이터센터 파이낸싱, AI 수요, 전력 계약, 실적 발표, 금리 기대 변화와 관련된 헤드라인 전후에는 과도한 포지션을 금지한다.\",\n  \"catalysts\": [\n    \"Bloom Energy 전력 공급 확대: 1.2GW 초기 규모와 최대 2.8GW 가능성은 AI 데이터센터 전력 병목 완화 기대를 만든다.\",\n    \"16000000000 및 약 14000000000 규모 데이터센터 파이낸싱이 수용 가능한 조건으로 확인되면 클라우드 인프라 확장 신뢰가 높아질 수 있다.\",\n    \"2026-02-28 분기 매출 17.19B와 약 32.8% 영업이익률이 유지되면서 AI 인프라 투자가 매출로 전환되는 증거가 나오면 재평가 여지가 있다.\",\n    \"기술주 위험선호 회복과 금리 인하 기대는 레버리지와 장기 성장 프로젝트에 대한 할인율 부담을 낮출 수 있다.\",\n    \"163 위 종가, 평균 이상 거래량, MACD 0선 회복이 동반되면 171.16까지의 단기 모멘텀 확장이 가능하다.\"\n  ],\n  \"invalidators\": [\n    \"146.45 VWMA 아래 종가 이후 148~150 회복 실패.\",\n    \"138~140 최근 저점 구간 붕괴.\",\n    \"AI 인프라 수요, 데이터센터 활용률, OpenAI 관련 수요 가정의 하향 수정.\",\n    \"이자비용이 892M에서 1.18B로 증가한 흐름이 이어지고, 금융 비용 또는 차환 부담이 예상보다 커지는 경우.\",\n    \"자본지출 -18.635B와 TTM 자유현금흐름 -22.298B가 클라우드 인프라 매출 성장 또는 자유현금흐름 회복으로 연결되지 않는 증거.\"\n  ],\n  \"watchlist_triggers\": [\n    \"ORCL이 148~150으로 조정된 뒤 거래량이 안정되고 VWMA 146.45를 훼손하지 않는지 확인.\",\n    \"ORCL이 163 위에서 종가를 형성하고 평균 이상 거래량과 MACD 0선 회복을 동반하는지 확인.\",\n    \"RSI가 급등 후 50 위를 유지하는지, 또는 60대에서 과열 후 급격히 꺾이는지 확인.\",\n    \"16000000000 및 약 14000000000 데이터센터 파이낸싱 보도의 조건, 금리, 만기, 주주 희석 가능성 확인.\",\n    \"다음 업데이트에서 capex 효율, 자유현금흐름 회복, 순부채 안정화, 클라우드 인프라 매출 전환 여부 확인.\",\n    \"171.16 접근 시 거래량과 모멘텀이 유지되는지, 아니면 단기 차익 실현이 필요한지 점검.\"\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-15T02:32:20.709602+09:00",
  "finished_at": "2026-04-15T02:45:56.387354+09:00",
  "duration_seconds": 815.68,
  "metrics": {
    "llm_calls": 55,
    "tool_calls": 21,
    "tokens_in": 0,
    "tokens_out": 0,
    "tokens_available": false,
    "calls_by_model": {
      "gpt-5.4": 55
    }
  },
  "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_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
      }
    ]
  },
  "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"
  }
}