{
  "snapshot_id": "20260416T081401_kis_68944660-01",
  "snapshot_health": "VALID",
  "account_value_krw": 19826671,
  "cash_diagnostics": {
    "summary_fields_present": [
      "buy_mgn_amt",
      "cma_evlu_amt",
      "dncl_amt",
      "etc_mgna",
      "evlu_amt_smtl",
      "evlu_amt_smtl_amt",
      "evlu_erng_rt1",
      "evlu_pfls_amt_smtl",
      "frcr_evlu_tota",
      "frcr_use_psbl_amt",
      "mgna_tota",
      "pchs_amt_smtl",
      "pchs_amt_smtl_amt",
      "tot_asst_amt",
      "tot_dncl_amt",
      "tot_evlu_pfls_amt",
      "tot_frcr_cblc_smtl",
      "tot_loan_amt",
      "ustl_buy_amt_smtl",
      "ustl_sll_amt_smtl",
      "wdrw_psbl_tot_amt"
    ],
    "parsed_numeric_fields": {
      "dncl_amt": 0,
      "tot_dncl_amt": 1000010,
      "wdrw_psbl_tot_amt": 694175,
      "frcr_evlu_tota": 1996986,
      "pchs_amt_smtl_amt": 16275738,
      "evlu_amt_smtl_amt": 16524033,
      "tot_asst_amt": 19826671,
      "buy_mgn_amt": 0,
      "frcr_use_psbl_amt": 1996986
    },
    "positions_market_value_krw": 16524033,
    "selected_fields": {
      "settled_cash": "dncl_amt",
      "available_cash": "wdrw_psbl_tot_amt",
      "buying_power": "frcr_use_psbl_amt",
      "total_equity": "tot_asst_amt"
    }
  },
  "decision_distribution": {
    "HOLD": 3,
    "OVERWEIGHT": 5
  },
  "legacy_rating_distribution": {
    "HOLD": 3,
    "OVERWEIGHT": 5
  },
  "stance_distribution": {
    "BULLISH": 8
  },
  "entry_action_distribution": {
    "WAIT": 8
  },
  "translated_action_distribution": {
    "WATCH_TRIGGER": 8
  },
  "portfolio_summary_counts": {
    "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": 12,
    "rule_only_fallback_count": 0
  },
  "warnings": [
    "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."
  ],
  "semantic_verdicts": [
    {
      "canonical_ticker": "AAPL",
      "display_name": "AAPL",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.66,
      "timing_readiness": 0.38,
      "trigger_type": "watch_only",
      "trigger_horizon": "days_to_weeks",
      "trigger_quality": 0.62,
      "thesis_state": "constructive_but_not_confirmed",
      "semantic_summary": "AAPL thesis is constructive for an existing hold, supported by recovery above the 200-day SMA and 10-day EMA plus improving MACD, but timing is not yet actionable because price remains below the 50-day SMA and recent resistance near 260.86-262.19. New adds require confirmation via a daily close above 262.20 with stronger volume, or a controlled support retest near 254.87 VWMA / 251-252 with clear reversal quality.",
      "counter_evidence": [
        "Current price around 259.20 remains below 50-day SMA 260.86 and recent high/resistance 262.19.",
        "Entry action is explicitly WAIT and setup quality is DEVELOPING, not confirmed.",
        "Valuation is demanding with limited safety margin, including trailing PER 32.8, forward PER 27.8, and PBR 43.15.",
        "A daily close below 251 or failure to defend the 200-day SMA near 250.89 would invalidate tactical exposure.",
        "Earnings, tariff/input-cost pressure, services regulation, macro rates, dollar strength, and premium consumer demand remain unresolved event risks."
      ],
      "reason_codes": [
        "held_position_hold_not_add",
        "constructive_medium_term_thesis",
        "breakout_not_confirmed",
        "below_near_term_resistance",
        "volume_confirmation_required",
        "support_retest_alternative",
        "valuation_limits_sizing",
        "event_risks_unresolved",
        "clear_downside_invalidation"
      ],
      "review_required": false
    },
    {
      "canonical_ticker": "ETHU",
      "display_name": "ETHU",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.62,
      "timing_readiness": 0.38,
      "trigger_type": "breakout_confirmation",
      "trigger_horizon": "days_to_weeks",
      "trigger_quality": 0.68,
      "thesis_state": "constructive_but_not_confirmed",
      "semantic_summary": "ETHU has a constructive tactical rebound thesis, with price back above short-term averages, improving MACD, non-overbought RSI, and some recent inflow evidence. Timing is not confirmed because the plan explicitly waits for a daily close above 25.90-26.00 with stronger volume, or a controlled support test near 24.65 or 23.50-23.10 before adding. Existing small exposure can be held, but new/additional action remains conditional.",
      "counter_evidence": [
        "Entry action is WAIT and setup quality is DEVELOPING, not confirmed.",
        "ETHU remains far below the 200 SMA near 79 and the 50 SMA is still falling.",
        "25.90-26.00 resistance has not yet been cleared with volume confirmation.",
        "2x Ether structure increases path dependency, gap risk, and loss amplification.",
        "Data quality is imperfect, with multiple vendor fallbacks and no intraday snapshot used."
      ],
      "reason_codes": [
        "constructive_rebound_setup",
        "entry_wait_state",
        "breakout_not_confirmed",
        "specific_price_volume_trigger",
        "leveraged_etf_risk",
        "support_invalidation_defined",
        "data_fallbacks_present"
      ],
      "review_required": false
    },
    {
      "canonical_ticker": "ETN",
      "display_name": "ETN",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.72,
      "timing_readiness": 0.42,
      "trigger_type": "breakout_confirmation",
      "trigger_horizon": "days_to_weeks",
      "trigger_quality": 0.78,
      "thesis_state": "constructive_but_not_confirmed",
      "semantic_summary": "ETN has a constructive medium-term thesis supported by trend recovery, improving MACD, strong recent fundamentals, FCF, lower net debt, and AI/data-center power infrastructure demand. Timing is not yet actionable for adding because the plan explicitly says WAIT near 407-408 resistance and the 52-week high; confirmation requires a volume-backed daily close above 407-408 or a controlled pullback that stabilizes near 386.",
      "counter_evidence": [
        "Entry action is WAIT, not buy or add now.",
        "Price is near 407-408 resistance and the 52-week high, limiting immediate asymmetry.",
        "RSI around 67 and ATR around 12.7 indicate elevated momentum/volatility risk.",
        "Upside target toward 415-420 is modest versus downside references at 386, 374-369, and 369 invalidation.",
        "Earnings/order/backlog/margin/FCF confirmation is still pending, and data coverage is limited with only one company news item and no disclosures."
      ],
      "reason_codes": [
        "bullish_medium_term_thesis",
        "entry_wait_required",
        "breakout_needs_volume_confirmation",
        "near_resistance_and_highs",
        "pullback_entry_alternative",
        "earnings_confirmation_pending",
        "explicit_invalidation_levels",
        "limited_data_coverage"
      ],
      "review_required": false
    },
    {
      "canonical_ticker": "FANG",
      "display_name": "FANG",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.62,
      "timing_readiness": 0.36,
      "trigger_type": "breakout_confirmation",
      "trigger_horizon": "days_to_weeks",
      "trigger_quality": 0.68,
      "thesis_state": "constructive_but_not_confirmed",
      "semantic_summary": "Medium-term thesis is constructive because FANG remains above key longer-term moving averages and fundamentals/free cash flow support the bullish stance, but immediate timing is not confirmed. Current price is still below the 10-day EMA and VWMA, RSI remains below 50, and MACD histogram is negative, so the appropriate state is watch-only until a daily close above 190.01 with RSI recovery, preferably above 193.36 with volume and MACD improvement.",
      "counter_evidence": [
        "Current price remains below the 10-day EMA near 190.01 and VWMA near 193.36.",
        "RSI is below 50 and MACD histogram is negative, showing short-term momentum has not recovered.",
        "Recent rebound has not fully offset the prior high-volume selloff.",
        "Oil sensitivity, elevated ATR, earnings risk, weak liquidity metrics, and potential insider or major-holder selling argue against full-size entry before confirmation.",
        "Break below 175.14 or failure of 180.26 support would invalidate the tactical recovery setup."
      ],
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_wait_required",
        "momentum_not_confirmed",
        "below_near_term_averages",
        "defined_breakout_triggers",
        "small_starter_only_if_triggered",
        "oil_beta_and_event_risk",
        "hard_invalidation_defined"
      ],
      "review_required": false
    },
    {
      "canonical_ticker": "GEV",
      "display_name": "GEV",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.72,
      "timing_readiness": 0.34,
      "trigger_type": "breakout_confirmation",
      "trigger_horizon": "days_to_weeks",
      "trigger_quality": 0.66,
      "thesis_state": "constructive_but_not_confirmed",
      "semantic_summary": "GEV has a constructive medium-term thesis tied to AI/data-center power demand, gas turbine scarcity, grid and transformer bottlenecks, and a still-intact uptrend above key moving averages. However, immediate entry is not ready: price is extended into the 999.43-1007.38 resistance zone after a sharp run, with RSI near overbought, high ATR, fading high-area volume, and slight MACD histogram softening. Action should remain watch-only until either a confirmed daily close above 1007.38 with volume and momentum expansion, or a controlled pullback holds 944-952 and reclaims the 10-day EMA.",
      "counter_evidence": [
        "Entry action is explicitly WAIT and suggested action now is WATCH, not buy.",
        "Price is near 999.43-1007.38 resistance after a rapid move from 817.35 to 991.12.",
        "RSI 68.42, ATR around 38.56, fading volume near highs, and slight MACD histogram weakening argue against chasing.",
        "High valuation metrics and Vineyard Wind, Prolec integration, working-capital, and free-cash-flow repeatability risks limit position aggressiveness.",
        "No intraday snapshot was used and disclosures coverage is zero, reducing confirmation quality."
      ],
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_wait_state",
        "breakout_not_confirmed",
        "extended_near_resistance",
        "momentum_volume_confirmation_needed",
        "pullback_support_alternative",
        "valuation_and_execution_risks",
        "limited_disclosure_coverage"
      ],
      "review_required": false
    },
    {
      "canonical_ticker": "GLDM",
      "display_name": "GLDM",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.0,
      "timing_readiness": 0.0,
      "trigger_type": "watch_only",
      "trigger_horizon": "unknown",
      "trigger_quality": 0.0,
      "thesis_state": "low_quality",
      "semantic_summary": "GLDM is a held position, but this run contains no substantive instrument analysis, no trigger conditions, and no investment or portfolio manager decision. The only supported action is to maintain watch/hold status pending proper analysis.",
      "counter_evidence": [
        "Held position has missing_analysis_for_held_position quality flag.",
        "No company news, disclosures, social, macro, structured decision, investment plan, or trigger conditions are available.",
        "Decision source is RULE_ONLY with low confidence and weak setup quality."
      ],
      "reason_codes": [
        "missing_analysis_for_held_position",
        "no_actionable_trigger",
        "rule_only_decision",
        "insufficient_data_coverage",
        "weak_setup_quality"
      ],
      "review_required": false
    },
    {
      "canonical_ticker": "GOOGL",
      "display_name": "GOOGL",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.0,
      "timing_readiness": 0.0,
      "trigger_type": "watch_only",
      "trigger_horizon": "unknown",
      "trigger_quality": 0.0,
      "thesis_state": "neutral_watch",
      "semantic_summary": "Held GOOGL position has no current-run analysis, no trigger conditions, and rule-only HOLD guidance. The table should treat this as a neutral watch/maintain state rather than an actionable timing setup.",
      "counter_evidence": [
        "Missing analysis for a held position",
        "No company news, disclosures, social, or macro coverage in the candidate context",
        "No trigger conditions or triggered action are provided",
        "Decision source is rule-only with low confidence"
      ],
      "reason_codes": [
        "missing_analysis_for_held_position",
        "no_trigger_conditions",
        "rule_only_decision",
        "insufficient_data_coverage",
        "neutral_hold"
      ],
      "review_required": false
    },
    {
      "canonical_ticker": "LHX",
      "display_name": "LHX",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.0,
      "timing_readiness": 0.0,
      "trigger_type": "watch_only",
      "trigger_horizon": "unknown",
      "trigger_quality": 0.0,
      "thesis_state": "low_quality",
      "semantic_summary": "Held LHX position has no current analysis, no trigger conditions, no investment plan, and zero data coverage in this run. The HOLD/WAIT posture is rule-only maintenance rather than a confirmed constructive thesis or actionable timing setup.",
      "counter_evidence": [
        "Missing analysis for held position quality flag is present.",
        "Company news, disclosures, social, and macro coverage are all absent or unavailable.",
        "No trigger conditions, structured decision, or portfolio manager decision were provided."
      ],
      "reason_codes": [
        "missing_analysis_for_held_position",
        "no_trigger_conditions",
        "rule_only_decision",
        "zero_data_coverage",
        "held_position_watch_only"
      ],
      "review_required": true
    },
    {
      "canonical_ticker": "NVDA",
      "display_name": "NVDA",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.0,
      "timing_readiness": 0.0,
      "trigger_type": "watch_only",
      "trigger_horizon": "unknown",
      "trigger_quality": 0.0,
      "thesis_state": "low_quality",
      "semantic_summary": "Held NVDA position has no current analysis, no trigger conditions, no structured decision, and zero data coverage in this run. The provided HOLD/WAIT stance is rule-only preservation rather than an actionable thesis.",
      "counter_evidence": [
        "No company news, disclosures, social, macro, structured decision, or investment plan were provided.",
        "Quality flag indicates missing analysis for a held position.",
        "Trigger conditions are empty and suggested action if triggered is NONE."
      ],
      "reason_codes": [
        "missing_analysis_for_held_position",
        "no_trigger_conditions",
        "rule_only_decision",
        "zero_data_coverage",
        "held_position_watch_only"
      ],
      "review_required": true
    },
    {
      "canonical_ticker": "RSP",
      "display_name": "RSP",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.0,
      "timing_readiness": 0.0,
      "trigger_type": "watch_only",
      "trigger_horizon": "unknown",
      "trigger_quality": 0.0,
      "thesis_state": "low_quality",
      "semantic_summary": "Held RSP position has no current analysis, no trigger conditions, no news/macro coverage, and only a rule-only HOLD interpretation. This is not an actionable thesis; it should remain watch-only pending proper review or fresh analysis.",
      "counter_evidence": [
        "Missing analysis for a held position",
        "No structured decision or investment plan is available",
        "No trigger conditions were provided",
        "Data coverage is effectively zero across news, disclosures, social, and macro inputs"
      ],
      "reason_codes": [
        "missing_analysis_for_held_position",
        "no_trigger_conditions",
        "rule_only_decision",
        "insufficient_data_coverage",
        "watch_only"
      ],
      "review_required": true
    },
    {
      "canonical_ticker": "TSLA",
      "display_name": "TSLA",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.0,
      "timing_readiness": 0.0,
      "trigger_type": "watch_only",
      "trigger_horizon": "unknown",
      "trigger_quality": 0.0,
      "thesis_state": "low_quality",
      "semantic_summary": "Held TSLA position has no current analysis, no trigger conditions, no investment plan, and zero data coverage in this run. Existing HOLD/WAIT stance is rule-only and should be treated as status quo monitoring rather than an actionable thesis.",
      "counter_evidence": [
        "Missing analysis for a held position",
        "No company news, disclosures, social, or macro context available",
        "No trigger conditions or triggered action defined",
        "Decision source is rule-only with low confidence"
      ],
      "reason_codes": [
        "missing_analysis_for_held_position",
        "no_actionable_trigger",
        "rule_only_decision",
        "insufficient_data_coverage",
        "low_confidence_hold"
      ],
      "review_required": true
    },
    {
      "canonical_ticker": "TSM",
      "display_name": "TSM",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.74,
      "timing_readiness": 0.38,
      "trigger_type": "breakout_confirmation",
      "trigger_horizon": "days_to_weeks",
      "trigger_quality": 0.72,
      "thesis_state": "constructive_but_not_confirmed",
      "semantic_summary": "TSM thesis is constructive for an existing/partial overweight: fundamentals, AI demand evidence, margins, and trend recovery are supportive. Timing is not yet actionable for adding because the plan explicitly says WAIT, price is near Bollinger/prior-high resistance, and confirmation is required via either a volume-backed close above 378.90 or a controlled pullback that holds the 359.54-351.56 support zone.",
      "counter_evidence": [
        "Entry action is WAIT and setup quality is DEVELOPING, not confirmed.",
        "Price has already rebounded sharply and is near 378.90 Bollinger resistance and the 384.67-386.64 prior high zone.",
        "Recent volume has reportedly faded toward the 9 million share range after the April 8 spike, so breakout volume confirmation is still missing.",
        "Elevated ATR and earnings/guidance expectations increase gap and chase risk.",
        "A close below 359.54 or two sessions below 351.56 would weaken the timing and medium-term trend case."
      ],
      "reason_codes": [
        "bullish_thesis_existing_position",
        "entry_action_wait",
        "developing_setup",
        "breakout_needs_volume_confirmation",
        "near_resistance_chase_risk",
        "support_pullback_alternative",
        "event_guidance_confirmation_needed",
        "risk_lines_defined"
      ],
      "review_required": false
    },
    {
      "canonical_ticker": "VRT",
      "display_name": "VRT",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.76,
      "timing_readiness": 0.42,
      "trigger_type": "breakout_confirmation",
      "trigger_horizon": "days_to_weeks",
      "trigger_quality": 0.72,
      "thesis_state": "constructive_but_not_confirmed",
      "semantic_summary": "Medium-term VRT thesis is constructive, supported by trend, momentum, AI data-center demand, improving fundamentals, S&P 500 inclusion, acquisition optionality, and analyst support. Timing is not yet actionable for adding because the stock is extended after a sharp rebound, RSI is overbought, valuation is demanding, and the plan explicitly says to wait for either a volume-backed close above 312.46 or a controlled pullback holding 299.96/295.11 before adding.",
      "counter_evidence": [
        "Entry action is WAIT and setup quality is DEVELOPING, not confirmed.",
        "Price has rebounded about 32.6% from the 234.22 area to 310.51, creating poor short-term asymmetry.",
        "RSI around 70.99 and ATR 13.92 indicate overbought and volatile conditions.",
        "Current price is extended above the 10 EMA at 283.14 and 50 SMA at 250.12.",
        "Valuation is demanding, with cited trailing P/E near 90 and P/B near 29.9.",
        "Some target-price evidence, such as Barclays at 300, is below the latest close.",
        "Intraday same-day snapshot is missing and disclosure coverage is weak."
      ],
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_action_wait",
        "breakout_not_confirmed",
        "volume_confirmation_required",
        "overbought_after_sharp_rebound",
        "pullback_support_alternative",
        "valuation_risk_high",
        "held_position_hold_not_add",
        "data_quality_intraday_gap"
      ],
      "review_required": false
    },
    {
      "canonical_ticker": "VXUS",
      "display_name": "VXUS",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.68,
      "timing_readiness": 0.42,
      "trigger_type": "watch_only",
      "trigger_horizon": "days_to_weeks",
      "trigger_quality": 0.58,
      "thesis_state": "constructive_but_not_confirmed",
      "semantic_summary": "VXUS has a constructive medium-term overweight thesis, supported by recovery above key moving averages, positive MACD, and portfolio diversification logic. Timing is not yet actionable because the recommendation is WAIT, price is near breakout/resistance levels, RSI has risen quickly, ATR is elevated, and adds require either a pullback-and-rebound around 80.10-79.70 or confirmed breakout above 82.90 with volume and follow-through.",
      "counter_evidence": [
        "Entry action is explicitly WAIT, not buy/add now.",
        "Price is near 82.90 breakout threshold and 84.11-84.28 resistance, limiting immediate reward-to-risk.",
        "RSI has risen to 66.06 after a sharp rebound, raising overextension risk.",
        "ATR is elevated and intraday same-day snapshot is missing.",
        "Macro risks include dollar strength, oil, rate-cut repricing, and geopolitical escalation."
      ],
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_action_wait",
        "trigger_required_before_add",
        "near_resistance_zone",
        "elevated_momentum_and_volatility",
        "held_position_hold_now",
        "data_quality_intraday_gap"
      ],
      "review_required": false
    }
  ],
  "action_judge": {
    "status": "success",
    "provider": "codex",
    "model": "gpt-5.4",
    "priority_order": [
      "ETN",
      "VRT",
      "VXUS",
      "TSM",
      "AAPL"
    ],
    "portfolio_note": "All provided candidates are WAIT/HOLD with WATCH_TRIGGER translation, while available cash of 694,175 KRW is below the 2,500,000 KRW minimum cash buffer. No immediate adds should be prioritized. Re-ranking favors clearer trigger quality and diversification, while penalizing AI infrastructure/semiconductor concentration, overbought resistance setups, high fallback counts, and missing intraday/data-quality flags.",
    "reason_by_ticker": {
      "ETN": {
        "summary": "Best relative watch candidate: constructive AI power infrastructure thesis, highest trigger quality in the batch, clearer breakout/pullback levels, and somewhat cleaner data than VRT/VXUS. Still HOLD now because price is near 407-408 resistance and entry remains explicitly WAIT.",
        "reason_codes": [
          "constructive_medium_term_thesis",
          "highest_trigger_quality",
          "entry_action_wait",
          "near_resistance_and_highs",
          "volume_confirmation_required",
          "pullback_entry_alternative",
          "high_fallback_count",
          "cash_buffer_breach_no_add"
        ],
        "review_required": true
      },
      "VRT": {
        "summary": "Strong medium-term thesis and highest current score, but demoted behind ETN for overbought rebound, demanding valuation, high fallback count, and concentration overlap with AI infrastructure. Maintain held position only; add only after confirmed volume breakout or controlled support pullback.",
        "reason_codes": [
          "constructive_medium_term_thesis",
          "entry_action_wait",
          "overbought_after_sharp_rebound",
          "valuation_risk_high",
          "volume_confirmation_required",
          "ai_infrastructure_concentration",
          "high_fallback_count",
          "held_position_hold_not_add",
          "cash_buffer_breach_no_add"
        ],
        "review_required": true
      },
      "VXUS": {
        "summary": "Diversification value lifts VXUS above more concentrated tech/AI names despite weaker trigger quality and data flags. It remains a watch-only HOLD because price is near resistance and confirmation is required via pullback rebound or volume-backed breakout.",
        "reason_codes": [
          "portfolio_diversification_benefit",
          "constructive_medium_term_thesis",
          "entry_action_wait",
          "near_resistance_zone",
          "trigger_required_before_add",
          "elevated_momentum_and_volatility",
          "high_fallback_count",
          "data_quality_intraday_gap",
          "cash_buffer_breach_no_add"
        ],
        "review_required": true
      },
      "TSM": {
        "summary": "High-quality AI semiconductor thesis and existing overweight exposure are constructive, but rank is restrained by sector concentration, current portfolio weight, lower timing readiness, and resistance near prior highs. Hold existing exposure; do not add until volume breakout or support retest confirms.",
        "reason_codes": [
          "bullish_thesis_existing_position",
          "entry_action_wait",
          "semiconductor_ai_concentration",
          "existing_position_weight_notable",
          "near_resistance_chase_risk",
          "breakout_needs_volume_confirmation",
          "support_pullback_alternative",
          "event_guidance_confirmation_needed",
          "cash_buffer_breach_no_add"
        ],
        "review_required": true
      },
      "AAPL": {
        "summary": "Lowest priority among provided tickers: acceptable hold with improving technicals, but legacy rating is HOLD, price remains below near-term resistance, event and valuation risks remain unresolved, and trigger quality is modest. Keep as existing exposure only.",
        "reason_codes": [
          "held_position_hold_not_add",
          "legacy_hold_rating",
          "breakout_not_confirmed",
          "below_near_term_resistance",
          "volume_confirmation_required",
          "valuation_limits_sizing",
          "event_risks_unresolved",
          "modest_trigger_quality",
          "cash_buffer_breach_no_add"
        ],
        "review_required": true
      }
    }
  },
  "report_writer": {
    "status": "success",
    "scope": "portfolio",
    "provider": "codex",
    "model": "gpt-5.4"
  },
  "candidates": [
    {
      "snapshot_id": "20260416T081401_kis_68944660-01",
      "instrument": {
        "broker_symbol": "AAPL",
        "canonical_ticker": "AAPL",
        "yahoo_symbol": "AAPL",
        "krx_code": null,
        "dart_corp_code": null,
        "display_name": "AAPL",
        "exchange": "US",
        "country": "US",
        "currency": "USD"
      },
      "is_held": true,
      "market_value_krw": 1184068,
      "quantity": 3.0,
      "available_qty": 3.0,
      "sector": null,
      "structured_decision": {
        "rating": "HOLD",
        "portfolio_stance": "BULLISH",
        "entry_action": "WAIT",
        "setup_quality": "DEVELOPING",
        "confidence": 0.64,
        "time_horizon": "medium",
        "entry_logic": "AAPL은 기존 보유분을 유지할 만큼 투자 가능하지만, 오늘 즉시 신규 매수를 실행할 정도로 진입이 확인되지는 않았다. 공격적 분석가는 2026-03-30 저점권 246.63 이후 259~260 부근까지 회복했고 200일선 250.89와 10일 EMA 257.46 위에 있으며 MACD가 -0.16에서 0.08, 0.24로 양수 전환한 점을 근거로 하락 모멘텀 종료를 주장했다. 중립 분석가도 이 회복은 인정했지만, 현재 259.20이 50일 SMA 260.86과 최근 고점 262.19 아래에 있어 공급 구간을 아직 돌파하지 못했다고 지적했다. 따라서 방향성은 우호적으로 유지하되, 신규 자금은 262.20 위 일봉 종가와 거래량 확대가 확인되거나, 254.87 VWMA 또는 251~252 지지권에서 반등 품질이 확인될 때만 소규모로 접근한다.",
        "exit_logic": "전술 노출은 260.86~262.19 저항에서 반복 실패한 뒤 10일 EMA 257.46을 잃으면 줄인다. 251 아래 일봉 종가는 200일 SMA 250.89 방어 실패 가능성을 키우므로 전술 포지션은 축소하거나 종료한다. 실적 가이던스에서 iPhone 수요 둔화, 관세나 투입비용에 따른 마진 압박, 서비스 성장 둔화, Apple Pay 또는 broader services 규제 부담이 확인되면 기술적 지지가 유지되더라도 중기 보유 논리를 재검토한다.",
        "position_sizing": "기존 핵심 보유분은 유지하되 추가 매수는 보류한다. 262.20 돌파와 거래량 확대가 동시에 나오면 정상 비중보다 작은 starter만 허용하고, 265~266 후속 안착 전에는 비중 확대를 제한한다. 돌파가 아니라 하락 재시험이 나오면 254.87 VWMA 또는 251~252 지지권에서 반등 캔들, 거래량 안정, 10일 EMA 회복 여부를 확인한 뒤 분할 진입을 고려한다. ATR 5.68로 단기 변동성이 작지 않고 후행 PER 32.8, 선행 PER 27.8, PBR 43.15가 안전마진을 제한하므로 초기 사이징은 보수적으로 유지한다.",
        "risk_limits": "핵심 전술 위험선은 251이고 구조적 추세 확인선은 200일 SMA 250.89다. 신규 진입은 약 1 ATR 수준의 정상 변동을 허용하되, 251 아래 일봉 종가가 나오면 방어를 우선한다. 260.86~262.19 저항대로 추격 매수하지 않으며, 262.20 위 돌파라도 거래량이 약하거나 MACD 히스토그램 둔화가 이어진 뒤 257.46을 이탈하면 false breakout으로 간주한다. 금리 상승, 달러 강세, 유가와 인플레이션 압력, 관세와 공급망 비용, Apple Pay 규제 뉴스가 악화되면 노출을 재검토한다.",
        "catalysts": [
          "AAPL이 262.20 위에서 일봉 종가를 만들고 거래량이 확대되어 50일 SMA 260.86과 최근 고점 262.19를 동시에 회복하는 경우",
          "265~266으로 후속 안착하고 이후 270 재시험이 진행되며 RSI가 과열권으로 급등하지 않는 경우",
          "Q2 FY26 실적과 가이던스에서 iPhone 수요, 총마진, 관세와 투입비용 영향이 안정적으로 확인되는 경우",
          "후행 12개월 잉여현금흐름 1063억 달러와 순이익 1178억 달러 수준의 현금창출력이 서비스 성장과 자사주 매입으로 이어지는 경우",
          "Globalstar와 Amazon 관련 위성 연결성 변화가 Apple 생태계의 장기 옵션 가치를 키우면서 전략 통제력 훼손 없이 정리되는 경우"
        ],
        "invalidators": [
          "AAPL이 251 아래로 일봉 종가를 만들고 200일 SMA 250.89 방어에 실패하는 경우",
          "262.20 위 돌파가 약한 거래량으로 실패한 뒤 10일 EMA 257.46을 이탈하는 경우",
          "MACD는 양수권을 유지하더라도 히스토그램 둔화가 이어지며 가격이 260.86~262.19 저항을 넘지 못하는 경우",
          "실적 가이던스가 iPhone 수요 둔화, 관세나 투입비용에 따른 마진 압박, 서비스 성장 둔화를 시사하는 경우",
          "Apple Pay 또는 broader services 규제가 서비스 monetization과 프리미엄 밸류에이션 신뢰를 훼손하는 경우",
          "금리 상승, 달러 강세, 유가와 인플레이션 압력, 프리미엄 소비 둔화가 동시에 악화되는 경우"
        ],
        "watchlist_triggers": [
          "상승 전환 관찰: 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 조건 변화"
        ],
        "data_coverage": {
          "company_news_count": 3,
          "disclosures_count": 0,
          "social_source": "news_derived",
          "macro_items_count": 1
        }
      },
      "data_coverage": {
        "company_news_count": 3,
        "disclosures_count": 0,
        "social_source": "news_derived",
        "macro_items_count": 1
      },
      "quality_flags": [
        "token_usage_unavailable"
      ],
      "vendor_health": {
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 1
        },
        "fallback_count": 4
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "ADD_IF_TRIGGERED",
      "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과 프리미엄 밸류에이션 신뢰를 훼손하는 경우",
        "금리 상승, 달러 강세, 유가와 인플레이션 압력, 프리미엄 소비 둔화가 동시에 악화되는 경우"
      ],
      "confidence": 0.64,
      "stance": "BULLISH",
      "entry_action": "WAIT",
      "setup_quality": "DEVELOPING",
      "rationale": "AAPL thesis is constructive for an existing hold, supported by recovery above the 200-day SMA and 10-day EMA plus improving MACD, but timing is not yet actionable because price remains below the 50-day SMA and recent resistance near 260.86-262.19. New adds require confirmation via a daily close above 262.20 with stronger volume, or a controlled support retest near 254.87 VWMA / 251-252 with clear reversal quality.",
      "trigger_profile": {
        "primary_trigger_type": "watch_only",
        "trigger_horizon": "days_to_weeks",
        "trigger_quality": 0.62,
        "entry_readiness": 0.38,
        "thesis_state": "constructive_but_not_confirmed",
        "semantic_summary": "AAPL thesis is constructive for an existing hold, supported by recovery above the 200-day SMA and 10-day EMA plus improving MACD, but timing is not yet actionable because price remains below the 50-day SMA and recent resistance near 260.86-262.19. New adds require confirmation via a daily close above 262.20 with stronger volume, or a controlled support retest near 254.87 VWMA / 251-252 with clear reversal quality."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.66,
      "timing_readiness": 0.38,
      "reason_codes": [
        "held_position_hold_not_add",
        "constructive_medium_term_thesis",
        "breakout_not_confirmed",
        "below_near_term_resistance",
        "volume_confirmation_required",
        "support_retest_alternative",
        "valuation_limits_sizing",
        "event_risks_unresolved",
        "clear_downside_invalidation"
      ],
      "review_required": true,
      "score_now": 0.051412474880000024,
      "score_triggered": 0.15353118720000003,
      "gate_reasons": [
        "high_fallback_count"
      ],
      "data_health": {
        "coverage_score": 0.7200000000000001,
        "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.62,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.38,
        "thesis_multiplier": 1.096,
        "timing_now": 0.152,
        "timing_triggered": 0.38
      },
      "broker_symbol": "AAPL",
      "canonical_ticker": "AAPL",
      "display_name": "AAPL"
    },
    {
      "snapshot_id": "20260416T081401_kis_68944660-01",
      "instrument": {
        "broker_symbol": "ETHU",
        "canonical_ticker": "ETHU",
        "yahoo_symbol": "ETHU",
        "krx_code": null,
        "dart_corp_code": null,
        "display_name": "ETHU",
        "exchange": "US",
        "country": "US",
        "currency": "USD"
      },
      "is_held": true,
      "market_value_krw": 168464,
      "quantity": 4.0,
      "available_qty": 4.0,
      "sector": null,
      "structured_decision": {
        "rating": "HOLD",
        "portfolio_stance": "BULLISH",
        "entry_action": "WAIT",
        "setup_quality": "DEVELOPING",
        "confidence": 0.62,
        "time_horizon": "short",
        "entry_logic": "ETHU의 방향성은 조건부로 우호적이지만 오늘 즉시 추격 매수할 정도로 확인되지는 않았다. 공격적 분석가가 지적한 대로 ETHU는 10 EMA 24.65, VWMA 23.50, 50 SMA 23.10 위를 회복했고, MACD가 3월 16일 -2.64에서 4월 14일 0.04로 양전환했으며 히스토그램도 4월 10일 0.64, 4월 13일 0.68, 4월 14일 0.75로 확대됐다. RSI 57.35도 과열권은 아니다. 그러나 보수적·중립적 분석가가 강조한 것처럼 50 SMA는 아직 하락 중이고, ETHU는 200 SMA 79대보다 훨씬 낮으며, 25.90-26.00 저항과 2x Ether 구조의 손실 증폭 위험이 남아 있다. 따라서 기존 소규모 전술 노출은 보유 가능하지만, 신규 진입은 ETHU가 26.00 위에서 종가를 만들고 최근 5.4M-6.5M 주 거래량을 뚜렷하게 넘기거나, 24.65 또는 23.50-23.10 지지대에서 매도 압력이 둔화되는 것을 확인한 뒤에만 검토한다.",
        "exit_logic": "이미 보유 중이면 작은 전술 포지션만 유지하고, ETHU가 23.10 아래로 일봉 종가를 내면 즉시 축소 또는 청산한다. 22.00 부근은 단순한 여유 손절선이 아니라 반등 논리를 재평가해야 하는 더 넓은 변동성 위험 경계다. 26.00 돌파가 성공해 28.20-28.89 저항대에 접근하면 Ether 추세, 거래량, ETF 자금 흐름이 함께 개선되지 않는 한 일부 이익 실현을 우선한다. 25.90-26.00에서 반복적으로 실패하거나 약한 거래량의 돌파가 빠르게 되돌려지면 신규 매수 대기를 중단한다.",
        "position_sizing": "ETHU는 2x Ether 상품이므로 정상 주식 비중보다 작게 운용한다. 현재는 전술적 보유 또는 관찰 단계이며, 확인 전 신규 대규모 진입은 부적절하다. 26.00 위 종가와 거래량 확장이 확인되면 작은 starter만 허용하고, 이후 가격이 26.00 위를 유지하며 Ether 현물과 crypto risk-on 흐름이 동반될 때만 단계적으로 추가한다. 24.65 또는 23.50-23.10 지지 확인 진입은 더 작은 시험 포지션으로 제한한다.",
        "risk_limits": "핵심 위험 관리는 23.50-23.10 지지대와 22.00 위험 경계를 기준으로 한다. 23.10 아래 일봉 종가는 즉각적인 반등 설정 훼손으로 보고 신규 매수와 평균단가 낮추기를 중단한다. 22.00 이탈은 2x 구조, 갭 위험, 일일 재조정 효과를 감안해 포지션 전면 재평가 신호로 처리한다. 어떤 starter도 진입가에서 손절 기준까지의 손실이 사전에 정한 포트폴리오 위험 예산의 작은 일부만 사용하도록 제한한다.",
        "catalysts": [
          "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 기준지수 전환이 상품 신뢰도와 기관 수요 개선으로 이어지는 경우",
          "약한 달러, 인플레이션 우려 완화, 금리 인하 기대 회복 등 거시 환경이 위험자산에 우호적으로 바뀌는 경우"
        ],
        "invalidators": [
          "ETHU가 23.10 아래로 일봉 종가를 내며 VWMA와 50 SMA 지지대를 이탈하는 경우",
          "ETHU가 22.00 부근의 더 넓은 변동성 위험 경계를 하향 이탈하는 경우",
          "26.00 위 돌파가 약한 거래량으로 실패하고 빠르게 되돌려지는 경우",
          "Ether 약세나 crypto risk-off 충격이 재개되어 2x 구조의 손실 증폭 위험이 커지는 경우",
          "NAV 괴리, 추적오차, 유동성, 비용, 분배금 품질, 설정·환매 안정성에서 불리한 증거가 확인되는 경우"
        ],
        "watchlist_triggers": [
          "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, 비용률, 추적오차 자료 갱신 확인"
        ],
        "data_coverage": {
          "company_news_count": 3,
          "disclosures_count": 0,
          "social_source": "news_derived",
          "macro_items_count": 1
        }
      },
      "data_coverage": {
        "company_news_count": 3,
        "disclosures_count": 0,
        "social_source": "news_derived",
        "macro_items_count": 1
      },
      "quality_flags": [
        "token_usage_unavailable"
      ],
      "vendor_health": {
        "vendor_calls": {
          "yfinance": 16,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 3
        },
        "fallback_count": 7
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "ADD_IF_TRIGGERED",
      "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 괴리, 추적오차, 유동성, 비용, 분배금 품질, 설정·환매 안정성에서 불리한 증거가 확인되는 경우"
      ],
      "confidence": 0.62,
      "stance": "BULLISH",
      "entry_action": "WAIT",
      "setup_quality": "DEVELOPING",
      "rationale": "ETHU has a constructive tactical rebound thesis, with price back above short-term averages, improving MACD, non-overbought RSI, and some recent inflow evidence. Timing is not confirmed because the plan explicitly waits for a daily close above 25.90-26.00 with stronger volume, or a controlled support test near 24.65 or 23.50-23.10 before adding. Existing small exposure can be held, but new/additional action remains conditional.",
      "trigger_profile": {
        "primary_trigger_type": "breakout_confirmation",
        "trigger_horizon": "days_to_weeks",
        "trigger_quality": 0.68,
        "entry_readiness": 0.38,
        "thesis_state": "constructive_but_not_confirmed",
        "semantic_summary": "ETHU has a constructive tactical rebound thesis, with price back above short-term averages, improving MACD, non-overbought RSI, and some recent inflow evidence. Timing is not confirmed because the plan explicitly waits for a daily close above 25.90-26.00 with stronger volume, or a controlled support test near 24.65 or 23.50-23.10 before adding. Existing small exposure can be held, but new/additional action remains conditional."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.62,
      "timing_readiness": 0.38,
      "reason_codes": [
        "constructive_rebound_setup",
        "entry_wait_state",
        "breakout_not_confirmed",
        "specific_price_volume_trigger",
        "leveraged_etf_risk",
        "support_invalidation_defined",
        "data_fallbacks_present"
      ],
      "review_required": true,
      "score_now": 0.048190561280000016,
      "score_triggered": 0.14547640320000002,
      "gate_reasons": [
        "high_fallback_count"
      ],
      "data_health": {
        "coverage_score": 0.7200000000000001,
        "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.68,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.38,
        "thesis_multiplier": 1.072,
        "timing_now": 0.152,
        "timing_triggered": 0.38
      },
      "broker_symbol": "ETHU",
      "canonical_ticker": "ETHU",
      "display_name": "ETHU"
    },
    {
      "snapshot_id": "20260416T081401_kis_68944660-01",
      "instrument": {
        "broker_symbol": "ETN",
        "canonical_ticker": "ETN",
        "yahoo_symbol": "ETN",
        "krx_code": null,
        "dart_corp_code": null,
        "display_name": "ETN",
        "exchange": "US",
        "country": "US",
        "currency": "USD"
      },
      "is_held": true,
      "market_value_krw": 585241,
      "quantity": 1.0,
      "available_qty": 1.0,
      "sector": null,
      "structured_decision": {
        "rating": "OVERWEIGHT",
        "portfolio_stance": "BULLISH",
        "entry_action": "WAIT",
        "setup_quality": "DEVELOPING",
        "confidence": 0.72,
        "time_horizon": "medium",
        "entry_logic": "ETN은 중기적으로 우호적인 배분 후보로 유지한다. 공격적 분석가는 가격이 10일 지수이동평균 386.2047, 50일 단순이동평균 368.9103, 200일 단순이동평균 357.5705 위에 있고 MACD가 2026-04-06의 -0.0432에서 2026-04-14의 9.9856으로 개선된 점을 근거로 추세 회복을 강조했다. 또한 최근 분기 매출 7.055 billion, 영업이익 1.386 billion, 희석 EPS 2.91, 잉여현금흐름 1.573 billion, 영업현금흐름 1.965 billion, 순부채 감소가 투자 가능한 질을 뒷받침한다. 다만 보수적·중립 분석가가 지적했듯 현재 가격은 407-408 저항과 52주 고점 부근이고 RSI 67.2581, ATR 12.7175로 진입 비대칭이 완성되지 않았다. 따라서 오늘 즉시 추격 매수하지 않고, 407-408 위의 거래량 동반 일간 종가 또는 386 부근까지의 통제된 되돌림 후 안정화를 기다린다.",
        "exit_logic": "기존 보유분은 ETN이 386 위를 유지하는 한 핵심 비중을 유지할 수 있다. 407-408에서 실패하고 하락 거래량이 확대되거나 386 아래로 종가가 내려가면 위험 축소와 재검토가 필요하다. 374-369는 깊은 지지 구간이며, 369 아래 종가는 현재 중기 추세 설정의 무효화로 보고 자본 보호를 우선한다. 실적에서 주문, 수주잔고, 마진, 잉여현금흐름 전환, 데이터센터 및 전력 인프라 수요가 기대에 못 미치거나 프리미엄 밸류에이션을 정당화하지 못하는 가이던스가 나오면 신규 진입을 피하고 기존 노출도 줄인다.",
        "position_sizing": "신규 자금은 확인 전 투입하지 않는다. 조건이 충족될 경우에도 ATR 12.7175와 TTM PER 38.45933, forward PER 25.91213, PBR 8.0256405에 따른 밸류에이션 민감도를 반영해 정상보다 작은 시작 비중만 허용한다. 407-408 돌파가 거래량 증가와 함께 유지되거나 386 부근 되돌림이 분산 매도 없이 안정화될 때만 단계적으로 확대한다. 기존 보유자는 핵심 노출은 유지하되 실적 확인 전 과도한 집중은 피한다.",
        "risk_limits": "실패한 돌파에는 추가하지 않는다. 386 아래 종가는 단기 모멘텀 경고, 374-369는 핵심 방어 구간, 369 아래 종가는 중기 추세 무효화로 설정한다. 변동성이 높으므로 촘촘한 정액 손절보다 변동성 조정 손절을 사용하고, 실적 전 신규 포지션에는 사전 정의된 손절선과 비중 상한을 둔다. 보수적 분석가가 지적한 높은 밸류에이션, 407-408 저항, 제한적인 단기 상승 목표 415-420 대비 386·374·369까지의 하방 폭을 위험 관리의 중심에 둔다.",
        "catalysts": [
          "AI 데이터센터와 전력 인프라 수요가 ETN의 주문 성장과 프리미엄 밸류에이션을 계속 뒷받침하는 경우",
          "중전압 스위치기어 생산 확대와 Nebraska 시설 계획이 장기 공급 대응 능력을 강화하는 경우",
          "다음 실적에서 주문, 수주잔고, 마진, 잉여현금흐름 전환이 높은 기대치를 충족하거나 상회하는 경우",
          "407-408 위의 일간 종가가 최근 1.8-2.25 million 주 거래량 범위를 넘는 거래량과 함께 확인되어 415-420으로의 기술적 경로가 열리는 경우"
        ],
        "invalidators": [
          "ETN이 369 아래로 종가 마감해 핵심 중기 지지 구간을 이탈하는 경우",
          "실적 또는 가이던스에서 마진 압박, 약한 주문, 부진한 잉여현금흐름 전환, 데이터센터·전력 인프라 수요 둔화가 확인되는 경우",
          "고금리, 에너지 충격, 인플레이션, 건설 또는 상업 투자 약세가 산업재 수요와 밸류에이션 배수를 동시에 압박하는 경우",
          "고점 부근 내부자 매도와 밸류에이션 우려가 커지는데 이를 상쇄할 운영 개선이나 수주 증거가 부족한 경우"
        ],
        "watchlist_triggers": [
          "ETN이 407-408 위에서 일간 종가를 형성하고 거래량이 최근 1.8-2.25 million 주 범위를 상회하는지 확인",
          "386 부근 되돌림에서 거래량이 안정되고 가격 구조가 무너지지 않는지 확인",
          "386 아래 종가가 발생해 374-369로의 되돌림 위험이 커지는지 확인",
          "다음 실적의 수주잔고, 스위치기어 수요, 데이터센터 노출, 마진 지속성, 잉여현금흐름 전환에 대한 발언 확인",
          "407-408 돌파 후 407 위에서 후속 유지가 나오는지, 약한 거래량의 돌파 실패로 전환되는지 확인"
        ],
        "data_coverage": {
          "company_news_count": 1,
          "disclosures_count": 0,
          "social_source": "news_derived",
          "macro_items_count": 2
        }
      },
      "data_coverage": {
        "company_news_count": 1,
        "disclosures_count": 0,
        "social_source": "news_derived",
        "macro_items_count": 2
      },
      "quality_flags": [
        "token_usage_unavailable"
      ],
      "vendor_health": {
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 1
        },
        "fallback_count": 4
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "ADD_IF_TRIGGERED",
      "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 아래로 종가 마감해 핵심 중기 지지 구간을 이탈하는 경우",
        "실적 또는 가이던스에서 마진 압박, 약한 주문, 부진한 잉여현금흐름 전환, 데이터센터·전력 인프라 수요 둔화가 확인되는 경우",
        "고금리, 에너지 충격, 인플레이션, 건설 또는 상업 투자 약세가 산업재 수요와 밸류에이션 배수를 동시에 압박하는 경우",
        "고점 부근 내부자 매도와 밸류에이션 우려가 커지는데 이를 상쇄할 운영 개선이나 수주 증거가 부족한 경우"
      ],
      "confidence": 0.72,
      "stance": "BULLISH",
      "entry_action": "WAIT",
      "setup_quality": "DEVELOPING",
      "rationale": "ETN has a constructive medium-term thesis supported by trend recovery, improving MACD, strong recent fundamentals, FCF, lower net debt, and AI/data-center power infrastructure demand. Timing is not yet actionable for adding because the plan explicitly says WAIT near 407-408 resistance and the 52-week high; confirmation requires a volume-backed daily close above 407-408 or a controlled pullback that stabilizes near 386.",
      "trigger_profile": {
        "primary_trigger_type": "breakout_confirmation",
        "trigger_horizon": "days_to_weeks",
        "trigger_quality": 0.78,
        "entry_readiness": 0.42,
        "thesis_state": "constructive_but_not_confirmed",
        "semantic_summary": "ETN has a constructive medium-term thesis supported by trend recovery, improving MACD, strong recent fundamentals, FCF, lower net debt, and AI/data-center power infrastructure demand. Timing is not yet actionable for adding because the plan explicitly says WAIT near 407-408 resistance and the 52-week high; confirmation requires a volume-backed daily close above 407-408 or a controlled pullback that stabilizes near 386."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.72,
      "timing_readiness": 0.42,
      "reason_codes": [
        "bullish_medium_term_thesis",
        "entry_wait_required",
        "breakout_needs_volume_confirmation",
        "near_resistance_and_highs",
        "pullback_entry_alternative",
        "earnings_confirmation_pending",
        "explicit_invalidation_levels",
        "limited_data_coverage"
      ],
      "review_required": true,
      "score_now": 0.06886979072,
      "score_triggered": 0.19717447679999997,
      "gate_reasons": [
        "high_fallback_count"
      ],
      "data_health": {
        "coverage_score": 0.7200000000000001,
        "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.42,
        "thesis_multiplier": 1.132,
        "timing_now": 0.168,
        "timing_triggered": 0.42
      },
      "broker_symbol": "ETN",
      "canonical_ticker": "ETN",
      "display_name": "ETN"
    },
    {
      "snapshot_id": "20260416T081401_kis_68944660-01",
      "instrument": {
        "broker_symbol": "FANG",
        "canonical_ticker": "FANG",
        "yahoo_symbol": "FANG",
        "krx_code": null,
        "dart_corp_code": null,
        "display_name": "FANG",
        "exchange": "US",
        "country": "US",
        "currency": "USD"
      },
      "is_held": false,
      "market_value_krw": 0,
      "quantity": 0.0,
      "available_qty": 0.0,
      "sector": null,
      "structured_decision": {
        "rating": "HOLD",
        "portfolio_stance": "BULLISH",
        "entry_action": "WAIT",
        "setup_quality": "DEVELOPING",
        "confidence": 0.62,
        "time_horizon": "medium",
        "entry_logic": "FANG의 중기 방향성은 아직 건설적이다. 공격적 분석가와 중립 분석가가 지적했듯이 가격은 50일선 180.26과 200일선 153.12 위에 있고, 204.91에서 175.14까지 급락한 뒤 189.10까지 반등해 장기 상승 구조가 완전히 훼손되지는 않았다. 정상화 EBITDA 25.35억 달러, 자유현금흐름 8.73억 달러, 순부채 감소도 보유 논리를 지지한다. 다만 보수적 분석가와 중립 분석가가 강조한 것처럼 현재 가격은 10일 EMA 190.01과 VWMA 193.36 아래이고, RSI 48.31은 50 미만이며, MACD 히스토그램 -1.96은 단기 매수 주도권이 아직 회복되지 않았음을 뜻한다. 따라서 오늘 즉시 신규 진입이나 추가 매수는 보류한다. 190.01 위 일봉 종가와 RSI 50 회복이 동시에 나오면 매우 작은 starter는 정당화될 수 있고, 193.36 위에서 거래량 개선과 MACD 히스토그램 개선이 확인될 때만 증액한다.",
        "exit_logic": "기존 보유분은 조건부로 유지하되, FANG가 190.01-193.36 회복에 계속 실패하며 낮은 고점을 만들면 일부 축소하거나 헤지한다. 180.26은 1차 지지선으로 관찰하고, 175.14 이탈은 전술적 무효화로 간주한다. 특히 175.14가 거래량 증가와 함께 깨지면 조정이 아니라 추세 훼손으로 해석해 전술 노출을 종료한다. 197.79-202.19 또는 204.91 저항대 접근 시 거래량이 약하거나 MACD 히스토그램이 계속 음수라면 추격 매수보다 일부 차익 실현과 손절선 상향을 우선한다.",
        "position_sizing": "신규 자금은 확인 전까지 투입하지 않는다. 조건이 충족될 경우에도 ATR 6.82, 원유 헤드라인 민감도, 실적 이벤트 위험을 반영해 정상보다 작은 starter만 허용한다. 190.01 위 종가와 RSI 50 회복은 소규모 시험 진입 조건이고, 193.36 VWMA 위 안착, 거래량 개선, MACD 히스토그램의 연속 개선이 붙을 때만 단계적으로 확대한다. 기존 보유자는 core를 유지할 수 있지만 reduced-to-normal보다 보수적인 관리 크기를 유지하고, 180.26 방어 실패나 원유 급락 시 노출을 줄인다.",
        "risk_limits": "FANG는 원유 가격과 지정학 뉴스에 민감하므로 고정 손절보다 변동성 기반 손절을 사용한다. 180.26은 1차 방어선, 175.14는 하드 전술 무효화선이다. 가격이 VWMA 193.36 아래이고 RSI가 50 아래인 동안에는 full size를 금지한다. 2026-04-08 약 7% 하락과 2026-04-09 유가 급락 속 -4.62% 하락은 유가 베타가 기회이면서 동시에 포트폴리오 변동성 확대 요인임을 보여준다. 순부채 143.85억 달러, 현금 1.04억 달러, 유동비율 0.416, 운전자본 -26.85억 달러도 실적 전 과도한 진입을 제한하는 근거다.",
        "catalysts": [
          "190.01 위 일봉 종가와 RSI 50 회복으로 단기 매수 주도권이 복원되는 신호.",
          "VWMA 193.36 위 안착, 거래량 개선, MACD 히스토그램의 연속적인 덜 부정적인 전환.",
          "Strait of Hormuz, 공급 차질, $100 유가 가능성 등 지정학 리스크가 실제 원유 가격 강세로 이어지는 경우.",
          "Q1 결과나 가이던스에서 생산, 비용 통제, 자본 규율, 자유현금흐름 지속성이 확인되는 경우.",
          "2051년과 2052년 만기 장기채 공개매수, 순부채 감소 같은 자본구조 개선이 계속되는 경우.",
          "UBS의 245달러 목표가처럼 긍정적 애널리스트 수정이 Roth의 중립 하향과 200달러 목표가 우려를 상쇄하는 경우."
        ],
        "invalidators": [
          "175.14 최근 저점 이탈, 특히 거래량 증가가 동반될 때.",
          "50일선 180.26 방어 실패 후 낮은 고점이 형성되는 흐름.",
          "원유 가격 반락으로 FANG의 현금흐름과 주주환원 기대가 약해지는 경우.",
          "Q1 실적에서 두 자릿수 이익 압박, 마진 악화, capex 부담, 생산 가이던스 약화가 확인되는 경우.",
          "2026년 3월 이후 고위 임원과 주요 보유자 매도, SGF/FANG HOLDINGS의 1,265만 주 처분 같은 수급 부담이 추가로 확대되는 경우.",
          "매출이 39.06억 달러에서 33.41억 달러로 감소하고 영업이익이 12.53억 달러에서 7.76억 달러로 낮아진 흐름이 지속되는 경우."
        ],
        "watchlist_triggers": [
          "190.01 위 일봉 종가와 RSI 50 회복.",
          "193.36 VWMA 위 일봉 종가와 최근 반등 거래량을 넘어서는 수급 개선.",
          "MACD 히스토그램이 여러 세션 연속 덜 부정적으로 전환.",
          "180.26 부근 재시험에서 지지 확인, 175.14 미이탈.",
          "원유가 지정학 헤드라인 이후 상승분을 유지하는지 여부.",
          "Q1 실적 발표일, capex 가이던스, 자유현금흐름, 부채 감축, 주주환원 발언.",
          "197.79-202.19 및 204.91 저항대 접근 시 거래량과 모멘텀의 동반 여부."
        ],
        "data_coverage": {
          "company_news_count": 2,
          "disclosures_count": 0,
          "social_source": "news_derived",
          "macro_items_count": 1
        }
      },
      "data_coverage": {
        "company_news_count": 2,
        "disclosures_count": 0,
        "social_source": "news_derived",
        "macro_items_count": 1
      },
      "quality_flags": [
        "token_usage_unavailable"
      ],
      "vendor_health": {
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 5
      },
      "suggested_action_now": "WATCH",
      "suggested_action_if_triggered": "STARTER_IF_TRIGGERED",
      "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억 달러로 낮아진 흐름이 지속되는 경우."
      ],
      "confidence": 0.62,
      "stance": "BULLISH",
      "entry_action": "WAIT",
      "setup_quality": "DEVELOPING",
      "rationale": "Medium-term thesis is constructive because FANG remains above key longer-term moving averages and fundamentals/free cash flow support the bullish stance, but immediate timing is not confirmed. Current price is still below the 10-day EMA and VWMA, RSI remains below 50, and MACD histogram is negative, so the appropriate state is watch-only until a daily close above 190.01 with RSI recovery, preferably above 193.36 with volume and MACD improvement.",
      "trigger_profile": {
        "primary_trigger_type": "breakout_confirmation",
        "trigger_horizon": "days_to_weeks",
        "trigger_quality": 0.68,
        "entry_readiness": 0.36,
        "thesis_state": "constructive_but_not_confirmed",
        "semantic_summary": "Medium-term thesis is constructive because FANG remains above key longer-term moving averages and fundamentals/free cash flow support the bullish stance, but immediate timing is not confirmed. Current price is still below the 10-day EMA and VWMA, RSI remains below 50, and MACD histogram is negative, so the appropriate state is watch-only until a daily close above 190.01 with RSI recovery, preferably above 193.36 with volume and MACD improvement."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.62,
      "timing_readiness": 0.36,
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_wait_required",
        "momentum_not_confirmed",
        "below_near_term_averages",
        "defined_breakout_triggers",
        "small_starter_only_if_triggered",
        "oil_beta_and_event_risk",
        "hard_invalidation_defined"
      ],
      "review_required": true,
      "score_now": -0.05487209984,
      "score_triggered": 0.10336481280000001,
      "gate_reasons": [
        "high_fallback_count",
        "wait_heavy_batch_reduce_immediate_entries"
      ],
      "data_health": {
        "coverage_score": 0.7200000000000001,
        "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.68,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.36,
        "thesis_multiplier": 1.072,
        "timing_now": 0.144,
        "timing_triggered": 0.36
      },
      "broker_symbol": "FANG",
      "canonical_ticker": "FANG",
      "display_name": "FANG"
    },
    {
      "snapshot_id": "20260416T081401_kis_68944660-01",
      "instrument": {
        "broker_symbol": "GEV",
        "canonical_ticker": "GEV",
        "yahoo_symbol": "GEV",
        "krx_code": null,
        "dart_corp_code": null,
        "display_name": "GEV",
        "exchange": "US",
        "country": "US",
        "currency": "USD"
      },
      "is_held": false,
      "market_value_krw": 0,
      "quantity": 0.0,
      "available_qty": 0.0,
      "sector": null,
      "structured_decision": {
        "rating": "OVERWEIGHT",
        "portfolio_stance": "BULLISH",
        "entry_action": "WAIT",
        "setup_quality": "DEVELOPING",
        "confidence": 0.68,
        "time_horizon": "medium",
        "entry_logic": "GEV의 중기 방향성은 여전히 긍정적이다. 공격적 분석가는 AI 전력 수요, 데이터센터 전력 부족, 가스터빈 희소성, 송배전·변압기 병목, 에너지 안보 수요가 동시에 작동하고 있으며, 10일 EMA 944.46, 50일 SMA 852.92, 200일 SMA 673.59 위에서 강한 추세가 유지된다고 강조했다. 중립 분석가도 이 구조적 수요와 강한 추세를 인정해 장기 후보에서 제외할 이유는 없다고 봤다. 다만 보수적 분석가와 중립 분석가가 지적했듯이 2026-03-30의 817.35에서 2026-04-13의 991.12까지 급등했고, 현재 가격은 999.43-1007.38 저항대에 가깝다. RSI 68.42, ATR 약 38.56, 고점 부근 거래량 둔화, MACD 히스토그램 10.05에서 9.71로의 소폭 약화는 오늘 즉시 추격 매수하기에는 보상 대비 위험이 충분히 좋지 않다는 증거다. 따라서 레거시 투자 의견은 OVERWEIGHT, 방향성은 BULLISH로 유지하되, 즉시 실행은 WAIT로 둔다. 신규 진입은 1007.38 위 일간 종가와 최근 1.6M-2.2M 범위를 넘는 거래량 확대 및 MACD 히스토그램 재확대가 확인되거나, 944-952 지지권 테스트 후 10일 EMA를 강하게 회복할 때만 소규모 시작 포지션으로 정당화된다.",
        "exit_logic": "기존 보유분은 추세가 유지되는 동안 유지할 수 있으나, 구조적 성장 서사가 손실 통제를 대체해서는 안 된다. 933-945 단기 추세 방어 구간 아래로 종가가 이탈하고 MACD 히스토그램 수축이 이어지거나 10일 EMA 회복에 실패하면 전술적 노출을 축소한다. 910 VWMA를 상승 거래량과 함께 하향 이탈하면 추세 품질 훼손으로 보고 추가 축소 또는 방어적 보유로 전환한다. 852-853의 50일 SMA를 결정적으로 이탈하면 중기 기술적 논리가 크게 훼손되므로 OVERWEIGHT 논리를 재검토한다. 또한 Vineyard Wind의 853 million 비용 청구가 더 큰 충당금, 계약 손실, 품질 문제로 확산되거나, 다음 실적에서 자유현금흐름이 운전자본 효과에 의존한 것으로 드러나고 마진 전환이 약하면 투자 논리를 낮춘다.",
        "position_sizing": "기존 보유자는 OVERWEIGHT를 유지할 수 있지만 999.43-1007.38 저항권에서 추가 매수하지 않는다. 신규 자금은 확인 이후에만 단계적으로 투입한다. 1007.38 위 유효 돌파 또는 944-952 지지 후 10일 EMA 회복 시 정상 목표 비중의 일부만 시작하고, 거래량과 모멘텀이 이어질 때만 증액한다. ATR이 약 38.56으로 크기 때문에 1.0-1.5 ATR 손절 폭이 일반 포트폴리오 위험 한도를 넘지 않도록 주식 수를 줄인다. 보수적 분석가가 지적한 높은 밸류에이션, 넓은 지지 간격, 법적·실행 리스크를 반영해 신규 시작 포지션은 일반 OVERWEIGHT보다 작게 운용한다.",
        "risk_limits": "확인 없는 추격 매수는 금지한다. 1007.38 위 종가 돌파와 거래량 확대가 없거나, 944-952 지지권에서 회복 신호가 없으면 신규 진입하지 않는다. 933-945는 첫 전술적 위험 구간, 910은 추세 품질 경고선, 852-853은 중기 추세 무효화 구간으로 둔다. trailing P/E 55.85, forward P/E 43.13, price-to-book 23.81 수준의 높은 밸류에이션은 실적 실망 시 멀티플 압축 위험을 키운다. Vineyard Wind 분쟁, Prolec 통합 리스크, 운전자본 악화, current ratio 0.982, inventory 9.644 billion, receivables 7.866 billion도 노출 확대를 제한해야 하는 이유다.",
        "catalysts": [
          "GEV가 1007.38 위에서 일간 종가를 형성하고 거래량이 최근 1.6M-2.2M 범위를 뚜렷하게 상회하며 MACD 히스토그램이 재확대되는 경우",
          "AI 데이터센터 전력 수요가 GEV의 가스터빈, 송배전 장비, 변압기 주문으로 실제 전환되고 있다는 추가 증거",
          "5년 이상으로 언급된 가스터빈 공급 제약이 수주잔고 가시성, 가격 결정력, 마진 개선으로 연결되는 경우",
          "Prolec 인수 후 미국 변압기 생산능력 확대와 통합 진척이 확인되는 경우",
          "다음 실적에서 영업마진 개선, 반복 가능한 자유현금흐름, deferred revenue 25.774 billion의 건전한 매출 전환이 확인되는 경우"
        ],
        "invalidators": [
          "933-945 아래 종가 이탈 후 10일 EMA 회복 실패와 MACD 히스토그램 수축 지속",
          "910 VWMA 하향 이탈이 상승 거래량과 함께 발생하는 경우",
          "852-853 50일 SMA의 결정적 이탈로 중기 상승 추세가 훼손되는 경우",
          "Vineyard Wind의 853 million 비용 청구가 대규모 충당금, 계약 손실, 광범위한 품질 문제로 확대되는 경우",
          "다음 분기 자유현금흐름이 운전자본 반전 이후 약화되고 마진 전환 또는 backlog 전환 품질이 기대에 못 미치는 경우",
          "금리, 인플레이션, 달러 강세, AI 인프라 지출 기대 약화로 고밸류에이션 산업재 멀티플이 압박받는 경우"
        ],
        "watchlist_triggers": [
          "돌파 유지 조건: 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 청구를 넘어서는 손실 범위가 확인되는지 여부"
        ],
        "data_coverage": {
          "company_news_count": 5,
          "disclosures_count": 0,
          "social_source": "news_derived",
          "macro_items_count": 4
        }
      },
      "data_coverage": {
        "company_news_count": 5,
        "disclosures_count": 0,
        "social_source": "news_derived",
        "macro_items_count": 4
      },
      "quality_flags": [
        "token_usage_unavailable"
      ],
      "vendor_health": {
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 1
        },
        "fallback_count": 4
      },
      "suggested_action_now": "WATCH",
      "suggested_action_if_triggered": "STARTER_IF_TRIGGERED",
      "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 인프라 지출 기대 약화로 고밸류에이션 산업재 멀티플이 압박받는 경우"
      ],
      "confidence": 0.68,
      "stance": "BULLISH",
      "entry_action": "WAIT",
      "setup_quality": "DEVELOPING",
      "rationale": "GEV has a constructive medium-term thesis tied to AI/data-center power demand, gas turbine scarcity, grid and transformer bottlenecks, and a still-intact uptrend above key moving averages. However, immediate entry is not ready: price is extended into the 999.43-1007.38 resistance zone after a sharp run, with RSI near overbought, high ATR, fading high-area volume, and slight MACD histogram softening. Action should remain watch-only until either a confirmed daily close above 1007.38 with volume and momentum expansion, or a controlled pullback holds 944-952 and reclaims the 10-day EMA.",
      "trigger_profile": {
        "primary_trigger_type": "breakout_confirmation",
        "trigger_horizon": "days_to_weeks",
        "trigger_quality": 0.66,
        "entry_readiness": 0.34,
        "thesis_state": "constructive_but_not_confirmed",
        "semantic_summary": "GEV has a constructive medium-term thesis tied to AI/data-center power demand, gas turbine scarcity, grid and transformer bottlenecks, and a still-intact uptrend above key moving averages. However, immediate entry is not ready: price is extended into the 999.43-1007.38 resistance zone after a sharp run, with RSI near overbought, high ATR, fading high-area volume, and slight MACD histogram softening. Action should remain watch-only until either a confirmed daily close above 1007.38 with volume and momentum expansion, or a controlled pullback holds 944-952 and reclaims the 10-day EMA."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.72,
      "timing_readiness": 0.34,
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_wait_state",
        "breakout_not_confirmed",
        "extended_near_resistance",
        "momentum_volume_confirmation_needed",
        "pullback_support_alternative",
        "valuation_and_execution_risks",
        "limited_disclosure_coverage"
      ],
      "review_required": true,
      "score_now": -0.04970008063999999,
      "score_triggered": 0.11306234879999999,
      "gate_reasons": [
        "high_fallback_count",
        "wait_heavy_batch_reduce_immediate_entries"
      ],
      "data_health": {
        "coverage_score": 0.7200000000000001,
        "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.34,
        "thesis_multiplier": 1.132,
        "timing_now": 0.136,
        "timing_triggered": 0.34
      },
      "broker_symbol": "GEV",
      "canonical_ticker": "GEV",
      "display_name": "GEV"
    },
    {
      "snapshot_id": "20260416T081401_kis_68944660-01",
      "instrument": {
        "broker_symbol": "GLDM",
        "canonical_ticker": "GLDM",
        "yahoo_symbol": "GLDM",
        "krx_code": null,
        "dart_corp_code": null,
        "display_name": "GLDM",
        "exchange": "US",
        "country": "US",
        "currency": "USD"
      },
      "is_held": true,
      "market_value_krw": 843598,
      "quantity": 6.0,
      "available_qty": 6.0,
      "sector": null,
      "structured_decision": null,
      "data_coverage": {
        "company_news_count": 0,
        "disclosures_count": 0,
        "social_source": "unavailable",
        "macro_items_count": 0
      },
      "quality_flags": [
        "missing_analysis_for_held_position"
      ],
      "vendor_health": {
        "vendor_calls": {},
        "fallback_count": 0
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "NONE",
      "trigger_conditions": [],
      "confidence": 0.3,
      "stance": "NEUTRAL",
      "entry_action": "WAIT",
      "setup_quality": "WEAK",
      "rationale": "GLDM is a held position, but this run contains no substantive instrument analysis, no trigger conditions, and no investment or portfolio manager decision. The only supported action is to maintain watch/hold status pending proper analysis.",
      "trigger_profile": {
        "primary_trigger_type": "watch_only",
        "trigger_horizon": "unknown",
        "trigger_quality": 0.0,
        "entry_readiness": 0.0,
        "thesis_state": "low_quality",
        "semantic_summary": "GLDM is a held position, but this run contains no substantive instrument analysis, no trigger conditions, and no investment or portfolio manager decision. The only supported action is to maintain watch/hold status pending proper analysis."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.0,
      "timing_readiness": 0.0,
      "reason_codes": [
        "missing_analysis_for_held_position",
        "no_actionable_trigger",
        "rule_only_decision",
        "insufficient_data_coverage",
        "weak_setup_quality"
      ],
      "review_required": false,
      "score_now": -0.005870874999999999,
      "score_triggered": 0.0,
      "gate_reasons": [],
      "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
      },
      "broker_symbol": "GLDM",
      "canonical_ticker": "GLDM",
      "display_name": "GLDM"
    },
    {
      "snapshot_id": "20260416T081401_kis_68944660-01",
      "instrument": {
        "broker_symbol": "GOOGL",
        "canonical_ticker": "GOOGL",
        "yahoo_symbol": "GOOGL",
        "krx_code": null,
        "dart_corp_code": null,
        "display_name": "GOOGL",
        "exchange": "US",
        "country": "US",
        "currency": "USD"
      },
      "is_held": true,
      "market_value_krw": 5493505,
      "quantity": 10.0,
      "available_qty": 11.0,
      "sector": null,
      "structured_decision": null,
      "data_coverage": {
        "company_news_count": 0,
        "disclosures_count": 0,
        "social_source": "unavailable",
        "macro_items_count": 0
      },
      "quality_flags": [
        "missing_analysis_for_held_position"
      ],
      "vendor_health": {
        "vendor_calls": {},
        "fallback_count": 0
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "NONE",
      "trigger_conditions": [],
      "confidence": 0.3,
      "stance": "NEUTRAL",
      "entry_action": "WAIT",
      "setup_quality": "WEAK",
      "rationale": "Held GOOGL position has no current-run analysis, no trigger conditions, and rule-only HOLD guidance. The table should treat this as a neutral watch/maintain state rather than an actionable timing setup.",
      "trigger_profile": {
        "primary_trigger_type": "watch_only",
        "trigger_horizon": "unknown",
        "trigger_quality": 0.0,
        "entry_readiness": 0.0,
        "thesis_state": "neutral_watch",
        "semantic_summary": "Held GOOGL position has no current-run analysis, no trigger conditions, and rule-only HOLD guidance. The table should treat this as a neutral watch/maintain state rather than an actionable timing setup."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.0,
      "timing_readiness": 0.0,
      "reason_codes": [
        "missing_analysis_for_held_position",
        "no_trigger_conditions",
        "rule_only_decision",
        "insufficient_data_coverage",
        "neutral_hold"
      ],
      "review_required": false,
      "score_now": -0.005870874999999999,
      "score_triggered": 0.0,
      "gate_reasons": [],
      "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
      },
      "broker_symbol": "GOOGL",
      "canonical_ticker": "GOOGL",
      "display_name": "GOOGL"
    },
    {
      "snapshot_id": "20260416T081401_kis_68944660-01",
      "instrument": {
        "broker_symbol": "LHX",
        "canonical_ticker": "LHX",
        "yahoo_symbol": "LHX",
        "krx_code": null,
        "dart_corp_code": null,
        "display_name": "LHX",
        "exchange": "US",
        "country": "US",
        "currency": "USD"
      },
      "is_held": true,
      "market_value_krw": 527259,
      "quantity": 0.0,
      "available_qty": 1.0,
      "sector": null,
      "structured_decision": null,
      "data_coverage": {
        "company_news_count": 0,
        "disclosures_count": 0,
        "social_source": "unavailable",
        "macro_items_count": 0
      },
      "quality_flags": [
        "missing_analysis_for_held_position"
      ],
      "vendor_health": {
        "vendor_calls": {},
        "fallback_count": 0
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "NONE",
      "trigger_conditions": [],
      "confidence": 0.3,
      "stance": "NEUTRAL",
      "entry_action": "WAIT",
      "setup_quality": "WEAK",
      "rationale": "Held LHX position has no current analysis, no trigger conditions, no investment plan, and zero data coverage in this run. The HOLD/WAIT posture is rule-only maintenance rather than a confirmed constructive thesis or actionable timing setup.",
      "trigger_profile": {
        "primary_trigger_type": "watch_only",
        "trigger_horizon": "unknown",
        "trigger_quality": 0.0,
        "entry_readiness": 0.0,
        "thesis_state": "low_quality",
        "semantic_summary": "Held LHX position has no current analysis, no trigger conditions, no investment plan, and zero data coverage in this run. The HOLD/WAIT posture is rule-only maintenance rather than a confirmed constructive thesis or actionable timing setup."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.0,
      "timing_readiness": 0.0,
      "reason_codes": [
        "missing_analysis_for_held_position",
        "no_trigger_conditions",
        "rule_only_decision",
        "zero_data_coverage",
        "held_position_watch_only"
      ],
      "review_required": true,
      "score_now": -0.006379075,
      "score_triggered": 0.0,
      "gate_reasons": [],
      "data_health": {
        "coverage_score": 0.5700000000000001,
        "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
      },
      "broker_symbol": "LHX",
      "canonical_ticker": "LHX",
      "display_name": "LHX"
    },
    {
      "snapshot_id": "20260416T081401_kis_68944660-01",
      "instrument": {
        "broker_symbol": "NVDA",
        "canonical_ticker": "NVDA",
        "yahoo_symbol": "NVDA",
        "krx_code": null,
        "dart_corp_code": null,
        "display_name": "NVDA",
        "exchange": "US",
        "country": "US",
        "currency": "USD"
      },
      "is_held": true,
      "market_value_krw": 3240666,
      "quantity": 10.0,
      "available_qty": 11.0,
      "sector": null,
      "structured_decision": null,
      "data_coverage": {
        "company_news_count": 0,
        "disclosures_count": 0,
        "social_source": "unavailable",
        "macro_items_count": 0
      },
      "quality_flags": [
        "missing_analysis_for_held_position"
      ],
      "vendor_health": {
        "vendor_calls": {},
        "fallback_count": 0
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "NONE",
      "trigger_conditions": [],
      "confidence": 0.3,
      "stance": "NEUTRAL",
      "entry_action": "WAIT",
      "setup_quality": "WEAK",
      "rationale": "Held NVDA position has no current analysis, no trigger conditions, no structured decision, and zero data coverage in this run. The provided HOLD/WAIT stance is rule-only preservation rather than an actionable thesis.",
      "trigger_profile": {
        "primary_trigger_type": "watch_only",
        "trigger_horizon": "unknown",
        "trigger_quality": 0.0,
        "entry_readiness": 0.0,
        "thesis_state": "low_quality",
        "semantic_summary": "Held NVDA position has no current analysis, no trigger conditions, no structured decision, and zero data coverage in this run. The provided HOLD/WAIT stance is rule-only preservation rather than an actionable thesis."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.0,
      "timing_readiness": 0.0,
      "reason_codes": [
        "missing_analysis_for_held_position",
        "no_trigger_conditions",
        "rule_only_decision",
        "zero_data_coverage",
        "held_position_watch_only"
      ],
      "review_required": true,
      "score_now": -0.006379075,
      "score_triggered": 0.0,
      "gate_reasons": [],
      "data_health": {
        "coverage_score": 0.5700000000000001,
        "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
      },
      "broker_symbol": "NVDA",
      "canonical_ticker": "NVDA",
      "display_name": "NVDA"
    },
    {
      "snapshot_id": "20260416T081401_kis_68944660-01",
      "instrument": {
        "broker_symbol": "RSP",
        "canonical_ticker": "RSP",
        "yahoo_symbol": "RSP",
        "krx_code": null,
        "dart_corp_code": null,
        "display_name": "RSP",
        "exchange": "US",
        "country": "US",
        "currency": "USD"
      },
      "is_held": true,
      "market_value_krw": 295880,
      "quantity": 1.0,
      "available_qty": 1.0,
      "sector": null,
      "structured_decision": null,
      "data_coverage": {
        "company_news_count": 0,
        "disclosures_count": 0,
        "social_source": "unavailable",
        "macro_items_count": 0
      },
      "quality_flags": [
        "missing_analysis_for_held_position"
      ],
      "vendor_health": {
        "vendor_calls": {},
        "fallback_count": 0
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "NONE",
      "trigger_conditions": [],
      "confidence": 0.3,
      "stance": "NEUTRAL",
      "entry_action": "WAIT",
      "setup_quality": "WEAK",
      "rationale": "Held RSP position has no current analysis, no trigger conditions, no news/macro coverage, and only a rule-only HOLD interpretation. This is not an actionable thesis; it should remain watch-only pending proper review or fresh analysis.",
      "trigger_profile": {
        "primary_trigger_type": "watch_only",
        "trigger_horizon": "unknown",
        "trigger_quality": 0.0,
        "entry_readiness": 0.0,
        "thesis_state": "low_quality",
        "semantic_summary": "Held RSP position has no current analysis, no trigger conditions, no news/macro coverage, and only a rule-only HOLD interpretation. This is not an actionable thesis; it should remain watch-only pending proper review or fresh analysis."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.0,
      "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,
      "score_now": -0.006379075,
      "score_triggered": 0.0,
      "gate_reasons": [],
      "data_health": {
        "coverage_score": 0.5700000000000001,
        "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
      },
      "broker_symbol": "RSP",
      "canonical_ticker": "RSP",
      "display_name": "RSP"
    },
    {
      "snapshot_id": "20260416T081401_kis_68944660-01",
      "instrument": {
        "broker_symbol": "TSLA",
        "canonical_ticker": "TSLA",
        "yahoo_symbol": "TSLA",
        "krx_code": null,
        "dart_corp_code": null,
        "display_name": "TSLA",
        "exchange": "US",
        "country": "US",
        "currency": "USD"
      },
      "is_held": true,
      "market_value_krw": 580634,
      "quantity": 1.0,
      "available_qty": 1.0,
      "sector": null,
      "structured_decision": null,
      "data_coverage": {
        "company_news_count": 0,
        "disclosures_count": 0,
        "social_source": "unavailable",
        "macro_items_count": 0
      },
      "quality_flags": [
        "missing_analysis_for_held_position"
      ],
      "vendor_health": {
        "vendor_calls": {},
        "fallback_count": 0
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "NONE",
      "trigger_conditions": [],
      "confidence": 0.3,
      "stance": "NEUTRAL",
      "entry_action": "WAIT",
      "setup_quality": "WEAK",
      "rationale": "Held TSLA position has no current analysis, no trigger conditions, no investment plan, and zero data coverage in this run. Existing HOLD/WAIT stance is rule-only and should be treated as status quo monitoring rather than an actionable thesis.",
      "trigger_profile": {
        "primary_trigger_type": "watch_only",
        "trigger_horizon": "unknown",
        "trigger_quality": 0.0,
        "entry_readiness": 0.0,
        "thesis_state": "low_quality",
        "semantic_summary": "Held TSLA position has no current analysis, no trigger conditions, no investment plan, and zero data coverage in this run. Existing HOLD/WAIT stance is rule-only and should be treated as status quo monitoring rather than an actionable thesis."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.0,
      "timing_readiness": 0.0,
      "reason_codes": [
        "missing_analysis_for_held_position",
        "no_actionable_trigger",
        "rule_only_decision",
        "insufficient_data_coverage",
        "low_confidence_hold"
      ],
      "review_required": true,
      "score_now": -0.006379075,
      "score_triggered": 0.0,
      "gate_reasons": [],
      "data_health": {
        "coverage_score": 0.5700000000000001,
        "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
      },
      "broker_symbol": "TSLA",
      "canonical_ticker": "TSLA",
      "display_name": "TSLA"
    },
    {
      "snapshot_id": "20260416T081401_kis_68944660-01",
      "instrument": {
        "broker_symbol": "TSM",
        "canonical_ticker": "TSM",
        "yahoo_symbol": "TSM",
        "krx_code": null,
        "dart_corp_code": null,
        "display_name": "TSM",
        "exchange": "US",
        "country": "US",
        "currency": "USD"
      },
      "is_held": true,
      "market_value_krw": 2222692,
      "quantity": 4.0,
      "available_qty": 4.0,
      "sector": null,
      "structured_decision": {
        "rating": "OVERWEIGHT",
        "portfolio_stance": "BULLISH",
        "entry_action": "WAIT",
        "setup_quality": "DEVELOPING",
        "confidence": 0.7,
        "time_horizon": "medium",
        "entry_logic": "TSM에 대한 중기 배분 관점은 여전히 긍정적이다. 공격적 분석가가 지적한 것처럼 가격은 10일 EMA 359.54, 50일 SMA 351.56, 200일 SMA 294.12를 모두 상회하고, MACD가 -6.38에서 6.44로 반전했으며, 2026-03-30 저점 316.50에서 369달러대까지 약 16.8% 회복했다. 4월 8일 거래량 16,356,900주 급증도 실제 매수 수요를 뒷받침한다. 다만 보수적·중립 분석가가 공통으로 강조한 대로 현재 가격은 볼린저 상단 378.90과 384.67-386.64 이전 고점권에 가까워 즉시 추격 매수의 보상 대비 위험이 낮다. 따라서 방향성은 BULLISH, 기존 또는 부분 노출은 유지 가능한 OVERWEIGHT이나, 오늘의 신규 진입은 WAIT가 적절하다. 진입은 359.54-351.56 지지 구간에서 매도 압력이 소화되고 회복이 확인되거나, 378.90 위 종가 돌파가 거래량 재확대와 함께 확인될 때만 정당화된다.",
        "exit_logic": "TSM이 359.54 아래로 종가 이탈하고 다음 세션에서도 회복력이 약하면 단기 모멘텀 훼손으로 보고 일부 축소한다. 351.56 아래에서 2거래일 이상 머물면 중기 추세 회복 시나리오가 약해졌으므로 OVERWEIGHT 노출을 줄인다. 378.90 돌파 후 384.67-386.64 구간에서 거래량이 줄고 가격이 되밀리면 실패한 돌파로 간주해 추가 매수는 중단하고 일부 이익을 보호한다. 실적이나 가이던스가 AI/HPC 수요, 선단 공정 가동률, 매출총이익률, capex 효율에 대해 높아진 기대를 충족하지 못하면 투자 논리를 재검토한다.",
        "position_sizing": "확인 전에는 완전한 비중 확대가 아니라 부분 OVERWEIGHT만 유지한다. 신규 자금은 평소보다 작은 tranche로 시작하고, 359.54-351.56 지지 확인 또는 378.90 위 거래량 동반 종가 돌파가 나온 뒤 단계적으로 늘린다. ATR 12.64로 변동성이 높기 때문에 같은 손실 한도를 유지하려면 주식 수를 줄여야 한다. 돌파 매수는 풀 사이즈가 아니라 검증용 첫 추가로 제한하고, 지지선 부근에서 안정화가 확인될 때 더 선호한다.",
        "risk_limits": "단기 거래 위험선은 359.54 종가 이탈, 중기 배분 위험선은 351.56 아래 2거래일 체류로 설정한다. 378.90-386.64 저항 구간에서는 거래량 확인 없이 추가하지 않는다. RSI 66.01은 아직 70 이상 과열은 아니지만 저항대 접근과 결합하면 추격 위험이 커진다. 유가 상승, 달러 강세, 금리 인하 기대 약화, 대만 지정학 헤드라인, 반도체 업종 디리스킹이 심화되면 허용 비중을 낮춘다. 손절은 너무 좁게 두지 않되, 총 포트폴리오 손실 한도는 ATR 상승을 반영해 엄격히 관리한다.",
        "catalysts": [
          "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 이전 고점권 재시험과 추가 모멘텀 확장 가능성이 열린다."
        ],
        "invalidators": [
          "실적과 가이던스가 절대적으로는 양호해도 높아진 AI/HPC 기대, 마진 방어, capex 효율 기대를 넘지 못하는 경우.",
          "TSM이 351.56 아래에서 2거래일 이상 머물며 50일 SMA 회복에 실패하는 경우.",
          "4월 8일 이후 거래량이 9백만 주대로 줄어든 흐름이 이어지고, 378.90 돌파 시도에서 거래량 재확대가 나타나지 않는 경우.",
          "매출총이익률이 capex, 감가상각, 가격 압박, 가동률 문제로 예상보다 크게 훼손되는 경우.",
          "대만 지정학 리스크, 공급망 차질, 반도체 업종 디리스킹, 유가·달러·금리 압박이 동시에 심화되는 경우.",
          "Intel, 미국 내 파운드리 확대, 고객 다변화 압력이 TSM의 장기 가격 결정력과 밸류에이션 프리미엄을 빠르게 낮춘다는 증거가 확인되는 경우."
        ],
        "watchlist_triggers": [
          "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로 전환할 수 있다."
        ],
        "data_coverage": {
          "company_news_count": 4,
          "disclosures_count": 0,
          "social_source": "news_derived",
          "macro_items_count": 1
        }
      },
      "data_coverage": {
        "company_news_count": 4,
        "disclosures_count": 0,
        "social_source": "news_derived",
        "macro_items_count": 1
      },
      "quality_flags": [
        "token_usage_unavailable"
      ],
      "vendor_health": {
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 1
        },
        "fallback_count": 4
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "ADD_IF_TRIGGERED",
      "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의 장기 가격 결정력과 밸류에이션 프리미엄을 빠르게 낮춘다는 증거가 확인되는 경우."
      ],
      "confidence": 0.7,
      "stance": "BULLISH",
      "entry_action": "WAIT",
      "setup_quality": "DEVELOPING",
      "rationale": "TSM thesis is constructive for an existing/partial overweight: fundamentals, AI demand evidence, margins, and trend recovery are supportive. Timing is not yet actionable for adding because the plan explicitly says WAIT, price is near Bollinger/prior-high resistance, and confirmation is required via either a volume-backed close above 378.90 or a controlled pullback that holds the 359.54-351.56 support zone.",
      "trigger_profile": {
        "primary_trigger_type": "breakout_confirmation",
        "trigger_horizon": "days_to_weeks",
        "trigger_quality": 0.72,
        "entry_readiness": 0.38,
        "thesis_state": "constructive_but_not_confirmed",
        "semantic_summary": "TSM thesis is constructive for an existing/partial overweight: fundamentals, AI demand evidence, margins, and trend recovery are supportive. Timing is not yet actionable for adding because the plan explicitly says WAIT, price is near Bollinger/prior-high resistance, and confirmation is required via either a volume-backed close above 378.90 or a controlled pullback that holds the 359.54-351.56 support zone."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.74,
      "timing_readiness": 0.38,
      "reason_codes": [
        "bullish_thesis_existing_position",
        "entry_action_wait",
        "developing_setup",
        "breakout_needs_volume_confirmation",
        "near_resistance_chase_risk",
        "support_pullback_alternative",
        "event_guidance_confirmation_needed",
        "risk_lines_defined"
      ],
      "review_required": true,
      "score_now": 0.060111641599999995,
      "score_triggered": 0.17527910400000002,
      "gate_reasons": [
        "high_fallback_count"
      ],
      "data_health": {
        "coverage_score": 0.7200000000000001,
        "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.72,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.38,
        "thesis_multiplier": 1.144,
        "timing_now": 0.152,
        "timing_triggered": 0.38
      },
      "broker_symbol": "TSM",
      "canonical_ticker": "TSM",
      "display_name": "TSM"
    },
    {
      "snapshot_id": "20260416T081401_kis_68944660-01",
      "instrument": {
        "broker_symbol": "VRT",
        "canonical_ticker": "VRT",
        "yahoo_symbol": "VRT",
        "krx_code": null,
        "dart_corp_code": null,
        "display_name": "VRT",
        "exchange": "US",
        "country": "US",
        "currency": "USD"
      },
      "is_held": true,
      "market_value_krw": 892276,
      "quantity": 2.0,
      "available_qty": 2.0,
      "sector": null,
      "structured_decision": {
        "rating": "OVERWEIGHT",
        "portfolio_stance": "BULLISH",
        "entry_action": "WAIT",
        "setup_quality": "DEVELOPING",
        "confidence": 0.72,
        "time_horizon": "medium",
        "entry_logic": "VRT의 중기 배분 관점은 여전히 긍정적이다. 공격적 분석가와 중립 분석가가 공통으로 지적한 것처럼 2026-04-14 종가 310.51은 10 EMA 283.14, 50 SMA 250.12, 200 SMA 위에 있고, MACD는 2026-04-07의 4.14에서 12.91로 상승하며 히스토그램도 4.27로 확대되어 추세와 모멘텀이 살아 있다. 또한 매출, 영업이익, EPS, 자유현금흐름, 순부채 개선과 AI 데이터센터 전력·냉각 수요, S&P 500 편입, BMarko 인수, 애널리스트 상향이 투자 논리를 뒷받침한다. 다만 보수적 분석가와 중립 분석가가 강조한 대로 234.22 부근에서 310.51까지 약 32.6% 급반등했고 RSI 70.99, ATR 13.92로 단기 진입 비대칭은 좋지 않다. 오늘은 추격 매수하지 않는다. 신규 자금은 312.46 위의 거래량 동반 종가 확인, 특히 최근 4.6M-5.0M 범위를 넘는 거래량과 후속 유지가 나오거나, 299.96/295.11까지의 조정이 감소한 거래량으로 지지되고 반등할 때에만 시작을 검토한다.",
        "exit_logic": "신규 전술 포지션은 295.11 아래 종가와 거래량 증가가 동시에 나오거나, 299.96 회복에 실패하면 축소 또는 청산한다. 10 EMA 근처인 283.14 아래 종가는 스윙 모멘텀 훼손으로 보고 노출을 더 줄이거나 재평가한다. 중기 투자 논리는 실적, 가이던스, 수주잔고, 주문, 마진, 자유현금흐름이 현재 밸류에이션에 반영된 높은 AI 데이터센터 성장 기대를 뒷받침하지 못할 때 종료한다. 특히 2025-12-31 분기의 883.9M 자유현금흐름이 480M 운전자본 기여에 크게 의존했다는 보수적 분석가의 지적은 현금 전환 재현성 점검 항목으로 둔다.",
        "position_sizing": "기존 보유자는 수익권이고 비중이 과도하지 않다면 유지할 수 있지만, 현재 310.51 부근의 과열 구간에서는 추가 매수를 보류한다. 신규 자금은 조건 충족 후 정상 비중의 약 1/3에서 1/2만 시작하는 단계적 접근이 적절하다. VRT의 beta 2.048, ATR 13.92, 고평가 지표인 후행 P/E 약 90과 P/B 약 29.9, 그리고 매크로 민감도를 고려해 확정 돌파나 지지 확인 전에는 고확신 단일 종목 한도보다 낮게 운용한다.",
        "risk_limits": "단일 종목 노출은 312.46 위의 거래량 동반 돌파가 유지되거나 299.96/295.11 지지 후 반등이 확인될 때까지 정상 고확신 한도 이하로 제한한다. 296.6은 공격적 전술 위험선, 295.11/299.96은 단기 핵심 지지, 283.14는 스윙 추세 위험선으로 사용한다. 2026-03-31의 -6.71% 하락이 보여준 것처럼 위험회피 국면에서는 빠른 리프라이싱이 가능하므로 금리, 달러, 인플레이션, 에너지 비용, AI 설비투자 기대 변화가 생기면 즉시 재평가한다.",
        "catalysts": [
          "2026-04-14 장중 고점 312.46 위에서 최근 4.6M-5.0M 거래량 범위를 넘는 거래량 동반 종가 확인",
          "다음 실적 또는 가이던스에서 매출 성장, 마진 확대, 수주잔고, 주문, forward EPS 경로가 확인되는 경우",
          "AI 데이터센터 전력·냉각 관련 신규 주문 또는 수주잔고 증가 증거",
          "BMarko 통합이 납품 역량과 모듈형 인프라 실행력을 개선한다는 증거",
          "S&P 500 편입 이후 기관 수급과 유동성 지지 지속",
          "단순 가격 추종이 아니라 추정치 상향을 동반한 추가 목표가 상향"
        ],
        "invalidators": [
          "295.11 아래 종가 이후 299.96 회복 실패",
          "283.14 부근 10 EMA 하향 이탈과 MACD 모멘텀 약화",
          "AI 데이터센터 설비투자 둔화, 고객 주문 지연, 클라우드 설비투자 가이던스 하향",
          "공급망, 인건비, 통합 비용, 투입비 상승으로 인한 마진 압박",
          "2025-12-31의 운전자본 수혜가 반복되지 않아 자유현금흐름이 정상화 또는 악화되는 증거",
          "forward EPS 약 8.09 기대를 뒷받침하지 못하는 추정치 하향 또는 가이던스 리스크",
          "Barclays 목표가 300처럼 일부 목표가가 현 주가보다 낮은 상태에서 추가 상향 근거가 약해지는 경우"
        ],
        "watchlist_triggers": [
          "312.46 위 종가와 최근 4.6M-5.0M 범위를 넘는 거래량 확인",
          "299.96 또는 295.11까지의 조정이 감소한 거래량으로 지지된 뒤 반등",
          "RSI가 과열권에서 식는 동안 가격이 10 EMA 283.14 위를 유지",
          "횡보 중 MACD 히스토그램이 양수를 유지",
          "다음 공시 또는 실적에서 수주잔고, 주문, 마진, BMarko 통합, 현금 전환 업데이트 확인",
          "금리, 달러, 인플레이션, 에너지 비용 변화가 고성장 산업재와 AI 인프라 밸류에이션 지지에 미치는 영향",
          "고거래량 돌파 후 후속 거래일에도 312.46 위를 유지하는지 여부"
        ],
        "data_coverage": {
          "company_news_count": 5,
          "disclosures_count": 0,
          "social_source": "news_derived",
          "macro_items_count": 4
        }
      },
      "data_coverage": {
        "company_news_count": 5,
        "disclosures_count": 0,
        "social_source": "news_derived",
        "macro_items_count": 4
      },
      "quality_flags": [
        "token_usage_unavailable",
        "intraday_snapshot_missing_same_day"
      ],
      "vendor_health": {
        "vendor_calls": {
          "yfinance": 15,
          "naver": 4,
          "ecos": 2,
          "opendart": 2,
          "alpha_vantage": 2
        },
        "fallback_count": 6
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "ADD_IF_TRIGGERED",
      "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처럼 일부 목표가가 현 주가보다 낮은 상태에서 추가 상향 근거가 약해지는 경우"
      ],
      "confidence": 0.72,
      "stance": "BULLISH",
      "entry_action": "WAIT",
      "setup_quality": "DEVELOPING",
      "rationale": "Medium-term VRT thesis is constructive, supported by trend, momentum, AI data-center demand, improving fundamentals, S&P 500 inclusion, acquisition optionality, and analyst support. Timing is not yet actionable for adding because the stock is extended after a sharp rebound, RSI is overbought, valuation is demanding, and the plan explicitly says to wait for either a volume-backed close above 312.46 or a controlled pullback holding 299.96/295.11 before adding.",
      "trigger_profile": {
        "primary_trigger_type": "breakout_confirmation",
        "trigger_horizon": "days_to_weeks",
        "trigger_quality": 0.72,
        "entry_readiness": 0.42,
        "thesis_state": "constructive_but_not_confirmed",
        "semantic_summary": "Medium-term VRT thesis is constructive, supported by trend, momentum, AI data-center demand, improving fundamentals, S&P 500 inclusion, acquisition optionality, and analyst support. Timing is not yet actionable for adding because the stock is extended after a sharp rebound, RSI is overbought, valuation is demanding, and the plan explicitly says to wait for either a volume-backed close above 312.46 or a controlled pullback holding 299.96/295.11 before adding."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.76,
      "timing_readiness": 0.42,
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_action_wait",
        "breakout_not_confirmed",
        "volume_confirmation_required",
        "overbought_after_sharp_rebound",
        "pullback_support_alternative",
        "valuation_risk_high",
        "held_position_hold_not_add",
        "data_quality_intraday_gap"
      ],
      "review_required": true,
      "score_now": 0.07054194176,
      "score_triggered": 0.20135485439999998,
      "gate_reasons": [
        "high_fallback_count"
      ],
      "data_health": {
        "coverage_score": 0.7200000000000001,
        "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.42,
        "thesis_multiplier": 1.156,
        "timing_now": 0.168,
        "timing_triggered": 0.42
      },
      "broker_symbol": "VRT",
      "canonical_ticker": "VRT",
      "display_name": "VRT"
    },
    {
      "snapshot_id": "20260416T081401_kis_68944660-01",
      "instrument": {
        "broker_symbol": "VXUS",
        "canonical_ticker": "VXUS",
        "yahoo_symbol": "VXUS",
        "krx_code": null,
        "dart_corp_code": null,
        "display_name": "VXUS",
        "exchange": "US",
        "country": "US",
        "currency": "USD"
      },
      "is_held": true,
      "market_value_krw": 489750,
      "quantity": 4.0,
      "available_qty": 4.0,
      "sector": null,
      "structured_decision": {
        "rating": "OVERWEIGHT",
        "portfolio_stance": "BULLISH",
        "entry_action": "WAIT",
        "setup_quality": "DEVELOPING",
        "confidence": 0.68,
        "time_horizon": "medium",
        "entry_logic": "VXUS의 중기 배분 관점은 비중확대가 타당하다. 공격적 분석가와 중립 분석가가 지적했듯 2026-03-20 종가 74.71에서 2026-04-14 종가 82.81까지 회복했고, 10일 지수이동평균 80.11, 50일 단순이동평균 79.73, 200일 단순이동평균 약 74.14를 모두 회복했다. MACD 0.76과 히스토그램 0.81도 회복 모멘텀을 뒷받침한다. 다만 보수적 분석가의 우려처럼 현재 가격은 82.90 돌파 기준과 84.11-84.28 저항대에 가까우며, RSI가 31.11에서 66.06까지 빠르게 상승했고 ATR 1.52로 변동성도 높다. 따라서 오늘 즉시 추격 매수하지 않고 WAIT한다. 선호 진입은 80.10-79.70 재시험 뒤 반등 확인이며, 대안으로는 VXUS가 82.90 위에서 평균 이상 거래량과 종가 안착을 보일 때 제한적 스타터를 허용한다.",
        "exit_logic": "전술 진입 후 VXUS가 79.70 아래에서 종가 마감하고 MACD 히스토그램이 둔화되면 축소 또는 청산한다. 84.11-84.28 저항대 돌파 실패 뒤 10일 지수이동평균 아래로 되밀리면 신규 매수는 중단하고 보유 전술 물량을 재평가한다. 기존 중기 국제주식 배분은 80.10-79.70 지지대가 무너지고 달러 강세, 유가 상승, 금리 인하 기대 후퇴, 지정학 위험이 동시에 악화될 때 방어적으로 낮춘다.",
        "position_sizing": "현재 저항에 근접해 있어 전체 전술 포지션을 즉시 시작하지 않는다. 80.10-79.70 부근에서 반등이 확인되면 의도한 전술 규모의 약 1/3에서 1/2 수준으로 시작한다. 82.90 돌파 매수는 보수적·중립적 분석가의 경고를 반영해 약 1/3 이하의 작은 스타터로 제한하고, 84.28 위 안착과 과열 없는 후속 흐름이 확인될 때만 단계적으로 추가한다. 포트폴리오 차원에서는 미국 대형주 편중을 낮추기 위한 VXUS 비중확대 유지가 가능하지만 신규 자금은 분할 집행한다.",
        "risk_limits": "핵심 전술 위험 구간은 80.10-79.70이며, 79.70 하향 종가 마감은 방어 전환 신호다. ATR 1.52, 가격 대비 약 1.83%의 변동성을 고려해 확정 진입가 기준 1.0-1.5 ATR 아래의 변동성 기반 손절을 사용하되, 그만큼 포지션 크기를 줄인다. 84.11-84.28 저항대에서는 거래량 확인 없이 추격하지 않는다. 달러 강세, 유가 급등, 금리 인하 기대 후퇴, Iran 관련 지정학 위험은 VXUS의 USD 기준 수익률과 글로벌 위험 선호를 훼손할 수 있어 상시 점검한다.",
        "catalysts": [
          "VXUS가 82.90 위에서 평균 이상 거래량으로 종가 안착하고 후속 매수가 이어지는 경우",
          "84.11-84.28 저항대를 과열 없는 흐름으로 돌파하고 유지하는 경우",
          "달러 약세가 지속되어 비미국 주식의 USD 기준 수익률이 개선되는 경우",
          "국제주식이 미국 대형주 지수 대비 상대 강세를 이어가는 경우",
          "미국 대형주 편중 포트폴리오에서 광범위한 비미국 ETF로 재배분 수요가 유입되는 경우",
          "3월 급락 이후 변동성이 안정되고 VXUS가 10일 및 50일 평균 위에서 유지되는 경우"
        ],
        "invalidators": [
          "VXUS가 79.70 아래에서 종가 마감하고 MACD 히스토그램이 약화되는 경우",
          "84.11-84.28 저항대에서 거절된 뒤 10일 지수이동평균 아래로 되밀리는 경우",
          "달러 강세, 유가 상승, 금리 인하 기대 후퇴가 동시에 지속되는 경우",
          "뉴스 흐름이 국제 분산과 상대 강세에서 글로벌 위험회피 또는 해외 성장 둔화로 바뀌는 경우",
          "지정학 악화가 지역 순환매가 아니라 전반적 위험자산 매도로 이어지는 경우",
          "RSI가 70 위로 과열되는데 거래량 확인이나 가격 안착이 동반되지 않는 경우"
        ],
        "watchlist_triggers": [
          "스타터 검토: VXUS가 80.10-79.70을 재시험한 뒤 모멘텀이 안정되며 반등하는 경우",
          "돌파 스타터 검토: VXUS가 82.90 위에서 평균 이상 거래량으로 종가 안착하고 다음 거래에서도 유지되는 경우",
          "추가 검토: VXUS가 84.28 위를 유지하면서 RSI 과열과 MACD 둔화가 나타나지 않는 경우",
          "위험 축소: VXUS가 79.70 아래에서 종가 마감하거나 MACD 히스토그램이 여러 거래일 둔화되는 경우",
          "진입 지연: VXUS가 저항대 근처에서 RSI 70 이상으로 상승하지만 거래량 확인이 부족한 경우",
          "거시 점검: 달러, 유가, 금리 기대, 지정학 뉴스가 VXUS에 우호적인 방향으로 바뀌는 경우"
        ],
        "data_coverage": {
          "company_news_count": 3,
          "disclosures_count": 1,
          "social_source": "news_derived",
          "macro_items_count": 1
        }
      },
      "data_coverage": {
        "company_news_count": 3,
        "disclosures_count": 1,
        "social_source": "news_derived",
        "macro_items_count": 1
      },
      "quality_flags": [
        "token_usage_unavailable",
        "intraday_snapshot_missing_same_day"
      ],
      "vendor_health": {
        "vendor_calls": {
          "yfinance": 17,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 7
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "ADD_IF_TRIGGERED",
      "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 위로 과열되는데 거래량 확인이나 가격 안착이 동반되지 않는 경우"
      ],
      "confidence": 0.68,
      "stance": "BULLISH",
      "entry_action": "WAIT",
      "setup_quality": "DEVELOPING",
      "rationale": "VXUS has a constructive medium-term overweight thesis, supported by recovery above key moving averages, positive MACD, and portfolio diversification logic. Timing is not yet actionable because the recommendation is WAIT, price is near breakout/resistance levels, RSI has risen quickly, ATR is elevated, and adds require either a pullback-and-rebound around 80.10-79.70 or confirmed breakout above 82.90 with volume and follow-through.",
      "trigger_profile": {
        "primary_trigger_type": "watch_only",
        "trigger_horizon": "days_to_weeks",
        "trigger_quality": 0.58,
        "entry_readiness": 0.42,
        "thesis_state": "constructive_but_not_confirmed",
        "semantic_summary": "VXUS has a constructive medium-term overweight thesis, supported by recovery above key moving averages, positive MACD, and portfolio diversification logic. Timing is not yet actionable because the recommendation is WAIT, price is near breakout/resistance levels, RSI has risen quickly, ATR is elevated, and adds require either a pullback-and-rebound around 80.10-79.70 or confirmed breakout above 82.90 with volume and follow-through."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.68,
      "timing_readiness": 0.42,
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_action_wait",
        "trigger_required_before_add",
        "near_resistance_zone",
        "elevated_momentum_and_volatility",
        "held_position_hold_now",
        "data_quality_intraday_gap"
      ],
      "review_required": true,
      "score_now": 0.06290888192000002,
      "score_triggered": 0.18227220480000006,
      "gate_reasons": [
        "high_fallback_count"
      ],
      "data_health": {
        "coverage_score": 0.7200000000000001,
        "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.58,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.42,
        "thesis_multiplier": 1.108,
        "timing_now": 0.168,
        "timing_triggered": 0.42
      },
      "broker_symbol": "VXUS",
      "canonical_ticker": "VXUS",
      "display_name": "VXUS"
    }
  ],
  "actions": [
    {
      "canonical_ticker": "ETN",
      "display_name": "ETN",
      "priority": 1,
      "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": "Best relative watch candidate: constructive AI power infrastructure thesis, highest trigger quality in the batch, clearer breakout/pullback levels, and somewhat cleaner data than VRT/VXUS. Still HOLD now because price is near 407-408 resistance and entry remains explicitly WAIT.",
      "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.42,
        "thesis_multiplier": 1.132,
        "timing_now": 0.168,
        "timing_triggered": 0.42,
        "score_now": 0.0689,
        "score_triggered": 0.1972
      },
      "decision_source": "RULE+DEEP+CODEX",
      "timing_readiness": 0.42,
      "reason_codes": [
        "bullish_medium_term_thesis",
        "entry_wait_required",
        "breakout_needs_volume_confirmation",
        "near_resistance_and_highs",
        "pullback_entry_alternative",
        "earnings_confirmation_pending",
        "explicit_invalidation_levels",
        "limited_data_coverage",
        "constructive_medium_term_thesis",
        "highest_trigger_quality",
        "entry_action_wait",
        "volume_confirmation_required",
        "high_fallback_count",
        "cash_buffer_breach_no_add"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "VRT",
      "display_name": "VRT",
      "priority": 2,
      "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": "Strong medium-term thesis and highest current score, but demoted behind ETN for overbought rebound, demanding valuation, high fallback count, and concentration overlap with AI infrastructure. Maintain held position only; add only after confirmed volume breakout or controlled support pullback.",
      "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.42,
        "thesis_multiplier": 1.156,
        "timing_now": 0.168,
        "timing_triggered": 0.42,
        "score_now": 0.0705,
        "score_triggered": 0.2014
      },
      "decision_source": "RULE+DEEP+CODEX",
      "timing_readiness": 0.42,
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_action_wait",
        "breakout_not_confirmed",
        "volume_confirmation_required",
        "overbought_after_sharp_rebound",
        "pullback_support_alternative",
        "valuation_risk_high",
        "held_position_hold_not_add",
        "data_quality_intraday_gap",
        "ai_infrastructure_concentration",
        "high_fallback_count",
        "cash_buffer_breach_no_add"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "VXUS",
      "display_name": "VXUS",
      "priority": 3,
      "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": "Diversification value lifts VXUS above more concentrated tech/AI names despite weaker trigger quality and data flags. It remains a watch-only HOLD because price is near resistance and confirmation is required via pullback rebound or volume-backed breakout.",
      "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.58,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.42,
        "thesis_multiplier": 1.108,
        "timing_now": 0.168,
        "timing_triggered": 0.42,
        "score_now": 0.0629,
        "score_triggered": 0.1823
      },
      "decision_source": "RULE+DEEP+CODEX",
      "timing_readiness": 0.42,
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_action_wait",
        "trigger_required_before_add",
        "near_resistance_zone",
        "elevated_momentum_and_volatility",
        "held_position_hold_now",
        "data_quality_intraday_gap",
        "portfolio_diversification_benefit",
        "high_fallback_count",
        "cash_buffer_breach_no_add"
      ],
      "review_required": true,
      "trigger_type": "watch_only",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "TSM",
      "display_name": "TSM",
      "priority": 4,
      "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": "High-quality AI semiconductor thesis and existing overweight exposure are constructive, but rank is restrained by sector concentration, current portfolio weight, lower timing readiness, and resistance near prior highs. Hold existing exposure; do not add until volume breakout or support retest confirms.",
      "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.72,
        "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": [
        "bullish_thesis_existing_position",
        "entry_action_wait",
        "developing_setup",
        "breakout_needs_volume_confirmation",
        "near_resistance_chase_risk",
        "support_pullback_alternative",
        "event_guidance_confirmation_needed",
        "risk_lines_defined",
        "semiconductor_ai_concentration",
        "existing_position_weight_notable",
        "cash_buffer_breach_no_add"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "AAPL",
      "display_name": "AAPL",
      "priority": 5,
      "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": "Lowest priority among provided tickers: acceptable hold with improving technicals, but legacy rating is HOLD, price remains below near-term resistance, event and valuation risks remain unresolved, and trigger quality is modest. Keep as existing exposure only.",
      "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.62,
        "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+CODEX",
      "timing_readiness": 0.38,
      "reason_codes": [
        "held_position_hold_not_add",
        "constructive_medium_term_thesis",
        "breakout_not_confirmed",
        "below_near_term_resistance",
        "volume_confirmation_required",
        "support_retest_alternative",
        "valuation_limits_sizing",
        "event_risks_unresolved",
        "clear_downside_invalidation",
        "legacy_hold_rating",
        "modest_trigger_quality",
        "cash_buffer_breach_no_add"
      ],
      "review_required": true,
      "trigger_type": "watch_only",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "ETHU",
      "display_name": "ETHU",
      "priority": 6,
      "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": "ETHU has a constructive tactical rebound thesis, with price back above short-term averages, improving MACD, non-overbought RSI, and some recent inflow evidence. Timing is not confirmed because the plan explicitly waits for a daily close above 25.90-26.00 with stronger volume, or a controlled support test near 24.65 or 23.50-23.10 before adding. Existing small exposure can be held, but new/additional action remains conditional.",
      "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.68,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.38,
        "thesis_multiplier": 1.072,
        "timing_now": 0.152,
        "timing_triggered": 0.38,
        "score_now": 0.0482,
        "score_triggered": 0.1455
      },
      "decision_source": "RULE+DEEP",
      "timing_readiness": 0.38,
      "reason_codes": [
        "constructive_rebound_setup",
        "entry_wait_state",
        "breakout_not_confirmed",
        "specific_price_volume_trigger",
        "leveraged_etf_risk",
        "support_invalidation_defined",
        "data_fallbacks_present"
      ],
      "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": "GLDM is a held position, but this run contains no substantive instrument analysis, no trigger conditions, and no investment or portfolio manager decision. The only supported action is to maintain watch/hold status pending proper analysis.",
      "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",
        "weak_setup_quality"
      ],
      "review_required": false,
      "trigger_type": "watch_only",
      "gate_reasons": [],
      "sector": null
    },
    {
      "canonical_ticker": "GOOGL",
      "display_name": "GOOGL",
      "priority": 8,
      "confidence": 0.3,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.2771,
      "action_if_triggered": "NONE",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.2771,
      "trigger_conditions": [],
      "rationale": "Held GOOGL position has no current-run analysis, no trigger conditions, and rule-only HOLD guidance. The table should treat this as a neutral watch/maintain 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",
        "insufficient_data_coverage",
        "neutral_hold"
      ],
      "review_required": false,
      "trigger_type": "watch_only",
      "gate_reasons": [],
      "sector": null
    },
    {
      "canonical_ticker": "LHX",
      "display_name": "LHX",
      "priority": 9,
      "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 investment plan, and zero data coverage in this run. The HOLD/WAIT posture is rule-only maintenance rather than a confirmed constructive thesis or actionable timing setup.",
      "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_conditions",
        "rule_only_decision",
        "zero_data_coverage",
        "held_position_watch_only"
      ],
      "review_required": true,
      "trigger_type": "watch_only",
      "gate_reasons": [],
      "sector": null
    },
    {
      "canonical_ticker": "NVDA",
      "display_name": "NVDA",
      "priority": 10,
      "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 analysis, no trigger conditions, no structured decision, and zero data coverage in this run. The provided HOLD/WAIT stance is rule-only preservation rather than an actionable thesis.",
      "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_conditions",
        "rule_only_decision",
        "zero_data_coverage",
        "held_position_watch_only"
      ],
      "review_required": true,
      "trigger_type": "watch_only",
      "gate_reasons": [],
      "sector": null
    },
    {
      "canonical_ticker": "RSP",
      "display_name": "RSP",
      "priority": 11,
      "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 trigger conditions, no news/macro coverage, and only a rule-only HOLD interpretation. This is not an actionable thesis; it should remain watch-only pending proper review or fresh analysis.",
      "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_conditions",
        "rule_only_decision",
        "insufficient_data_coverage",
        "watch_only"
      ],
      "review_required": true,
      "trigger_type": "watch_only",
      "gate_reasons": [],
      "sector": null
    },
    {
      "canonical_ticker": "TSLA",
      "display_name": "TSLA",
      "priority": 12,
      "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": "Held TSLA position has no current analysis, no trigger conditions, no investment plan, and zero data coverage in this run. Existing HOLD/WAIT stance is rule-only and should be treated as status quo monitoring rather than an actionable thesis.",
      "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_actionable_trigger",
        "rule_only_decision",
        "insufficient_data_coverage",
        "low_confidence_hold"
      ],
      "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, gas turbine scarcity, grid and transformer bottlenecks, and a still-intact uptrend above key moving averages. However, immediate entry is not ready: price is extended into the 999.43-1007.38 resistance zone after a sharp run, with RSI near overbought, high ATR, fading high-area volume, and slight MACD histogram softening. Action should remain watch-only until either a confirmed daily close above 1007.38 with volume and momentum expansion, or a controlled pullback 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.66,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.34,
        "thesis_multiplier": 1.132,
        "timing_now": 0.136,
        "timing_triggered": 0.34,
        "score_now": -0.0497,
        "score_triggered": 0.1131
      },
      "decision_source": "RULE+DEEP",
      "timing_readiness": 0.34,
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_wait_state",
        "breakout_not_confirmed",
        "extended_near_resistance",
        "momentum_volume_confirmation_needed",
        "pullback_support_alternative",
        "valuation_and_execution_risks",
        "limited_disclosure_coverage"
      ],
      "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": "Medium-term thesis is constructive because FANG remains above key longer-term moving averages and fundamentals/free cash flow support the bullish stance, but immediate timing is not confirmed. Current price is still below the 10-day EMA and VWMA, RSI remains below 50, and MACD histogram is negative, so the appropriate state is watch-only until a daily close 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.68,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.36,
        "thesis_multiplier": 1.072,
        "timing_now": 0.144,
        "timing_triggered": 0.36,
        "score_now": -0.0549,
        "score_triggered": 0.1034
      },
      "decision_source": "RULE+DEEP",
      "timing_readiness": 0.36,
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_wait_required",
        "momentum_not_confirmed",
        "below_near_term_averages",
        "defined_breakout_triggers",
        "small_starter_only_if_triggered",
        "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
    }
  ]
}