{
  "ticker": "064400.KS",
  "ticker_name": "LG CNS",
  "status": "success",
  "trade_date": "2026-04-15",
  "analysis_date": "2026-04-16",
  "decision": "{\n  \"rating\": \"HOLD\",\n  \"portfolio_stance\": \"BULLISH\",\n  \"entry_action\": \"WAIT\",\n  \"setup_quality\": \"DEVELOPING\",\n  \"confidence\": 0.66,\n  \"time_horizon\": \"medium\",\n  \"entry_logic\": \"064400.KS는 중기 관점에서 투자 가능한 회복 후보로 유지한다. 공격적 분석가가 지적한 대로 MACD가 2026-04-07의 -2,371.95에서 2026-04-15의 -439.99로 개선되고 MACD 히스토그램이 845.69로 양전환했으며, RSI 57.12도 과열 없이 회복을 시사한다. 또한 forward PER 약 12.3, 배당수익률 약 2.98%, ROE 약 17.3%, 2025-12-31 분기 매출 1.94조 KRW, 영업이익 2,123억 KRW, 순이익 1,775억 KRW, 잉여현금흐름 1,832억 KRW는 약세로 돌릴 근거가 부족하게 만든다. 다만 보수적·중립적 분석가의 지적처럼 최근 종가 62,000은 50일선 약 64,650과 200일선 약 65,700 아래에 있고, 66,600 부근의 볼린저·저항 구간도 겹친다. 따라서 오늘 즉시 매수하지 않고 WAIT가 적절하다. 신규 진입은 60,000-61,400 지지 재확인 후 반등하거나, 거래량을 동반한 63,600 상향 종가와 64,650 위 안착이 확인될 때만 소규모 시작이 정당화된다.\",\n  \"exit_logic\": \"기존 보유분은 60,000이 종가 기준으로 유지되고 AI, 자동화, 데이터센터 관련 사업 모멘텀이 훼손되지 않을 때만 보유한다. 64,650-66,600 저항 구간에서 거래량 없이 반복적으로 실패하면 비중을 줄인다. 60,000 종가 이탈은 전술적 축소 또는 재평가 신호이며, 57,100-55,800 하향 이탈은 회복 구조가 무너진 것으로 보고 물량을 크게 줄이거나 청산한다. 이 경우 54,900 부근 하단 지지·볼린저 구간 재시험 위험을 반영한다.\",\n  \"position_sizing\": \"가격이 주요 이동평균 아래에 있고 ATR이 약 3,025 KRW로 높기 때문에 정상 비중보다 낮게 운용한다. 기존 보유자는 방어 가능한 축소 비중만 유지한다. 신규 자금은 지금 투입하지 않고, 조건 충족 시에만 작은 시작 비중으로 진입한다. 64,650 위 안착 후 65,700-66,600 구간을 거래량과 함께 돌파하면 단계적으로 추가하되, 계약 확인이나 추세 회복 전에는 전체 목표 비중까지 올리지 않는다.\",\n  \"risk_limits\": \"64,650-66,600 저항대를 거래량 확인 없이 추격 매수하지 않는다. ATR 약 3,025 KRW를 고려해 손절선을 지나치게 좁게 두지 않되, 60,000을 전술적 실패선, 57,100-55,800을 전략적 무효화 구간으로 둔다. 손절 시 포트폴리오 손실 한도를 넘지 않도록 시작 비중을 작게 제한한다. 다음 보고 주기에서 매출채권 회수, 운전자본 부담, 투자현금유출 약 3,259억 KRW, 리스부채 증가가 악화되면 투자 논리를 재검토한다.\",\n  \"catalysts\": [\n    \"064400.KS가 Mobile Shuttle의 북미 콜드체인 또는 물류 자동화 고객 수주를 확인한다.\",\n    \"DIO AI 전환 MOU가 범위, 계약 규모, 반복 매출 가능성이 공개된 정식 프로젝트로 전환된다.\",\n    \"모듈형 AI 데이터센터 제품이 상업 고객, 공공기관, 기업 배치 사례를 확보한다.\",\n    \"064400.KS가 거래량 증가와 함께 63,600을 돌파한 뒤 64,650, 65,700-66,600을 순차적으로 회복한다.\",\n    \"다음 실적에서 매출 성장, 마진 방어, 잉여현금흐름 개선, 매출채권 회수 개선이 함께 확인된다.\",\n    \"IPO 재원 중 약 3,400억 KRW의 M&A 여력이 AI, 클라우드, 자동화 역량 강화로 연결된다.\"\n  ],\n  \"invalidators\": [\n    \"064400.KS가 60,000 아래로 종가 이탈한 뒤 빠르게 회복하지 못한다.\",\n    \"064400.KS가 57,100-55,800을 하향 돌파해 54,900 부근 하단 지지 재시험 위험을 키운다.\",\n    \"AI, 로보틱스, 데이터센터, AX 관련 뉴스가 계약, 고객명, 매출 파이프라인으로 전환되지 못한다.\",\n    \"매출채권, 운전자본 부담, 투자현금유출, 리스부채가 악화되어 이익의 질과 현금전환을 훼손한다.\",\n    \"Samsung SDS 등 경쟁사의 대규모 투자와 가격 경쟁이 064400.KS의 수주, 마진, 데이터센터·AI 인프라 확장을 제한한다.\",\n    \"MACD 개선이 가격의 64,650 및 65,700 회복으로 이어지지 못하고 단순 반등에 그친다.\"\n  ],\n  \"watchlist_triggers\": [\n    \"거래량을 동반한 63,600 상향 종가와 이후 50일선 약 64,650 위 안착.\",\n    \"200일선 약 65,700 및 66,600 저항 구간을 거래량 증가와 함께 지속적으로 회복.\",\n    \"60,000-61,400 재시험에서 지지가 확인되고 거래량이 안정되며 RSI가 50 위를 유지.\",\n    \"AI·자동화 프로젝트의 계약 금액, 고객명, 납품 일정, 매출 인식 시점이 공시 또는 신뢰도 높은 보도로 확인.\",\n    \"다음 분기 현금흐름에서 매출채권 회수, 영업현금흐름, 잉여현금흐름, 리스부채 통제가 개선.\",\n    \"2026-04-09부터 2026-04-16 사이 공시 부재로 남아 있는 확인 공백이 신규 공시로 해소.\"\n  ],\n  \"data_coverage\": {\n    \"company_news_count\": 4,\n    \"disclosures_count\": 0,\n    \"social_source\": \"news_derived\",\n    \"macro_items_count\": 0\n  }\n}",
  "started_at": "2026-04-16T03:13:43.786200+09:00",
  "finished_at": "2026-04-16T03:28:53.881895+09:00",
  "duration_seconds": 910.1,
  "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": 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_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"
  }
}