{
  "ticker": "TSM",
  "ticker_name": "Taiwan Semiconductor Manufacturing",
  "status": "success",
  "trade_date": "2026-04-16",
  "analysis_date": "2026-04-17",
  "decision": "{\n  \"rating\": \"OVERWEIGHT\",\n  \"portfolio_stance\": \"BULLISH\",\n  \"entry_action\": \"WAIT\",\n  \"setup_quality\": \"DEVELOPING\",\n  \"confidence\": 0.74,\n  \"time_horizon\": \"medium\",\n  \"entry_logic\": \"TSM의 중기 배분 관점은 긍정적이다. 공격적 분석가는 Q1 이익 58% 증가, 매출 약 NT$1.13조, 전년 대비 약 35% 성장, March 매출 45.2% 증가, 3nm와 5nm 고가동률, 약 69.9% 파운드리 점유율을 근거로 AI 인프라 핵심 병목 자산이라고 평가했다. 중립 분석가도 가격이 10일 지수이동평균 부근인 362.5, 50일 평균과 거래량가중평균 클러스터인 352.5-352.8, 200일 평균 295.6 위에 있어 추세가 훼손되지 않았다고 보았다. 다만 보수적 분석가가 지적한 대로 316.50에서 375.10까지 빠르게 반등했고 379.89-382.16 저항에 근접했으며, 강한 실적 이후 매도가 나온 점은 당일 신규 진입의 위험을 높인다. 따라서 오늘은 추격 매수하지 않고 대기한다. 신규 진입은 TSM이 362-365 구간을 통제된 조정으로 시험한 뒤 종가 기준으로 지지를 확인하거나, 382.16 위에서 평균 이상 거래량으로 종가 돌파하고 즉시 반락하지 않을 때만 정당화된다. 조건이 충족되면 부분 스타터는 가능하지만 현재 행동은 WAIT이다.\",\n  \"exit_logic\": \"기존 보유분은 중기 상승 구조가 유지되는 한 보유하되, 위험 신호는 단계적으로 적용한다. 중립 분석가의 제안처럼 362 아래 종가가 RSI 약화, MACD 히스토그램 악화, 분산 거래량과 함께 나타나면 전술 노출을 부분 축소하거나 재검토한다. 352 아래 종가는 50일 평균과 거래량가중평균 지지 클러스터 및 April 반등 구조를 훼손하므로 더 강한 축소 또는 전술 청산 신호로 본다. 345-348 돌파 구간이 실패하면 최근 모멘텀 기반 OVERWEIGHT 논리를 재평가한다. AI 주문, 선단공정 가동률, 마진, 자유현금흐름, 해외 팹 비용에 대한 가정이 악화될 경우에도 중기 배분을 낮춘다.\",\n  \"position_sizing\": \"ATR가 약 12.5포인트, 주가의 약 3% 수준이므로 신규 포지션은 전량 진입이 아니라 단계적으로만 집행한다. 확인 신호가 나오면 최소 1 ATR 이상의 위험 폭을 기준으로 작은 스타터를 사용하고, 성공적인 재시험 또는 추가 상승 확인 이후에만 증액한다. 기존 보유자는 OVERWEIGHT 노출을 유지할 수 있지만, 375-382 저항대에서는 공격적 추가 매수를 피한다. Taiwan Strait, 공급망, 고객 집중, 밸류에이션 갭, 해외 팹 마진 압박을 반영해 일반적인 반도체 기술주보다 총 비중 상한을 더 보수적으로 둔다.\",\n  \"risk_limits\": \"일상 변동성 안에 있는 촘촘한 손절은 피한다. 362 아래 종가와 약한 모멘텀은 신규 매수분 또는 전술 비중의 1차 감축 검토선이다. 352 아래 종가는 핵심 전술 위험 한도이며, 345-348 실패는 돌파 실패 및 중기 논리 재검토 신호다. 보수적 분석가가 강조한 것처럼 지정학적 뉴스는 기술적 종가 손절을 뛰어넘는 갭 위험을 만들 수 있으므로 단일 종목 손실 한도와 총 포트폴리오 집중도를 사전에 제한한다.\",\n  \"catalysts\": [\n    \"Q1 2026 이익이 58% 증가했고 실적과 Q2 매출 전망이 기대를 웃돌았다는 점은 공격적 분석가와 트레이더가 공통으로 제시한 핵심 근거다.\",\n    \"Q1 매출 약 NT$1.13조, 약 US$35.6 billion, 전년 대비 약 35% 증가와 March 매출 45.2% 증가는 수요 강도를 뒷받침한다.\",\n    \"AI 칩 수요와 3nm 및 5nm 고가동률은 가격 결정력과 마진 지속성을 지지한다.\",\n    \"약 69.9% 글로벌 파운드리 점유율은 TSM의 전략적 병목성과 고객 의존도를 강화한다.\",\n    \"가격이 상승 중인 50일 평균과 200일 평균 위에 있고 RSI가 55.38로 50 위, MACD가 7.10으로 양호하다는 중립 분석가의 근거는 추세 유지 판단을 뒷받침한다.\"\n  ],\n  \"invalidators\": [\n    \"352-353 아래 종가는 April 반등 구조와 50일 평균 및 거래량가중평균 지지 클러스터를 훼손한다.\",\n    \"RSI가 50 아래로 내려가고 MACD 히스토그램이 악화되면 건강한 조정이 아니라 모멘텀 상실로 해석한다.\",\n    \"AI 주문 둔화, 고객 재고 조정, 선단공정 가동률 약화, 가이던스 하향은 프리미엄 성장 논리를 약화시킨다.\",\n    \"Taiwan Strait 긴장 고조나 핵심 소재 공급 차질은 중립 및 보수 분석가가 강조한 대로 할인율과 갭 위험을 빠르게 높인다.\",\n    \"해외 팹 확장이 마진 또는 자유현금흐름을 의미 있게 압박한다는 증거가 나오면 밸류에이션 정당성이 약해진다.\"\n  ],\n  \"watchlist_triggers\": [\n    \"매수 가능 조정: TSM이 362-365를 시험한 뒤 종가 기준으로 지지를 확인하거나 10일 지수이동평균 부근을 지키고 거래량이 건설적으로 유지될 때.\",\n    \"돌파 조건: TSM이 382.16 위에서 평균 이상 거래량으로 종가 마감하고 즉시 반락하지 않을 때.\",\n    \"1차 위험 조건: TSM이 362 아래에서 마감하고 RSI 약화, MACD 히스토그램 악화, 분산 거래량이 동반될 때.\",\n    \"핵심 위험 조건: TSM이 352 아래에서 종가 마감하거나 345-348 April 돌파 구간 재시험에 실패할 때.\",\n    \"뉴스 조건: 경영진 발언이 AI 수요 지속성, 선단공정 가격 결정력, 자본지출 규율, 해외 팹 마진 영향을 확인하거나 반대로 약화시킬 때.\"\n  ],\n  \"data_coverage\": {\n    \"company_news_count\": 5,\n    \"disclosures_count\": 2,\n    \"social_source\": \"news_derived\",\n    \"macro_items_count\": 1\n  }\n}",
  "started_at": "2026-04-17T02:14:26.633129+09:00",
  "finished_at": "2026-04-17T02:27:58.875826+09:00",
  "duration_seconds": 812.24,
  "metrics": {
    "llm_calls": 59,
    "tool_calls": 18,
    "tokens_in": 0,
    "tokens_out": 0,
    "tokens_available": false,
    "calls_by_model": {
      "gpt-5.4": 59
    }
  },
  "tool_telemetry": {
    "total_tool_calls": 18,
    "vendor_calls": {
      "yfinance": 15,
      "alpha_vantage": 3
    },
    "fallback_count": 1,
    "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": "alpha_vantage",
        "status": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_social_sentiment",
        "vendor": "yfinance",
        "status": "fallback",
        "fallback": true,
        "note": "yfinance: empty or unusable result"
      },
      {
        "method": "get_company_news",
        "vendor": "alpha_vantage",
        "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": "success",
        "fallback": false,
        "note": null
      },
      {
        "method": "get_fundamentals",
        "vendor": "yfinance",
        "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"
  },
  "intraday_snapshot_attempts": [
    {
      "ticker": "TSM",
      "attempted": true,
      "success": true,
      "checkpoint": "01:35",
      "interval": "5m",
      "attempted_at": "2026-04-17T02:52:50.993595+09:00",
      "provider": "yfinance_intraday",
      "market_data_asof": "2026-04-16T13:50:00-04:00"
    },
    {
      "ticker": "TSM",
      "attempted": true,
      "success": true,
      "checkpoint": "selective_rerun",
      "interval": "5m",
      "attempted_at": "2026-04-17T04:00:15.602110+09:00",
      "provider": "yfinance_intraday",
      "market_data_asof": "2026-04-16T15:00:00-04:00"
    },
    {
      "ticker": "TSM",
      "attempted": true,
      "success": true,
      "checkpoint": "03:35",
      "interval": "5m",
      "attempted_at": "2026-04-17T04:19:35.064121+09:00",
      "provider": "yfinance_intraday",
      "market_data_asof": "2026-04-16T15:15:00-04:00"
    }
  ],
  "latest_intraday_snapshot_attempt": {
    "ticker": "TSM",
    "attempted": true,
    "success": true,
    "checkpoint": "03:35",
    "interval": "5m",
    "attempted_at": "2026-04-17T04:19:35.064121+09:00",
    "provider": "yfinance_intraday",
    "market_data_asof": "2026-04-16T15:15:00-04:00"
  },
  "intraday_snapshot_latest_attempt": {
    "ticker": "TSM",
    "attempted": true,
    "success": true,
    "checkpoint": "03:35",
    "interval": "5m",
    "attempted_at": "2026-04-17T04:19:35.064121+09:00",
    "provider": "yfinance_intraday",
    "market_data_asof": "2026-04-16T15:15:00-04:00"
  }
}