{
  "ticker": "095340.KS",
  "ticker_name": "ISC",
  "status": "success",
  "trade_date": "2026-04-14",
  "analysis_date": "2026-04-15",
  "decision": "{\n  \"rating\": \"OVERWEIGHT\",\n  \"portfolio_stance\": \"BULLISH\",\n  \"entry_action\": \"WAIT\",\n  \"setup_quality\": \"DEVELOPING\",\n  \"confidence\": 0.64,\n  \"time_horizon\": \"medium\",\n  \"entry_logic\": \"095340.KS의 중기 배분 의견은 OVERWEIGHT로 유지한다. 공격적·중립적 분석이 지적한 2025년 12월 분기 매출 723억 원, 영업이익 220억 원, 영업이익률 약 30.4%, 자유현금흐름 182억 원, 현금 및 단기투자자산 3,439억 원 대비 총차입금 212억 원의 순현금 구조, AI/HBM/CPO 테스트 소켓 노출은 투자 가능한 성장 thesis를 뒷받침한다. 다만 오늘 신규 진입은 WAIT다. 보수적·중립적 분석이 공통으로 지적했듯 종가 216,500원은 50일선 203,218원과 약 6.5% 차이에 불과하고, ATR 24,289원은 종가 대비 약 11%라 지지선이 하루 변동으로도 훼손될 수 있다. 또한 가격은 VWMA 248,960원과 239,000-250,000 매물대 아래에 있고, MACD 10,684.13이 신호선 15,552.15 아래이며, RSI 48.56은 과열 해소이지 강세 재개 확인은 아니다. 따라서 203,000-216,500 지지 확인, ATR 완화, 239,000-250,000 및 VWMA 회복, 외국인 매도 둔화가 동반될 때 starter는 정당화될 수 있으나 지금은 추격하지 않는다.\",\n  \"exit_logic\": \"기존 보유분은 전량 청산보다 부분 보유가 적절하나, 095340.KS가 203,000 부근 50일선을 거래량 확대와 함께 지속 이탈하면 위험을 축소한다. 216,500 부근 반등 시도가 실패하고 다시 밀리면 50일선 재시험 가능성이 커지므로 추가 매수는 금지하고 비중을 재점검한다. 239,000-250,000 및 VWMA 248,960 부근에서 반복적으로 막히고 MACD 약세와 RSI 50 하회가 지속되면 보유 비중을 낮춘다. 다음 실적에서 매출 둔화, 영업이익률 압박, 매출채권 698.4억 원 및 재고 250.1억 원 증가가 현금전환 악화로 이어지거나, 교환청구권·자기주식처분 관련 물량 부담이 확대되면 materially cut 또는 exit한다.\",\n  \"position_sizing\": \"신규 자금은 현재 투입하지 않는다. 기존 보유는 정상 목표 비중보다 낮은 partial exposure로 유지한다. 203,000-216,500 지지가 확인되고 ATR이 24,289원 수준에서 완화되며 239,000-250,000과 VWMA 248,960 회복이 확인되면 소형 starter tranche만 허용한다. 249,000-250,000 위에서 며칠간 안착하고 외국인 순매도가 중립화되며 공급 흡수가 확인될 때만 단계적으로 증액한다. 정상 비중 확대는 다음 실적에서 매출 성장, 30% 안팎의 영업이익률 유지, 운전자본 안정이 확인된 뒤로 제한한다.\",\n  \"risk_limits\": \"ATR 24,289원이 종가 대비 약 11%인 고변동성 구간이므로 tight stop보다 ATR-aware sizing을 사용한다. 한 번의 ATR adverse move가 포트폴리오 위험 한도를 넘지 않도록 starter와 기존 보유 비중을 제한한다. 203,000 지속 이탈은 1차 감축선, 216,500 회복 실패는 2차 review trigger로 둔다. 외국인 순매도, 공매도 과열 부담, MACD 약세가 지속되는 동안 averaging down은 금지한다. 긍정 뉴스에도 2026-04-15 장중 상승률이 0.22%에 그쳤다는 보수적 분석의 지적처럼, 수급 흡수 확인 전에는 숏커버링 가능성만으로 선제 증액하지 않는다.\",\n  \"catalysts\": [\n    \"095340.KS가 239,000-250,000 및 VWMA 248,960 위로 회복하고 과열되지 않은 거래량으로 안착\",\n    \"203,000-216,500 지지 유지와 ATR 24,289원 수준에서의 변동성 완화\",\n    \"외국인 순매도가 중립 또는 순매수로 전환되고 공매도 과열 부담이 해소\",\n    \"2026년 AI, HBM, advanced packaging, CPO, test socket 수요가 실제 주문과 margin으로 전환된다는 회사 IR 또는 공시 확인\",\n    \"다음 분기 실적에서 순차 매출 성장, 약 30% 수준의 영업이익률 유지, 영업현금흐름 및 자유현금흐름 개선 지속\",\n    \"AI 반도체 공급망 ETF/theme inflow가 유지되며 crowded unwind가 재발하지 않음\"\n  ],\n  \"invalidators\": [\n    \"095340.KS가 50일선 203,218 부근을 거래량 확대와 함께 decisively break\",\n    \"216,500 회복 실패 후 재하락하며 203,000 재시험 가능성이 커짐\",\n    \"MACD가 신호선 아래에 머물고 RSI가 50을 회복하지 못한 채 239,000-250,000 반등이 반복 실패\",\n    \"다음 실적에서 매출 둔화, 영업이익률 압박, 약한 order commentary 확인\",\n    \"매출채권 698.4억 원 및 재고 250.1억 원 증가가 매출 증가율을 웃돌며 cash conversion 악화로 이어짐\",\n    \"교환청구권 행사, 자기주식처분 정정 또는 추가 capital event가 예상보다 큰 물량 부담과 신뢰 훼손으로 확대\",\n    \"AI/HBM/CPO semiconductor narrative 약화 또는 sector leadership 이탈\"\n  ],\n  \"watchlist_triggers\": [\n    \"095340.KS가 종가 기준 239,000-250,000 및 VWMA 248,960 위로 복귀\",\n    \"203,000-216,500 support zone을 지키면서 ATR이 24,289원에서 뚜렷하게 축소\",\n    \"RSI가 50 위로 회복하고 MACD 하락 momentum이 둔화\",\n    \"외국인 순매도가 여러 세션 동안 중립 또는 순매수로 전환\",\n    \"공매도 과열 designation이 해소되고 renewed downside pressure가 나타나지 않음\",\n    \"회사 IR 또는 공시에서 2026년 order, customer, margin, capacity visibility가 구체화\",\n    \"다음 분기 실적에서 sequential sales growth, operating margin durability, stable working capital 확인\",\n    \"249,000-250,000 위에서 며칠간 안착하며 supply absorption 확인 시 starter 가능\"\n  ],\n  \"data_coverage\": {\n    \"company_news_count\": 3,\n    \"disclosures_count\": 5,\n    \"social_source\": \"news_derived\",\n    \"macro_items_count\": 0\n  }\n}",
  "started_at": "2026-04-15T14:12:36.819210+09:00",
  "finished_at": "2026-04-15T14:25:31.635506+09:00",
  "duration_seconds": 774.82,
  "metrics": {
    "llm_calls": 67,
    "tool_calls": 21,
    "tokens_in": 0,
    "tokens_out": 0,
    "tokens_available": false,
    "calls_by_model": {
      "gpt-5.4": 67
    }
  },
  "tool_telemetry": {
    "total_tool_calls": 21,
    "vendor_calls": {
      "yfinance": 14,
      "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_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_cashflow",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_balance_sheet",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_income_statement",
        "vendor": "yfinance",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_fundamentals",
        "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_insider_transactions",
        "vendor": "alpha_vantage",
        "status": "success",
        "fallback": false,
        "note": null
      }
    ]
  },
  "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"
  }
}