{
  "ticker": "095340.KQ",
  "ticker_name": "ISC",
  "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.67,\n  \"time_horizon\": \"medium\",\n  \"entry_logic\": \"095340.KS의 중기 배분 관점은 우호적으로 유지한다. 공격적 분석가와 중립 분석가가 공통으로 지적한 매출 증가, 영업이익률 약 30.4%, 현금 및 단기투자자산 3,438억 원 대비 총차입금 212억 원 수준의 순현금 구조, Mirae Asset의 1,077,159주 지분 확대는 투자 가능한 기초 체력을 뒷받침한다. 다만 보수적 분석가와 중립 분석가가 강조한 대로 2026-04-14 종가 223,000원은 10일 EMA 239,810원과 VWMA 248,960원 아래에 있고, MACD 히스토그램도 -4,868까지 악화되어 오늘 즉시 신규 진입할 가격 확인은 부족하다. 216,500원 위에서 지지와 higher low가 확인되고, 239,000원 이상 일봉 종가 회복과 MACD 개선이 동반될 때만 소규모 starter를 검토한다. 더 강한 진입은 248,000-250,000원 구간을 거래량과 함께 회복하고 외국인·기관 수급이 순매수로 안정될 때다.\",\n  \"exit_logic\": \"기존 보유분은 유지 가능하나, 216,500원 이탈 후 빠른 회복에 실패하면 1차로 비중을 줄인다. 50일 SMA 부근인 203,000원 아래에서 종가가 형성되면 보수적 분석가가 지적한 중기 추세 훼손으로 보고 대폭 축소 또는 청산한다. 다음 실적에서 영업이익률이 최근 30.4% 수준에서 크게 하락하거나, 매출 성장 둔화, 매출채권과 재고자산 증가가 매출보다 빠르게 이어져 현금전환이 약해질 경우 투자등급을 낮춘다.\",\n  \"position_sizing\": \"변동성이 큰 조정 구간이므로 정상 목표 비중으로 추격하지 않는다. ATR이 종가 대비 약 10.9%로 높다는 보수적 분석가의 지적을 반영해 기존 보유는 낮은 비중으로 관리하고, 신규 자금은 확인 전까지 대기한다. 239,000원 회복과 MACD 개선이 동시에 확인될 경우에만 작은 starter를 허용하며, 248,000-250,000원 거래량 돌파와 외국인·기관 순매수 전환이 확인될 때 단계적으로 추가한다.\",\n  \"risk_limits\": \"리스크 관리는 가격 확인과 포지션 크기 축소로 통제한다. 216,500원은 1차 방어선, 203,000원은 중기 기술적 하드 스톱 구간으로 둔다. MACD 히스토그램이 계속 악화되거나 외국인 순매도, 기관 차익실현, 공매도 과열 압력이 지속되는 동안에는 추가 매수를 금지한다. 손절 폭을 기술적으로 의미 있는 구간까지 허용하는 대신 보유 수량을 줄여 포트폴리오 손실 한도를 제한한다.\",\n  \"catalysts\": [\n    \"095340.KS가 239,000원 위에서 일봉 종가를 회복하고 MACD 히스토그램이 중립 방향으로 개선됨\",\n    \"248,000-250,000원 구간을 거래량과 함께 돌파해 VWMA 부근 매물대를 회복함\",\n    \"AI 및 고성능 반도체 투자 사이클이 테스트 소켓 수요를 지속적으로 지지함\",\n    \"다음 분기에도 매출 성장과 약 30.4% 수준의 높은 영업이익률이 유지됨\",\n    \"Mirae Asset의 1,077,159주 지분 확대 이후 추가 장기성 기관 수요가 확인됨\",\n    \"외국인·기관 수급이 혼재 국면에서 일관된 순매수로 전환됨\",\n    \"IR 또는 공시를 통해 고객, 생산능력, 수요, 이익 가시성이 개선됨\"\n  ],\n  \"invalidators\": [\n    \"095340.KS가 203,000원 부근 50일 SMA 아래에서 종가를 형성함\",\n    \"216,500원 지지선이 무너지고 반등 시도가 10일 EMA 아래에서 계속 실패함\",\n    \"MACD 히스토그램 악화와 VWMA 하회가 지속되어 대량거래 이후 분배 가능성이 커짐\",\n    \"영업이익률이 최근 30.4% 수준에서 materially 하락함\",\n    \"매출 성장이 둔화되는 동시에 매출채권과 재고자산이 매출보다 빠르게 증가함\",\n    \"공매도 압력, 외국인 순매도, 기관 차익실현이 긍정적 업황 뉴스에도 계속됨\"\n  ],\n  \"watchlist_triggers\": [\n    \"216,500원 방어 후 higher low 형성 여부\",\n    \"239,000원 이상 일봉 종가 회복과 MACD 히스토그램 개선 동시 발생 여부\",\n    \"248,000-250,000원 거래량 동반 회복 여부\",\n    \"203,000원 근처 또는 그 아래 종가 발생 시 리스크 축소 필요 여부\",\n    \"외국인·기관 수급이 순매수 누적으로 전환되는지 여부\",\n    \"다음 실적 또는 공시에서 매출채권, 재고자산, 잉여현금흐름, 영업이익률 지속성이 확인되는지 여부\",\n    \"공매도 과열 이후 가격 회복 시 숏커버링성 수급이 붙는지 여부\"\n  ],\n  \"data_coverage\": {\n    \"company_news_count\": 5,\n    \"disclosures_count\": 4,\n    \"social_source\": \"news_derived\",\n    \"macro_items_count\": 0\n  }\n}",
  "started_at": "2026-04-16T12:09:08.042347+09:00",
  "finished_at": "2026-04-16T12:22:29.485190+09:00",
  "duration_seconds": 801.44,
  "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_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_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"
  ],
  "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"
  }
}