{
  "ticker": "042700.KS",
  "ticker_name": "한미반도체",
  "status": "success",
  "trade_date": "2026-04-17",
  "analysis_date": "2026-04-17",
  "decision": "{\n  \"rating\": \"OVERWEIGHT\",\n  \"portfolio_stance\": \"BULLISH\",\n  \"entry_action\": \"WAIT\",\n  \"setup_quality\": \"DEVELOPING\",\n  \"confidence\": 0.66,\n  \"time_horizon\": \"medium\",\n  \"entry_logic\": \"042700.KS는 AI/HBM 및 TC 본더 대표 장비주로서 순이익률 37.11%, 영업이익률 33.28%, ROE 34.76%, 낮은 부채, 2762억 원대 현금, 유동비율 4.107이라는 질적 강점이 확인된다. 기술적으로도 2026-04-16 종가 292000원이 10일 EMA 282018.71, 50일선 262565.99, VWMA 272062.59, 200일선 153522.21 위에 있고, MACD가 2026-04-08 -69.33에서 2026-04-16 4710.77로 회복했으며 히스토그램도 852.16으로 양전환했다. 다만 보수·중립 분석가가 지적한 것처럼 Forward PE 55배, Beta 2.245, ATR 17450원 내외, 2025-12-31 분기 매출 급감, 공매도 잔고 1조7718억 원 및 시총 대비 6.72%, 특허 분쟁은 즉시 추격 매수를 제한한다. 따라서 중기 배분 관점은 조건부 OVERWEIGHT와 BULLISH를 유지하지만, 2026-04-17은 거래일이 아니어서 당일 확인이 없었고 2026-04-16 거래량도 전일 898476주 대비 458794주로 감소했으므로 즉시 진입은 WAIT이다. 신규 진입은 042700.KS가 296500원 위에서 종가를 형성하고 거래량이 최소 458794주를 넘으며 전일 대비 의미 있게 회복될 때, 또는 286000~280500원 눌림에서 가격과 수급이 안정되고 272000원 부근 VWMA를 훼손하지 않을 때만 정당화된다.\",\n  \"exit_logic\": \"신규 전술 포지션은 042700.KS가 280500원을 잃고 빠르게 회복하지 못하면 축소한다. 272000원 이탈은 회복 구조 약화 경고로 보고 비중을 낮추며, 50일선 262566원 부근 아래에서 지속 마감하면 중기 회복 논리가 훼손된 것으로 보고 전술 포지션 종료를 우선한다. 다음 실적에서 2025-12-31 매출 감소가 납품·검수·매출 인식 시점 문제가 아니라 구조적 주문 둔화로 확인되거나, 특허 분쟁이 납품 지연·비용 증가·고객 대체 검토로 번지면 기존 OVERWEIGHT 논리를 재평가한다.\",\n  \"position_sizing\": \"트리거 충족 전 신규 매수는 보류한다. 조건이 충족되면 정상 목표 비중의 30~40% 수준의 스타터만 허용하고, 305000원 이상에서 거래량 유지가 확인되거나 수주·실적·특허 관련 긍정 뉴스가 추가될 때 60~70%까지 단계적으로 확대한다. 042700.KS는 ATR이 약 17450원으로 종가 대비 약 6%이고 Beta가 2.245인 고변동성 종목이므로 초기부터 목표 비중 전량을 투입하지 않는다. 기존 보유자는 280500~272000원 지지 구간이 유지되는 동안 부분 보유가 가능하지만, 실적 재가속과 거래량 확인 전에는 집중 비중을 피한다.\",\n  \"risk_limits\": \"포지션 손실 한도는 하루 한 번의 ATR 수준 변동을 견딜 수 있도록 작게 설정한다. 전술 리스크 기준은 272000원 아래, 중기 리스크 기준은 50일선 262566원 아래에 둔다. 손절 폭을 지나치게 좁게 두면 정상 변동성에 흔들릴 수 있으므로, 손절선보다 비중 축소로 위험을 먼저 통제한다. Forward PE 55배 고평가, 공매도 잔고 1조7718억 원, 특허 분쟁, HBM 수주 흐름, 다음 분기 매출 인식, 매출채권·재고·건설중인자산 변화를 함께 감시한다.\",\n  \"catalysts\": [\n    \"042700.KS가 296500원 위에서 종가를 만들고 거래량이 458794주를 넘으며 전일 대비 의미 있게 회복하면 305000~317000원 재시험 가능성이 열린다.\",\n    \"HBM 또는 TC 본더 신규 수주, 고객사 설비투자 확인, AI/HBM 장비 수요 지속 증거가 나오면 고마진 성장주 프리미엄이 방어된다.\",\n    \"TC 본더 특허 분쟁에서 우호적 진행 또는 해결이 확인되면 기술 진입장벽과 고객 신뢰가 강화될 수 있다.\",\n    \"다음 분기 실적에서 매출이 재가속되고 매출총이익률과 영업이익률이 높은 수준으로 유지되면 2025-12-31 매출 감소가 일시적이었다는 해석이 강화된다.\",\n    \"긍정적 영업 뉴스가 공매도 잔고 1조7718억 원 및 시총 대비 6.72%의 반대 포지션을 압박하면 숏커버링 수급이 추가 상승 동력이 될 수 있다.\",\n    \"AI 반도체 및 HBM 테마형 자금과 ETF 수급이 재유입되면 대표주 프리미엄이 유지될 수 있다.\"\n  ],\n  \"invalidators\": [\n    \"042700.KS가 272000원 부근 VWMA를 하향 이탈하고 빠르게 회복하지 못하는 경우.\",\n    \"042700.KS가 50일선 262566원 부근 아래에서 지속 마감해 중기 회복 구조를 잃는 경우.\",\n    \"다음 실적에서 2025-12-31 매출 감소가 일시적 인식 문제가 아니라 구조적 주문 사이클 둔화로 확인되는 경우.\",\n    \"TC 본더 특허 분쟁이 비용 증가, 납품 지연, 고객사 대체 검토, 경쟁사 대체 가능성으로 이어지는 경우.\",\n    \"HBM/AI 반도체 테마가 약화되어 ETF 및 테마형 자금 유출이 발생하는 경우.\",\n    \"공매도 잔고 확대가 긍정 촉매 없이 지속되고 주가가 저항권에서 거래량 감소와 함께 밀리는 경우.\"\n  ],\n  \"watchlist_triggers\": [\n    \"042700.KS의 일간 종가가 296500원을 상회하고 거래량이 458794주를 넘는지 확인한다.\",\n    \"돌파 시 거래량이 단순 기준 충족을 넘어 전일 대비 의미 있게 증가하고 종가가 고가권에서 유지되는지 확인한다.\",\n    \"286000~280500원 눌림에서 지지가 유지되고 거래량 균형이 개선되는지 확인한다.\",\n    \"RSI가 60 위로 올라서고 MACD 히스토그램이 양수를 유지하는지 확인한다.\",\n    \"272000원 또는 262566원 이탈 시 BULLISH에서 NEUTRAL 또는 BEARISH로 하향 조정할지 재평가한다.\",\n    \"공매도 잔고, 주요주주 거래 계획, 기관 보유 변화, ETF 편입 수급 변화를 추적한다.\",\n    \"다음 공시 또는 실적 발표에서 수주잔고, TC 본더 수요, 매출채권, 재고, 건설중인자산, 설비 활용도가 개선되는지 확인한다.\"\n  ],\n  \"data_coverage\": {\n    \"company_news_count\": 3,\n    \"disclosures_count\": 6,\n    \"social_source\": \"news_derived\",\n    \"macro_items_count\": 0\n  }\n}",
  "started_at": "2026-04-17T09:37:19.426757+09:00",
  "finished_at": "2026-04-17T09:50:28.048403+09:00",
  "duration_seconds": 788.62,
  "metrics": {
    "llm_calls": 57,
    "tool_calls": 22,
    "tokens_in": 0,
    "tokens_out": 0,
    "tokens_available": false,
    "calls_by_model": {
      "gpt-5.4": 57
    }
  },
  "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_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": "success",
        "fallback": false,
        "note": null
      },
      {
        "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_income_statement",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_cashflow",
        "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": "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",
    "intraday_snapshot_missing_same_day"
  ],
  "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": "042700.KS",
      "attempted": true,
      "success": true,
      "checkpoint": "10:05",
      "interval": "5m",
      "attempted_at": "2026-04-17T10:40:35.144010+09:00",
      "provider": "yfinance_intraday",
      "market_data_asof": "2026-04-17T10:20:00+09:00"
    },
    {
      "ticker": "042700.KS",
      "attempted": true,
      "success": true,
      "checkpoint": "selective_rerun",
      "interval": "5m",
      "attempted_at": "2026-04-17T10:56:37.970802+09:00",
      "provider": "yfinance_intraday",
      "market_data_asof": "2026-04-17T10:35:00+09:00"
    },
    {
      "ticker": "042700.KS",
      "attempted": true,
      "success": true,
      "checkpoint": "12:35",
      "interval": "5m",
      "attempted_at": "2026-04-17T13:15:40.451312+09:00",
      "provider": "yfinance_intraday",
      "market_data_asof": "2026-04-17T12:55:00+09:00"
    }
  ],
  "latest_intraday_snapshot_attempt": {
    "ticker": "042700.KS",
    "attempted": true,
    "success": true,
    "checkpoint": "12:35",
    "interval": "5m",
    "attempted_at": "2026-04-17T13:15:40.451312+09:00",
    "provider": "yfinance_intraday",
    "market_data_asof": "2026-04-17T12:55:00+09:00"
  },
  "intraday_snapshot_latest_attempt": {
    "ticker": "042700.KS",
    "attempted": true,
    "success": true,
    "checkpoint": "12:35",
    "interval": "5m",
    "attempted_at": "2026-04-17T13:15:40.451312+09:00",
    "provider": "yfinance_intraday",
    "market_data_asof": "2026-04-17T12:55:00+09:00"
  }
}