{
  "ticker": "064400.KS",
  "ticker_name": "LG CNS",
  "status": "success",
  "trade_date": "2026-04-16",
  "analysis_date": "2026-04-16",
  "decision": "{\n  \"rating\": \"OVERWEIGHT\",\n  \"portfolio_stance\": \"BULLISH\",\n  \"entry_action\": \"WAIT\",\n  \"setup_quality\": \"DEVELOPING\",\n  \"confidence\": 0.68,\n  \"time_horizon\": \"medium\",\n  \"entry_logic\": \"064400.KS의 중기 배분 의견은 OVERWEIGHT로 유지한다. 공격적 분석가가 지적한 대로 2026-04-15 종가 KRW 65,700은 50일 SMA KRW 64,646을 회복했고, 10일 EMA는 4월 7일 KRW 58,700대에서 4월 15일 KRW 61,720까지 상승했으며, MACD는 -2,371.95에서 -439.99로 개선되고 히스토그램은 845.69까지 확대됐다. RSI 57.12도 과열은 아니다. 다만 보수적·중립적 분석가가 강조한 것처럼 50일선 기울기는 아직 하락 중이고, 볼린저 상단 및 저항 KRW 66,600 바로 아래이며, 2026-04-16 장중 검증이 없다. 따라서 방향성은 BULLISH이나 오늘 즉시 추격 매수하지 않고 WAIT한다. 신규 진입은 KRW 66,600 이상 종가 돌파와 최근 평균을 웃도는 거래량이 확인되거나, KRW 64,600 부근 눌림에서 여러 세션 지지가 확인될 때 starter가 정당화된다.\",\n  \"exit_logic\": \"기존 보유분은 KRW 64,600 위에서 core exposure를 유지할 수 있으나, 종가가 KRW 64,600 아래로 밀리고 50일 SMA 부근을 빠르게 회복하지 못하면 일부 축소한다. KRW 62,000 종가 이탈 시 전술 포지션은 종료한다. KRW 60,000-60,900 방어선이 훼손되면 중기 thesis 자체를 재점검한다. 실적 공시나 IR에서 AI, 클라우드, 스마트팩토리, 물류 자동화, 로봇, 데이터센터 관련 매출 전환, 수주, 마진, 현금전환이 확인되지 않으면 OVERWEIGHT를 낮춘다.\",\n  \"position_sizing\": \"setup_quality가 DEVELOPING이므로 정상 비중보다 낮은 partial sizing만 허용한다. 이미 보유 중이면 KRW 64,600 위에서는 핵심 물량을 유지하되 KRW 66,600 저항 바로 아래에서 공격적 추가 매수는 피한다. 신규 계좌는 확인 전 진입하지 않고, KRW 66,600 돌파 확인 또는 KRW 64,600 지지 확인 후 starter로 시작한다. ATR 약 KRW 3,025, 가격 대비 약 4.6% 변동성을 감안해 초기 비중은 작게 두고, 돌파 후 거래량 지속과 IR 검증이 누적될 때만 단계적으로 확대한다.\",\n  \"risk_limits\": \"KRW 64,600은 1차 지지 및 위험 축소 기준, KRW 62,000은 전술 포지션 종료 기준, KRW 60,000-60,900은 중기 thesis 최종 방어선으로 둔다. KRW 68,000-69,000 구간은 1차 재평가 저항대이므로 거래량과 RSI 과열 여부를 재확인한다. 2026-04-16 실시간 검증 부재, 50일선 하락 기울기, 최근 대량 거래 후 변동성, 주요주주 및 lock-up 관련 오버행, 매출채권 및 운전자본 품질, 데이터센터·클라우드 투자에 따른 고정비와 마진 압박 가능성을 모두 반영해 손실 한도를 정상보다 보수적으로 설정한다.\",\n  \"catalysts\": [\n    \"064400.KS가 KRW 66,600 이상으로 종가 돌파하고 거래량이 최근 평균을 웃돌면 회복이 KRW 68,000-69,000으로 확장될 가능성이 커진다.\",\n    \"실적 공시와 IR에서 AI, 클라우드, 스마트팩토리, 물류 자동화, 로봇, 데이터센터 관련 수주, 매출 전환, 마진 방어, 현금전환이 확인되면 중기 OVERWEIGHT 근거가 강화된다.\",\n    \"MODEX 2026 냉동 물류 로봇 공개가 실제 주문 또는 글로벌 자동화 파이프라인으로 이어지면 산업 AI 확장성이 재평가될 수 있다.\",\n    \"Dio AI 업무협약, Korean Air 관련 스마트팩토리 협력, Skilled AI 생태계 확대가 대기업 고객 기반의 산업 AI 수요로 연결되면 성장 서사가 강화된다.\",\n    \"예상 PER 12.52배, 배당수익률 2.82%, ROE 17.34%, 현금 및 단기투자 약 KRW 1.68tn은 성장 옵션 대비 밸류에이션과 재무 완충력을 뒷받침한다.\"\n  ],\n  \"invalidators\": [\n    \"064400.KS가 KRW 62,000 아래로 종가 이탈해 단기 회복 구조가 깨지는 경우.\",\n    \"KRW 66,600 돌파 시도가 실패하고 KRW 64,600 아래로 되밀려 50일 SMA 회복이 false breakout으로 확인되는 경우.\",\n    \"실적 공시나 IR에서 AI, 로봇, 스마트팩토리, 클라우드, 데이터센터의 수주 전환이나 매출 인식이 부족하고 마진 압박이 확인되는 경우.\",\n    \"매출채권 증가, 운전자본 악화, 약한 영업현금흐름으로 이익의 현금전환 품질이 훼손되는 경우.\",\n    \"주요주주, lock-up, 잠재 매물 부담이 기관 수요로 흡수되지 못하고 가격을 압박하는 경우.\"\n  ],\n  \"watchlist_triggers\": [\n    \"KRW 66,600 이상 종가와 최근 평균 이상 거래량이 동시에 확인되는지 점검한다.\",\n    \"KRW 64,600 부근으로 눌린 뒤 여러 세션 동안 지지되어 저항이 지지로 전환되는지 확인한다.\",\n    \"MACD가 0선을 상향 돌파하고 MACD 히스토그램 양수가 유지되는지 관찰한다.\",\n    \"RSI가 상승하되 KRW 66,600 또는 KRW 68,000-69,000 저항대에서 70에 너무 빠르게 접근하지 않는지 확인한다.\",\n    \"IR에서 AI, 물류 로봇, 스마트팩토리, 클라우드, 데이터센터 capex, backlog, 마진, 현금전환에 대한 구체 수치가 제시되는지 확인한다.\",\n    \"OpenDART 공시에서 주요주주 변화, lock-up 위험, 물량 부담, 물질 계약이 명확해지는지 추적한다.\"\n  ],\n  \"data_coverage\": {\n    \"company_news_count\": 5,\n    \"disclosures_count\": 3,\n    \"social_source\": \"news_derived\",\n    \"macro_items_count\": 0\n  }\n}",
  "started_at": "2026-04-16T11:01:43.998792+09:00",
  "finished_at": "2026-04-16T12:09:08.037504+09:00",
  "duration_seconds": 4044.04,
  "metrics": {
    "llm_calls": 58,
    "tool_calls": 22,
    "tokens_in": 0,
    "tokens_out": 0,
    "tokens_available": false,
    "calls_by_model": {
      "gpt-5.4": 58
    }
  },
  "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_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",
    "intraday_snapshot_missing_same_day"
  ],
  "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"
  }
}