{
  "ticker": "042700.KS",
  "ticker_name": "한미반도체",
  "status": "success",
  "trade_date": "2026-04-14",
  "analysis_date": "2026-04-16",
  "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는 HBM TC-bonder, HBM4/HBM5 장비 수요, 높은 수익성, ROE 34.764%, 순현금에 가까운 재무구조, current ratio 4.107, 반도체 섹터 모멘텀을 근거로 중기 비중확대 관점은 유지한다. 다만 오늘 즉시 추격 매수할 조건은 부족하다. 보수·중립 측이 지적한 것처럼 MACD histogram은 -854.79로 아직 음수이고, RSI 53.93은 중립권이며, 반등 거래량은 과거 6 million shares 이상 급증 구간 대비 약하다. 신규 진입은 290500 상향 종가 돌파가 최근 평균 이상 거래량과 MACD 개선을 동반하거나, 270000-276500 지지 확인과 섹터 모멘텀이 함께 유지될 때만 부분적으로 검토한다. 기존 보유자는 핵심 비중을 유지할 수 있지만, 확인 전 공격적 증액은 보류한다.\",\n  \"exit_logic\": \"042700.KS가 270000을 이탈하고 반등 거래량이 약하면 전술 비중을 먼저 줄인다. 259000-260000을 상승 거래량과 함께 하향 돌파하면 현재 반등 구조가 훼손된 것으로 보고 물질적으로 축소 또는 이탈한다. 250000-253500 방어 실패는 더 깊은 기대치 재조정 신호로 간주해 중기 논리를 재검토한다. IR 또는 실적에서 HBM 주문 가시성, 매출 전환, 마진 방어, 현금창출력이 약화되면 비중확대 판단을 낮춘다.\",\n  \"position_sizing\": \"신규 자금은 확인 전 투입하지 않는다. 조건 충족 시에도 beta 2.245와 ATR 약 18696 KRW를 반영해 정상보다 작은 부분 진입으로 시작한다. 돌파 진입은 290500 위에서 거래량과 후속 흐름이 확인될 때만 허용하고, 지지 진입은 270000-276500 방어가 확인될 때만 제한적으로 허용한다. 추가 매수는 돌파 후 안착, 지지 재확인, 또는 HBM 주문·마진 관련 구체적 증거가 나올 때 단계적으로 한다.\",\n  \"risk_limits\": \"레버리지는 사용하지 않는다. 일상 변동성 안의 촘촘한 손절은 피하되, 위험은 1 ATR 수준 또는 259000-260000 핵심 지지 구간을 기준으로 산정한다. forward PER 56.6-67x, 1.7973 trillion KRW 수준의 큰 공매도 잔고, 고베타, 집중된 HBM 서사 때문에 포트폴리오 내 총 노출은 제한한다. 290500 돌파 매수는 반드시 최근 평균 이상 거래량을 요구해 거짓 돌파 위험을 낮춘다.\",\n  \"catalysts\": [\n    \"042700.KS가 290500 위로 거래량 동반 종가 돌파하고 300000 및 312500-315000 구간으로 후속 흐름을 보이는 경우.\",\n    \"HBM TC-bonder, HBM4/HBM5 장비 수요와 관련한 주문 공시, IR 발언, 고객사 투자 가시성 강화.\",\n    \"SK Hynix, Samsung Electronics 및 AI/HBM 설비투자 기대가 이끄는 반도체 섹터 강세 지속.\",\n    \"큰 공매도 잔고가 가격 강세와 거래량 증가로 숏커버링 압력으로 전환되는 경우.\",\n    \"분기 실적에서 매출 재가속, 영업마진 회복력, construction-in-progress의 주문·매출 전환, 현금창출 지속이 확인되는 경우.\"\n  ],\n  \"invalidators\": [\n    \"042700.KS가 259000-260000을 상승 거래량과 함께 하향 돌파하는 경우.\",\n    \"HBM 고객사 capex, 주문 시점, 장비 채택 기대가 지연되거나 하향 조정되는 경우.\",\n    \"최근 매출이 166.2 billion KRW에서 83.0 billion KRW로 감소한 흐름이 일시적이지 않고, 영업이익 67.8 billion KRW에서 27.6 billion KRW로 낮아진 압박이 지속되는 경우.\",\n    \"고마진 구조나 ROE가 약화되어 높은 valuation을 정당화하기 어려워지는 경우.\",\n    \"외국인·기관 매도와 공매도 부담이 지속되는 가운데 286000-290500 저항에서 반복적으로 실패하는 경우.\"\n  ],\n  \"watchlist_triggers\": [\n    \"290500 위 종가 돌파, 최근 평균 이상 거래량, MACD histogram의 양전환 또는 뚜렷한 개선이 동시에 나타나는지 확인한다.\",\n    \"RSI가 60 이상으로 회복하고 가격이 VWMA 약 270018 및 10-day EMA 약 276423 위에서 유지되는지 확인한다.\",\n    \"270000-276500 지지 확인과 반도체 섹터 모멘텀 유지가 함께 나타나면 제한적 starter 가능성을 검토한다.\",\n    \"286000-290500 저항에서 저거래량 실패가 반복되면 270000 또는 259000 지지 테스트까지 대기한다.\",\n    \"OpenDART 또는 IR에서 HBM 주문, 마진, capacity utilization, 매출 전환에 관한 구체적 근거가 나오는지 확인한다.\"\n  ],\n  \"data_coverage\": {\n    \"company_news_count\": 4,\n    \"disclosures_count\": 2,\n    \"social_source\": \"news_derived\",\n    \"macro_items_count\": 0\n  }\n}",
  "started_at": "2026-04-16T02:47:33.731769+09:00",
  "finished_at": "2026-04-16T03:01:32.278948+09:00",
  "duration_seconds": 838.55,
  "metrics": {
    "llm_calls": 60,
    "tool_calls": 22,
    "tokens_in": 0,
    "tokens_out": 0,
    "tokens_available": false,
    "calls_by_model": {
      "gpt-5.4": 60
    }
  },
  "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_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_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": "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"
  }
}