{
  "ticker": "095340.KQ",
  "ticker_name": "ISC",
  "status": "success",
  "trade_date": "2026-04-16",
  "analysis_date": "2026-04-17",
  "decision": "{\n  \"rating\": \"OVERWEIGHT\",\n  \"portfolio_stance\": \"BULLISH\",\n  \"entry_action\": \"WAIT\",\n  \"setup_quality\": \"DEVELOPING\",\n  \"confidence\": 0.62,\n  \"time_horizon\": \"medium\",\n  \"entry_logic\": \"095340.KS의 중기 투자 매력은 유지한다. 공격적 분석가가 지적한 2025-12-31 분기 매출 72,330,336,130원, 영업이익 21,973,617,700원, 약 30.4% 영업이익률, 현금 및 단기투자 343,884,830,860원 대비 총차입금 21,194,528,030원의 순현금 구조는 OVERWEIGHT를 정당화한다. 다만 보수적·중립 분석가가 공통으로 지적한 대로 2026-04-10 거래량 2,081,327주 급락 이후 현재 가격이 10일 EMA 약 237,000원과 VWMA 약 248,000원 아래에 있어 오늘 즉시 진입은 보류한다. 237,000원 종가 회복과 비분배성 거래량 확인 시 축소 starter가 가능하고, 216,500-211,000원 지지 확인과 매도 거래량 둔화가 나타날 때도 제한적 starter를 검토한다.\",\n  \"exit_logic\": \"기존 보유분은 205,000원 종가 이탈 시 축소 또는 청산한다. 이는 50일 SMA 약 204,934원 방어 실패로, 중립·보수 분석가가 지적한 평균회귀 및 중기 추세 훼손 위험이 커지는 구간이다. 또한 다음 실적에서 매출 성장 둔화, 영업이익률 하락, 매출채권 69,838,746,000원과 재고 25,011,166,030원의 추가 부담, 현금전환 악화, 재고평가손실 가능성이 확인되면 투자 논리를 재검토하고 위험을 줄인다.\",\n  \"position_sizing\": \"정상 목표 비중보다 작게 운용한다. ATR이 약 23,126원으로 현재가 대비 약 10%라는 보수·중립 분석가의 변동성 우려를 반영해 237,000원 회복 시 정상 의도 비중의 25-33% 수준 starter만 허용한다. 248,000원 회복과 수급 안정 확인 후에만 추가하고, 257,500원 회복과 거래량 개선이 동반될 때 ADD를 검토한다. 기존 보유자는 핵심 비중은 유지할 수 있으나 확인 전 추가 매수는 피한다.\",\n  \"risk_limits\": \"237,000원 아래에서는 지지 확인 없이 추격 매수하지 않는다. 248,000원은 최근 VWMA 공급대이자 대량거래 참여자의 매물 확인 구간으로 취급하고, 257,500원은 2026-04-10 급락 충격이 상당 부분 복구됐는지 판단하는 확인선으로 본다. 포트폴리오 손실은 205,000원 종가 이탈 시에도 감내 가능한 수준으로 제한하며, 216,500-211,000원 지지 매수는 일반 starter보다 더 작게 시작한다.\",\n  \"catalysts\": [\n    \"095340.KS가 237,000원 위로 종가 회복하고 거래량이 분배성 매도가 아니라 흡수 형태로 안정된다.\",\n    \"095340.KS가 248,000원 VWMA 공급대를 회복해 2026-04-10 이후 매물 부담이 줄었음을 확인한다.\",\n    \"095340.KS가 257,500원 위로 거래량을 동반해 회복하며 급락일 충격을 상당 부분 복구한다.\",\n    \"IR 또는 회사 커뮤니케이션에서 AI 반도체, 고성능 테스트 소켓, 고객 다변화, 고마진 제품 믹스 확대가 확인된다.\",\n    \"다음 분기 실적에서 강한 매출 성장, 높은 영업이익률, 건강한 영업현금흐름이 유지된다.\",\n    \"공매도 거래대금 214억 원과 기관 매도 압력이 완화되고 반도체 부품 업종 심리가 회복된다.\"\n  ],\n  \"invalidators\": [\n    \"095340.KS가 205,000원 아래로 종가 이탈해 50일 SMA 방어에 실패한다.\",\n    \"095340.KS가 237,000원 아래에 머무는 동안 업종 및 동종 종목이 회복해 상대 약세가 고착된다.\",\n    \"매출채권과 재고 증가가 현금전환 악화, 회수 지연, 재고평가손실로 연결된다.\",\n    \"다음 실적에서 매출 성장 둔화, 마진 피크아웃, 고객사 재고 조정, 수주 기대 미달이 확인된다.\",\n    \"대표이사 변경, 교환청구권 행사, 자기주식처분 정정 등 이벤트가 희석, 오버행, 지배구조 불확실성으로 재평가된다.\"\n  ],\n  \"watchlist_triggers\": [\n    \"237,000원 종가 회복: 거래량이 분배성 매도가 아니면 축소 starter를 검토한다.\",\n    \"248,000원 종가 회복: VWMA 공급 흡수 가능성이 높아져 setup_quality 상향을 검토한다.\",\n    \"257,500원 거래량 동반 회복: 2026-04-10 급락 복구 신호로 ADD를 검토한다.\",\n    \"216,500-211,000원 지지 확인과 매도 거래량 둔화: 205,000원 종가 손절을 전제로 매우 작은 starter를 검토한다.\",\n    \"205,000원 종가 이탈: 방어적 stance로 전환하고 기존 노출을 축소 또는 청산한다.\"\n  ],\n  \"data_coverage\": {\n    \"company_news_count\": 2,\n    \"disclosures_count\": 6,\n    \"social_source\": \"news_derived\",\n    \"macro_items_count\": 2\n  }\n}",
  "started_at": "2026-04-17T10:16:15.739298+09:00",
  "finished_at": "2026-04-17T10:28:59.352287+09:00",
  "duration_seconds": 763.61,
  "metrics": {
    "llm_calls": 51,
    "tool_calls": 22,
    "tokens_in": 0,
    "tokens_out": 0,
    "tokens_available": false,
    "calls_by_model": {
      "gpt-5.4": 51
    }
  },
  "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_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"
  ],
  "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": "095340.KQ",
      "attempted": true,
      "success": true,
      "checkpoint": "10:05",
      "interval": "5m",
      "attempted_at": "2026-04-17T10:40:57.210794+09:00",
      "provider": "yfinance_intraday",
      "market_data_asof": "2026-04-17T10:20:00+09:00"
    },
    {
      "ticker": "095340.KQ",
      "attempted": true,
      "success": true,
      "checkpoint": "selective_rerun",
      "interval": "5m",
      "attempted_at": "2026-04-17T10:56:58.591974+09:00",
      "provider": "yfinance_intraday",
      "market_data_asof": "2026-04-17T10:35:00+09:00"
    },
    {
      "ticker": "095340.KQ",
      "attempted": true,
      "success": true,
      "checkpoint": "12:35",
      "interval": "5m",
      "attempted_at": "2026-04-17T13:16:09.748409+09:00",
      "provider": "yfinance_intraday",
      "market_data_asof": "2026-04-17T12:55:00+09:00"
    }
  ],
  "latest_intraday_snapshot_attempt": {
    "ticker": "095340.KQ",
    "attempted": true,
    "success": true,
    "checkpoint": "12:35",
    "interval": "5m",
    "attempted_at": "2026-04-17T13:16:09.748409+09:00",
    "provider": "yfinance_intraday",
    "market_data_asof": "2026-04-17T12:55:00+09:00"
  },
  "intraday_snapshot_latest_attempt": {
    "ticker": "095340.KQ",
    "attempted": true,
    "success": true,
    "checkpoint": "12:35",
    "interval": "5m",
    "attempted_at": "2026-04-17T13:16:09.748409+09:00",
    "provider": "yfinance_intraday",
    "market_data_asof": "2026-04-17T12:55:00+09:00"
  }
}