{
  "ticker": "000660.KS",
  "ticker_name": "SK하이닉스",
  "status": "success",
  "trade_date": "2026-04-15",
  "analysis_date": "2026-04-16",
  "decision": "{\n  \"rating\": \"OVERWEIGHT\",\n  \"portfolio_stance\": \"BULLISH\",\n  \"entry_action\": \"WAIT\",\n  \"setup_quality\": \"DEVELOPING\",\n  \"confidence\": 0.74,\n  \"time_horizon\": \"medium\",\n  \"entry_logic\": \"000660.KS에 대한 중기 방향성은 긍정적으로 유지한다. 공격적 애널리스트가 지적한 2026-03-31 저점 807,000원에서 2026-04-14 종가 1,103,000원까지의 회복, 2026-02-26 고점권 1,099,000원 종가 돌파, MACD의 2026-04-07 -10,147.74에서 2026-04-14 29,769.78로의 급반전, RSI 62.49, 외국인 보유율 56.42% 보도, 2025-12 매출 32.8조원과 영업이익 19.2조원은 OVERWEIGHT를 정당화한다. 다만 보수적·중립 애널리스트가 강조한 것처럼 2026-04-16 보도상 종가 1,136,000원과 장중 1,173,000~1,175,000원 신고가 이후 단기 손익비는 늘어져 있고, ATR 약 65,221원 또는 종가 대비 약 5.9%의 변동성 때문에 오늘 즉시 추격 매수는 보류한다. 신규 진입은 1,030,000~1,040,000원 지지 재확인과 거래량 안정, 또는 1,100,000~1,136,000원 위 재안착과 건강한 거래량, 외국인 매수 지속, RSI 과열 완화 중 최소 일부가 확인될 때만 허용한다. 따라서 방향은 BULLISH, 즉시 실행은 WAIT이며, 조건 충족 시 제한적 starter는 정당화될 수 있다.\",\n  \"exit_logic\": \"전술적 초과분은 000660.KS가 1,030,000~1,040,000원 지지대를 이탈하고 빠르게 회복하지 못하면 축소한다. 10일 EMA 부근으로 제시된 약 993,000원을 결정적으로 하회하면 신규 진입 계획을 중단하고 전술적 포지션은 원칙적으로 정리한다. 중기 OVERWEIGHT 논리는 VWMA와 50일 SMA가 겹치는 934,000~935,000원 부근이 무너지거나, HBM·DRAM·NAND 가격 및 수요 가시성, 이익률, 고객 주문, 재고와 매출채권 지표가 현재의 고마진 기대를 훼손할 때 재검토한다. RSI가 70 이상으로 급등하면서 거래량 폭증에도 가격 전진이 둔화되면 신규 매수보다 일부 이익 보호를 우선한다.\",\n  \"position_sizing\": \"기존 보유자는 중기 핵심 보유분을 유지하되, 신고가 이후 전술적 초과분은 보호한다. 신규 자금은 정상 규모의 절반 이하로 제한하고, 1,030,000~1,040,000원 지지 확인 시 25~33% starter로 분할 진입한다. 돌파 추종은 1,100,000~1,136,000원 위에서 안정적 종가와 비과열 거래량이 확인될 때만 소규모로 시작한다. ATR 약 65,221원, 베타 1.751, 1,136,000원 부근에서 993,000원까지 약 13% 하락 여지를 감안해 명목 금액이 아니라 변동성 기준으로 위험 예산을 산정한다.\",\n  \"risk_limits\": \"단일 종목 위험은 변동성 기반으로 제한한다. 1,136,000원 부근에서 1,030,000~1,040,000원까지 약 8~9%, 993,000원까지 약 13%의 정상 조정 가능성을 전제로 포지션을 잡아야 한다. 외국인 수급이 집중 매수에서 순매도로 전환되거나, RSI 70 이상에서 거래량 소진형 상승이 나타나거나, ITC 특허·수출통제·지정학 리스크가 공급망과 고객 가정에 영향을 주면 즉시 재평가한다. 매출채권 증가, 운전자본 변화 -2.37조원, 설비투자 -12.25조원, 비경상 항목 -13.9조원은 이익의 질과 현금흐름 지속성을 확인해야 할 위험 지표로 계속 추적한다.\",\n  \"catalysts\": [\n    \"000660.KS가 1,100,000원 위에서 추가 종가 안착을 보이고 거래량이 과열이 아닌 건강한 형태로 유지되는 경우\",\n    \"HBM, DRAM, NAND 가격 강세와 AI 수요로 영업이익 전망이 추가 상향되는 경우\",\n    \"외국인 보유율이 56.42% 부근 또는 그 이상에서 유지되고 일별 순매수가 이어지는 경우\",\n    \"실적 발표나 IR에서 HBM 수요, 가격, 마진, 고객 가시성에 대한 긍정적 코멘터리가 확인되는 경우\",\n    \"ASML EUV 장비 반입과 신규 팹 램프가 고부가 제품 생산능력 확대와 연결되는 경우\"\n  ],\n  \"invalidators\": [\n    \"000660.KS가 1,030,000~1,040,000원 아래로 종가 이탈한 뒤 빠르게 회복하지 못하는 경우\",\n    \"10일 EMA 부근으로 제시된 약 993,000원을 결정적으로 하회하는 경우\",\n    \"VWMA와 50일 SMA 지지로 제시된 934,000~935,000원 부근을 이탈하는 경우\",\n    \"메모리 가격, HBM 수요, 고객 주문 데이터가 현재의 고마진 이익 기대를 뒷받침하지 못하는 경우\",\n    \"최근 삼성전자와 000660.KS에 집중됐던 외국인 순매수가 순매도로 전환되는 경우\",\n    \"ITC 특허, 수출통제, 지정학 이벤트가 공급망·고객·CAPEX 회수 가정을 훼손하는 경우\"\n  ],\n  \"watchlist_triggers\": [\n    \"1,030,000~1,040,000원 재시험 후 가격이 지지되고 거래량이 안정되면 25~33% starter 검토\",\n    \"1,100,000~1,136,000원 위에서 추가 종가 안착, 건강한 거래량, 외국인 매수 지속 중 복수 조건이 확인되면 제한적 모멘텀 진입 검토\",\n    \"RSI가 70에 접근하거나 70을 넘고 거래량 폭증 대비 가격 전진이 둔화되면 신규 매수 보류 및 일부 전술 물량 보호\",\n    \"가격이 1,100,000원 위에 머무는 동안 ATR과 일중 변동성이 축소되면 진입 품질 개선으로 판단\",\n    \"다음 실적, IR, 메모리 가격 지표, HBM 주문 코멘터리, 재고, 매출채권, CAPEX 가이던스 점검\",\n    \"외국인 보유율과 000660.KS 일별 순매수·순매도 집중도 추적\"\n  ],\n  \"data_coverage\": {\n    \"company_news_count\": 5,\n    \"disclosures_count\": 1,\n    \"social_source\": \"news_derived\",\n    \"macro_items_count\": 0\n  }\n}",
  "started_at": "2026-04-16T01:22:50.653500+09:00",
  "finished_at": "2026-04-16T01:34:52.628133+09:00",
  "duration_seconds": 721.97,
  "metrics": {
    "llm_calls": 59,
    "tool_calls": 22,
    "tokens_in": 0,
    "tokens_out": 0,
    "tokens_available": false,
    "calls_by_model": {
      "gpt-5.4": 59
    }
  },
  "tool_telemetry": {
    "total_tool_calls": 22,
    "vendor_calls": {
      "yfinance": 15,
      "naver": 3,
      "ecos": 1,
      "opendart": 1,
      "alpha_vantage": 2
    },
    "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_social_sentiment",
        "vendor": "naver",
        "status": "fallback",
        "fallback": true,
        "note": "naver: empty or unusable result"
      },
      {
        "method": "get_company_news",
        "vendor": "naver",
        "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": "ecos",
        "status": "fallback",
        "fallback": true,
        "note": "ecos: ECOS API key is not configured."
      },
      {
        "method": "get_disclosures",
        "vendor": "opendart",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_macro_news",
        "vendor": "alpha_vantage",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_company_news",
        "vendor": "naver",
        "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": "fallback",
        "fallback": true,
        "note": "yfinance: empty or unusable result"
      },
      {
        "method": "get_fundamentals",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_insider_transactions",
        "vendor": "alpha_vantage",
        "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"
  }
}