{
  "ticker": "095340.KQ",
  "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는 매출 약 KRW 72.3 billion, 영업이익 약 KRW 22.0 billion, 영업이익률 약 30.4%, 자유현금흐름 약 KRW 18.2 billion, 현금 및 단기투자 KRW 343.9 billion 대비 총부채 약 KRW 21.2 billion이라는 근거로 중기 투자 매력은 유지된다. 다만 오늘 즉시 신규 진입 또는 추가 매수는 보류한다. 주가는 10일 지수이동평균 약 KRW 239,810 아래에 있고, MACD 히스토그램은 약 -4,868로 악화되었으며, RSI는 50 부근을 회복하지 못했고, 2026-04-10 거래량 2,081,327주 이후 외국인 순매도 약 KRW 175.8 billion 및 공매도 과열 신호가 남아 있다. KRW 239,800-240,000 회복, RSI 50 상회, MACD 히스토그램 축소, 패닉성이 줄어든 거래량이 확인될 때 신규 자금 투입을 검토한다. KRW 216,600 부근 하단 밴드 또는 KRW 203,000 지지권 재시험에서 변동성과 매도 압력이 완화되면 공격적 계좌에 한해 매우 작은 초기 포지션은 정당화될 수 있으나, 현재는 조건 미충족이다.\",\n  \"exit_logic\": \"기존 보유자는 중기 상승 논리가 유지되는 동안 중간 규모 핵심 포지션만 유지한다. 반등이 KRW 239,800-240,000 아래에서 반복적으로 막히고 거래량이 매도 우위로 커지면 일부 축소한다. 095340.KS가 50일 단순이동평균 부근인 KRW 203,000을 종가 기준으로 뚜렷하게 이탈하고 MACD 히스토그램 악화가 이어지면 강한 위험 축소를 실행한다. AI, HBM, CPO, 테스트 소켓 수요 기대가 실적이나 현금전환으로 확인되지 않거나 매출 둔화와 매출채권 및 재고 증가가 함께 나타나면 중기 논리 자체를 재검토한다.\",\n  \"position_sizing\": \"신규 자금은 대기한다. 기존 보유자는 과거 급등 구간에서 비중이 커졌다면 정상보다 낮은 위험 예산으로 조정하고, 중간 규모 핵심 보유만 유지한다. 진입 조건이 충족되면 ATR 약 KRW 24,290, 주가 대비 약 11% 수준의 변동성을 반영해 평소보다 작은 초기 포지션으로 시작한다. KRW 240,000 회복 후 지지 확인, RSI 50 이상 유지, MACD 히스토그램 개선, 거래량 질 개선이 이어질 때만 단계적으로 확대한다.\",\n  \"risk_limits\": \"095340.KS의 단일 종목 위험은 정상보다 낮게 유지한다. KRW 240,000 회복 전에는 KRW 257,000-271,000 반등을 추격하지 않는다. KRW 203,000 종가 이탈은 강제 위험 축소 기준으로 둔다. 외국인 순매도, 공매도 과열, 2026-04-10과 같은 비정상 거래량이 재발하는 날에는 추가 매수를 금지한다. 하단 밴드 접근은 매수 신호가 아니라 관찰 구간으로 취급한다.\",\n  \"catalysts\": [\n    \"AI 서버, HBM, 첨단 패키징, CPO 테스트 소켓 수요가 095340.KS의 매출 성장과 높은 이익률 지속으로 연결되는 경우\",\n    \"SOL AI Semiconductor TOP2 Plus ETF 편입에 따른 테마 및 수급성 매수 유입\",\n    \"다음 실적에서 2025-12-31 분기 강세가 일회성이 아니고 매출채권 및 재고가 건전하다는 확인\",\n    \"KRW 239,800-240,000 회복과 함께 공매도 포지션이 되돌려지며 단기 숏커버링이 발생하는 경우\"\n  ],\n  \"invalidators\": [\n    \"095340.KS가 KRW 203,000 부근 50일 단순이동평균 지지권을 종가 기준으로 이탈하고 빠르게 회복하지 못하는 경우\",\n    \"긍정적인 반도체 섹터 흐름에도 외국인 매도와 공매도 압력이 지속되는 경우\",\n    \"매출 성장이 둔화되는 동시에 매출채권 또는 재고가 계속 증가해 현금전환 우려가 커지는 경우\",\n    \"AI, HBM, CPO 기대가 이미 주가에 반영된 상태에서 회사별 공시나 실적 확인이 나오지 않는 경우\"\n  ],\n  \"watchlist_triggers\": [\n    \"KRW 239,800-240,000 위 종가 회복, RSI 50 상회, MACD 히스토그램 0을 향한 축소\",\n    \"2026-04-10 거래량 2,081,327주보다 낮고 안정된 거래량으로 KRW 216,600 부근 볼린저 하단 회복\",\n    \"KRW 203,000 지지 재시험 시 장중 흐름 개선, 변동성 축소, 외국인 매도 완화 확인\",\n    \"KRW 257,000-271,000 재진입 시 거래량이 패닉성 추격이 아니라 건전한 누적 매수로 확인\",\n    \"AI 반도체, HBM, CPO, 테스트 소켓 고객 수요를 확인하는 신규 공시 또는 실적 가이던스\"\n  ],\n  \"data_coverage\": {\n    \"company_news_count\": 5,\n    \"disclosures_count\": 0,\n    \"social_source\": \"news_derived\",\n    \"macro_items_count\": 0\n  }\n}",
  "started_at": "2026-04-15T13:46:34.446682+09:00",
  "finished_at": "2026-04-15T14:00:53.309611+09:00",
  "duration_seconds": 858.86,
  "metrics": {
    "llm_calls": 55,
    "tool_calls": 22,
    "tokens_in": 0,
    "tokens_out": 0,
    "tokens_available": false,
    "calls_by_model": {
      "gpt-5.4": 55
    }
  },
  "tool_telemetry": {
    "total_tool_calls": 22,
    "vendor_calls": {
      "yfinance": 15,
      "naver": 3,
      "ecos": 1,
      "opendart": 1,
      "alpha_vantage": 2
    },
    "fallback_count": 5,
    "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": "fallback",
        "fallback": true,
        "note": "opendart: empty or unusable result"
      },
      {
        "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
      }
    ]
  },
  "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"
  }
}