{
  "snapshot_id": "20260416T082053_kis_68944660-01",
  "report_date": "2026-04-16",
  "account_value_krw": 19721189,
  "recommended_cash_after_now_krw": 694175,
  "recommended_cash_after_triggered_krw": 694175,
  "market_regime": "constructive_but_selective",
  "actions": [
    {
      "canonical_ticker": "TSM",
      "display_name": "TSM",
      "priority": 1,
      "confidence": 0.7,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.1121,
      "action_if_triggered": "WATCH_TRIGGER",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.1121,
      "trigger_conditions": [
        "TSM이 378.90 위에서 종가를 형성하고 최근 9백만 주대 거래량을 넘어서는 명확한 거래량 확대가 동반되는지 확인한다.",
        "TSM이 384.67-386.64 구간을 시험할 때 거래량이 유지되고 종가가 무너지지 않는지 확인한다.",
        "TSM이 359.54 부근으로 눌릴 때 장중 회복과 매도 압력 소화가 나타나면 starter 또는 소규모 추가를 검토한다.",
        "TSM이 351.56을 시험하더라도 부정적 회사 뉴스 없이 빠르게 안정화되면 중기 지지 확인으로 본다.",
        "RSI가 70을 넘고 가격이 384.67-386.64 부근에서 정체하면 추격 매수 대신 일부 이익 보호와 비중 점검을 우선한다.",
        "실적 가이던스에서 AI/HPC 수요, 선단 공정 가동률, 마진 회복력, capex 효율이 확인되면 WAIT에서 STARTER 또는 ADD로 전환할 수 있다.",
        "1분기 매출이 전년 대비 약 35% 증가해 약 USD 35.6B 수준으로 보고되었다는 점은 AI 수요가 실제 매출로 연결되고 있음을 뒷받침한다.",
        "TTM 이익률 45.1%, 영업이익률 53.9%, ROE 35.1%는 공격적 분석가가 강조한 고마진·고품질 성장 논리를 지지한다.",
        "가격이 10일 EMA 359.54, 50일 SMA 351.56, 200일 SMA 294.12 위에 있고 MACD가 -6.38에서 6.44로 반전한 점은 추세 회복을 뒷받침한다.",
        "4월 8일 거래량 16,356,900주와 365.90까지의 강한 상승은 단순한 얇은 반등보다 강한 수급 유입 가능성을 보여준다.",
        "378.90 위 거래량 동반 종가 돌파가 나오면 384.67-386.64 이전 고점권 재시험과 추가 모멘텀 확장 가능성이 열린다.",
        "실적과 가이던스가 절대적으로는 양호해도 높아진 AI/HPC 기대, 마진 방어, capex 효율 기대를 넘지 못하는 경우.",
        "TSM이 351.56 아래에서 2거래일 이상 머물며 50일 SMA 회복에 실패하는 경우.",
        "4월 8일 이후 거래량이 9백만 주대로 줄어든 흐름이 이어지고, 378.90 돌파 시도에서 거래량 재확대가 나타나지 않는 경우.",
        "매출총이익률이 capex, 감가상각, 가격 압박, 가동률 문제로 예상보다 크게 훼손되는 경우.",
        "대만 지정학 리스크, 공급망 차질, 반도체 업종 디리스킹, 유가·달러·금리 압박이 동시에 심화되는 경우.",
        "Intel, 미국 내 파운드리 확대, 고객 다변화 압력이 TSM의 장기 가격 결정력과 밸류에이션 프리미엄을 빠르게 낮춘다는 증거가 확인되는 경우."
      ],
      "rationale": "Best risk-adjusted hold among the batch: strong AI/HPC fundamental thesis and trend recovery, but no add until volume-confirmed breakout above 378.90 or controlled support hold near 359.54-351.56. Existing weight is meaningful, so avoid concentration creep.",
      "data_health": {
        "coverage_score": 0.72,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 1
        },
        "fallback_count": 4,
        "quality_flags": [
          "token_usage_unavailable"
        ],
        "legacy_rating": "OVERWEIGHT",
        "trigger_quality": 0.68,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.38,
        "thesis_multiplier": 1.144,
        "timing_now": 0.152,
        "timing_triggered": 0.38,
        "score_now": 0.0601,
        "score_triggered": 0.1753
      },
      "decision_source": "RULE+DEEP+CODEX",
      "timing_readiness": 0.38,
      "reason_codes": [
        "constructive_fundamental_thesis",
        "held_position_overweight_bias",
        "entry_wait_explicit",
        "resistance_nearby",
        "volume_confirmation_required",
        "support_pullback_alternative",
        "earnings_guidance_event_risk",
        "atr_elevated_position_size_risk",
        "held_position_quality",
        "entry_action_wait",
        "portfolio_concentration_watch",
        "review_required_due_to_data_quality"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "VXUS",
      "display_name": "VXUS",
      "priority": 2,
      "confidence": 0.68,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.0247,
      "action_if_triggered": "WATCH_TRIGGER",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.0247,
      "trigger_conditions": [
        "스타터 검토: VXUS가 80.10-79.70을 재시험한 뒤 모멘텀이 안정되며 반등하는 경우",
        "돌파 스타터 검토: VXUS가 82.90 위에서 평균 이상 거래량으로 종가 안착하고 다음 거래에서도 유지되는 경우",
        "추가 검토: VXUS가 84.28 위를 유지하면서 RSI 과열과 MACD 둔화가 나타나지 않는 경우",
        "위험 축소: VXUS가 79.70 아래에서 종가 마감하거나 MACD 히스토그램이 여러 거래일 둔화되는 경우",
        "진입 지연: VXUS가 저항대 근처에서 RSI 70 이상으로 상승하지만 거래량 확인이 부족한 경우",
        "거시 점검: 달러, 유가, 금리 기대, 지정학 뉴스가 VXUS에 우호적인 방향으로 바뀌는 경우",
        "VXUS가 82.90 위에서 평균 이상 거래량으로 종가 안착하고 후속 매수가 이어지는 경우",
        "84.11-84.28 저항대를 과열 없는 흐름으로 돌파하고 유지하는 경우",
        "달러 약세가 지속되어 비미국 주식의 USD 기준 수익률이 개선되는 경우",
        "국제주식이 미국 대형주 지수 대비 상대 강세를 이어가는 경우",
        "미국 대형주 편중 포트폴리오에서 광범위한 비미국 ETF로 재배분 수요가 유입되는 경우",
        "3월 급락 이후 변동성이 안정되고 VXUS가 10일 및 50일 평균 위에서 유지되는 경우",
        "VXUS가 79.70 아래에서 종가 마감하고 MACD 히스토그램이 약화되는 경우",
        "84.11-84.28 저항대에서 거절된 뒤 10일 지수이동평균 아래로 되밀리는 경우",
        "달러 강세, 유가 상승, 금리 인하 기대 후퇴가 동시에 지속되는 경우",
        "뉴스 흐름이 국제 분산과 상대 강세에서 글로벌 위험회피 또는 해외 성장 둔화로 바뀌는 경우",
        "지정학 악화가 지역 순환매가 아니라 전반적 위험자산 매도로 이어지는 경우",
        "RSI가 70 위로 과열되는데 거래량 확인이나 가격 안착이 동반되지 않는 경우"
      ],
      "rationale": "Ranks high despite lower score because it improves portfolio diversification versus concentrated AI and U.S. single-name exposure. Still a wait: price is near resistance after a sharp rebound, and high fallback plus missing intraday snapshot require confirmation before any add.",
      "data_health": {
        "coverage_score": 0.72,
        "vendor_calls": {
          "yfinance": 17,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 7,
        "quality_flags": [
          "token_usage_unavailable",
          "intraday_snapshot_missing_same_day"
        ],
        "legacy_rating": "OVERWEIGHT",
        "trigger_quality": 0.62,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.38,
        "thesis_multiplier": 1.108,
        "timing_now": 0.152,
        "timing_triggered": 0.38,
        "score_now": 0.056,
        "score_triggered": 0.1649
      },
      "decision_source": "RULE+DEEP+CODEX",
      "timing_readiness": 0.38,
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_action_wait",
        "near_resistance_zone",
        "breakout_not_confirmed",
        "pullback_retest_preferred",
        "elevated_rsi_after_sharp_rebound",
        "high_atr_requires_staged_sizing",
        "intraday_snapshot_missing",
        "diversification_benefit",
        "high_fallback_count"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "ETN",
      "display_name": "ETN",
      "priority": 3,
      "confidence": 0.72,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.0295,
      "action_if_triggered": "WATCH_TRIGGER",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.0295,
      "trigger_conditions": [
        "ETN이 407-408 위에서 일간 종가를 형성하고 거래량이 최근 1.8-2.25 million 주 범위를 상회하는지 확인",
        "386 부근 되돌림에서 거래량이 안정되고 가격 구조가 무너지지 않는지 확인",
        "386 아래 종가가 발생해 374-369로의 되돌림 위험이 커지는지 확인",
        "다음 실적의 수주잔고, 스위치기어 수요, 데이터센터 노출, 마진 지속성, 잉여현금흐름 전환에 대한 발언 확인",
        "407-408 돌파 후 407 위에서 후속 유지가 나오는지, 약한 거래량의 돌파 실패로 전환되는지 확인",
        "AI 데이터센터와 전력 인프라 수요가 ETN의 주문 성장과 프리미엄 밸류에이션을 계속 뒷받침하는 경우",
        "중전압 스위치기어 생산 확대와 Nebraska 시설 계획이 장기 공급 대응 능력을 강화하는 경우",
        "다음 실적에서 주문, 수주잔고, 마진, 잉여현금흐름 전환이 높은 기대치를 충족하거나 상회하는 경우",
        "407-408 위의 일간 종가가 최근 1.8-2.25 million 주 거래량 범위를 넘는 거래량과 함께 확인되어 415-420으로의 기술적 경로가 열리는 경우",
        "ETN이 369 아래로 종가 마감해 핵심 중기 지지 구간을 이탈하는 경우",
        "실적 또는 가이던스에서 마진 압박, 약한 주문, 부진한 잉여현금흐름 전환, 데이터센터·전력 인프라 수요 둔화가 확인되는 경우",
        "고금리, 에너지 충격, 인플레이션, 건설 또는 상업 투자 약세가 산업재 수요와 밸류에이션 배수를 동시에 압박하는 경우",
        "고점 부근 내부자 매도와 밸류에이션 우려가 커지는데 이를 상쇄할 운영 개선이나 수주 증거가 부족한 경우"
      ],
      "rationale": "Quality industrial and AI power infrastructure thesis remains constructive, with solid fundamentals and defined trigger levels. Kept below TSM and VXUS because it adds to the same AI-infrastructure concentration and is near 407-408 resistance with elevated RSI and volatility.",
      "data_health": {
        "coverage_score": 0.72,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 1
        },
        "fallback_count": 4,
        "quality_flags": [
          "token_usage_unavailable"
        ],
        "legacy_rating": "OVERWEIGHT",
        "trigger_quality": 0.66,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.38,
        "thesis_multiplier": 1.132,
        "timing_now": 0.152,
        "timing_triggered": 0.38,
        "score_now": 0.0614,
        "score_triggered": 0.1784
      },
      "decision_source": "RULE+DEEP+CODEX",
      "timing_readiness": 0.38,
      "reason_codes": [
        "bullish_medium_term_thesis",
        "entry_wait_not_actionable",
        "explicit_breakout_trigger",
        "volume_confirmation_required",
        "near_resistance_52_week_high",
        "elevated_volatility_and_rsi",
        "defined_support_and_invalidation_levels",
        "limited_data_coverage",
        "quality_fundamentals",
        "sector_concentration_risk",
        "high_fallback_count"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "VRT",
      "display_name": "VRT",
      "priority": 4,
      "confidence": 0.72,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.045,
      "action_if_triggered": "WATCH_TRIGGER",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.045,
      "trigger_conditions": [
        "312.46 위 종가와 최근 4.6M-5.0M 범위를 넘는 거래량 확인",
        "299.96 또는 295.11까지의 조정이 감소한 거래량으로 지지된 뒤 반등",
        "RSI가 과열권에서 식는 동안 가격이 10 EMA 283.14 위를 유지",
        "횡보 중 MACD 히스토그램이 양수를 유지",
        "다음 공시 또는 실적에서 수주잔고, 주문, 마진, BMarko 통합, 현금 전환 업데이트 확인",
        "금리, 달러, 인플레이션, 에너지 비용 변화가 고성장 산업재와 AI 인프라 밸류에이션 지지에 미치는 영향",
        "고거래량 돌파 후 후속 거래일에도 312.46 위를 유지하는지 여부",
        "2026-04-14 장중 고점 312.46 위에서 최근 4.6M-5.0M 거래량 범위를 넘는 거래량 동반 종가 확인",
        "다음 실적 또는 가이던스에서 매출 성장, 마진 확대, 수주잔고, 주문, forward EPS 경로가 확인되는 경우",
        "AI 데이터센터 전력·냉각 관련 신규 주문 또는 수주잔고 증가 증거",
        "BMarko 통합이 납품 역량과 모듈형 인프라 실행력을 개선한다는 증거",
        "S&P 500 편입 이후 기관 수급과 유동성 지지 지속",
        "단순 가격 추종이 아니라 추정치 상향을 동반한 추가 목표가 상향",
        "295.11 아래 종가 이후 299.96 회복 실패",
        "283.14 부근 10 EMA 하향 이탈과 MACD 모멘텀 약화",
        "AI 데이터센터 설비투자 둔화, 고객 주문 지연, 클라우드 설비투자 가이던스 하향",
        "공급망, 인건비, 통합 비용, 투입비 상승으로 인한 마진 압박",
        "2025-12-31의 운전자본 수혜가 반복되지 않아 자유현금흐름이 정상화 또는 악화되는 증거",
        "forward EPS 약 8.09 기대를 뒷받침하지 못하는 추정치 하향 또는 가이던스 리스크",
        "Barclays 목표가 300처럼 일부 목표가가 현 주가보다 낮은 상태에서 추가 상향 근거가 약해지는 경우"
      ],
      "rationale": "Strongest momentum narrative but higher risk: valuation is stretched, beta and ATR are high, RSI is overbought, and fallback count is elevated. Hold existing small exposure only; require clean 312.46 volume breakout or controlled pullback before reconsidering.",
      "data_health": {
        "coverage_score": 0.72,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 4,
          "ecos": 2,
          "opendart": 2,
          "alpha_vantage": 2
        },
        "fallback_count": 6,
        "quality_flags": [
          "token_usage_unavailable",
          "intraday_snapshot_missing_same_day"
        ],
        "legacy_rating": "OVERWEIGHT",
        "trigger_quality": 0.72,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.38,
        "thesis_multiplier": 1.156,
        "timing_now": 0.152,
        "timing_triggered": 0.38,
        "score_now": 0.0629,
        "score_triggered": 0.1822
      },
      "decision_source": "RULE+DEEP+CODEX",
      "timing_readiness": 0.38,
      "reason_codes": [
        "bullish_medium_term_thesis",
        "entry_action_wait",
        "developing_setup",
        "breakout_requires_volume_confirmation",
        "overbought_rsi",
        "extended_after_sharp_rebound",
        "high_volatility_beta_atr",
        "support_pullback_alternative",
        "valuation_stretched",
        "intraday_snapshot_missing",
        "thin_disclosure_coverage",
        "sector_concentration_risk",
        "high_fallback_count"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "ETHU",
      "display_name": "ETHU",
      "priority": 5,
      "confidence": 0.62,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.0085,
      "action_if_triggered": "WATCH_TRIGGER",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.0085,
      "trigger_conditions": [
        "ETHU가 26.00 위에서 종가를 만들고 거래량이 확장되는지 확인",
        "ETHU가 24.65의 10 EMA 부근으로 되돌린 뒤 지지와 반등을 보이는지 확인",
        "ETHU가 23.50-23.10 지지대에서 안정화되고 intraday 수요가 개선되는지 확인",
        "ETHU가 28.20-28.89 저항대에 접근할 때 일부 이익 실현 또는 추가 보유 여부 재검토",
        "Ether 현물 추세, ETHU ETF flows, NAV premium 또는 discount, 비용률, 추적오차 자료 갱신 확인",
        "ETHU가 25.90-26.00 위에서 일봉 종가를 만들고 거래량이 최근 5.4M-6.5M 주 수준을 뚜렷하게 상회하는 경우",
        "4월 13일 $7.4M 유입, 4월 10일 $3.48M 유입, 4월 8일 $2.26M 유입 이후 ETHU 자금 유입이 지속되는 경우",
        "Ether 현물 가격 회복과 broader crypto risk-on 흐름이 동시에 확인되는 경우",
        "FTSE 기준지수 전환이 상품 신뢰도와 기관 수요 개선으로 이어지는 경우",
        "약한 달러, 인플레이션 우려 완화, 금리 인하 기대 회복 등 거시 환경이 위험자산에 우호적으로 바뀌는 경우",
        "ETHU가 23.10 아래로 일봉 종가를 내며 VWMA와 50 SMA 지지대를 이탈하는 경우",
        "ETHU가 22.00 부근의 더 넓은 변동성 위험 경계를 하향 이탈하는 경우",
        "26.00 위 돌파가 약한 거래량으로 실패하고 빠르게 되돌려지는 경우",
        "Ether 약세나 crypto risk-off 충격이 재개되어 2x 구조의 손실 증폭 위험이 커지는 경우",
        "NAV 괴리, 추적오차, 유동성, 비용, 분배금 품질, 설정·환매 안정성에서 불리한 증거가 확인되는 경우"
      ],
      "rationale": "Lowest priority because it is a leveraged Ether product with path dependency, crypto risk-on sensitivity, and high fallback count. Existing small tactical exposure can be held, but new capital should wait for a 25.90-26.00 volume-confirmed close or support retest.",
      "data_health": {
        "coverage_score": 0.72,
        "vendor_calls": {
          "yfinance": 16,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 3
        },
        "fallback_count": 7,
        "quality_flags": [
          "token_usage_unavailable"
        ],
        "legacy_rating": "HOLD",
        "trigger_quality": 0.74,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.42,
        "thesis_multiplier": 1.072,
        "timing_now": 0.168,
        "timing_triggered": 0.42,
        "score_now": 0.0543,
        "score_triggered": 0.1608
      },
      "decision_source": "RULE+DEEP+CODEX",
      "timing_readiness": 0.42,
      "reason_codes": [
        "constructive_rebound_unconfirmed",
        "wait_for_daily_close_above_resistance",
        "volume_confirmation_required",
        "support_retest_alternative_trigger",
        "leveraged_etf_path_dependency",
        "clear_downside_invalidation",
        "entry_action_wait",
        "high_volatility_instrument",
        "high_fallback_count",
        "small_tactical_only"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "AAPL",
      "display_name": "AAPL",
      "priority": 6,
      "confidence": 0.64,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.0597,
      "action_if_triggered": "WATCH_TRIGGER",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.0597,
      "trigger_conditions": [
        "상승 전환 관찰: 262.20 위 일봉 종가, 거래량 확대, MACD 양수권 유지",
        "추가 확인: 265~266 안착 후 270 접근, RSI 과열 없이 추세 확장",
        "하락 재시험 관찰: 254.87 VWMA 또는 251~252 지지권에서 반등 캔들과 거래량 안정 확인",
        "위험 경보: 257.46 10일 EMA 이탈 후 260.86~262.19 재돌파 실패",
        "방어 실행: 251 아래 일봉 종가 또는 250.89 200일 SMA의 결정적 이탈",
        "이벤트 확인: Q2 FY26 실적, 관세와 투입비용 가이던스, Apple Pay 소송과 서비스 규제, Globalstar와 Amazon 조건 변화",
        "AAPL이 262.20 위에서 일봉 종가를 만들고 거래량이 확대되어 50일 SMA 260.86과 최근 고점 262.19를 동시에 회복하는 경우",
        "265~266으로 후속 안착하고 이후 270 재시험이 진행되며 RSI가 과열권으로 급등하지 않는 경우",
        "Q2 FY26 실적과 가이던스에서 iPhone 수요, 총마진, 관세와 투입비용 영향이 안정적으로 확인되는 경우",
        "후행 12개월 잉여현금흐름 1063억 달러와 순이익 1178억 달러 수준의 현금창출력이 서비스 성장과 자사주 매입으로 이어지는 경우",
        "Globalstar와 Amazon 관련 위성 연결성 변화가 Apple 생태계의 장기 옵션 가치를 키우면서 전략 통제력 훼손 없이 정리되는 경우",
        "AAPL이 251 아래로 일봉 종가를 만들고 200일 SMA 250.89 방어에 실패하는 경우",
        "262.20 위 돌파가 약한 거래량으로 실패한 뒤 10일 EMA 257.46을 이탈하는 경우",
        "MACD는 양수권을 유지하더라도 히스토그램 둔화가 이어지며 가격이 260.86~262.19 저항을 넘지 못하는 경우",
        "실적 가이던스가 iPhone 수요 둔화, 관세나 투입비용에 따른 마진 압박, 서비스 성장 둔화를 시사하는 경우",
        "Apple Pay 또는 broader services 규제가 서비스 monetization과 프리미엄 밸류에이션 신뢰를 훼손하는 경우",
        "금리 상승, 달러 강세, 유가와 인플레이션 압력, 프리미엄 소비 둔화가 동시에 악화되는 경우"
      ],
      "rationale": "AAPL has a constructive hold thesis supported by recovery above key short-term/long-term moving averages, positive MACD turn, cash generation, and franchise quality, but timing is not yet actionable for adding because price remains below the 260.86-262.19 supply zone. The preferred action is to hold existing shares and wait for either a daily close above 262.20 with volume expansion or a clean support retest near 254.87 VWMA / 251-252 before adding.",
      "data_health": {
        "coverage_score": 0.72,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 1
        },
        "fallback_count": 4,
        "quality_flags": [
          "token_usage_unavailable"
        ],
        "legacy_rating": "HOLD",
        "trigger_quality": 0.68,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.38,
        "thesis_multiplier": 1.096,
        "timing_now": 0.152,
        "timing_triggered": 0.38,
        "score_now": 0.0514,
        "score_triggered": 0.1535
      },
      "decision_source": "RULE+DEEP",
      "timing_readiness": 0.38,
      "reason_codes": [
        "held_position_hold_not_add",
        "constructive_medium_term_thesis",
        "entry_confirmation_missing",
        "below_near_term_resistance",
        "specific_breakout_trigger_defined",
        "volume_confirmation_required",
        "support_retest_alternative",
        "clear_risk_invalidation_level",
        "valuation_limits_sizing",
        "event_risk_pending"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "GLDM",
      "display_name": "GLDM",
      "priority": 7,
      "confidence": 0.3,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.0425,
      "action_if_triggered": "NONE",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.0425,
      "trigger_conditions": [],
      "rationale": "Held GLDM position has no current-run analysis, no trigger conditions, and no supporting news, macro, disclosure, or social coverage. The HOLD/WAIT stance is rule-only and should be treated as a data-gap watch rather than an actionable timing signal.",
      "data_health": {
        "coverage_score": 0.65,
        "vendor_calls": {},
        "fallback_count": 0,
        "quality_flags": [
          "missing_analysis_for_held_position"
        ],
        "legacy_rating": "UNKNOWN",
        "trigger_quality": 0.0,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.0,
        "thesis_multiplier": 0.7,
        "timing_now": 0.1,
        "timing_triggered": 0.0,
        "score_now": -0.0059,
        "score_triggered": 0.0
      },
      "decision_source": "RULE+DEEP",
      "timing_readiness": 0.0,
      "reason_codes": [
        "missing_analysis_for_held_position",
        "no_trigger_conditions",
        "rule_only_decision",
        "insufficient_data_coverage",
        "watch_only"
      ],
      "review_required": false,
      "trigger_type": "watch_only",
      "gate_reasons": [],
      "sector": null
    },
    {
      "canonical_ticker": "NVDA",
      "display_name": "NVDA",
      "priority": 8,
      "confidence": 0.3,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.1634,
      "action_if_triggered": "NONE",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.1634,
      "trigger_conditions": [],
      "rationale": "Held NVDA position has no current-run analysis, no trigger conditions, no event or breakout confirmation, and only a rule-only HOLD/WAIT interpretation. Timing is not actionable and should remain watch-only until fresh analysis or explicit triggers are available.",
      "data_health": {
        "coverage_score": 0.65,
        "vendor_calls": {},
        "fallback_count": 0,
        "quality_flags": [
          "missing_analysis_for_held_position"
        ],
        "legacy_rating": "UNKNOWN",
        "trigger_quality": 0.0,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.0,
        "thesis_multiplier": 0.7,
        "timing_now": 0.1,
        "timing_triggered": 0.0,
        "score_now": -0.0059,
        "score_triggered": 0.0
      },
      "decision_source": "RULE+DEEP",
      "timing_readiness": 0.0,
      "reason_codes": [
        "missing_analysis_for_held_position",
        "no_actionable_trigger",
        "rule_only_decision",
        "insufficient_data_coverage",
        "low_confidence"
      ],
      "review_required": false,
      "trigger_type": "watch_only",
      "gate_reasons": [],
      "sector": null
    },
    {
      "canonical_ticker": "RSP",
      "display_name": "RSP",
      "priority": 9,
      "confidence": 0.3,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.0149,
      "action_if_triggered": "NONE",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.0149,
      "trigger_conditions": [],
      "rationale": "Held RSP position has no current analysis, no investment plan, no portfolio manager decision, and no trigger conditions. The rule-only output suggests HOLD/WAIT purely due to missing analysis, so this is a watch-only neutral state rather than an actionable timing setup.",
      "data_health": {
        "coverage_score": 0.65,
        "vendor_calls": {},
        "fallback_count": 0,
        "quality_flags": [
          "missing_analysis_for_held_position"
        ],
        "legacy_rating": "UNKNOWN",
        "trigger_quality": 0.0,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.0,
        "thesis_multiplier": 0.7,
        "timing_now": 0.1,
        "timing_triggered": 0.0,
        "score_now": -0.0059,
        "score_triggered": 0.0
      },
      "decision_source": "RULE+DEEP",
      "timing_readiness": 0.0,
      "reason_codes": [
        "missing_analysis_for_held_position",
        "no_trigger_conditions",
        "rule_only_decision",
        "weak_setup_quality",
        "insufficient_data_coverage"
      ],
      "review_required": false,
      "trigger_type": "watch_only",
      "gate_reasons": [],
      "sector": null
    },
    {
      "canonical_ticker": "TSLA",
      "display_name": "TSLA",
      "priority": 10,
      "confidence": 0.3,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.0293,
      "action_if_triggered": "NONE",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.0293,
      "trigger_conditions": [],
      "rationale": "TSLA is a held position, but the run contains no substantive company analysis, investment plan, trigger conditions, or event/price confirmation. The only actionable interpretation is to maintain watch-only status until fresh analysis or explicit portfolio instructions are available.",
      "data_health": {
        "coverage_score": 0.57,
        "vendor_calls": {},
        "fallback_count": 0,
        "quality_flags": [
          "missing_analysis_for_held_position"
        ],
        "legacy_rating": "UNKNOWN",
        "trigger_quality": 0.0,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.0,
        "thesis_multiplier": 0.73,
        "timing_now": 0.1,
        "timing_triggered": 0.0,
        "score_now": -0.0062,
        "score_triggered": 0.0
      },
      "decision_source": "RULE+DEEP",
      "timing_readiness": 0.0,
      "reason_codes": [
        "missing_analysis_for_held_position",
        "no_trigger_conditions",
        "rule_only_decision",
        "insufficient_data_coverage",
        "watch_only"
      ],
      "review_required": true,
      "trigger_type": "watch_only",
      "gate_reasons": [],
      "sector": null
    },
    {
      "canonical_ticker": "GOOGL",
      "display_name": "GOOGL",
      "priority": 11,
      "confidence": 0.3,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.277,
      "action_if_triggered": "NONE",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.277,
      "trigger_conditions": [],
      "rationale": "GOOGL is a held position, but this run contains no substantive company analysis, portfolio manager decision, investment plan, news, disclosures, macro context, or trigger conditions. The HOLD/WAIT stance appears rule-only and is best treated as a watch-only placeholder rather than an actionable timing signal.",
      "data_health": {
        "coverage_score": 0.57,
        "vendor_calls": {},
        "fallback_count": 0,
        "quality_flags": [
          "missing_analysis_for_held_position"
        ],
        "legacy_rating": "UNKNOWN",
        "trigger_quality": 0.0,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.0,
        "thesis_multiplier": 0.7,
        "timing_now": 0.1,
        "timing_triggered": 0.0,
        "score_now": -0.0064,
        "score_triggered": 0.0
      },
      "decision_source": "RULE+DEEP",
      "timing_readiness": 0.0,
      "reason_codes": [
        "missing_analysis_for_held_position",
        "rule_only_decision",
        "no_trigger_conditions",
        "insufficient_data_coverage",
        "low_confidence"
      ],
      "review_required": true,
      "trigger_type": "watch_only",
      "gate_reasons": [],
      "sector": null
    },
    {
      "canonical_ticker": "LHX",
      "display_name": "LHX",
      "priority": 12,
      "confidence": 0.3,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.0266,
      "action_if_triggered": "NONE",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.0266,
      "trigger_conditions": [],
      "rationale": "Held LHX position has no current analysis, no trigger conditions, no news/disclosure/macro coverage, and only a rule-only HOLD interpretation. There is not enough evidence to treat the thesis as constructive or timing-ready.",
      "data_health": {
        "coverage_score": 0.57,
        "vendor_calls": {},
        "fallback_count": 0,
        "quality_flags": [
          "missing_analysis_for_held_position"
        ],
        "legacy_rating": "UNKNOWN",
        "trigger_quality": 0.0,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.0,
        "thesis_multiplier": 0.7,
        "timing_now": 0.1,
        "timing_triggered": 0.0,
        "score_now": -0.0064,
        "score_triggered": 0.0
      },
      "decision_source": "RULE+DEEP",
      "timing_readiness": 0.0,
      "reason_codes": [
        "missing_analysis_for_held_position",
        "no_trigger_defined",
        "rule_only_decision",
        "insufficient_data_coverage"
      ],
      "review_required": true,
      "trigger_type": "watch_only",
      "gate_reasons": [],
      "sector": null
    },
    {
      "canonical_ticker": "GEV",
      "display_name": "GEV",
      "priority": 13,
      "confidence": 0.68,
      "action_now": "WATCH",
      "delta_krw_now": 0,
      "target_weight_now": 0.0,
      "action_if_triggered": "WATCH_TRIGGER",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.0,
      "trigger_conditions": [
        "돌파 유지 조건: 1007.38 위 일간 종가, 최근 1.6M-2.2M 범위를 넘는 거래량, RSI의 약세 반전 부재",
        "되돌림 진입 조건: 944-952 테스트 후 지지 확인, 이어서 10일 EMA 위 강한 종가 회복",
        "위험 축소 조건: 910 VWMA 하향 이탈 또는 가격이 10일 EMA 아래에 있는 상태에서 MACD 히스토그램이 2거래일 연속 수축",
        "실적 점검 조건: 영업마진, 자유현금흐름 반복성, deferred revenue 전환, inventory, receivables, current ratio의 개선 여부",
        "법적 점검 조건: Vineyard Wind 관련 신규 공시나 신뢰 가능한 보도에서 853 million 청구를 넘어서는 손실 범위가 확인되는지 여부",
        "GEV가 1007.38 위에서 일간 종가를 형성하고 거래량이 최근 1.6M-2.2M 범위를 뚜렷하게 상회하며 MACD 히스토그램이 재확대되는 경우",
        "AI 데이터센터 전력 수요가 GEV의 가스터빈, 송배전 장비, 변압기 주문으로 실제 전환되고 있다는 추가 증거",
        "5년 이상으로 언급된 가스터빈 공급 제약이 수주잔고 가시성, 가격 결정력, 마진 개선으로 연결되는 경우",
        "Prolec 인수 후 미국 변압기 생산능력 확대와 통합 진척이 확인되는 경우",
        "다음 실적에서 영업마진 개선, 반복 가능한 자유현금흐름, deferred revenue 25.774 billion의 건전한 매출 전환이 확인되는 경우",
        "933-945 아래 종가 이탈 후 10일 EMA 회복 실패와 MACD 히스토그램 수축 지속",
        "910 VWMA 하향 이탈이 상승 거래량과 함께 발생하는 경우",
        "852-853 50일 SMA의 결정적 이탈로 중기 상승 추세가 훼손되는 경우",
        "Vineyard Wind의 853 million 비용 청구가 대규모 충당금, 계약 손실, 광범위한 품질 문제로 확대되는 경우",
        "다음 분기 자유현금흐름이 운전자본 반전 이후 약화되고 마진 전환 또는 backlog 전환 품질이 기대에 못 미치는 경우",
        "금리, 인플레이션, 달러 강세, AI 인프라 지출 기대 약화로 고밸류에이션 산업재 멀티플이 압박받는 경우"
      ],
      "rationale": "GEV has a constructive medium-term thesis tied to AI/data-center power demand, turbine scarcity, grid and transformer bottlenecks, and an intact trend above key moving averages. Timing is not actionable now because the stock is extended into the 999.43-1007.38 resistance area after a sharp run, with RSI near overbought, high ATR, fading high-area volume, and slight MACD histogram weakening. Entry should wait for a confirmed daily close above 1007.38 with stronger volume and renewed momentum, or a controlled pullback that holds 944-952 and reclaims the 10-day EMA.",
      "data_health": {
        "coverage_score": 0.72,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 1
        },
        "fallback_count": 4,
        "quality_flags": [
          "token_usage_unavailable"
        ],
        "legacy_rating": "OVERWEIGHT",
        "trigger_quality": 0.78,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.36,
        "thesis_multiplier": 1.132,
        "timing_now": 0.144,
        "timing_triggered": 0.36,
        "score_now": -0.0462,
        "score_triggered": 0.1197
      },
      "decision_source": "RULE+DEEP",
      "timing_readiness": 0.36,
      "reason_codes": [
        "bullish_medium_term_thesis",
        "entry_wait_explicit",
        "breakout_not_confirmed",
        "extended_near_resistance",
        "momentum_volume_confirmation_needed",
        "pullback_support_alternative",
        "valuation_and_legal_risks"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count",
        "wait_heavy_batch_reduce_immediate_entries"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "FANG",
      "display_name": "FANG",
      "priority": 14,
      "confidence": 0.62,
      "action_now": "WATCH",
      "delta_krw_now": 0,
      "target_weight_now": 0.0,
      "action_if_triggered": "WATCH_TRIGGER",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.0,
      "trigger_conditions": [
        "190.01 위 일봉 종가와 RSI 50 회복.",
        "193.36 VWMA 위 일봉 종가와 최근 반등 거래량을 넘어서는 수급 개선.",
        "MACD 히스토그램이 여러 세션 연속 덜 부정적으로 전환.",
        "180.26 부근 재시험에서 지지 확인, 175.14 미이탈.",
        "원유가 지정학 헤드라인 이후 상승분을 유지하는지 여부.",
        "Q1 실적 발표일, capex 가이던스, 자유현금흐름, 부채 감축, 주주환원 발언.",
        "197.79-202.19 및 204.91 저항대 접근 시 거래량과 모멘텀의 동반 여부.",
        "190.01 위 일봉 종가와 RSI 50 회복으로 단기 매수 주도권이 복원되는 신호.",
        "VWMA 193.36 위 안착, 거래량 개선, MACD 히스토그램의 연속적인 덜 부정적인 전환.",
        "Strait of Hormuz, 공급 차질, $100 유가 가능성 등 지정학 리스크가 실제 원유 가격 강세로 이어지는 경우.",
        "Q1 결과나 가이던스에서 생산, 비용 통제, 자본 규율, 자유현금흐름 지속성이 확인되는 경우.",
        "2051년과 2052년 만기 장기채 공개매수, 순부채 감소 같은 자본구조 개선이 계속되는 경우.",
        "UBS의 245달러 목표가처럼 긍정적 애널리스트 수정이 Roth의 중립 하향과 200달러 목표가 우려를 상쇄하는 경우.",
        "175.14 최근 저점 이탈, 특히 거래량 증가가 동반될 때.",
        "50일선 180.26 방어 실패 후 낮은 고점이 형성되는 흐름.",
        "원유 가격 반락으로 FANG의 현금흐름과 주주환원 기대가 약해지는 경우.",
        "Q1 실적에서 두 자릿수 이익 압박, 마진 악화, capex 부담, 생산 가이던스 약화가 확인되는 경우.",
        "2026년 3월 이후 고위 임원과 주요 보유자 매도, SGF/FANG HOLDINGS의 1,265만 주 처분 같은 수급 부담이 추가로 확대되는 경우.",
        "매출이 39.06억 달러에서 33.41억 달러로 감소하고 영업이익이 12.53억 달러에서 7.76억 달러로 낮아진 흐름이 지속되는 경우."
      ],
      "rationale": "FANG has a constructive medium-term thesis supported by price remaining above the 50-day and 200-day averages, cash flow, debt reduction, and potential oil/geopolitical upside. Timing is not ready because price remains below the 10-day EMA around 190.01 and VWMA around 193.36, RSI is below 50, MACD histogram is negative, and the plan explicitly calls for waiting before any new entry. Actionability depends on daily close confirmation above 190.01 with RSI recovery, preferably above 193.36 with volume and MACD improvement.",
      "data_health": {
        "coverage_score": 0.72,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 5,
        "quality_flags": [
          "token_usage_unavailable"
        ],
        "legacy_rating": "HOLD",
        "trigger_quality": 0.72,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.34,
        "thesis_multiplier": 1.072,
        "timing_now": 0.136,
        "timing_triggered": 0.34,
        "score_now": -0.0579,
        "score_triggered": 0.0976
      },
      "decision_source": "RULE+DEEP",
      "timing_readiness": 0.34,
      "reason_codes": [
        "bullish_thesis_but_wait_entry",
        "below_near_term_moving_averages",
        "momentum_not_confirmed",
        "explicit_breakout_trigger_required",
        "small_starter_only_if_confirmed",
        "oil_beta_and_event_risk",
        "hard_invalidation_defined"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count",
        "wait_heavy_batch_reduce_immediate_entries"
      ],
      "sector": null
    }
  ],
  "portfolio_risks": [
    "GLDM: missing analysis; defaulting to NEUTRAL/WAIT before portfolio action translation.",
    "GOOGL: missing analysis; defaulting to NEUTRAL/WAIT before portfolio action translation.",
    "LHX: missing analysis; defaulting to NEUTRAL/WAIT before portfolio action translation.",
    "NVDA: missing analysis; defaulting to NEUTRAL/WAIT before portfolio action translation.",
    "RSP: missing analysis; defaulting to NEUTRAL/WAIT before portfolio action translation.",
    "TSLA: missing analysis; defaulting to NEUTRAL/WAIT before portfolio action translation.",
    "구성적이지만 즉시 실행 가능한 후보가 적음"
  ],
  "data_health_summary": {
    "decision_distribution": {
      "HOLD": 3,
      "OVERWEIGHT": 5
    },
    "stance_distribution": {
      "BULLISH": 8
    },
    "entry_action_distribution": {
      "WAIT": 8
    },
    "avg_confidence": 0.6725,
    "company_news_zero_ratio": 0.0,
    "snapshot_health": "VALID",
    "warning_flags": [
      "GLDM: missing analysis; defaulting to NEUTRAL/WAIT before portfolio action translation.",
      "GOOGL: missing analysis; defaulting to NEUTRAL/WAIT before portfolio action translation.",
      "LHX: missing analysis; defaulting to NEUTRAL/WAIT before portfolio action translation.",
      "NVDA: missing analysis; defaulting to NEUTRAL/WAIT before portfolio action translation.",
      "RSP: missing analysis; defaulting to NEUTRAL/WAIT before portfolio action translation.",
      "TSLA: missing analysis; defaulting to NEUTRAL/WAIT before portfolio action translation."
    ],
    "actionable_now_count": 0,
    "triggerable_candidates_count": 0,
    "watch_candidates_count": 2,
    "held_watch_count": 0,
    "review_required_count": 11,
    "rule_only_fallback_count": 0
  }
}