{
  "snapshot_id": "20260417T105713_kis_68944660-01",
  "snapshot_health": "VALID",
  "account_value_krw": 11267740,
  "cash_diagnostics": {
    "summary_fields_present": [
      "asst_icdc_amt",
      "asst_icdc_erng_rt",
      "bfdy_buy_amt",
      "bfdy_sll_amt",
      "bfdy_tlex_amt",
      "bfdy_tot_asst_evlu_amt",
      "cma_evlu_amt",
      "d2_auto_rdpt_amt",
      "dnca_tot_amt",
      "evlu_amt_smtl_amt",
      "evlu_pfls_smtl_amt",
      "fncg_gld_auto_rdpt_yn",
      "nass_amt",
      "nxdy_auto_rdpt_amt",
      "nxdy_excc_amt",
      "pchs_amt_smtl_amt",
      "prvs_rcdl_excc_amt",
      "scts_evlu_amt",
      "thdt_buy_amt",
      "thdt_sll_amt",
      "thdt_tlex_amt",
      "tot_evlu_amt",
      "tot_loan_amt",
      "tot_stln_slng_chgs"
    ],
    "parsed_numeric_fields": {
      "dnca_tot_amt": 3695340,
      "tot_evlu_amt": 10282260,
      "nass_amt": 10282260,
      "pchs_amt_smtl_amt": 7250317,
      "evlu_amt_smtl_amt": 7572400
    },
    "positions_market_value_krw": 7572400,
    "selected_fields": {
      "settled_cash": "dnca_tot_amt",
      "available_cash": "dnca_tot_amt",
      "buying_power": "dnca_tot_amt",
      "total_equity": "tot_evlu_amt"
    }
  },
  "decision_distribution": {
    "OVERWEIGHT": 10,
    "HOLD": 1
  },
  "legacy_rating_distribution": {
    "OVERWEIGHT": 10,
    "HOLD": 1
  },
  "stance_distribution": {
    "BULLISH": 11
  },
  "entry_action_distribution": {
    "WAIT": 11
  },
  "translated_action_distribution": {
    "WATCH_TRIGGER": 11
  },
  "portfolio_summary_counts": {
    "decision_distribution": {
      "OVERWEIGHT": 10,
      "HOLD": 1
    },
    "stance_distribution": {
      "BULLISH": 11
    },
    "entry_action_distribution": {
      "WAIT": 11
    },
    "avg_confidence": 0.6718181818181819,
    "company_news_zero_ratio": 0.0,
    "snapshot_health": "VALID",
    "warning_flags": [
      "mixed_daily_cohort: trade_date_distribution includes 2026-04-16=5, 2026-04-17=6.",
      "Wait-heavy constructive batch: WAIT 11/11 with BULLISH 11/11; review entry-action calibration."
    ],
    "actionable_now_count": 0,
    "triggerable_candidates_count": 11,
    "strategic_trigger_candidates_count": 11,
    "budgeted_trigger_candidates_count": 0,
    "immediate_candidates_count": 0,
    "funding_candidates_count": 11,
    "held_add_if_triggered_count": 11,
    "watch_if_triggered_count": 0,
    "watch_candidates_count": 0,
    "held_watch_count": 11,
    "review_required_count": 11,
    "rule_only_fallback_count": 0,
    "funding_plan_available": true
  },
  "warnings": [
    "mixed_daily_cohort: trade_date_distribution includes 2026-04-16=5, 2026-04-17=6.",
    "Wait-heavy constructive batch: WAIT 11/11 with BULLISH 11/11; review entry-action calibration."
  ],
  "semantic_verdicts": [
    {
      "canonical_ticker": "000660.KS",
      "display_name": "SK하이닉스",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.72,
      "timing_readiness": 0.34,
      "trigger_type": "breakout_confirmation",
      "trigger_horizon": "days_to_weeks",
      "trigger_quality": 0.64,
      "thesis_state": "constructive_but_not_confirmed",
      "semantic_summary": "SK하이닉스의 중기 thesis는 AI/HBM 수요, 메모리 가격 강세, 높은 수익성, FCF와 순차입금 개선으로 constructive하다. 그러나 주가는 단기간 약 40% 급반등 후 신고가와 볼린저 상단 부근에 있어 즉시 ADD 타이밍은 확인되지 않았다. 실행은 1,162,000원 위 종가 안착과 거래량 확대, 또는 1,040,000~1,050,000원 지지 확인 전까지 HOLD/WAIT 성격이다.",
      "counter_evidence": [
        "최근 급반등 이후 가격이 신고가와 볼린저 상단 부근에 있어 추격 매수 손익비가 불완전하다.",
        "entry_action이 WAIT이고 setup_quality가 DEVELOPING으로 제시되어 즉시 실행 조건이 충족되지 않았다.",
        "execution_feasibility_now가 blocked_stale_or_degraded_data이며 fallback_count가 5로 데이터 품질 저하가 있다.",
        "disclosures_count와 macro_items_count가 0이라 확인 가능한 공시 및 거시 맥락이 제한적이다.",
        "1100000원 하회, 1030000~1040000원 붕괴, 외국인 매도 전환, HBM/DRAM/NAND 기대 미달이 명확한 리스크로 남아 있다."
      ],
      "reason_codes": [
        "bullish_medium_term_thesis",
        "entry_wait_state",
        "breakout_not_confirmed",
        "near_upper_band_after_sharp_rally",
        "specific_price_volume_trigger",
        "held_position_hold_preferred",
        "stale_or_degraded_data",
        "risk_levels_defined"
      ],
      "review_required": false
    },
    {
      "canonical_ticker": "005380.KS",
      "display_name": "현대차",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.66,
      "timing_readiness": 0.34,
      "trigger_type": "breakout_confirmation",
      "trigger_horizon": "days_to_weeks",
      "trigger_quality": 0.62,
      "thesis_state": "constructive_but_not_confirmed",
      "semantic_summary": "Constructive medium-term overweight thesis for Hyundai Motor is supported by rebound above short-term averages, improving RSI/MACD, hybrid and eco-car momentum, and optionality from robotics/physical AI. Timing is not actionable now because the stated action is WAIT, resistance at 514000-519000 KRW has not yet become confirmed support on volume, and execution is flagged as stale or degraded. Action should remain hold/add-if-triggered until a close above 519000 KRW with clear volume expansion and follow-through support, or a confirmed pullback support setup at 489000-497000 KRW.",
      "counter_evidence": [
        "Entry action is explicitly WAIT and setup quality is DEVELOPING, not confirmed.",
        "514000-519000 KRW resistance has not yet been converted into confirmed support with volume.",
        "ATR is elevated at about 5.56% of price, making immediate chase timing weaker.",
        "Execution feasibility is blocked by stale or degraded data despite being triggerable.",
        "Fundamental risks include weak operating margin, negative free cash flow, rising net debt, and competitive pressure from EV/PHEV pricing."
      ],
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_action_wait",
        "breakout_not_confirmed",
        "volume_confirmation_required",
        "high_atr_volatility",
        "stale_or_degraded_execution_data",
        "held_position_hold_not_add_now",
        "clear_price_invalidators_defined"
      ],
      "review_required": false
    },
    {
      "canonical_ticker": "005930.KS",
      "display_name": "삼성전자",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.68,
      "timing_readiness": 0.38,
      "trigger_type": "breakout_confirmation",
      "trigger_horizon": "days_to_weeks",
      "trigger_quality": 0.64,
      "thesis_state": "constructive_but_not_confirmed",
      "semantic_summary": "Bullish medium-term Samsung Electronics thesis is supported by improving trend, momentum, cash flow, and memory/HBM recovery narrative, but the current action is HOLD/WAIT because price is just below the 218000-223000 resistance zone and volume confirmation is insufficient. Add timing depends on a daily close above 218000 with volume expansion, preferably followed by 223000 breakout or support, or a controlled pullback holding 210500-203900.",
      "counter_evidence": [
        "Latest confirmed close of 217500 is directly below the 218000-223000 resistance band.",
        "Volume on 2026-04-16 was below early-April spike levels, so resistance absorption is not confirmed.",
        "Same-day intraday snapshot is missing, making execution now degraded or stale.",
        "Potential labor rally on 2026-04-23 and strike risk around 2026-05-21 could require reassessment.",
        "Close below 203900 or especially 195000-195200 would weaken or invalidate the tactical setup."
      ],
      "reason_codes": [
        "bullish_thesis_waiting_for_confirmation",
        "near_resistance_no_chase",
        "volume_confirmation_missing",
        "stale_intraday_data",
        "explicit_breakout_trigger_defined",
        "support_pullback_alternative_defined",
        "labor_event_risk_pending"
      ],
      "review_required": false
    },
    {
      "canonical_ticker": "010950.KS",
      "display_name": "S-Oil",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.64,
      "timing_readiness": 0.34,
      "trigger_type": "breakout_confirmation",
      "trigger_horizon": "days_to_weeks",
      "trigger_quality": 0.56,
      "thesis_state": "constructive_but_not_confirmed",
      "semantic_summary": "S-Oil has a constructive medium-term thesis supported by price still above key moving averages, neutral RSI, recovering profitability, stronger free cash flow, and lower net debt. However, execution timing is not confirmed: the plan explicitly says WAIT, momentum has faded, price has pulled back from resistance, ATR is elevated, and adds require either support confirmation near KRW 116,500-117,000 with stable volume or a volume-backed close above KRW 120,700-122,000 with MACD re-expansion.",
      "counter_evidence": [
        "Entry action is WAIT and setup quality is only DEVELOPING, so immediate add timing is incomplete.",
        "MACD histogram has contracted from 1,134.54 to 609.15 while price slipped from KRW 122,000 to KRW 119,100 and KRW 117,500.",
        "ATR is elevated at roughly 5.9% of price, increasing execution risk.",
        "Data health is degraded or stale with no disclosures, no macro coverage in the candidate coverage, multiple vendor fallbacks, and execution_feasibility_now marked blocked_stale_or_degraded_data.",
        "Bullish narrative partly depends on 1Q earnings, refining margins, diesel spreads, and broader broker estimate confirmation that have not yet been verified."
      ],
      "reason_codes": [
        "bullish_but_wait",
        "developing_setup",
        "momentum_confirmation_missing",
        "volume_breakout_required",
        "support_hold_required",
        "elevated_volatility",
        "stale_or_degraded_data",
        "earnings_event_pending"
      ],
      "review_required": false
    },
    {
      "canonical_ticker": "012450.KS",
      "display_name": "한화에어로스페이스",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.72,
      "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": "Medium-term thesis is constructive for 012450.KS due to defense/aerospace contract momentum, favorable K-defense earnings expectations, improving cash flow and net debt, and price holding above key moving averages. Timing is not actionable now: the recommendation is HOLD/WAIT, with adds only after a confirmed close above 1,559,000 KRW on stronger volume and follow-through, or a controlled pullback holding near 1,485,000 KRW with RSI stability. Stale/degraded execution data and no intraday snapshot further argue against immediate action.",
      "counter_evidence": [
        "Entry action is explicitly WAIT and setup quality is DEVELOPING, not confirmed.",
        "April volume is weaker than the March participation surge, reducing breakout confidence.",
        "Price is extended versus the 50 SMA and 200 SMA, increasing chase risk.",
        "RSI has softened from 63.67 to 59.50 and needs stabilization above 55.",
        "Execution feasibility is blocked by stale or degraded data and no intraday snapshot was used.",
        "Valuation, dilution/capital policy, leverage, working-capital-driven cash flow, and geopolitical premium reversal remain material risks."
      ],
      "reason_codes": [
        "bullish_medium_term_thesis",
        "entry_action_wait",
        "developing_setup",
        "breakout_not_confirmed",
        "volume_confirmation_required",
        "pullback_support_alternative",
        "stale_or_degraded_data",
        "held_position_core_hold"
      ],
      "review_required": false
    },
    {
      "canonical_ticker": "034020.KS",
      "display_name": "두산에너빌리티",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.66,
      "timing_readiness": 0.36,
      "trigger_type": "breakout_confirmation",
      "trigger_horizon": "days_to_weeks",
      "trigger_quality": 0.62,
      "thesis_state": "constructive_but_not_confirmed",
      "semantic_summary": "Medium-term thesis is constructive: the stock reclaimed 110800 KRW with stronger volume and remains above key moving averages, with nuclear and power-infrastructure catalysts still relevant. Timing is not actionable now because the recommendation is explicitly WAIT/HOLD, the setup is developing, price is extended with high beta/ATR, and confirmation is required through either support at 105700-106500 KRW or a renewed close above 110800 KRW with follow-through volume.",
      "counter_evidence": [
        "Entry action is WAIT and suggested action now is HOLD, so immediate add timing is not confirmed.",
        "Execution feasibility is marked blocked_stale_or_degraded_data with intraday_snapshot_missing_same_day.",
        "Forward PER near 101x, beta 1.832, ATR around 4.85%, and low net margin increase downside sensitivity.",
        "Recent weakness may reflect foreign/institutional selling and market-linked profit taking.",
        "Cash-flow improvement may depend on working-capital timing rather than repeatable fundamentals."
      ],
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_wait_not_actionable_now",
        "breakout_needs_volume_follow_through",
        "support_retest_required",
        "high_valuation_and_volatility",
        "stale_or_degraded_timing_data",
        "held_position_core_hold"
      ],
      "review_required": true
    },
    {
      "canonical_ticker": "042700.KS",
      "display_name": "한미반도체",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.68,
      "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": "Constructive medium-term HBM/AI equipment thesis with strong profitability, balance sheet quality, and improving technical structure, but execution timing is not confirmed. Current action is HOLD/WAIT; adding requires a daily close above 296500 with volume recovery above 458794 shares, or a controlled pullback holding 286000-280500 without breaking VWMA support near 272000.",
      "counter_evidence": [
        "2026-04-17 was not a trading day and no same-day intraday confirmation was available.",
        "2026-04-16 volume declined versus the prior session, so breakout participation is not yet confirmed.",
        "Forward PE near 55, beta around 2.245, and ATR near 17450 KRW imply high valuation and high volatility risk.",
        "Recent quarterly revenue decline, elevated short balance, and TC bonder patent dispute remain material risks."
      ],
      "reason_codes": [
        "entry_action_wait",
        "constructive_medium_term_thesis",
        "breakout_trigger_defined",
        "volume_confirmation_missing",
        "stale_or_degraded_same_day_data",
        "high_volatility_high_valuation",
        "risk_levels_defined"
      ],
      "review_required": false
    },
    {
      "canonical_ticker": "058470.KQ",
      "display_name": "리노공업",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.68,
      "timing_readiness": 0.34,
      "trigger_type": "breakout_confirmation",
      "trigger_horizon": "days_to_weeks",
      "trigger_quality": 0.62,
      "thesis_state": "constructive_but_not_confirmed",
      "semantic_summary": "Quality and medium-term trend are constructive: price is above key moving averages, MACD has improved, margins/ROE/net cash are strong, and the held position can be maintained. Timing is not ready for an add because entry_action is WAIT, same-day intraday data is missing, resistance at 116800-117300 has not been cleared with volume, and confirmation requires a close above 117300 with 800000-1000000 shares plus RSI/MACD/flow improvement or a controlled pullback hold at 111500-112000.",
      "counter_evidence": [
        "2026-04-17 intraday snapshot is missing and execution feasibility is blocked by stale or degraded data.",
        "116800-117300 resistance remains unconfirmed with fading volume.",
        "Expected PER near 37 leaves valuation compression risk if earnings do not reaccelerate.",
        "Revenue slowed from 2025-06 to 2025-12, requiring recovery confirmation.",
        "Foreign and institutional selling and weak semiconductor/macro sentiment remain unresolved.",
        "A close below 111000 or especially below the 106500 50-day SMA would invalidate the setup."
      ],
      "reason_codes": [
        "bullish_medium_term_thesis",
        "entry_action_wait",
        "breakout_not_confirmed",
        "intraday_data_missing",
        "volume_confirmation_required",
        "held_position_maintain_only",
        "valuation_risk_high",
        "institutional_flow_unconfirmed",
        "support_invalidation_defined"
      ],
      "review_required": false
    },
    {
      "canonical_ticker": "064400.KS",
      "display_name": "LG CNS",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.68,
      "timing_readiness": 0.42,
      "trigger_type": "breakout_confirmation",
      "trigger_horizon": "days_to_weeks",
      "trigger_quality": 0.62,
      "thesis_state": "constructive_but_not_confirmed",
      "semantic_summary": "LG CNS has a constructive medium-term thesis supported by solid profitability, liquidity, valuation, and improving AI/automation narrative, while the stock has recovered key moving averages and MACD improved. However, the action is explicitly WAIT/HOLD: timing depends on either defending 65,500-66,000 support or confirming a volume-backed close above 67,200, with earnings/IR confirmation still important. Current setup is developing rather than immediately actionable.",
      "counter_evidence": [
        "Entry action is WAIT and setup quality is DEVELOPING, not a completed buy/add signal.",
        "50-day moving average remains below the 200-day moving average despite recent recovery.",
        "ATR is elevated at roughly 4.4% of close and price is extended above short-term EMA/VWMA, raising pullback risk.",
        "Execution feasibility is marked blocked_stale_or_degraded_data with same-day intraday snapshot missing.",
        "R&D intensity, M&A uncertainty, working-capital pressure, receivables, cash-flow outflows, and earnings/IR confirmation remain unresolved."
      ],
      "reason_codes": [
        "constructive_fundamental_thesis",
        "technical_recovery_but_unconfirmed",
        "explicit_wait_entry_action",
        "specific_price_volume_triggers_defined",
        "support_confirmation_required",
        "elevated_volatility_pullback_risk",
        "stale_or_degraded_data",
        "held_position_hold_not_add_now"
      ],
      "review_required": true
    },
    {
      "canonical_ticker": "095340.KS",
      "display_name": "ISC",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.66,
      "timing_readiness": 0.34,
      "trigger_type": "breakout_confirmation",
      "trigger_horizon": "days_to_weeks",
      "trigger_quality": 0.68,
      "thesis_state": "constructive_but_not_confirmed",
      "semantic_summary": "ISC has a constructive medium-term thesis supported by strong profitability, net cash, and AI/high-performance semiconductor socket exposure, but the action timing is not confirmed. Current guidance is HOLD/WAIT because price remains below the 237,000 KRW short-term recovery level and 248,000 KRW VWMA supply zone after a high-volume selloff. Add exposure only after a confirmed close above 237,000 with non-distribution volume, stronger confirmation above 248,000/257,500, or a verified support test near 216,500-211,000 with controlled risk.",
      "counter_evidence": [
        "Price is still below the 10-day EMA near 237,000 KRW and VWMA near 248,000 KRW after the 2026-04-10 high-volume decline.",
        "Entry action is explicitly WAIT and setup quality is DEVELOPING, so immediate add timing is incomplete.",
        "ATR is about 10% of price, requiring smaller sizing and confirmation before adding.",
        "A close below 205,000 KRW would invalidate the current defensive support thesis and require reduction or exit.",
        "Execution feasibility is marked blocked_stale_or_degraded_data, with fallback data sources and token usage unavailable."
      ],
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_wait_confirmations_required",
        "price_below_key_recovery_levels",
        "high_volume_selloff_not_repaired",
        "specific_breakout_levels_defined",
        "support_test_alternative_trigger",
        "clear_risk_invalidation_level",
        "stale_or_degraded_data_flag"
      ],
      "review_required": false
    },
    {
      "canonical_ticker": "278470.KS",
      "display_name": "에이피알",
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.74,
      "timing_readiness": 0.38,
      "trigger_type": "breakout_confirmation",
      "trigger_horizon": "days_to_weeks",
      "trigger_quality": 0.58,
      "thesis_state": "constructive_but_not_confirmed",
      "semantic_summary": "Medium-term thesis is constructive: APR has strong reported growth, high cash generation, positive trend alignment above key moving averages, and improving MACD momentum. However, the action is not ready now because the stock is near highs, extended above the 10-day EMA, and recent volume has faded versus the prior breakout. Existing holding can be maintained, but adding requires confirmation via a close above 417000-418000 KRW with renewed volume or a supported pullback near 393000-400000 KRW.",
      "counter_evidence": [
        "Entry action is explicitly WAIT and suggested action now is HOLD, not immediate add.",
        "Price is extended roughly 9.3% above the 10-day EMA, weakening near-term risk/reward for chase buying.",
        "Recent volume of 161094 shares is much lower than the 2026-04-09 breakout volume of 868166 shares.",
        "Execution feasibility is blocked by stale or degraded data, including missing same-day intraday snapshot.",
        "No disclosures were available and several vendor calls fell back or returned unusable results."
      ],
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_wait",
        "breakout_needs_volume_confirmation",
        "extended_above_short_term_average",
        "volume_confirmation_missing",
        "held_position_hold_not_add_now",
        "stale_or_degraded_data",
        "specific_price_triggers_defined"
      ],
      "review_required": false
    }
  ],
  "action_judge": {
    "status": "success",
    "provider": "codex",
    "model": "gpt-5.4",
    "priority_order": [
      "012450.KS",
      "064400.KS",
      "005930.KS",
      "278470.KS",
      "042700.KS"
    ],
    "portfolio_note": "All five candidates are HOLD/WAIT despite bullish stances, and the batch has mixed trade dates plus stale or degraded execution data. Preserve the cash buffer and avoid using the remaining strict cash capacity until triggers are actually confirmed. Given wait-heavy calibration and semiconductor exposure, prioritize diversified, better-supported setups and require fresh price, volume, and disclosure validation before any add.",
    "reason_by_ticker": {
      "012450.KS": {
        "summary": "Best risk-adjusted priority in this wait-heavy batch: strong defense/aerospace thesis, better news and disclosure support, and clear breakout or pullback triggers. Existing position is already meaningful, so no immediate add until volume and price confirmation arrive.",
        "reason_codes": [
          "strong_medium_term_thesis",
          "better_disclosure_support",
          "clear_trigger_framework",
          "existing_weight_limits_urgency",
          "entry_action_wait",
          "stale_or_degraded_data"
        ],
        "review_required": true
      },
      "064400.KS": {
        "summary": "Constructive LG CNS thesis with small existing weight and defined support or breakout triggers, but legacy HOLD, high fallback count, and missing same-day intraday data keep it behind the higher-quality defense setup.",
        "reason_codes": [
          "constructive_fundamental_thesis",
          "small_existing_weight",
          "technical_recovery_unconfirmed",
          "support_confirmation_required",
          "legacy_hold_signal",
          "stale_or_degraded_data"
        ],
        "review_required": true
      },
      "005930.KS": {
        "summary": "Samsung offers higher liquidity and stronger balance-sheet quality than the more speculative semiconductor names, but it is sitting just below resistance with labor-event risk and insufficient volume confirmation. Prefer only after a clean 218000-223000 resolution or supported pullback.",
        "reason_codes": [
          "large_cap_quality_bias",
          "memory_recovery_thesis",
          "near_resistance_no_chase",
          "volume_confirmation_missing",
          "labor_event_risk_pending",
          "semiconductor_concentration_control"
        ],
        "review_required": true
      },
      "278470.KS": {
        "summary": "APR has strong growth and cash-flow evidence, but the setup is extended above short-term averages, recent volume has faded, disclosures are absent in this batch, and fallback count is elevated. Keep below higher-quality or more liquid candidates until either breakout volume or pullback support confirms.",
        "reason_codes": [
          "strong_growth_thesis",
          "extended_above_short_term_average",
          "volume_confirmation_missing",
          "low_disclosure_support",
          "high_fallback_count",
          "entry_action_wait"
        ],
        "review_required": true
      },
      "042700.KS": {
        "summary": "Hanmi Semiconductor has a constructive HBM equipment thesis and high trigger quality, but it carries the highest conservatism penalties: semiconductor concentration, high valuation, high beta, short-interest risk, patent and revenue-cycle uncertainty, and stale execution data.",
        "reason_codes": [
          "constructive_hbm_thesis",
          "high_trigger_quality",
          "high_valuation_risk",
          "high_beta_volatility",
          "short_interest_risk",
          "semiconductor_concentration_control",
          "stale_or_degraded_data"
        ],
        "review_required": true
      }
    }
  },
  "report_writer": {
    "status": "success",
    "scope": "portfolio",
    "provider": "codex",
    "model": "gpt-5.4"
  },
  "candidates": [
    {
      "snapshot_id": "20260417T105713_kis_68944660-01",
      "instrument": {
        "broker_symbol": "000660",
        "canonical_ticker": "000660.KS",
        "yahoo_symbol": "000660.KS",
        "krx_code": "000660",
        "dart_corp_code": null,
        "display_name": "SK하이닉스",
        "exchange": "KRX",
        "country": "KR",
        "currency": "KRW"
      },
      "is_held": true,
      "market_value_krw": 1143000,
      "quantity": 1.0,
      "available_qty": 1.0,
      "sector": null,
      "structured_decision": {
        "rating": "OVERWEIGHT",
        "portfolio_stance": "BULLISH",
        "entry_action": "WAIT",
        "setup_quality": "DEVELOPING",
        "confidence": 0.76,
        "time_horizon": "medium",
        "entry_logic": "000660.KS에 대한 중기 배분 관점은 OVERWEIGHT로 유지한다. 공격적 분석가와 중립 분석가가 지적한 대로 AI, HBM, DRAM/NAND 가격 강세, 글로벌 반도체 수요가 동시에 작동하고 있으며, 2025-12-31 분기 매출 32.8조원, 영업이익 19.2조원, 영업이익률 약 58.4%, 영업현금흐름 20.9조원, 자유현금흐름 8.6조원, 순차입금 감소는 투자 가능한 강세 논리를 뒷받침한다. 다만 보수적 분석가의 경고처럼 2026-03-31 807000에서 2026-04-15 1136000까지 약 40.8% 급반등했고, 2026-04-16 1155000 신고가와 볼린저 상단 1161987 부근에 근접해 있어 오늘 즉시 추격 매수는 손익비가 불완전하다. 따라서 방향성은 BULLISH이나 즉시 실행은 WAIT이다. 신규 진입은 1162000 위 종가 안착과 거래량 확대가 확인될 때 소규모 STARTER를 고려하거나, 1040000-1050000 부근 10일 EMA 지지와 거래량 안정이 확인될 때 분할 진입을 고려한다.",
        "exit_logic": "기존 보유자는 중기 OVERWEIGHT를 유지하되, 1162000 돌파 실패 후 1100000 아래로 종가가 내려가고 거래량 약화나 외국인 매도가 동반되면 추가 매수를 중단하고 일부 축소를 검토한다. 1030000-1040000 지지대 붕괴 또는 10일 EMA의 지속 이탈은 전술 노출 축소 신호로 본다. HBM 출하 가이던스, DRAM/NAND 가격, 고객 주문, capex, 재고, 매출채권, 자유현금흐름이 현재의 높은 기대를 뒷받침하지 못하면 중기 OVERWEIGHT 자체를 재평가한다.",
        "position_sizing": "기존 보유분은 유지 가능하지만 현재 가격대에서 full-size 추가 매수는 보류한다. 1162000 위 거래량 동반 안착은 신규 투자자에게 소규모 STARTER, 기존 보유자에게 제한적 ADD만 정당화한다. 1040000-1050000 눌림에서 지지가 확인되면 돌파 매수보다 더 나은 손익비의 단계적 진입을 허용한다. 베타 1.751과 ATR 63093이 정상 변동만으로도 중간 한 자릿수 손익 변동을 만들 수 있으므로 초기 비중은 평소보다 낮게 잡고, 실적 확인 전 과도한 집중은 피한다.",
        "risk_limits": "단일 종목 리스크는 반도체 사이클, 외국인 수급 민감도, AI/HBM 서사 집중도를 감안해 제한한다. 손절은 너무 타이트한 가격 기준보다 약 1 ATR의 정상 노이즈를 허용하는 변동성 조정 방식으로 둔다. 1100000 아래 종가와 약한 거래량 또는 외국인 매도 동반은 방어적 관리 신호이고, 1030000 하향 이탈, DRAM/NAND 가격 둔화, HBM 고객 수요 부진, capex와 운전자본 증가로 인한 자유현금흐름 압박은 리스크 한도 위반으로 본다. 갭 하락과 업종 동반 조정에서는 1 ATR 손절이 이상적으로 작동하지 않을 수 있으므로 비중 관리가 1차 방어선이다.",
        "catalysts": [
          "000660.KS 실적과 가이던스가 HBM 출하 성장과 AI 서버 수요 지속성을 확인하는 경우",
          "DRAM과 NAND 가격 강세가 유지되어 높은 마진의 지속 가능성을 뒷받침하는 경우",
          "1162000 위 종가 안착과 거래량 확대가 동반되어 신고가 이후 가격 수용이 확인되는 경우",
          "TSMC, Micron 등 글로벌 AI 반도체와 메모리 동종 기업의 긍정적 실적이 000660.KS 수요 전망을 강화하는 경우",
          "높은 HBM 및 선단 공정 capex에도 자유현금흐름과 순차입금 개선이 이어지는 경우"
        ],
        "invalidators": [
          "HBM 수요, 가격, 고객 주문, 출하 가이던스가 높아진 기대에 미달하는 경우",
          "DRAM/NAND 공급 확대가 가격과 마진 전망을 압박하기 시작하는 경우",
          "capex, 재고, 매출채권 증가가 자유현금흐름 방어력을 훼손하는 경우",
          "ITC, 특허, 수출통제, 패키징 병목, 지정학 리스크가 출하 또는 투자심리를 흔드는 경우",
          "외국인 매도 전환이 000660.KS와 KOSPI 반도체 주도력에 부정적 피드백을 만드는 경우"
        ],
        "watchlist_triggers": [
          "1162000 위 종가와 거래량 확대: 신규 투자자는 소규모 STARTER, 기존 보유자는 제한적 ADD 검토",
          "1162000 돌파 후 1130000-1162000 구간 지지 확인: 돌파 신뢰도 상향",
          "1040000-1050000 눌림에서 10일 EMA 지지와 거래량 안정 확인: 단계적 진입 검토",
          "1100000 아래 종가와 거래량 약화 또는 외국인 매도 동반: 신규 진입 보류 및 기존 OVERWEIGHT 일부 축소 검토",
          "1030000-1040000 붕괴 또는 10일 EMA 지속 이탈: 전술 노출 축소",
          "RSI가 70을 넘고 가격이 볼린저 상단 위로 더 확장되는 경우: 추격 매수 금지 및 기존 포지션 관리 강화",
          "다음 실적 발표에서 HBM 가이던스, DRAM/NAND 가격, capex, 재고, 매출채권, 자유현금흐름을 강세 기대와 비교"
        ],
        "data_coverage": {
          "company_news_count": 4,
          "disclosures_count": 0,
          "social_source": "news_derived",
          "macro_items_count": 0
        }
      },
      "data_coverage": {
        "company_news_count": 4,
        "disclosures_count": 0,
        "social_source": "news_derived",
        "macro_items_count": 0
      },
      "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": "HOLD",
      "suggested_action_if_triggered": "ADD_IF_TRIGGERED",
      "trigger_conditions": [
        "1162000 위 종가와 거래량 확대: 신규 투자자는 소규모 STARTER, 기존 보유자는 제한적 ADD 검토",
        "1162000 돌파 후 1130000-1162000 구간 지지 확인: 돌파 신뢰도 상향",
        "1040000-1050000 눌림에서 10일 EMA 지지와 거래량 안정 확인: 단계적 진입 검토",
        "1100000 아래 종가와 거래량 약화 또는 외국인 매도 동반: 신규 진입 보류 및 기존 OVERWEIGHT 일부 축소 검토",
        "1030000-1040000 붕괴 또는 10일 EMA 지속 이탈: 전술 노출 축소",
        "RSI가 70을 넘고 가격이 볼린저 상단 위로 더 확장되는 경우: 추격 매수 금지 및 기존 포지션 관리 강화",
        "다음 실적 발표에서 HBM 가이던스, DRAM/NAND 가격, capex, 재고, 매출채권, 자유현금흐름을 강세 기대와 비교",
        "000660.KS 실적과 가이던스가 HBM 출하 성장과 AI 서버 수요 지속성을 확인하는 경우",
        "DRAM과 NAND 가격 강세가 유지되어 높은 마진의 지속 가능성을 뒷받침하는 경우",
        "1162000 위 종가 안착과 거래량 확대가 동반되어 신고가 이후 가격 수용이 확인되는 경우",
        "TSMC, Micron 등 글로벌 AI 반도체와 메모리 동종 기업의 긍정적 실적이 000660.KS 수요 전망을 강화하는 경우",
        "높은 HBM 및 선단 공정 capex에도 자유현금흐름과 순차입금 개선이 이어지는 경우",
        "HBM 수요, 가격, 고객 주문, 출하 가이던스가 높아진 기대에 미달하는 경우",
        "DRAM/NAND 공급 확대가 가격과 마진 전망을 압박하기 시작하는 경우",
        "capex, 재고, 매출채권 증가가 자유현금흐름 방어력을 훼손하는 경우",
        "ITC, 특허, 수출통제, 패키징 병목, 지정학 리스크가 출하 또는 투자심리를 흔드는 경우",
        "외국인 매도 전환이 000660.KS와 KOSPI 반도체 주도력에 부정적 피드백을 만드는 경우"
      ],
      "confidence": 0.76,
      "stance": "BULLISH",
      "entry_action": "WAIT",
      "setup_quality": "DEVELOPING",
      "rationale": "SK하이닉스의 중기 thesis는 AI/HBM 수요, 메모리 가격 강세, 높은 수익성, FCF와 순차입금 개선으로 constructive하다. 그러나 주가는 단기간 약 40% 급반등 후 신고가와 볼린저 상단 부근에 있어 즉시 ADD 타이밍은 확인되지 않았다. 실행은 1,162,000원 위 종가 안착과 거래량 확대, 또는 1,040,000~1,050,000원 지지 확인 전까지 HOLD/WAIT 성격이다.",
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.3206,
      "capital_reallocation_rank": null,
      "trigger_profile": {
        "primary_trigger_type": "breakout_confirmation",
        "trigger_horizon": "days_to_weeks",
        "trigger_quality": 0.64,
        "entry_readiness": 0.34,
        "thesis_state": "constructive_but_not_confirmed",
        "semantic_summary": "SK하이닉스의 중기 thesis는 AI/HBM 수요, 메모리 가격 강세, 높은 수익성, FCF와 순차입금 개선으로 constructive하다. 그러나 주가는 단기간 약 40% 급반등 후 신고가와 볼린저 상단 부근에 있어 즉시 ADD 타이밍은 확인되지 않았다. 실행은 1,162,000원 위 종가 안착과 거래량 확대, 또는 1,040,000~1,050,000원 지지 확인 전까지 HOLD/WAIT 성격이다."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.72,
      "timing_readiness": 0.34,
      "reason_codes": [
        "bullish_medium_term_thesis",
        "entry_wait_state",
        "breakout_not_confirmed",
        "near_upper_band_after_sharp_rally",
        "specific_price_volume_trigger",
        "held_position_hold_preferred",
        "stale_or_degraded_data",
        "risk_levels_defined"
      ],
      "review_required": true,
      "score_now": 0.05271388672000001,
      "score_triggered": 0.1567847168,
      "gate_reasons": [
        "high_fallback_count"
      ],
      "data_health": {
        "coverage_score": 0.67,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 5,
        "quality_flags": [
          "token_usage_unavailable"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.64,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.34,
        "thesis_multiplier": 1.132,
        "timing_now": 0.136,
        "timing_triggered": 0.34,
        "funding_source_score": 0.3206
      },
      "broker_symbol": "000660",
      "canonical_ticker": "000660.KS",
      "display_name": "SK하이닉스"
    },
    {
      "snapshot_id": "20260417T105713_kis_68944660-01",
      "instrument": {
        "broker_symbol": "005380",
        "canonical_ticker": "005380.KS",
        "yahoo_symbol": "005380.KS",
        "krx_code": "005380",
        "dart_corp_code": null,
        "display_name": "현대차",
        "exchange": "KRX",
        "country": "KR",
        "currency": "KRW"
      },
      "is_held": true,
      "market_value_krw": 534000,
      "quantity": 1.0,
      "available_qty": 1.0,
      "sector": null,
      "structured_decision": {
        "rating": "OVERWEIGHT",
        "portfolio_stance": "BULLISH",
        "entry_action": "WAIT",
        "setup_quality": "DEVELOPING",
        "confidence": 0.65,
        "time_horizon": "medium",
        "entry_logic": "005380.KS는 중기적으로 조건부 비중확대 관점이 타당하다. 공격적 분석가가 지적한 것처럼 674000원에서 445500원까지의 급락 이후 508000원 부근으로 회복했고, 10일 EMA 497804원 및 VWMA 488186원 위에 있어 반등 구조가 살아 있다. RSI 58.2, MACD 히스토그램 5197 개선, 미국 하이브리드 판매 53.2% 증가, 친환경차 수출 259121대 기록, Boston Dynamics와 DEEPX 관련 로봇·피지컬 AI 선택지는 상승 논리를 뒷받침한다. 다만 보수적·중립 분석가가 강조한 대로 ATR이 약 28267원으로 종가 대비 약 5.56%이고, 514000~519000원 저항이 아직 거래량으로 확인된 지지로 전환되지 않았다. 따라서 오늘은 추격 매수하지 않고 WAIT를 유지한다. 519000원 위 종가와 명확한 거래량 증가가 나오면 STARTER가 정당화되며, 489000~497000원 눌림 구간에서는 매도 압력 둔화와 지지 확인이 있을 때만 분할 진입을 검토한다.",
        "exit_logic": "기존 보유분은 유지 가능하되 489000원 하회와 하락 거래량 증가가 동반되면 전술 비중을 줄인다. 465000원 종가 이탈은 중기 강세 구조 훼손으로 보고 방어 전환 또는 청산을 우선한다. 이 경우 445500원 저점 재시험 가능성을 반영해 재평가한다. 상승 시에는 530000~545000원 구간에서 일부 이익 실현을 검토하고, 569500원 부근에서는 추가 저항 반응과 거래량을 확인한다.",
        "position_sizing": "신규 전면 진입은 보류한다. 519000원 위 종가와 거래량 확대가 확인되면 목표 비중의 25~35%로 STARTER를 시작하고, 그 후 519000원 지지 전환, RSI 60 상회 유지, MACD 0선 상향 전환이 확인될 때 단계적으로 증액한다. 489000~497000원 지지 확인형 눌림 매수도 분할로만 접근한다. 높은 beta 1.576, ATR 5.56%, 약한 잉여현금흐름을 고려해 레버리지와 공격적 물타기는 금지한다.",
        "risk_limits": "핵심 위험 한도는 465000원 종가 이탈이다. 489000원 하회와 하락 거래량 증가는 1차 경고로 보고 신규 추가 매수를 중단한다. 보수적 분석가가 지적한 영업이익률 약 3.6%, 분기 잉여현금흐름 약 -5.94조 KRW, 2025년 4개 분기 연속 잉여현금흐름 적자, 순부채 137.5조 KRW에서 157.0조 KRW로 증가한 점은 밸류에이션 재평가를 제한할 수 있다. 실적과 현금흐름 개선 전에는 평균단가 상승과 과도한 포지션 확대를 피한다.",
        "catalysts": [
          "005380.KS가 519000원 위에서 거래량 증가를 동반해 종가 안착하고 후속 거래에서도 해당 가격대를 지지로 유지",
          "미국 하이브리드 판매 53.2% 증가세 지속 및 고마진 하이브리드 라인업 확대",
          "친환경차 수출 259121대 기록 이후 북미·인도 판매 믹스 개선 지속",
          "Boston Dynamics, DEEPX, 로봇·피지컬 AI 관련 상용화 또는 매출화 진척",
          "영업이익률 회복, 운전자본 정상화, 잉여현금흐름 개선 확인",
          "KB Securities의 800000원 목표가처럼 우호적 리서치와 수급 개선이 실제 거래량으로 연결"
        ],
        "invalidators": [
          "465000원 종가 이탈로 중기 반등 구조가 훼손되고 445500원 재시험 가능성이 확대",
          "514000~519000원 저항 돌파 실패 후 거래량 증가를 동반한 하락",
          "489000원 하회와 하락 거래량 증가로 489000~497000원 지지 구간이 무효화",
          "영업이익률 약 3.6% 수준에서 추가 둔화하거나 2026년 실적 개선이 지연",
          "분기 잉여현금흐름 약 -5.94조 KRW 및 2025년 연속 적자 흐름이 지속되고 순부채가 추가 증가",
          "BYD, Zeekr, Xpeng, Tesla 등 중국 EV·PHEV 가격 경쟁이 현대차 전기차·하이브리드 마진을 훼손",
          "로봇·AI·수소 관련 뉴스가 구체적 수익 기여 없이 단기 테마로 소진"
        ],
        "watchlist_triggers": [
          "519000원 위 종가와 명확한 거래량 확대 여부",
          "519000원 돌파 후 후속 거래에서 지지 전환 여부",
          "489000~497000원 구간에서 매도 압력 둔화와 반등 거래량 확인",
          "RSI 60 상회 유지 및 MACD 0선 상향 전환",
          "April 17 전후 5~6% 급등 이후 뉴스 기반 수급이 실제 기관성 거래량으로 이어지는지 여부",
          "하이브리드 판매, 친환경차 수출, 북미 인센티브와 인도 판매 믹스 추이",
          "Boston Dynamics, DEEPX, 로봇·피지컬 AI 사업의 구체적 제품화·매출화 뉴스",
          "OpenDART 임원·주요주주 보유상황보고서의 지분 변동 세부 내용",
          "영업이익률, 잉여현금흐름, 순부채 개선 여부"
        ],
        "data_coverage": {
          "company_news_count": 5,
          "disclosures_count": 1,
          "social_source": "news_derived",
          "macro_items_count": 0
        }
      },
      "data_coverage": {
        "company_news_count": 5,
        "disclosures_count": 1,
        "social_source": "news_derived",
        "macro_items_count": 0
      },
      "quality_flags": [
        "token_usage_unavailable"
      ],
      "vendor_health": {
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "ADD_IF_TRIGGERED",
      "trigger_conditions": [
        "519000원 위 종가와 명확한 거래량 확대 여부",
        "519000원 돌파 후 후속 거래에서 지지 전환 여부",
        "489000~497000원 구간에서 매도 압력 둔화와 반등 거래량 확인",
        "RSI 60 상회 유지 및 MACD 0선 상향 전환",
        "April 17 전후 5~6% 급등 이후 뉴스 기반 수급이 실제 기관성 거래량으로 이어지는지 여부",
        "하이브리드 판매, 친환경차 수출, 북미 인센티브와 인도 판매 믹스 추이",
        "Boston Dynamics, DEEPX, 로봇·피지컬 AI 사업의 구체적 제품화·매출화 뉴스",
        "OpenDART 임원·주요주주 보유상황보고서의 지분 변동 세부 내용",
        "영업이익률, 잉여현금흐름, 순부채 개선 여부",
        "005380.KS가 519000원 위에서 거래량 증가를 동반해 종가 안착하고 후속 거래에서도 해당 가격대를 지지로 유지",
        "미국 하이브리드 판매 53.2% 증가세 지속 및 고마진 하이브리드 라인업 확대",
        "친환경차 수출 259121대 기록 이후 북미·인도 판매 믹스 개선 지속",
        "Boston Dynamics, DEEPX, 로봇·피지컬 AI 관련 상용화 또는 매출화 진척",
        "영업이익률 회복, 운전자본 정상화, 잉여현금흐름 개선 확인",
        "KB Securities의 800000원 목표가처럼 우호적 리서치와 수급 개선이 실제 거래량으로 연결",
        "465000원 종가 이탈로 중기 반등 구조가 훼손되고 445500원 재시험 가능성이 확대",
        "514000~519000원 저항 돌파 실패 후 거래량 증가를 동반한 하락",
        "489000원 하회와 하락 거래량 증가로 489000~497000원 지지 구간이 무효화",
        "영업이익률 약 3.6% 수준에서 추가 둔화하거나 2026년 실적 개선이 지연",
        "분기 잉여현금흐름 약 -5.94조 KRW 및 2025년 연속 적자 흐름이 지속되고 순부채가 추가 증가",
        "BYD, Zeekr, Xpeng, Tesla 등 중국 EV·PHEV 가격 경쟁이 현대차 전기차·하이브리드 마진을 훼손",
        "로봇·AI·수소 관련 뉴스가 구체적 수익 기여 없이 단기 테마로 소진"
      ],
      "confidence": 0.65,
      "stance": "BULLISH",
      "entry_action": "WAIT",
      "setup_quality": "DEVELOPING",
      "rationale": "Constructive medium-term overweight thesis for Hyundai Motor is supported by rebound above short-term averages, improving RSI/MACD, hybrid and eco-car momentum, and optionality from robotics/physical AI. Timing is not actionable now because the stated action is WAIT, resistance at 514000-519000 KRW has not yet become confirmed support on volume, and execution is flagged as stale or degraded. Action should remain hold/add-if-triggered until a close above 519000 KRW with clear volume expansion and follow-through support, or a confirmed pullback support setup at 489000-497000 KRW.",
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.3248,
      "capital_reallocation_rank": null,
      "trigger_profile": {
        "primary_trigger_type": "breakout_confirmation",
        "trigger_horizon": "days_to_weeks",
        "trigger_quality": 0.62,
        "entry_readiness": 0.34,
        "thesis_state": "constructive_but_not_confirmed",
        "semantic_summary": "Constructive medium-term overweight thesis for Hyundai Motor is supported by rebound above short-term averages, improving RSI/MACD, hybrid and eco-car momentum, and optionality from robotics/physical AI. Timing is not actionable now because the stated action is WAIT, resistance at 514000-519000 KRW has not yet become confirmed support on volume, and execution is flagged as stale or degraded. Action should remain hold/add-if-triggered until a close above 519000 KRW with clear volume expansion and follow-through support, or a confirmed pullback support setup at 489000-497000 KRW."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.66,
      "timing_readiness": 0.34,
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_action_wait",
        "breakout_not_confirmed",
        "volume_confirmation_required",
        "high_atr_volatility",
        "stale_or_degraded_execution_data",
        "held_position_hold_not_add_now",
        "clear_price_invalidators_defined"
      ],
      "review_required": true,
      "score_now": 0.04580656640000001,
      "score_triggered": 0.13951641600000003,
      "gate_reasons": [
        "high_fallback_count"
      ],
      "data_health": {
        "coverage_score": 0.7200000000000001,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4,
        "quality_flags": [
          "token_usage_unavailable"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.62,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.34,
        "thesis_multiplier": 1.096,
        "timing_now": 0.136,
        "timing_triggered": 0.34,
        "funding_source_score": 0.3248
      },
      "broker_symbol": "005380",
      "canonical_ticker": "005380.KS",
      "display_name": "현대차"
    },
    {
      "snapshot_id": "20260417T105713_kis_68944660-01",
      "instrument": {
        "broker_symbol": "005930",
        "canonical_ticker": "005930.KS",
        "yahoo_symbol": "005930.KS",
        "krx_code": "005930",
        "dart_corp_code": null,
        "display_name": "삼성전자",
        "exchange": "KRX",
        "country": "KR",
        "currency": "KRW"
      },
      "is_held": true,
      "market_value_krw": 1305000,
      "quantity": 6.0,
      "available_qty": 6.0,
      "sector": null,
      "structured_decision": {
        "rating": "OVERWEIGHT",
        "portfolio_stance": "BULLISH",
        "entry_action": "WAIT",
        "setup_quality": "DEVELOPING",
        "confidence": 0.66,
        "time_horizon": "medium",
        "entry_logic": "005930.KS에 대한 중기 배분 관점은 OVERWEIGHT로 유지한다. 공격적 분석이 지적한 대로 가격은 10일 EMA 203908, 50일 SMA 188115, 200일 SMA 116683 위에 있고, MACD가 2026-04-02 -193.81에서 2026-04-16 7169.78로 개선되었으며, 최근 분기 매출 93.84조원, 영업이익 20.07조원, 영업현금흐름 28.8조원, 잉여현금흐름 16.0조원, 현금 및 단기투자 125.85조원이 회복 논리를 뒷받침한다. 다만 보수·중립 분석이 강조한 것처럼 최신 확인 종가 217500은 218000-223000 저항 바로 아래이고, 2026-04-16 거래량 21499788은 4월 초 강한 거래량보다 낮아 저항 흡수 확인이 부족하다. 따라서 방향성은 BULLISH이나 오늘 즉시 신규 추격 매수는 하지 않고 WAIT한다. 신규 진입 또는 추가는 005930.KS가 218000 위에서 거래량 확장을 동반해 종가 확인을 만들 때 1차로 검토하고, 223000 돌파 또는 돌파 후 재지지가 확인되면 추가를 검토한다. 대안적으로 210500-203900 눌림 구간에서 지지, RSI 55-60 방어, MACD 히스토그램 급격한 둔화 부재가 확인되면 starter가 정당화될 수 있다.",
        "exit_logic": "기존 보유자는 레버리지 없이 moderate overweight를 유지할 수 있으나, 005930.KS가 218000-223000 저항에서 실패한 뒤 203900 아래로 종가 이탈하면 전술 비중을 줄인다. 195000-195200 아래 종가는 VWMA 및 수급 구조 훼손으로 보고 단기 전술 포지션은 exit한다. 중기 OVERWEIGHT 판단은 메모리 가격 둔화, HBM4E 또는 Nvidia 관련 검증 실망, 실적 전망 하향, 재고 52.64조원 증가가 마진 압박으로 전환되는 징후, 또는 2026-04-23 집회와 2026-05-21 파업 가능성이 실제 생산 차질 리스크로 커질 때 재평가한다.",
        "position_sizing": "신규 자금은 217500 부근에서 추격하지 않는다. ATR이 약 10370, 종가 대비 약 4.8%로 높기 때문에 확인 후에도 한 번에 전량 진입하지 않고 부분 포지션으로 시작한다. 기존 보유자는 중립 대비 moderate overweight를 유지하되, 변동성 허용 폭이 커지는 만큼 포지션 크기를 줄여 계좌 위험을 통제한다. 218000 위 거래량 동반 종가 확인 시 1차 소량, 223000 돌파 또는 재지지 확인 시 2차, 210500-203900 지지 반등 확인 시 별도 starter를 검토한다.",
        "risk_limits": "218000 위 장중 돌파만으로는 추가하지 않고 반드시 종가와 거래량 확장을 확인한다. 210500은 1차 지지 관찰선, 203900은 전술 감축선, 195000-195200은 단기 구조 훼손에 따른 방어선이다. 1 ATR 이상 흔들림을 감안하되, 손절 폭을 넓히는 만큼 포지션 크기는 축소한다. 2026-04-23 노동 집회 관련 헤드라인과 2026-05-21 파업 가능성 전에는 무리한 추가매수를 피한다. 생산 차질 가능성이 구체화되면 기술적 돌파 여부와 무관하게 리스크를 재산정한다.",
        "catalysts": [
          "005930.KS가 218000 위에서 거래량 확장을 동반한 일봉 종가를 만들며 저항 흡수를 확인",
          "223000 돌파 또는 돌파 후 재지지로 52주 고가권 위 연속성이 확인",
          "DRAM/NAND 가격 강세와 메모리 회복 사이클 지속 증거 확대",
          "HBM4E 진전 또는 Nvidia 공급망 관련 긍정적 검증",
          "최근 분기에서 확인된 매출 93.84조원, 영업이익 20.07조원, 영업현금흐름 28.8조원 흐름의 지속",
          "2026-04-23 및 2026-05-21 관련 노동 리스크가 생산 차질 없이 완화"
        ],
        "invalidators": [
          "005930.KS가 218000-223000 저항에서 재차 실패한 뒤 203900 아래로 종가 이탈",
          "195000-195200 아래 종가로 VWMA 및 수급 지지 훼손",
          "2026-04-23 집회 또는 2026-05-21 파업 가능성이 실제 생산 차질 위험으로 확대",
          "메모리 가격 모멘텀 둔화 또는 이익 전망 하향",
          "HBM4E/Nvidia 기대가 지연되거나 SK하이닉스, TSMC 대비 경쟁 열위가 부각",
          "재고 52.64조원 증가와 CAPEX 부담이 마진 압박 또는 재고평가손실 우려로 전환"
        ],
        "watchlist_triggers": [
          "005930.KS의 218000 및 223000 부근 일봉 종가와 거래량 변화",
          "210500 및 203900 눌림 구간에서 지지와 반등 여부",
          "RSI가 55-60 위를 유지하는지 또는 저항권에서 하락 반전하는지",
          "MACD 히스토그램 확장 지속 여부와 저항권 약세 다이버전스 발생 여부",
          "2026-04-23 노동 집회와 2026-05-21 파업 가능성 관련 협상 진전 또는 악화 뉴스",
          "DRAM/NAND 가격, HBM4E 검증, Nvidia 관련 수요, CAPEX 및 재고 추세의 후속 증거"
        ],
        "data_coverage": {
          "company_news_count": 4,
          "disclosures_count": 2,
          "social_source": "news_derived",
          "macro_items_count": 1
        }
      },
      "data_coverage": {
        "company_news_count": 4,
        "disclosures_count": 2,
        "social_source": "news_derived",
        "macro_items_count": 1
      },
      "quality_flags": [
        "token_usage_unavailable",
        "intraday_snapshot_missing_same_day"
      ],
      "vendor_health": {
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "ADD_IF_TRIGGERED",
      "trigger_conditions": [
        "005930.KS의 218000 및 223000 부근 일봉 종가와 거래량 변화",
        "210500 및 203900 눌림 구간에서 지지와 반등 여부",
        "RSI가 55-60 위를 유지하는지 또는 저항권에서 하락 반전하는지",
        "MACD 히스토그램 확장 지속 여부와 저항권 약세 다이버전스 발생 여부",
        "2026-04-23 노동 집회와 2026-05-21 파업 가능성 관련 협상 진전 또는 악화 뉴스",
        "DRAM/NAND 가격, HBM4E 검증, Nvidia 관련 수요, CAPEX 및 재고 추세의 후속 증거",
        "005930.KS가 218000 위에서 거래량 확장을 동반한 일봉 종가를 만들며 저항 흡수를 확인",
        "223000 돌파 또는 돌파 후 재지지로 52주 고가권 위 연속성이 확인",
        "DRAM/NAND 가격 강세와 메모리 회복 사이클 지속 증거 확대",
        "HBM4E 진전 또는 Nvidia 공급망 관련 긍정적 검증",
        "최근 분기에서 확인된 매출 93.84조원, 영업이익 20.07조원, 영업현금흐름 28.8조원 흐름의 지속",
        "2026-04-23 및 2026-05-21 관련 노동 리스크가 생산 차질 없이 완화",
        "005930.KS가 218000-223000 저항에서 재차 실패한 뒤 203900 아래로 종가 이탈",
        "195000-195200 아래 종가로 VWMA 및 수급 지지 훼손",
        "2026-04-23 집회 또는 2026-05-21 파업 가능성이 실제 생산 차질 위험으로 확대",
        "메모리 가격 모멘텀 둔화 또는 이익 전망 하향",
        "HBM4E/Nvidia 기대가 지연되거나 SK하이닉스, TSMC 대비 경쟁 열위가 부각",
        "재고 52.64조원 증가와 CAPEX 부담이 마진 압박 또는 재고평가손실 우려로 전환"
      ],
      "confidence": 0.66,
      "stance": "BULLISH",
      "entry_action": "WAIT",
      "setup_quality": "DEVELOPING",
      "rationale": "Bullish medium-term Samsung Electronics thesis is supported by improving trend, momentum, cash flow, and memory/HBM recovery narrative, but the current action is HOLD/WAIT because price is just below the 218000-223000 resistance zone and volume confirmation is insufficient. Add timing depends on a daily close above 218000 with volume expansion, preferably followed by 223000 breakout or support, or a controlled pullback holding 210500-203900.",
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.318,
      "capital_reallocation_rank": null,
      "trigger_profile": {
        "primary_trigger_type": "breakout_confirmation",
        "trigger_horizon": "days_to_weeks",
        "trigger_quality": 0.64,
        "entry_readiness": 0.38,
        "thesis_state": "constructive_but_not_confirmed",
        "semantic_summary": "Bullish medium-term Samsung Electronics thesis is supported by improving trend, momentum, cash flow, and memory/HBM recovery narrative, but the current action is HOLD/WAIT because price is just below the 218000-223000 resistance zone and volume confirmation is insufficient. Add timing depends on a daily close above 218000 with volume expansion, preferably followed by 223000 breakout or support, or a controlled pullback holding 210500-203900."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.68,
      "timing_readiness": 0.38,
      "reason_codes": [
        "bullish_thesis_waiting_for_confirmation",
        "near_resistance_no_chase",
        "volume_confirmation_missing",
        "stale_intraday_data",
        "explicit_breakout_trigger_defined",
        "support_pullback_alternative_defined",
        "labor_event_risk_pending"
      ],
      "review_required": true,
      "score_now": 0.05402502656000003,
      "score_triggered": 0.16006256640000005,
      "gate_reasons": [
        "high_fallback_count"
      ],
      "data_health": {
        "coverage_score": 0.7200000000000001,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4,
        "quality_flags": [
          "token_usage_unavailable",
          "intraday_snapshot_missing_same_day"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.64,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.38,
        "thesis_multiplier": 1.108,
        "timing_now": 0.152,
        "timing_triggered": 0.38,
        "funding_source_score": 0.318
      },
      "broker_symbol": "005930",
      "canonical_ticker": "005930.KS",
      "display_name": "삼성전자"
    },
    {
      "snapshot_id": "20260417T105713_kis_68944660-01",
      "instrument": {
        "broker_symbol": "010950",
        "canonical_ticker": "010950.KS",
        "yahoo_symbol": "010950.KS",
        "krx_code": "010950",
        "dart_corp_code": null,
        "display_name": "S-Oil",
        "exchange": "KRX",
        "country": "KR",
        "currency": "KRW"
      },
      "is_held": true,
      "market_value_krw": 232800,
      "quantity": 2.0,
      "available_qty": 2.0,
      "sector": null,
      "structured_decision": {
        "rating": "OVERWEIGHT",
        "portfolio_stance": "BULLISH",
        "entry_action": "WAIT",
        "setup_quality": "DEVELOPING",
        "confidence": 0.64,
        "time_horizon": "medium",
        "entry_logic": "010950.KS에 대한 최종 판단은 제한적 OVERWEIGHT이다. 공격적 분석이 지적한 것처럼 2026-04-15 종가 117,500원은 10일 EMA 116,996.84, VWMA 114,690.88, 50일 SMA 112,459.39 위에 있어 중기 상승 구조가 아직 훼손되지 않았고, RSI 54.18도 과열이 아니다. 또한 2025년 12월 분기 영업이익 3,719억 원, 순이익 2,251억 원, 자유현금흐름 6,134억 원, 순부채 6.38조 원에서 5.70조 원으로 감소한 점은 회복 논리를 뒷받침한다. 다만 보수적·중립적 분석이 강조한 대로 ATR이 종가 대비 약 5.9%로 높고, MACD 히스토그램이 1,134.54에서 609.15로 둔화됐으며, 가격도 122,000원에서 119,100원, 117,500원으로 밀려 즉시 매수 확정 신호는 부족하다. 따라서 방향성은 BULLISH로 유지하되 오늘의 실행은 WAIT이다. 116,500~117,000원 지지가 거래량 안정과 함께 확인되면 작은 starter는 정당화될 수 있고, 120,700~122,000원 위에서 거래량을 동반한 종가 안착과 MACD 재확장이 확인되면 추가 진입을 검토한다.",
        "exit_logic": "기존 보유분 또는 향후 진입분은 010950.KS가 114,500원 아래로 종가 이탈하면 축소 또는 청산한다. 112,000~112,500원 이탈은 50일 추세 훼손으로 보고 투자 논리 자체의 무효화로 처리한다. 117,000원 방어 실패와 거래량 악화가 동시에 나타나면 114,500원 종가 이탈 전이라도 일부 위험 축소를 고려한다. 1Q 실적이 정제마진, 디젤 스프레드, 재고평가 이익 기대를 확인하지 못하거나, 운전자본 효과를 제외한 현금흐름이 약하고 CAPEX와 순부채 부담이 다시 커지면 등급을 낮춘다. 원유 조달비 상승이 제품 가격으로 전가되지 못하거나 정제마진이 빠르게 둔화되는 경우도 청산 또는 비중 축소 사유다.",
        "position_sizing": "초기 진입은 정상 목표 비중의 25~40% 수준으로 제한한다. 116,500~117,000원 지지 확인만으로는 부분 starter만 허용하고, 120,700~122,000원 위 거래량 동반 종가 안착 및 MACD 히스토그램 재확장이 확인될 때 60~70% 수준까지 단계적으로 확대할 수 있다. 1Q 실적에서 영업이익의 질, 재고평가 이익 비중, 운전자본 제외 현금흐름, CAPEX, 순부채, 정제마진 지속성이 확인되기 전까지는 완전한 overweight 비중으로 올리지 않는다.",
        "risk_limits": "010950.KS를 120,700~122,000원 저항대에서 거래량 확인 없이 추격하지 않는다. ATR이 종가 대비 약 5.9%이고 3월 초 비정상적 장중 변동 사례가 있었으므로 종가 손절만으로 손실이 완전히 통제된다고 보지 않는다. 전술 손절 기준은 114,500원 종가 이탈, 논리 훼손 기준은 112,000~112,500원 이탈이다. 하락 거래량 확대, 원유 조달 리스크 악화, 정제마진 약화, 음의 운전자본과 CAPEX 부담 재확대, 순부채 감소 정체가 나타나면 추가 매수를 금지한다.",
        "catalysts": [
          "010950.KS 1Q 실적이 정제마진, 디젤 강세, 재고평가 이익으로 시장 기대를 상회하는 경우",
          "010950.KS가 120,700~122,000원 위에서 거래량을 동반해 종가 안착하고 MACD 히스토그램이 다시 확장되는 경우",
          "124,500원 재시험에 성공해 150,000원 목표가 상향 논리의 신뢰도가 높아지는 경우",
          "디젤 수요, 재건 수요, 공급 정상화 지연으로 높은 정제마진이 유지된다는 추가 증거",
          "한화투자증권 중심의 긍정 서사가 다른 증권사 추정치 상향으로 확산되는 경우",
          "순부채 감소가 이어지고 영업현금흐름 개선이 단순 운전자본 타이밍이 아님이 확인되는 경우"
        ],
        "invalidators": [
          "010950.KS가 114,500원 아래로 종가 이탈해 VWMA 기반 수급 구조가 약화되는 경우",
          "010950.KS가 112,000~112,500원 아래로 이탈해 50일 추세가 훼손되는 경우",
          "116,500~117,000원 지지 실패와 거래량 악화가 동시에 나타나는 경우",
          "MACD 히스토그램 둔화가 이어지고 가격이 122,000원, 119,100원, 117,500원으로 밀린 흐름을 회복하지 못하는 경우",
          "정제마진이나 디젤 스프레드가 예상보다 빠르게 둔화되는 경우",
          "원유 조달비 상승이 제품 가격으로 충분히 전가되지 못하는 경우",
          "1Q 실적 또는 가이던스가 목표가 150,000원 상향 서사를 뒷받침하지 못하는 경우",
          "운전자본 효과를 제외한 자유현금흐름이 약화되고 대규모 CAPEX와 순부채 부담이 다시 커지는 경우"
        ],
        "watchlist_triggers": [
          "010950.KS가 116,500~117,000원 부근에서 지지를 방어하고 거래량이 안정되는지 확인",
          "010950.KS가 120,700~122,000원 위로 거래량을 동반해 종가 안착하는지 확인",
          "MACD 히스토그램이 609.15 부근 둔화 이후 다시 확장되는지 확인",
          "010950.KS가 114,500원 또는 112,500원 아래로 무거운 거래량과 함께 이탈하는지 확인",
          "1Q 실적의 영업이익, 재고평가 이익, 운전자본 제외 현금흐름, CAPEX, 순부채 변화를 확인",
          "정제마진, 디젤 스프레드, 원유 조달비, KRW/USD 흐름을 갱신",
          "긍정 뉴스가 한화투자증권 보고서 반복 인용을 넘어 다른 독립 증권사 추정치 상향으로 넓어지는지 확인"
        ],
        "data_coverage": {
          "company_news_count": 4,
          "disclosures_count": 0,
          "social_source": "news_derived",
          "macro_items_count": 0
        }
      },
      "data_coverage": {
        "company_news_count": 4,
        "disclosures_count": 0,
        "social_source": "news_derived",
        "macro_items_count": 0
      },
      "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": "HOLD",
      "suggested_action_if_triggered": "ADD_IF_TRIGGERED",
      "trigger_conditions": [
        "010950.KS가 116,500~117,000원 부근에서 지지를 방어하고 거래량이 안정되는지 확인",
        "010950.KS가 120,700~122,000원 위로 거래량을 동반해 종가 안착하는지 확인",
        "MACD 히스토그램이 609.15 부근 둔화 이후 다시 확장되는지 확인",
        "010950.KS가 114,500원 또는 112,500원 아래로 무거운 거래량과 함께 이탈하는지 확인",
        "1Q 실적의 영업이익, 재고평가 이익, 운전자본 제외 현금흐름, CAPEX, 순부채 변화를 확인",
        "정제마진, 디젤 스프레드, 원유 조달비, KRW/USD 흐름을 갱신",
        "긍정 뉴스가 한화투자증권 보고서 반복 인용을 넘어 다른 독립 증권사 추정치 상향으로 넓어지는지 확인",
        "010950.KS 1Q 실적이 정제마진, 디젤 강세, 재고평가 이익으로 시장 기대를 상회하는 경우",
        "010950.KS가 120,700~122,000원 위에서 거래량을 동반해 종가 안착하고 MACD 히스토그램이 다시 확장되는 경우",
        "124,500원 재시험에 성공해 150,000원 목표가 상향 논리의 신뢰도가 높아지는 경우",
        "디젤 수요, 재건 수요, 공급 정상화 지연으로 높은 정제마진이 유지된다는 추가 증거",
        "한화투자증권 중심의 긍정 서사가 다른 증권사 추정치 상향으로 확산되는 경우",
        "순부채 감소가 이어지고 영업현금흐름 개선이 단순 운전자본 타이밍이 아님이 확인되는 경우",
        "010950.KS가 114,500원 아래로 종가 이탈해 VWMA 기반 수급 구조가 약화되는 경우",
        "010950.KS가 112,000~112,500원 아래로 이탈해 50일 추세가 훼손되는 경우",
        "116,500~117,000원 지지 실패와 거래량 악화가 동시에 나타나는 경우",
        "MACD 히스토그램 둔화가 이어지고 가격이 122,000원, 119,100원, 117,500원으로 밀린 흐름을 회복하지 못하는 경우",
        "정제마진이나 디젤 스프레드가 예상보다 빠르게 둔화되는 경우",
        "원유 조달비 상승이 제품 가격으로 충분히 전가되지 못하는 경우",
        "1Q 실적 또는 가이던스가 목표가 150,000원 상향 서사를 뒷받침하지 못하는 경우",
        "운전자본 효과를 제외한 자유현금흐름이 약화되고 대규모 CAPEX와 순부채 부담이 다시 커지는 경우"
      ],
      "confidence": 0.64,
      "stance": "BULLISH",
      "entry_action": "WAIT",
      "setup_quality": "DEVELOPING",
      "rationale": "S-Oil has a constructive medium-term thesis supported by price still above key moving averages, neutral RSI, recovering profitability, stronger free cash flow, and lower net debt. However, execution timing is not confirmed: the plan explicitly says WAIT, momentum has faded, price has pulled back from resistance, ATR is elevated, and adds require either support confirmation near KRW 116,500-117,000 with stable volume or a volume-backed close above KRW 120,700-122,000 with MACD re-expansion.",
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.335,
      "capital_reallocation_rank": null,
      "trigger_profile": {
        "primary_trigger_type": "breakout_confirmation",
        "trigger_horizon": "days_to_weeks",
        "trigger_quality": 0.56,
        "entry_readiness": 0.34,
        "thesis_state": "constructive_but_not_confirmed",
        "semantic_summary": "S-Oil has a constructive medium-term thesis supported by price still above key moving averages, neutral RSI, recovering profitability, stronger free cash flow, and lower net debt. However, execution timing is not confirmed: the plan explicitly says WAIT, momentum has faded, price has pulled back from resistance, ATR is elevated, and adds require either support confirmation near KRW 116,500-117,000 with stable volume or a volume-backed close above KRW 120,700-122,000 with MACD re-expansion."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.64,
      "timing_readiness": 0.34,
      "reason_codes": [
        "bullish_but_wait",
        "developing_setup",
        "momentum_confirmation_missing",
        "volume_breakout_required",
        "support_hold_required",
        "elevated_volatility",
        "stale_or_degraded_data",
        "earnings_event_pending"
      ],
      "review_required": true,
      "score_now": 0.040572328960000015,
      "score_triggered": 0.12643082240000003,
      "gate_reasons": [
        "high_fallback_count"
      ],
      "data_health": {
        "coverage_score": 0.67,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 5,
        "quality_flags": [
          "token_usage_unavailable"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.56,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.34,
        "thesis_multiplier": 1.084,
        "timing_now": 0.136,
        "timing_triggered": 0.34,
        "funding_source_score": 0.335
      },
      "broker_symbol": "010950",
      "canonical_ticker": "010950.KS",
      "display_name": "S-Oil"
    },
    {
      "snapshot_id": "20260417T105713_kis_68944660-01",
      "instrument": {
        "broker_symbol": "012450",
        "canonical_ticker": "012450.KS",
        "yahoo_symbol": "012450.KS",
        "krx_code": "012450",
        "dart_corp_code": null,
        "display_name": "한화에어로스페이스",
        "exchange": "KRX",
        "country": "KR",
        "currency": "KRW"
      },
      "is_held": true,
      "market_value_krw": 1436000,
      "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": "012450.KS는 중기적으로 비중확대 가능한 상승 논리가 유지된다. 공격적 분석가가 지적한 대로 2026-04-15 종가 1,509,000 KRW는 10 EMA 약 1,485,000 KRW, 50 SMA 약 1,345,700 KRW, 200 SMA 약 1,057,250 KRW 위에 있어 추세는 훼손되지 않았고, MACD도 2026-04-01의 7,453에서 2026-04-16의 50,316까지 회복했다. 계약 공시, K-방산 실적 기대, 순차입금 감소, 2025-12-31 자유현금흐름 개선도 투자 논리를 지지한다. 다만 보수적·중립적 분석가가 공통으로 강조한 것처럼 주가는 50 SMA와 200 SMA 대비 크게 벌어져 있고, RSI는 59.50으로 과열은 아니지만 2026-04-07의 63.67에서 낮아졌으며, 4월 거래량은 3월 초 1.1백만 주 이상 급증 구간보다 약하다. 따라서 오늘은 추격 매수하지 않고 WAIT를 유지한다. 신규 진입은 1,559,000 KRW 상향 종가 돌파가 최근 4월 평균을 뚜렷하게 웃도는 거래량 및 다음 거래일 가격 안착 또는 실적·IR 확인과 동반될 때, 또는 1,485,000 KRW 부근으로 통제된 되돌림이 나오고 RSI가 55 위에서 안정될 때에만 소규모 시작 포지션으로 정당화된다.",
        "exit_logic": "기존 보유분은 012450.KS가 1,485,000 KRW 부근 단기 추세 지지 위에 있고 계약·실적 모멘텀이 유지되는 동안 보유한다. 1,559,000 KRW 부근 반복 실패가 약한 거래량, RSI 55 하회, 또는 실적 발표 전후의 실망스러운 수급과 동반되면 전술 비중을 줄인다. 1,437,000-1,450,000 KRW 지지 구간을 종가 기준으로 이탈하면 의미 있게 축소하고, 50 SMA 부근인 약 1,345,000 KRW 아래로 종가가 내려가면 중기 OVERWEIGHT 논리를 재검토한다. 실적·IR에서 수출 마진, 수주잔고 전환, 현금 전환율, 가이던스가 기대를 충족하지 못하면 가격 지지 여부와 무관하게 추가 매수는 중단한다.",
        "position_sizing": "오늘 신규 풀사이즈 진입은 금지한다. ATR이 약 81,756 KRW로 크고 주가가 중기 이동평균 대비 확장되어 있으므로, 유효한 돌파나 지지 확인 후에도 정상 비중보다 작은 시작 포지션만 허용한다. 기존 핵심 보유분은 유지할 수 있으나 실적·IR 확인 전 집중도 증가는 피한다. 돌파 확인 후 추가 비중은 거래량 후속 확인, 1,559,000 KRW 위 가격 안착, 마진과 현금흐름의 질 확인이 모두 충족될 때 단계적으로만 집행한다.",
        "risk_limits": "전술 1차 위험선은 1,450,000 KRW이며, 정상 변동성을 감안한 넓은 손절 검토 구간은 약 1,425,000 KRW다. 1,437,000-1,450,000 KRW 지지대의 지속 이탈은 전술 축소 신호이고, 1,345,000 KRW 하회 종가는 중기 추세 훼손 신호다. 약 26.46배 PER의 밸류에이션 부담, 2025-09-30 분기 2.91조 KRW 보통주 발행과 주식 수 증가, 자본정책 논란, 높은 부채, 약 1.023의 유동비율, 설비투자 확대, 운전자본에 크게 의존한 2025-12-31 현금흐름 개선, 중동·방산 지정학 프리미엄 반전이 핵심 리스크다. 약한 거래량의 1,559,000 KRW 돌파는 매수 신호가 아니라 관찰 신호로 처리한다.",
        "catalysts": [
          "2026-04-01 및 2026-04-10 OpenDART 단일판매·공급계약 공시가 수주잔고와 매출 가시성을 강화",
          "2026-04-15 실적 프리뷰와 IR에서 마진, 수주잔고 품질, 현금 전환율, 가이던스 확인 가능",
          "주요 4개 K-방산 기업의 1분기 영업이익이 전년 대비 37.4% 증가한 1.2389조 KRW로 예상된다는 섹터 기대",
          "중동 방공·미사일 방어 수요가 012450.KS의 수출 수주 기대를 지지",
          "103.3십억 KRW 규모의 달 관련 프로젝트와 우주·항공 서사가 전통 방산을 넘어선 플랫폼 가치평가를 지지"
        ],
        "invalidators": [
          "실적 또는 IR에서 마진 품질, 수출 수익성, 수주잔고 전환, 현금흐름 지속성이 확인되지 않음",
          "추가 증자, 지배구조 이슈, 자본정책 실책으로 희석 우려가 재부각됨",
          "공급계약이 저마진, 지연, 또는 운전자본 부담이 큰 구조로 드러남",
          "지정학 프리미엄이 약해지는 동안 신규 수주나 실적 상향이 이를 대체하지 못함",
          "1,437,000-1,450,000 KRW 지지대의 지속 이탈 또는 1,345,000 KRW 50 SMA 하회 종가로 추세가 훼손됨"
        ],
        "watchlist_triggers": [
          "1,559,000 KRW 위 종가 돌파와 최근 4월 평균을 뚜렷하게 웃도는 거래량 동반",
          "돌파 후 다음 거래일에도 1,559,000 KRW 위 가격 안착 또는 지지 재확인",
          "1,485,000 KRW 부근 되돌림에서 지지 확인 및 RSI 55 이상 안정",
          "1,600,000 KRW 부근 Bollinger 상단 접근 시 3월식 거래 참여 회복 여부 확인",
          "실적·IR 이후 2025-12-31 현금흐름 개선이 단순한 시점 차이나 운전자본 효과만이 아니라는 증거",
          "새 OpenDART 계약 또는 수주 발표에서 규모, 마진 품질, 납기 일정이 명확하게 확인됨"
        ],
        "data_coverage": {
          "company_news_count": 5,
          "disclosures_count": 5,
          "social_source": "news_derived",
          "macro_items_count": 2
        }
      },
      "data_coverage": {
        "company_news_count": 5,
        "disclosures_count": 5,
        "social_source": "news_derived",
        "macro_items_count": 2
      },
      "quality_flags": [
        "token_usage_unavailable"
      ],
      "vendor_health": {
        "vendor_calls": {
          "yfinance": 16,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "ADD_IF_TRIGGERED",
      "trigger_conditions": [
        "1,559,000 KRW 위 종가 돌파와 최근 4월 평균을 뚜렷하게 웃도는 거래량 동반",
        "돌파 후 다음 거래일에도 1,559,000 KRW 위 가격 안착 또는 지지 재확인",
        "1,485,000 KRW 부근 되돌림에서 지지 확인 및 RSI 55 이상 안정",
        "1,600,000 KRW 부근 Bollinger 상단 접근 시 3월식 거래 참여 회복 여부 확인",
        "실적·IR 이후 2025-12-31 현금흐름 개선이 단순한 시점 차이나 운전자본 효과만이 아니라는 증거",
        "새 OpenDART 계약 또는 수주 발표에서 규모, 마진 품질, 납기 일정이 명확하게 확인됨",
        "2026-04-01 및 2026-04-10 OpenDART 단일판매·공급계약 공시가 수주잔고와 매출 가시성을 강화",
        "2026-04-15 실적 프리뷰와 IR에서 마진, 수주잔고 품질, 현금 전환율, 가이던스 확인 가능",
        "주요 4개 K-방산 기업의 1분기 영업이익이 전년 대비 37.4% 증가한 1.2389조 KRW로 예상된다는 섹터 기대",
        "중동 방공·미사일 방어 수요가 012450.KS의 수출 수주 기대를 지지",
        "103.3십억 KRW 규모의 달 관련 프로젝트와 우주·항공 서사가 전통 방산을 넘어선 플랫폼 가치평가를 지지",
        "실적 또는 IR에서 마진 품질, 수출 수익성, 수주잔고 전환, 현금흐름 지속성이 확인되지 않음",
        "추가 증자, 지배구조 이슈, 자본정책 실책으로 희석 우려가 재부각됨",
        "공급계약이 저마진, 지연, 또는 운전자본 부담이 큰 구조로 드러남",
        "지정학 프리미엄이 약해지는 동안 신규 수주나 실적 상향이 이를 대체하지 못함",
        "1,437,000-1,450,000 KRW 지지대의 지속 이탈 또는 1,345,000 KRW 50 SMA 하회 종가로 추세가 훼손됨"
      ],
      "confidence": 0.72,
      "stance": "BULLISH",
      "entry_action": "WAIT",
      "setup_quality": "DEVELOPING",
      "rationale": "Medium-term thesis is constructive for 012450.KS due to defense/aerospace contract momentum, favorable K-defense earnings expectations, improving cash flow and net debt, and price holding above key moving averages. Timing is not actionable now: the recommendation is HOLD/WAIT, with adds only after a confirmed close above 1,559,000 KRW on stronger volume and follow-through, or a controlled pullback holding near 1,485,000 KRW with RSI stability. Stale/degraded execution data and no intraday snapshot further argue against immediate action.",
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.3108,
      "capital_reallocation_rank": null,
      "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": "Medium-term thesis is constructive for 012450.KS due to defense/aerospace contract momentum, favorable K-defense earnings expectations, improving cash flow and net debt, and price holding above key moving averages. Timing is not actionable now: the recommendation is HOLD/WAIT, with adds only after a confirmed close above 1,559,000 KRW on stronger volume and follow-through, or a controlled pullback holding near 1,485,000 KRW with RSI stability. Stale/degraded execution data and no intraday snapshot further argue against immediate action."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.72,
      "timing_readiness": 0.38,
      "reason_codes": [
        "bullish_medium_term_thesis",
        "entry_action_wait",
        "developing_setup",
        "breakout_not_confirmed",
        "volume_confirmation_required",
        "pullback_support_alternative",
        "stale_or_degraded_data",
        "held_position_core_hold"
      ],
      "review_required": true,
      "score_now": 0.06135838208,
      "score_triggered": 0.17839595519999998,
      "gate_reasons": [
        "high_fallback_count"
      ],
      "data_health": {
        "coverage_score": 0.7200000000000001,
        "vendor_calls": {
          "yfinance": 16,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4,
        "quality_flags": [
          "token_usage_unavailable"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.68,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.38,
        "thesis_multiplier": 1.132,
        "timing_now": 0.152,
        "timing_triggered": 0.38,
        "funding_source_score": 0.3108
      },
      "broker_symbol": "012450",
      "canonical_ticker": "012450.KS",
      "display_name": "한화에어로스페이스"
    },
    {
      "snapshot_id": "20260417T105713_kis_68944660-01",
      "instrument": {
        "broker_symbol": "034020",
        "canonical_ticker": "034020.KS",
        "yahoo_symbol": "034020.KS",
        "krx_code": "034020",
        "dart_corp_code": null,
        "display_name": "두산에너빌리티",
        "exchange": "KRX",
        "country": "KR",
        "currency": "KRW"
      },
      "is_held": true,
      "market_value_krw": 1417000,
      "quantity": 13.0,
      "available_qty": 13.0,
      "sector": null,
      "structured_decision": {
        "rating": "OVERWEIGHT",
        "portfolio_stance": "BULLISH",
        "entry_action": "WAIT",
        "setup_quality": "DEVELOPING",
        "confidence": 0.62,
        "time_horizon": "medium",
        "entry_logic": "034020.KS의 중기 방향성은 우호적으로 유지한다. 공격적 분석가가 지적한 것처럼 2026-04-16 종가 110800 KRW가 10일 EMA 101843.87, 50일 SMA 98904, 200일 SMA 79492를 모두 상회했고, 거래량도 8123993주로 전일 5470474주보다 증가해 돌파의 질은 약하지 않다. 다만 보수적·중립적 분석가가 강조한 forward PER 약 101배, 베타 1.832, ATR 약 4.85%, 순이익률 0.497%, 운전자본 의존 가능성이 있는 2025년 4분기 현금흐름 개선 때문에 오늘 추격 매수는 보류한다. 신규 진입은 105700-106500 KRW 지지 확인 또는 110800 KRW 상향 재안착과 거래량 후속 확인이 있을 때만 소규모 시작이 정당화된다.",
        "exit_logic": "034020.KS가 확인 진입 후 105700 KRW를 종가 기준으로 이탈하면 신규 매수 금지와 전술 비중 축소를 검토한다. 101800-102000 KRW 하회는 10일 EMA 훼손과 돌파 실패가 겹치는 구간으로 보고 중기 OVERWEIGHT 근거를 크게 낮추며 물량을 실질적으로 감축하거나 종료한다. 다음 실적에서 영업이익률 개선, 이자비용 부담 완화, 운전자본 효과를 제외한 자유현금흐름 반복성, 순부채 추가 감소가 확인되지 않으면 투자 등급을 재검토한다.",
        "position_sizing": "기존 보유자는 핵심 물량은 유지하되 현재 가격에서 추가 추격은 하지 않는다. 신규 자금은 정상 비중보다 작은 시험 비중으로만 시작하고, 105700-106500 KRW 지지 또는 110800 KRW 재돌파가 확인된 뒤 분할 진입한다. 베타 1.832와 ATR 약 4.85%를 감안해 실적 반복성과 수급 안정이 확인되기 전까지는 전체 포트폴리오에서 과도한 비중 확대를 금지한다.",
        "risk_limits": "전술 리스크 기준은 105700 KRW, 중기 추세 보호 기준은 101800-102000 KRW로 둔다. 105700 KRW 이탈은 단순 변동성이 아니라 돌파 신뢰도 약화로 해석하고, 101800-102000 KRW 이탈은 방어 실패로 본다. forward PER 약 101배가 영업이익률, 현금 전환, 수주 모멘텀으로 뒷받침되지 않으면 비중을 늘리지 않는다. 외국인·기관 매도와 KOSPI 약세가 지속될 경우 고베타 노출을 낮춘다.",
        "catalysts": [
          "034020.KS가 105700-106500 KRW를 종가 기준으로 지키고 이후 110800 KRW 위로 거래량을 동반해 재안착",
          "원전 공급망, 전력 인프라, 해외 에너지 협력 관련 뉴스가 실제 수주 또는 실적 기대를 높이는 방향으로 이어짐",
          "2025년 4분기 영업현금흐름 1.397조 KRW, 자유현금흐름 1.206조 KRW, 순부채 감소가 일회성 운전자본 효과가 아니라 반복 가능한 개선으로 확인",
          "자사주 취득 정정 공시가 주주가치에 긍정적인 조건으로 명확해짐",
          "KOSPI 위험선호 회복과 함께 외국인·기관의 대형주 매도 압력이 완화"
        ],
        "invalidators": [
          "034020.KS가 101800-102000 KRW를 종가 기준으로 하회해 돌파 실패와 10일 EMA 훼손을 동시에 시사",
          "105700 KRW 이탈 후 거래량이 증가하며 매도 압력이 확대",
          "외국인·기관 매도가 시장 안정 이후에도 지속돼 2026-04-17 약세가 단순 조정이 아니라 분산 매도로 확인",
          "다음 실적에서 영업이익률, 순이익률, 자유현금흐름, 순부채 개선이 기대를 충족하지 못함",
          "원전·전력 인프라·해외 협력 재료가 구체적 계약이나 이익 전망 개선으로 연결되지 못함",
          "자사주 취득 관련 후속 공시가 불리하거나 재무 부담을 키우는 방향으로 확인"
        ],
        "watchlist_triggers": [
          "034020.KS가 110800 KRW 위에서 종가를 형성하고 최근 돌파일에 준하는 거래량 후속 매수세를 보임",
          "034020.KS가 105700-106500 KRW에서 거래량 감소와 함께 지지를 확인하고 RSI가 70 이상 과열로 급등하지 않음",
          "034020.KS가 105700 KRW를 하회해 신규 매수 금지와 기존 전술 비중 축소 검토가 필요해짐",
          "다음 실적에서 영업이익률 확대, 이자비용 부담 완화, 운전자본 효과를 제외한 양의 자유현금흐름, 순부채 추가 감소가 확인",
          "KRX와 KOSPI 위험선호가 개선되고 외국인·기관 순매도 압력이 완화",
          "110800 KRW 재돌파가 거래량 없이 발생하거나 외국인·기관 매도가 지속돼 돌파 추격을 보류해야 하는 상황 발생"
        ],
        "data_coverage": {
          "company_news_count": 4,
          "disclosures_count": 1,
          "social_source": "news_derived",
          "macro_items_count": 1
        }
      },
      "data_coverage": {
        "company_news_count": 4,
        "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": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "ADD_IF_TRIGGERED",
      "trigger_conditions": [
        "034020.KS가 110800 KRW 위에서 종가를 형성하고 최근 돌파일에 준하는 거래량 후속 매수세를 보임",
        "034020.KS가 105700-106500 KRW에서 거래량 감소와 함께 지지를 확인하고 RSI가 70 이상 과열로 급등하지 않음",
        "034020.KS가 105700 KRW를 하회해 신규 매수 금지와 기존 전술 비중 축소 검토가 필요해짐",
        "다음 실적에서 영업이익률 확대, 이자비용 부담 완화, 운전자본 효과를 제외한 양의 자유현금흐름, 순부채 추가 감소가 확인",
        "KRX와 KOSPI 위험선호가 개선되고 외국인·기관 순매도 압력이 완화",
        "110800 KRW 재돌파가 거래량 없이 발생하거나 외국인·기관 매도가 지속돼 돌파 추격을 보류해야 하는 상황 발생",
        "034020.KS가 105700-106500 KRW를 종가 기준으로 지키고 이후 110800 KRW 위로 거래량을 동반해 재안착",
        "원전 공급망, 전력 인프라, 해외 에너지 협력 관련 뉴스가 실제 수주 또는 실적 기대를 높이는 방향으로 이어짐",
        "2025년 4분기 영업현금흐름 1.397조 KRW, 자유현금흐름 1.206조 KRW, 순부채 감소가 일회성 운전자본 효과가 아니라 반복 가능한 개선으로 확인",
        "자사주 취득 정정 공시가 주주가치에 긍정적인 조건으로 명확해짐",
        "KOSPI 위험선호 회복과 함께 외국인·기관의 대형주 매도 압력이 완화",
        "034020.KS가 101800-102000 KRW를 종가 기준으로 하회해 돌파 실패와 10일 EMA 훼손을 동시에 시사",
        "105700 KRW 이탈 후 거래량이 증가하며 매도 압력이 확대",
        "외국인·기관 매도가 시장 안정 이후에도 지속돼 2026-04-17 약세가 단순 조정이 아니라 분산 매도로 확인",
        "다음 실적에서 영업이익률, 순이익률, 자유현금흐름, 순부채 개선이 기대를 충족하지 못함",
        "원전·전력 인프라·해외 협력 재료가 구체적 계약이나 이익 전망 개선으로 연결되지 못함",
        "자사주 취득 관련 후속 공시가 불리하거나 재무 부담을 키우는 방향으로 확인"
      ],
      "confidence": 0.62,
      "stance": "BULLISH",
      "entry_action": "WAIT",
      "setup_quality": "DEVELOPING",
      "rationale": "Medium-term thesis is constructive: the stock reclaimed 110800 KRW with stronger volume and remains above key moving averages, with nuclear and power-infrastructure catalysts still relevant. Timing is not actionable now because the recommendation is explicitly WAIT/HOLD, the setup is developing, price is extended with high beta/ATR, and confirmation is required through either support at 105700-106500 KRW or a renewed close above 110800 KRW with follow-through volume.",
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.3256,
      "capital_reallocation_rank": null,
      "trigger_profile": {
        "primary_trigger_type": "breakout_confirmation",
        "trigger_horizon": "days_to_weeks",
        "trigger_quality": 0.62,
        "entry_readiness": 0.36,
        "thesis_state": "constructive_but_not_confirmed",
        "semantic_summary": "Medium-term thesis is constructive: the stock reclaimed 110800 KRW with stronger volume and remains above key moving averages, with nuclear and power-infrastructure catalysts still relevant. Timing is not actionable now because the recommendation is explicitly WAIT/HOLD, the setup is developing, price is extended with high beta/ATR, and confirmation is required through either support at 105700-106500 KRW or a renewed close above 110800 KRW with follow-through volume."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.66,
      "timing_readiness": 0.36,
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_wait_not_actionable_now",
        "breakout_needs_volume_follow_through",
        "support_retest_required",
        "high_valuation_and_volatility",
        "stale_or_degraded_timing_data",
        "held_position_core_hold"
      ],
      "review_required": true,
      "score_now": 0.04636210688,
      "score_triggered": 0.14090526720000002,
      "gate_reasons": [
        "high_fallback_count"
      ],
      "data_health": {
        "coverage_score": 0.7200000000000001,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4,
        "quality_flags": [
          "token_usage_unavailable",
          "intraday_snapshot_missing_same_day"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.62,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.36,
        "thesis_multiplier": 1.096,
        "timing_now": 0.144,
        "timing_triggered": 0.36,
        "funding_source_score": 0.3256
      },
      "broker_symbol": "034020",
      "canonical_ticker": "034020.KS",
      "display_name": "두산에너빌리티"
    },
    {
      "snapshot_id": "20260417T105713_kis_68944660-01",
      "instrument": {
        "broker_symbol": "042700",
        "canonical_ticker": "042700.KS",
        "yahoo_symbol": "042700.KS",
        "krx_code": "042700",
        "dart_corp_code": null,
        "display_name": "한미반도체",
        "exchange": "KRX",
        "country": "KR",
        "currency": "KRW"
      },
      "is_held": true,
      "market_value_krw": 287000,
      "quantity": 1.0,
      "available_qty": 1.0,
      "sector": null,
      "structured_decision": {
        "rating": "OVERWEIGHT",
        "portfolio_stance": "BULLISH",
        "entry_action": "WAIT",
        "setup_quality": "DEVELOPING",
        "confidence": 0.66,
        "time_horizon": "medium",
        "entry_logic": "042700.KS는 AI/HBM 및 TC 본더 대표 장비주로서 순이익률 37.11%, 영업이익률 33.28%, ROE 34.76%, 낮은 부채, 2762억 원대 현금, 유동비율 4.107이라는 질적 강점이 확인된다. 기술적으로도 2026-04-16 종가 292000원이 10일 EMA 282018.71, 50일선 262565.99, VWMA 272062.59, 200일선 153522.21 위에 있고, MACD가 2026-04-08 -69.33에서 2026-04-16 4710.77로 회복했으며 히스토그램도 852.16으로 양전환했다. 다만 보수·중립 분석가가 지적한 것처럼 Forward PE 55배, Beta 2.245, ATR 17450원 내외, 2025-12-31 분기 매출 급감, 공매도 잔고 1조7718억 원 및 시총 대비 6.72%, 특허 분쟁은 즉시 추격 매수를 제한한다. 따라서 중기 배분 관점은 조건부 OVERWEIGHT와 BULLISH를 유지하지만, 2026-04-17은 거래일이 아니어서 당일 확인이 없었고 2026-04-16 거래량도 전일 898476주 대비 458794주로 감소했으므로 즉시 진입은 WAIT이다. 신규 진입은 042700.KS가 296500원 위에서 종가를 형성하고 거래량이 최소 458794주를 넘으며 전일 대비 의미 있게 회복될 때, 또는 286000~280500원 눌림에서 가격과 수급이 안정되고 272000원 부근 VWMA를 훼손하지 않을 때만 정당화된다.",
        "exit_logic": "신규 전술 포지션은 042700.KS가 280500원을 잃고 빠르게 회복하지 못하면 축소한다. 272000원 이탈은 회복 구조 약화 경고로 보고 비중을 낮추며, 50일선 262566원 부근 아래에서 지속 마감하면 중기 회복 논리가 훼손된 것으로 보고 전술 포지션 종료를 우선한다. 다음 실적에서 2025-12-31 매출 감소가 납품·검수·매출 인식 시점 문제가 아니라 구조적 주문 둔화로 확인되거나, 특허 분쟁이 납품 지연·비용 증가·고객 대체 검토로 번지면 기존 OVERWEIGHT 논리를 재평가한다.",
        "position_sizing": "트리거 충족 전 신규 매수는 보류한다. 조건이 충족되면 정상 목표 비중의 30~40% 수준의 스타터만 허용하고, 305000원 이상에서 거래량 유지가 확인되거나 수주·실적·특허 관련 긍정 뉴스가 추가될 때 60~70%까지 단계적으로 확대한다. 042700.KS는 ATR이 약 17450원으로 종가 대비 약 6%이고 Beta가 2.245인 고변동성 종목이므로 초기부터 목표 비중 전량을 투입하지 않는다. 기존 보유자는 280500~272000원 지지 구간이 유지되는 동안 부분 보유가 가능하지만, 실적 재가속과 거래량 확인 전에는 집중 비중을 피한다.",
        "risk_limits": "포지션 손실 한도는 하루 한 번의 ATR 수준 변동을 견딜 수 있도록 작게 설정한다. 전술 리스크 기준은 272000원 아래, 중기 리스크 기준은 50일선 262566원 아래에 둔다. 손절 폭을 지나치게 좁게 두면 정상 변동성에 흔들릴 수 있으므로, 손절선보다 비중 축소로 위험을 먼저 통제한다. Forward PE 55배 고평가, 공매도 잔고 1조7718억 원, 특허 분쟁, HBM 수주 흐름, 다음 분기 매출 인식, 매출채권·재고·건설중인자산 변화를 함께 감시한다.",
        "catalysts": [
          "042700.KS가 296500원 위에서 종가를 만들고 거래량이 458794주를 넘으며 전일 대비 의미 있게 회복하면 305000~317000원 재시험 가능성이 열린다.",
          "HBM 또는 TC 본더 신규 수주, 고객사 설비투자 확인, AI/HBM 장비 수요 지속 증거가 나오면 고마진 성장주 프리미엄이 방어된다.",
          "TC 본더 특허 분쟁에서 우호적 진행 또는 해결이 확인되면 기술 진입장벽과 고객 신뢰가 강화될 수 있다.",
          "다음 분기 실적에서 매출이 재가속되고 매출총이익률과 영업이익률이 높은 수준으로 유지되면 2025-12-31 매출 감소가 일시적이었다는 해석이 강화된다.",
          "긍정적 영업 뉴스가 공매도 잔고 1조7718억 원 및 시총 대비 6.72%의 반대 포지션을 압박하면 숏커버링 수급이 추가 상승 동력이 될 수 있다.",
          "AI 반도체 및 HBM 테마형 자금과 ETF 수급이 재유입되면 대표주 프리미엄이 유지될 수 있다."
        ],
        "invalidators": [
          "042700.KS가 272000원 부근 VWMA를 하향 이탈하고 빠르게 회복하지 못하는 경우.",
          "042700.KS가 50일선 262566원 부근 아래에서 지속 마감해 중기 회복 구조를 잃는 경우.",
          "다음 실적에서 2025-12-31 매출 감소가 일시적 인식 문제가 아니라 구조적 주문 사이클 둔화로 확인되는 경우.",
          "TC 본더 특허 분쟁이 비용 증가, 납품 지연, 고객사 대체 검토, 경쟁사 대체 가능성으로 이어지는 경우.",
          "HBM/AI 반도체 테마가 약화되어 ETF 및 테마형 자금 유출이 발생하는 경우.",
          "공매도 잔고 확대가 긍정 촉매 없이 지속되고 주가가 저항권에서 거래량 감소와 함께 밀리는 경우."
        ],
        "watchlist_triggers": [
          "042700.KS의 일간 종가가 296500원을 상회하고 거래량이 458794주를 넘는지 확인한다.",
          "돌파 시 거래량이 단순 기준 충족을 넘어 전일 대비 의미 있게 증가하고 종가가 고가권에서 유지되는지 확인한다.",
          "286000~280500원 눌림에서 지지가 유지되고 거래량 균형이 개선되는지 확인한다.",
          "RSI가 60 위로 올라서고 MACD 히스토그램이 양수를 유지하는지 확인한다.",
          "272000원 또는 262566원 이탈 시 BULLISH에서 NEUTRAL 또는 BEARISH로 하향 조정할지 재평가한다.",
          "공매도 잔고, 주요주주 거래 계획, 기관 보유 변화, ETF 편입 수급 변화를 추적한다.",
          "다음 공시 또는 실적 발표에서 수주잔고, TC 본더 수요, 매출채권, 재고, 건설중인자산, 설비 활용도가 개선되는지 확인한다."
        ],
        "data_coverage": {
          "company_news_count": 3,
          "disclosures_count": 6,
          "social_source": "news_derived",
          "macro_items_count": 0
        }
      },
      "data_coverage": {
        "company_news_count": 3,
        "disclosures_count": 6,
        "social_source": "news_derived",
        "macro_items_count": 0
      },
      "quality_flags": [
        "token_usage_unavailable",
        "intraday_snapshot_missing_same_day"
      ],
      "vendor_health": {
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "ADD_IF_TRIGGERED",
      "trigger_conditions": [
        "042700.KS의 일간 종가가 296500원을 상회하고 거래량이 458794주를 넘는지 확인한다.",
        "돌파 시 거래량이 단순 기준 충족을 넘어 전일 대비 의미 있게 증가하고 종가가 고가권에서 유지되는지 확인한다.",
        "286000~280500원 눌림에서 지지가 유지되고 거래량 균형이 개선되는지 확인한다.",
        "RSI가 60 위로 올라서고 MACD 히스토그램이 양수를 유지하는지 확인한다.",
        "272000원 또는 262566원 이탈 시 BULLISH에서 NEUTRAL 또는 BEARISH로 하향 조정할지 재평가한다.",
        "공매도 잔고, 주요주주 거래 계획, 기관 보유 변화, ETF 편입 수급 변화를 추적한다.",
        "다음 공시 또는 실적 발표에서 수주잔고, TC 본더 수요, 매출채권, 재고, 건설중인자산, 설비 활용도가 개선되는지 확인한다.",
        "042700.KS가 296500원 위에서 종가를 만들고 거래량이 458794주를 넘으며 전일 대비 의미 있게 회복하면 305000~317000원 재시험 가능성이 열린다.",
        "HBM 또는 TC 본더 신규 수주, 고객사 설비투자 확인, AI/HBM 장비 수요 지속 증거가 나오면 고마진 성장주 프리미엄이 방어된다.",
        "TC 본더 특허 분쟁에서 우호적 진행 또는 해결이 확인되면 기술 진입장벽과 고객 신뢰가 강화될 수 있다.",
        "다음 분기 실적에서 매출이 재가속되고 매출총이익률과 영업이익률이 높은 수준으로 유지되면 2025-12-31 매출 감소가 일시적이었다는 해석이 강화된다.",
        "긍정적 영업 뉴스가 공매도 잔고 1조7718억 원 및 시총 대비 6.72%의 반대 포지션을 압박하면 숏커버링 수급이 추가 상승 동력이 될 수 있다.",
        "AI 반도체 및 HBM 테마형 자금과 ETF 수급이 재유입되면 대표주 프리미엄이 유지될 수 있다.",
        "042700.KS가 272000원 부근 VWMA를 하향 이탈하고 빠르게 회복하지 못하는 경우.",
        "042700.KS가 50일선 262566원 부근 아래에서 지속 마감해 중기 회복 구조를 잃는 경우.",
        "다음 실적에서 2025-12-31 매출 감소가 일시적 인식 문제가 아니라 구조적 주문 사이클 둔화로 확인되는 경우.",
        "TC 본더 특허 분쟁이 비용 증가, 납품 지연, 고객사 대체 검토, 경쟁사 대체 가능성으로 이어지는 경우.",
        "HBM/AI 반도체 테마가 약화되어 ETF 및 테마형 자금 유출이 발생하는 경우.",
        "공매도 잔고 확대가 긍정 촉매 없이 지속되고 주가가 저항권에서 거래량 감소와 함께 밀리는 경우."
      ],
      "confidence": 0.66,
      "stance": "BULLISH",
      "entry_action": "WAIT",
      "setup_quality": "DEVELOPING",
      "rationale": "Constructive medium-term HBM/AI equipment thesis with strong profitability, balance sheet quality, and improving technical structure, but execution timing is not confirmed. Current action is HOLD/WAIT; adding requires a daily close above 296500 with volume recovery above 458794 shares, or a controlled pullback holding 286000-280500 without breaking VWMA support near 272000.",
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.318,
      "capital_reallocation_rank": null,
      "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": "Constructive medium-term HBM/AI equipment thesis with strong profitability, balance sheet quality, and improving technical structure, but execution timing is not confirmed. Current action is HOLD/WAIT; adding requires a daily close above 296500 with volume recovery above 458794 shares, or a controlled pullback holding 286000-280500 without breaking VWMA support near 272000."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.68,
      "timing_readiness": 0.38,
      "reason_codes": [
        "entry_action_wait",
        "constructive_medium_term_thesis",
        "breakout_trigger_defined",
        "volume_confirmation_missing",
        "stale_or_degraded_same_day_data",
        "high_volatility_high_valuation",
        "risk_levels_defined"
      ],
      "review_required": true,
      "score_now": 0.05402502656000003,
      "score_triggered": 0.16006256640000005,
      "gate_reasons": [
        "high_fallback_count"
      ],
      "data_health": {
        "coverage_score": 0.7200000000000001,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4,
        "quality_flags": [
          "token_usage_unavailable",
          "intraday_snapshot_missing_same_day"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.72,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.38,
        "thesis_multiplier": 1.108,
        "timing_now": 0.152,
        "timing_triggered": 0.38,
        "funding_source_score": 0.318
      },
      "broker_symbol": "042700",
      "canonical_ticker": "042700.KS",
      "display_name": "한미반도체"
    },
    {
      "snapshot_id": "20260417T105713_kis_68944660-01",
      "instrument": {
        "broker_symbol": "058470",
        "canonical_ticker": "058470.KQ",
        "yahoo_symbol": "058470.KQ",
        "krx_code": "058470",
        "dart_corp_code": null,
        "display_name": "리노공업",
        "exchange": "KOSDAQ",
        "country": "KR",
        "currency": "KRW"
      },
      "is_held": true,
      "market_value_krw": 228200,
      "quantity": 2.0,
      "available_qty": 2.0,
      "sector": null,
      "structured_decision": {
        "rating": "OVERWEIGHT",
        "portfolio_stance": "BULLISH",
        "entry_action": "WAIT",
        "setup_quality": "DEVELOPING",
        "confidence": 0.66,
        "time_horizon": "medium",
        "entry_logic": "058470.KQ에 대한 중기 배분 관점은 긍정적으로 유지한다. 공격적 분석가와 중립적 분석가가 지적했듯이 2026-04-16 종가 115000은 10일 지수이동평균 111542, 50일 단순이동평균 106468, 200일 단순이동평균 66931을 모두 웃돌고, MACD가 2026-04-02 -389에서 2026-04-16 2326.95로 개선되며 히스토그램도 양수 전환했다. 또한 영업이익률 32.9%, 순이익률 29.2%, ROE 18.6%, 현금 및 단기투자자산 4552억 원, 총차입금 1억 원 수준의 사실상 무차입 구조는 품질 프리미엄을 뒷받침한다. 다만 보수적 분석가의 지적처럼 예상 PER 37, 2025-06 매출 1125억 원에서 2025-12 848억 원으로의 둔화, 외국인·기관 매도, 원/달러 1481.4원 부근, 2026-04-17 장중 데이터 부재, 116800-117300 저항권 부근 거래량 감소는 즉시 추격 매수를 정당화하지 못한다. 따라서 방향성은 BULLISH, 기존 보유는 유지 우위이나, 오늘 신규 진입 또는 증액은 WAIT로 제한한다. 신규 자금은 117300 위 일봉 종가 안착과 거래량 800000-1000000주 회복, RSI 60 상향, MACD 히스토그램 확대, 외국인·기관 수급 개선 중 복수 조건이 확인될 때만 starter 성격으로 검토한다. 대안적으로 111500-112000 지지 후 115000 위로 재회복하는 통제된 눌림 반등도 진입 후보가 될 수 있다.",
        "exit_logic": "기존 노출은 058470.KQ가 111000-112000 전술 지지대를 유지하는 동안 보유한다. 111000 아래 일봉 종가는 단기 반등 실패로 보고 신규 위험을 중단하며 일부 축소 또는 손절을 실행한다. 106500 부근 50일 단순이동평균 이탈은 중기 추세 훼손으로 판단해 방어적 감축 또는 이탈을 우선한다. 121400-127000 저항권에 접근하면 추격 매수보다 손절 기준 상향과 부분 차익 실현을 우선한다. 116800-117300에서 거래량 없이 반복적으로 막히면 기존 보유도 일부 축소를 검토한다.",
        "position_sizing": "확인 전에는 정상 비중보다 낮게 유지한다. ATR이 약 6516 KRW로 2026-04-16 종가 115000 대비 약 5.7%인 만큼, 작은 가격 흔들림도 손익에 크게 반영될 수 있다. 신규 자금은 지금 투입하지 않고, 조건 충족 후에도 starter 배분만 허용한다. starter는 1 ATR adverse move가 포트폴리오 허용 손실 안에 들어오도록 역산해 정하며, 117300 저항 돌파가 거래량 없이 나타나거나 RSI가 60을 회복하지 못하면 증액하지 않는다. 기존 보유자는 111000과 106500 기준을 전제로 통제된 규모만 유지한다.",
        "risk_limits": "1차 전술 리스크 한도는 111000 아래 일봉 종가다. 2차 중기 리스크 한도는 106500 부근 50일 단순이동평균 하향 이탈이다. 116800-117300 저항 테스트에서 거래량이 800000주 미만에 머물거나, RSI가 60을 회복하지 못하거나, 외국인·기관 순매도가 이어지거나, 미국 반도체주 차익실현과 원/달러 1481.4원 부근의 위험회피가 지속되면 신규 추가는 금지한다. 예상 PER 37은 실적 재가속이 확인되지 않을 경우 멀티플 압축 위험이 크므로, 2025-06에서 2025-12로 이어진 매출 둔화가 더 진행되면 배분 의견을 낮춘다.",
        "catalysts": [
          "058470.KQ가 117300 위에서 일봉 종가로 안착하고 거래량이 800000-1000000주로 회복",
          "RSI가 60을 상향 돌파하고 가격이 115000 위를 유지",
          "MACD 히스토그램이 양수 구간에서 추가 확대",
          "외국인과 기관 수급이 순매도에서 순매수 또는 누적 매수로 전환",
          "미국 반도체주 차익실현 압력이 완화되고 업종 심리가 안정",
          "다음 실적 또는 가이던스에서 2025-06부터 2025-12까지의 매출 둔화 이후 재가속 확인",
          "건설중인자산과 설비투자가 수요 증가 또는 가동률 개선으로 연결된다는 증거"
        ],
        "invalidators": [
          "058470.KQ 일봉 종가가 111000 아래로 하락해 단기 반등 실패 확인",
          "106500 부근 50일 단순이동평균 아래 종가로 중기 추세 훼손",
          "116800-117300 저항권에서 거래량 감소와 함께 반복적으로 거절",
          "RSI가 60을 회복하지 못하고 MACD 히스토그램이 재차 약화",
          "외국인·기관 동반 매도가 지속되고 KOSDAQ 위험회피가 확대",
          "매출 또는 영업이익 둔화가 이어지며 회복 가이던스가 부재",
          "건설중인자산 증가가 성장 투자가 아니라 감가상각 부담, 가동률 저하, 투자 회수 지연으로 해석될 증거",
          "회사 고유의 부정 공시, 주문 약화, 고객 수요 악화, 경쟁력 훼손 신호"
        ],
        "watchlist_triggers": [
          "주문 전 058470.KQ 현재가가 115000 및 117300 대비 어디에 있는지 확인",
          "117300 위 일봉 종가와 거래량 800000주 이상 동반 여부",
          "111500-112000 눌림 구간에서 지지와 반등이 나타나는지 확인",
          "111000 전술 지지선 이탈 여부",
          "106500 부근 50일 단순이동평균 유지 여부",
          "MACD 히스토그램이 양수 구간에서 확대되는지 확인",
          "RSI가 60 위로 올라선 뒤 유지되는지 확인",
          "외국인·기관의 058470.KQ 및 KOSDAQ 순매수 전환 여부",
          "원/달러가 1481.4원 부근에서 안정되는지 확인",
          "미국 반도체 지수와 주요 반도체주의 차익실현 이후 반응"
        ],
        "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": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 5
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "ADD_IF_TRIGGERED",
      "trigger_conditions": [
        "주문 전 058470.KQ 현재가가 115000 및 117300 대비 어디에 있는지 확인",
        "117300 위 일봉 종가와 거래량 800000주 이상 동반 여부",
        "111500-112000 눌림 구간에서 지지와 반등이 나타나는지 확인",
        "111000 전술 지지선 이탈 여부",
        "106500 부근 50일 단순이동평균 유지 여부",
        "MACD 히스토그램이 양수 구간에서 확대되는지 확인",
        "RSI가 60 위로 올라선 뒤 유지되는지 확인",
        "외국인·기관의 058470.KQ 및 KOSDAQ 순매수 전환 여부",
        "원/달러가 1481.4원 부근에서 안정되는지 확인",
        "미국 반도체 지수와 주요 반도체주의 차익실현 이후 반응",
        "058470.KQ가 117300 위에서 일봉 종가로 안착하고 거래량이 800000-1000000주로 회복",
        "RSI가 60을 상향 돌파하고 가격이 115000 위를 유지",
        "MACD 히스토그램이 양수 구간에서 추가 확대",
        "외국인과 기관 수급이 순매도에서 순매수 또는 누적 매수로 전환",
        "미국 반도체주 차익실현 압력이 완화되고 업종 심리가 안정",
        "다음 실적 또는 가이던스에서 2025-06부터 2025-12까지의 매출 둔화 이후 재가속 확인",
        "건설중인자산과 설비투자가 수요 증가 또는 가동률 개선으로 연결된다는 증거",
        "058470.KQ 일봉 종가가 111000 아래로 하락해 단기 반등 실패 확인",
        "106500 부근 50일 단순이동평균 아래 종가로 중기 추세 훼손",
        "116800-117300 저항권에서 거래량 감소와 함께 반복적으로 거절",
        "RSI가 60을 회복하지 못하고 MACD 히스토그램이 재차 약화",
        "외국인·기관 동반 매도가 지속되고 KOSDAQ 위험회피가 확대",
        "매출 또는 영업이익 둔화가 이어지며 회복 가이던스가 부재",
        "건설중인자산 증가가 성장 투자가 아니라 감가상각 부담, 가동률 저하, 투자 회수 지연으로 해석될 증거",
        "회사 고유의 부정 공시, 주문 약화, 고객 수요 악화, 경쟁력 훼손 신호"
      ],
      "confidence": 0.66,
      "stance": "BULLISH",
      "entry_action": "WAIT",
      "setup_quality": "DEVELOPING",
      "rationale": "Quality and medium-term trend are constructive: price is above key moving averages, MACD has improved, margins/ROE/net cash are strong, and the held position can be maintained. Timing is not ready for an add because entry_action is WAIT, same-day intraday data is missing, resistance at 116800-117300 has not been cleared with volume, and confirmation requires a close above 117300 with 800000-1000000 shares plus RSI/MACD/flow improvement or a controlled pullback hold at 111500-112000.",
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.3326,
      "capital_reallocation_rank": null,
      "trigger_profile": {
        "primary_trigger_type": "breakout_confirmation",
        "trigger_horizon": "days_to_weeks",
        "trigger_quality": 0.62,
        "entry_readiness": 0.34,
        "thesis_state": "constructive_but_not_confirmed",
        "semantic_summary": "Quality and medium-term trend are constructive: price is above key moving averages, MACD has improved, margins/ROE/net cash are strong, and the held position can be maintained. Timing is not ready for an add because entry_action is WAIT, same-day intraday data is missing, resistance at 116800-117300 has not been cleared with volume, and confirmation requires a close above 117300 with 800000-1000000 shares plus RSI/MACD/flow improvement or a controlled pullback hold at 111500-112000."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.68,
      "timing_readiness": 0.34,
      "reason_codes": [
        "bullish_medium_term_thesis",
        "entry_action_wait",
        "breakout_not_confirmed",
        "intraday_data_missing",
        "volume_confirmation_required",
        "held_position_maintain_only",
        "valuation_risk_high",
        "institutional_flow_unconfirmed",
        "support_invalidation_defined"
      ],
      "review_required": true,
      "score_now": 0.043307386880000014,
      "score_triggered": 0.13326846720000005,
      "gate_reasons": [
        "high_fallback_count"
      ],
      "data_health": {
        "coverage_score": 0.67,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 5,
        "quality_flags": [
          "token_usage_unavailable",
          "intraday_snapshot_missing_same_day"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.62,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.34,
        "thesis_multiplier": 1.108,
        "timing_now": 0.136,
        "timing_triggered": 0.34,
        "funding_source_score": 0.3326
      },
      "broker_symbol": "058470",
      "canonical_ticker": "058470.KQ",
      "display_name": "리노공업"
    },
    {
      "snapshot_id": "20260417T105713_kis_68944660-01",
      "instrument": {
        "broker_symbol": "064400",
        "canonical_ticker": "064400.KS",
        "yahoo_symbol": "064400.KS",
        "krx_code": "064400",
        "dart_corp_code": null,
        "display_name": "LG CNS",
        "exchange": "KRX",
        "country": "KR",
        "currency": "KRW"
      },
      "is_held": true,
      "market_value_krw": 132400,
      "quantity": 2.0,
      "available_qty": 2.0,
      "sector": null,
      "structured_decision": {
        "rating": "HOLD",
        "portfolio_stance": "BULLISH",
        "entry_action": "WAIT",
        "setup_quality": "DEVELOPING",
        "confidence": 0.68,
        "time_horizon": "medium",
        "entry_logic": "064400.KS의 중기 방향성은 건설적이지만, 오늘 즉시 추격 매수할 정도로 진입 조건이 완성되지는 않았다. 공격적 분석이 지적한 대로 2026-04-16 종가 67,100은 50일선 64,619.69와 200일선 65,547.06을 모두 회복했고, MACD도 -439.99에서 34.56으로 플러스 전환했으며 거래량도 2026-04-15 804,682주, 2026-04-16 771,022주로 개선됐다. 또한 KRW 6.13T LTM 매출, 10.95% 영업이익률, 17.34% ROE, KRW 1.68T 현금 및 단기투자자산, forward PER 약 12.4x는 투자 가능한 기본 체력을 뒷받침한다. 다만 보수적·중립적 분석이 강조한 것처럼 50일선은 아직 200일선 아래이고, ATR 2,945.12로 종가 대비 약 4.4% 변동성이 크며, 가격은 10일 EMA 62,698.17 및 VWMA 60,882.70보다 상당히 위에 있어 단기 되돌림 위험이 있다. 따라서 방향성은 BULLISH로 유지하되, 신규 자금은 65,500-66,000 지지 확인 또는 67,200 위 거래량 동반 종가 안착 전까지 WAIT가 적절하다. 조건이 충족되면 소규모 starter는 정당화될 수 있지만, 현재는 전면 매수 신호가 아니다.",
        "exit_logic": "기존 보유분은 064400.KS가 65,500 전후의 200일선 부근 지지와 64,600 핵심 종가 방어선을 유지하는 한 보유한다. 65,500 하회는 경고 신호로 보고 신규 매수 계획을 중단하며, 64,600 아래 종가 이탈은 감축 또는 재검토 기준으로 삼는다. 특히 이탈이 거래량 약화, 200일선 재회복 실패, 또는 MACD 둔화와 동반되면 방어적으로 전환한다. 하락 모멘텀이 재개되면 62,700 부근 10일 EMA와 약 60,900 VWMA까지 되돌림 위험을 다시 평가한다. 실적 공시나 IR에서 마진 훼손, 수주 둔화, 현금전환 악화, AI·자동화 매출화 부재가 확인될 경우에도 기존 강세 가정을 낮춘다.",
        "position_sizing": "기존 핵심 보유분은 정상 또는 약간 낮은 비중으로 유지한다. 신규 자금은 추격하지 않고 두 단계로만 접근한다. 첫째, 65,500-66,000 부근 지지를 확인하고 종가가 200일선 위에서 안정되면 작은 starter를 허용한다. 둘째, 67,200 위에서 거래량이 최근 771,022-804,682주 범위를 의미 있게 넘고 종가가 유지되면 추가 starter를 검토한다. ATR이 약 4.4%로 높고 실적·IR, R&D, M&A, 운전자본 리스크가 남아 있으므로 full allocation은 실적과 가격 확인 이후로 미룬다.",
        "risk_limits": "65,500은 1차 경고선, 64,600은 핵심 종가 기준 감축·재검토선이다. 장중 변동성만으로 기계적으로 대응하기보다 종가, 거래량, 200일선 재회복 여부를 함께 본다. 67,200 돌파 시도 후 재차 200일선 아래로 밀리면 신규 매수 계획을 중단한다. 70,000-72,500은 1차 공급 구간으로 비중 확대를 자제하거나 일부 위험 축소를 검토한다. 단일 종목 위험은 modest하게 유지한다. R&D가 매출 대비 0.8%이고 전년 대비 감소했다는 우려, M&A가 아직 검토 단계라는 점, 2025년 4분기 매출채권 변화 -5,234억 원과 투자현금흐름 -3,259억 원, 리스부채 증가 가능성은 모두 포지션 한도를 제한하는 요인이다.",
        "catalysts": [
          "064400.KS가 65,500-66,000 지지대를 방어하고 종가 기준 200일선 위 안정성을 확인한다.",
          "064400.KS가 67,200 위에서 거래량이 최근 771,022-804,682주 범위를 의미 있게 넘는 종가 안착을 보인다.",
          "실적 공시와 IR에서 수주잔고, 매출 성장, 10% 안팎의 마진 내구성, 현금전환, AI·클라우드·자동화 수요가 확인된다.",
          "피지컬 AI, 모바일 셔틀, 물류 자동화, 클라우드·AI 프로젝트가 고객명, 계약 규모, 반복 매출 또는 실적 기여로 구체화된다.",
          "로봇 또는 AI M&A가 검토 단계에서 합리적 밸류에이션과 전략적 적합성을 갖춘 발표로 진전된다.",
          "R&D 투자 방향이 개선되어 AI·로봇 성장 내러티브의 신뢰도 우려를 낮춘다."
        ],
        "invalidators": [
          "064400.KS가 64,600-65,500 지지 구간을 종가 기준으로 이탈해 50일선과 200일선 회복이 실패 신호로 바뀐다.",
          "67,200 돌파 시도 후 거래량이 붙지 않거나 종가가 다시 200일선 아래로 밀린다.",
          "실적 또는 IR에서 마진 하락, 수주 둔화, 현금전환 악화, 매출채권 부담, AI·자동화 매출화 부재가 확인된다.",
          "R&D 비용이 매출 대비 0.8% 수준에 머물거나 더 낮아져 AI·로봇 성장 논리와 기술 내재화 신뢰도가 약해진다.",
          "M&A가 반복 지연되거나 발표된 거래가 고가 인수, 희석, 전략 부적합, 통합 비용 부담으로 해석된다.",
          "운전자본 부담, 매출채권 회수 지연, 리스부채 증가, 투자현금흐름 유출이 현재 예상보다 악화된다."
        ],
        "watchlist_triggers": [
          "다음 거래일 064400.KS가 급반등 이후 65,500-66,000을 방어하는지 확인한다.",
          "67,200 위 종가 안착과 거래량이 최근 771,022-804,682주 범위를 의미 있게 넘는지 확인한다.",
          "70,000-72,500 1차 저항·공급 구간에서 가격이 밀리는지, 아니면 거래량으로 흡수하는지 관찰한다.",
          "75,500-76,900 이전 고점 저항대에 접근할 경우 실적·IR 확인 없이 단순 테마로 돌파를 시도하는지 점검한다.",
          "OpenDART 실적 공시와 IR에서 매출 성장, 영업이익률, 정상화 이익, 매출채권, 자유현금흐름, 신사업 기여를 확인한다.",
          "AI·로봇 M&A, R&D 예산 방향, 물류 자동화 고객 수주와 관련된 뉴스 또는 공시를 추적한다."
        ],
        "data_coverage": {
          "company_news_count": 3,
          "disclosures_count": 2,
          "social_source": "news_derived",
          "macro_items_count": 1
        }
      },
      "data_coverage": {
        "company_news_count": 3,
        "disclosures_count": 2,
        "social_source": "news_derived",
        "macro_items_count": 1
      },
      "quality_flags": [
        "token_usage_unavailable",
        "intraday_snapshot_missing_same_day"
      ],
      "vendor_health": {
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "ADD_IF_TRIGGERED",
      "trigger_conditions": [
        "다음 거래일 064400.KS가 급반등 이후 65,500-66,000을 방어하는지 확인한다.",
        "67,200 위 종가 안착과 거래량이 최근 771,022-804,682주 범위를 의미 있게 넘는지 확인한다.",
        "70,000-72,500 1차 저항·공급 구간에서 가격이 밀리는지, 아니면 거래량으로 흡수하는지 관찰한다.",
        "75,500-76,900 이전 고점 저항대에 접근할 경우 실적·IR 확인 없이 단순 테마로 돌파를 시도하는지 점검한다.",
        "OpenDART 실적 공시와 IR에서 매출 성장, 영업이익률, 정상화 이익, 매출채권, 자유현금흐름, 신사업 기여를 확인한다.",
        "AI·로봇 M&A, R&D 예산 방향, 물류 자동화 고객 수주와 관련된 뉴스 또는 공시를 추적한다.",
        "064400.KS가 65,500-66,000 지지대를 방어하고 종가 기준 200일선 위 안정성을 확인한다.",
        "064400.KS가 67,200 위에서 거래량이 최근 771,022-804,682주 범위를 의미 있게 넘는 종가 안착을 보인다.",
        "실적 공시와 IR에서 수주잔고, 매출 성장, 10% 안팎의 마진 내구성, 현금전환, AI·클라우드·자동화 수요가 확인된다.",
        "피지컬 AI, 모바일 셔틀, 물류 자동화, 클라우드·AI 프로젝트가 고객명, 계약 규모, 반복 매출 또는 실적 기여로 구체화된다.",
        "로봇 또는 AI M&A가 검토 단계에서 합리적 밸류에이션과 전략적 적합성을 갖춘 발표로 진전된다.",
        "R&D 투자 방향이 개선되어 AI·로봇 성장 내러티브의 신뢰도 우려를 낮춘다.",
        "064400.KS가 64,600-65,500 지지 구간을 종가 기준으로 이탈해 50일선과 200일선 회복이 실패 신호로 바뀐다.",
        "67,200 돌파 시도 후 거래량이 붙지 않거나 종가가 다시 200일선 아래로 밀린다.",
        "실적 또는 IR에서 마진 하락, 수주 둔화, 현금전환 악화, 매출채권 부담, AI·자동화 매출화 부재가 확인된다.",
        "R&D 비용이 매출 대비 0.8% 수준에 머물거나 더 낮아져 AI·로봇 성장 논리와 기술 내재화 신뢰도가 약해진다.",
        "M&A가 반복 지연되거나 발표된 거래가 고가 인수, 희석, 전략 부적합, 통합 비용 부담으로 해석된다.",
        "운전자본 부담, 매출채권 회수 지연, 리스부채 증가, 투자현금흐름 유출이 현재 예상보다 악화된다."
      ],
      "confidence": 0.68,
      "stance": "BULLISH",
      "entry_action": "WAIT",
      "setup_quality": "DEVELOPING",
      "rationale": "LG CNS has a constructive medium-term thesis supported by solid profitability, liquidity, valuation, and improving AI/automation narrative, while the stock has recovered key moving averages and MACD improved. However, the action is explicitly WAIT/HOLD: timing depends on either defending 65,500-66,000 support or confirming a volume-backed close above 67,200, with earnings/IR confirmation still important. Current setup is developing rather than immediately actionable.",
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.31,
      "capital_reallocation_rank": null,
      "trigger_profile": {
        "primary_trigger_type": "breakout_confirmation",
        "trigger_horizon": "days_to_weeks",
        "trigger_quality": 0.62,
        "entry_readiness": 0.42,
        "thesis_state": "constructive_but_not_confirmed",
        "semantic_summary": "LG CNS has a constructive medium-term thesis supported by solid profitability, liquidity, valuation, and improving AI/automation narrative, while the stock has recovered key moving averages and MACD improved. However, the action is explicitly WAIT/HOLD: timing depends on either defending 65,500-66,000 support or confirming a volume-backed close above 67,200, with earnings/IR confirmation still important. Current setup is developing rather than immediately actionable."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.68,
      "timing_readiness": 0.42,
      "reason_codes": [
        "constructive_fundamental_thesis",
        "technical_recovery_but_unconfirmed",
        "explicit_wait_entry_action",
        "specific_price_volume_triggers_defined",
        "support_confirmation_required",
        "elevated_volatility_pullback_risk",
        "stale_or_degraded_data",
        "held_position_hold_not_add_now"
      ],
      "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": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4,
        "quality_flags": [
          "token_usage_unavailable",
          "intraday_snapshot_missing_same_day"
        ],
        "legacy_rating": "HOLD",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.62,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.42,
        "thesis_multiplier": 1.108,
        "timing_now": 0.168,
        "timing_triggered": 0.42,
        "funding_source_score": 0.31
      },
      "broker_symbol": "064400",
      "canonical_ticker": "064400.KS",
      "display_name": "LG CNS"
    },
    {
      "snapshot_id": "20260417T105713_kis_68944660-01",
      "instrument": {
        "broker_symbol": "095340",
        "canonical_ticker": "095340.KS",
        "yahoo_symbol": "095340.KS",
        "krx_code": "095340",
        "dart_corp_code": null,
        "display_name": "ISC",
        "exchange": "KRX",
        "country": "KR",
        "currency": "KRW"
      },
      "is_held": true,
      "market_value_krw": 443000,
      "quantity": 2.0,
      "available_qty": 2.0,
      "sector": null,
      "structured_decision": {
        "rating": "OVERWEIGHT",
        "portfolio_stance": "BULLISH",
        "entry_action": "WAIT",
        "setup_quality": "DEVELOPING",
        "confidence": 0.62,
        "time_horizon": "medium",
        "entry_logic": "095340.KS의 중기 투자 매력은 유지한다. 공격적 분석가가 지적한 2025-12-31 분기 매출 72,330,336,130원, 영업이익 21,973,617,700원, 약 30.4% 영업이익률, 현금 및 단기투자 343,884,830,860원 대비 총차입금 21,194,528,030원의 순현금 구조는 OVERWEIGHT를 정당화한다. 다만 보수적·중립 분석가가 공통으로 지적한 대로 2026-04-10 거래량 2,081,327주 급락 이후 현재 가격이 10일 EMA 약 237,000원과 VWMA 약 248,000원 아래에 있어 오늘 즉시 진입은 보류한다. 237,000원 종가 회복과 비분배성 거래량 확인 시 축소 starter가 가능하고, 216,500-211,000원 지지 확인과 매도 거래량 둔화가 나타날 때도 제한적 starter를 검토한다.",
        "exit_logic": "기존 보유분은 205,000원 종가 이탈 시 축소 또는 청산한다. 이는 50일 SMA 약 204,934원 방어 실패로, 중립·보수 분석가가 지적한 평균회귀 및 중기 추세 훼손 위험이 커지는 구간이다. 또한 다음 실적에서 매출 성장 둔화, 영업이익률 하락, 매출채권 69,838,746,000원과 재고 25,011,166,030원의 추가 부담, 현금전환 악화, 재고평가손실 가능성이 확인되면 투자 논리를 재검토하고 위험을 줄인다.",
        "position_sizing": "정상 목표 비중보다 작게 운용한다. ATR이 약 23,126원으로 현재가 대비 약 10%라는 보수·중립 분석가의 변동성 우려를 반영해 237,000원 회복 시 정상 의도 비중의 25-33% 수준 starter만 허용한다. 248,000원 회복과 수급 안정 확인 후에만 추가하고, 257,500원 회복과 거래량 개선이 동반될 때 ADD를 검토한다. 기존 보유자는 핵심 비중은 유지할 수 있으나 확인 전 추가 매수는 피한다.",
        "risk_limits": "237,000원 아래에서는 지지 확인 없이 추격 매수하지 않는다. 248,000원은 최근 VWMA 공급대이자 대량거래 참여자의 매물 확인 구간으로 취급하고, 257,500원은 2026-04-10 급락 충격이 상당 부분 복구됐는지 판단하는 확인선으로 본다. 포트폴리오 손실은 205,000원 종가 이탈 시에도 감내 가능한 수준으로 제한하며, 216,500-211,000원 지지 매수는 일반 starter보다 더 작게 시작한다.",
        "catalysts": [
          "095340.KS가 237,000원 위로 종가 회복하고 거래량이 분배성 매도가 아니라 흡수 형태로 안정된다.",
          "095340.KS가 248,000원 VWMA 공급대를 회복해 2026-04-10 이후 매물 부담이 줄었음을 확인한다.",
          "095340.KS가 257,500원 위로 거래량을 동반해 회복하며 급락일 충격을 상당 부분 복구한다.",
          "IR 또는 회사 커뮤니케이션에서 AI 반도체, 고성능 테스트 소켓, 고객 다변화, 고마진 제품 믹스 확대가 확인된다.",
          "다음 분기 실적에서 강한 매출 성장, 높은 영업이익률, 건강한 영업현금흐름이 유지된다.",
          "공매도 거래대금 214억 원과 기관 매도 압력이 완화되고 반도체 부품 업종 심리가 회복된다."
        ],
        "invalidators": [
          "095340.KS가 205,000원 아래로 종가 이탈해 50일 SMA 방어에 실패한다.",
          "095340.KS가 237,000원 아래에 머무는 동안 업종 및 동종 종목이 회복해 상대 약세가 고착된다.",
          "매출채권과 재고 증가가 현금전환 악화, 회수 지연, 재고평가손실로 연결된다.",
          "다음 실적에서 매출 성장 둔화, 마진 피크아웃, 고객사 재고 조정, 수주 기대 미달이 확인된다.",
          "대표이사 변경, 교환청구권 행사, 자기주식처분 정정 등 이벤트가 희석, 오버행, 지배구조 불확실성으로 재평가된다."
        ],
        "watchlist_triggers": [
          "237,000원 종가 회복: 거래량이 분배성 매도가 아니면 축소 starter를 검토한다.",
          "248,000원 종가 회복: VWMA 공급 흡수 가능성이 높아져 setup_quality 상향을 검토한다.",
          "257,500원 거래량 동반 회복: 2026-04-10 급락 복구 신호로 ADD를 검토한다.",
          "216,500-211,000원 지지 확인과 매도 거래량 둔화: 205,000원 종가 손절을 전제로 매우 작은 starter를 검토한다.",
          "205,000원 종가 이탈: 방어적 stance로 전환하고 기존 노출을 축소 또는 청산한다."
        ],
        "data_coverage": {
          "company_news_count": 2,
          "disclosures_count": 6,
          "social_source": "news_derived",
          "macro_items_count": 2
        }
      },
      "data_coverage": {
        "company_news_count": 2,
        "disclosures_count": 6,
        "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": 2
        },
        "fallback_count": 4
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "ADD_IF_TRIGGERED",
      "trigger_conditions": [
        "237,000원 종가 회복: 거래량이 분배성 매도가 아니면 축소 starter를 검토한다.",
        "248,000원 종가 회복: VWMA 공급 흡수 가능성이 높아져 setup_quality 상향을 검토한다.",
        "257,500원 거래량 동반 회복: 2026-04-10 급락 복구 신호로 ADD를 검토한다.",
        "216,500-211,000원 지지 확인과 매도 거래량 둔화: 205,000원 종가 손절을 전제로 매우 작은 starter를 검토한다.",
        "205,000원 종가 이탈: 방어적 stance로 전환하고 기존 노출을 축소 또는 청산한다.",
        "095340.KS가 237,000원 위로 종가 회복하고 거래량이 분배성 매도가 아니라 흡수 형태로 안정된다.",
        "095340.KS가 248,000원 VWMA 공급대를 회복해 2026-04-10 이후 매물 부담이 줄었음을 확인한다.",
        "095340.KS가 257,500원 위로 거래량을 동반해 회복하며 급락일 충격을 상당 부분 복구한다.",
        "IR 또는 회사 커뮤니케이션에서 AI 반도체, 고성능 테스트 소켓, 고객 다변화, 고마진 제품 믹스 확대가 확인된다.",
        "다음 분기 실적에서 강한 매출 성장, 높은 영업이익률, 건강한 영업현금흐름이 유지된다.",
        "공매도 거래대금 214억 원과 기관 매도 압력이 완화되고 반도체 부품 업종 심리가 회복된다.",
        "095340.KS가 205,000원 아래로 종가 이탈해 50일 SMA 방어에 실패한다.",
        "095340.KS가 237,000원 아래에 머무는 동안 업종 및 동종 종목이 회복해 상대 약세가 고착된다.",
        "매출채권과 재고 증가가 현금전환 악화, 회수 지연, 재고평가손실로 연결된다.",
        "다음 실적에서 매출 성장 둔화, 마진 피크아웃, 고객사 재고 조정, 수주 기대 미달이 확인된다.",
        "대표이사 변경, 교환청구권 행사, 자기주식처분 정정 등 이벤트가 희석, 오버행, 지배구조 불확실성으로 재평가된다."
      ],
      "confidence": 0.62,
      "stance": "BULLISH",
      "entry_action": "WAIT",
      "setup_quality": "DEVELOPING",
      "rationale": "ISC has a constructive medium-term thesis supported by strong profitability, net cash, and AI/high-performance semiconductor socket exposure, but the action timing is not confirmed. Current guidance is HOLD/WAIT because price remains below the 237,000 KRW short-term recovery level and 248,000 KRW VWMA supply zone after a high-volume selloff. Add exposure only after a confirmed close above 237,000 with non-distribution volume, stronger confirmation above 248,000/257,500, or a verified support test near 216,500-211,000 with controlled risk.",
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.3284,
      "capital_reallocation_rank": null,
      "trigger_profile": {
        "primary_trigger_type": "breakout_confirmation",
        "trigger_horizon": "days_to_weeks",
        "trigger_quality": 0.68,
        "entry_readiness": 0.34,
        "thesis_state": "constructive_but_not_confirmed",
        "semantic_summary": "ISC has a constructive medium-term thesis supported by strong profitability, net cash, and AI/high-performance semiconductor socket exposure, but the action timing is not confirmed. Current guidance is HOLD/WAIT because price remains below the 237,000 KRW short-term recovery level and 248,000 KRW VWMA supply zone after a high-volume selloff. Add exposure only after a confirmed close above 237,000 with non-distribution volume, stronger confirmation above 248,000/257,500, or a verified support test near 216,500-211,000 with controlled risk."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.66,
      "timing_readiness": 0.34,
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_wait_confirmations_required",
        "price_below_key_recovery_levels",
        "high_volume_selloff_not_repaired",
        "specific_breakout_levels_defined",
        "support_test_alternative_trigger",
        "clear_risk_invalidation_level",
        "stale_or_degraded_data_flag"
      ],
      "review_required": true,
      "score_now": 0.043230878720000004,
      "score_triggered": 0.13307719680000005,
      "gate_reasons": [
        "high_fallback_count"
      ],
      "data_health": {
        "coverage_score": 0.7200000000000001,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4,
        "quality_flags": [
          "token_usage_unavailable"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.68,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.34,
        "thesis_multiplier": 1.096,
        "timing_now": 0.136,
        "timing_triggered": 0.34,
        "funding_source_score": 0.3284
      },
      "broker_symbol": "095340",
      "canonical_ticker": "095340.KS",
      "display_name": "ISC"
    },
    {
      "snapshot_id": "20260417T105713_kis_68944660-01",
      "instrument": {
        "broker_symbol": "278470",
        "canonical_ticker": "278470.KS",
        "yahoo_symbol": "278470.KS",
        "krx_code": "278470",
        "dart_corp_code": null,
        "display_name": "에이피알",
        "exchange": "KRX",
        "country": "KR",
        "currency": "KRW"
      },
      "is_held": true,
      "market_value_krw": 414000,
      "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": "278470.KS에 대한 중기 배분 관점은 OVERWEIGHT로 유지한다. 공격적 분석가가 강조한 2025-12-31 분기 매출 547634595480원, 영업이익 130272376980원, 순이익 98770046870원, 영업현금흐름 156069250900원, 자유현금흐름 150847694940원은 성장성과 이익의 질을 동시에 뒷받침한다. 또한 10일 EMA, 50일 SMA, 200일 SMA 위의 정배열, MACD 23662.01과 히스토그램 6860.72 개선은 상승 추세가 아직 유효하다는 근거다. 다만 보수적·중립 분석가가 지적한 대로 2026-04-16 종가 414500원은 10일 EMA 379288.67원보다 약 9.3% 높고, 2026-04-09 돌파 거래량 868166주 대비 2026-04-16 거래량 161094주로 줄어 추격 매수의 손익비는 충분하지 않다. 오늘 즉시 신규 진입은 보류하되, 417000~418000원 위 종가 안착과 거래량 회복이 확인되면 조건부 초기 진입이 가능하고, 393000~400000원 눌림에서 지지와 강한 반등이 확인되면 더 우호적인 진입 구간으로 본다.",
        "exit_logic": "기존 보유자는 상승 추세가 유지되는 동안 보유를 지속한다. 278470.KS가 417000~418000원 돌파에 실패한 뒤 거래량 증가와 함께 390000원 아래로 종가 이탈하면 단기 돌파 실패로 판단해 비중을 줄인다. 379000원대 10일 EMA 이탈은 단순 변동성이 아니라 상승 속도 훼손 신호로 보고 OVERWEIGHT 강도를 재검토한다. 다음 실적에서 매출 성장 둔화, 판매 및 마케팅 비용 효율 악화, 완제품 재고 부담, 할인 판매, 재고평가손, 매출채권 회수 악화가 확인되면 HOLD 이하로 낮춘다.",
        "position_sizing": "신규 매수는 오늘 실행하지 않는다. 조건이 충족될 경우 고변동성 성장주 특성을 반영해 목표 비중의 25~40%를 초기 비중으로 시작한다. 417000~418000원 위 종가와 의미 있는 거래량 회복이 확인되면 25~40%의 탐색 비중을 허용하고, 393000~400000원 눌림 지지 후 양봉 전환이 확인되면 손익비가 더 좋아 목표 비중의 30~45%까지 시작할 수 있다. ATR 24164원, 종가 대비 약 5.8% 변동성을 감안해 일반 성장주보다 작게 시작하고, 추가 매수는 안착과 거래량, 다음 실적 지표 확인 후 단계적으로만 진행한다.",
        "risk_limits": "현재 414500원 부근에서는 거래량이 동반되지 않은 신고가권 추격 매수를 금지한다. 전술적 위험선은 거래량 증가를 동반한 390000원 종가 이탈이며, 이 경우 신규 진입 계획을 중단하거나 기존 비중을 축소한다. 추세 위험선은 379000원대 10일 EMA 이탈이다. RSI가 70 이상으로 상승한 뒤 거래량 둔화와 윗꼬리 확대가 동시에 나타나면 추가 매수를 동결하고 보유 비중을 점검한다. 손절 폭은 최소 1 ATR 이상을 반영하되, 포트폴리오 손실 한도를 넘지 않도록 초기 비중을 제한한다.",
        "catalysts": [
          "2025-12-31 분기 매출 547634595480원, 영업이익 130272376980원, 순이익 98770046870원으로 성장성과 수익성이 확인됨",
          "영업현금흐름 156069250900원과 자유현금흐름 150847694940원이 순이익을 상회해 이익의 질이 우수함",
          "278470.KS가 10일 EMA, 50일 SMA, 200일 SMA를 모두 상회하고 MACD 23662.01, 히스토그램 6860.72로 모멘텀이 개선됨",
          "2026-04-09에 868166주 거래량을 동반해 365500원 돌파 후 가격대가 상향 이동한 점은 수급 변화의 근거임",
          "K-뷰티 대표 성장주 프리미엄과 ESG 평판 개선 뉴스는 단기 매수 근거보다는 중기 보유 명분을 보강함"
        ],
        "invalidators": [
          "417000~418000원 돌파 실패 후 거래량 증가를 동반한 390000원 하향 종가 이탈",
          "379000원대 10일 EMA 이탈과 MACD, RSI 등 모멘텀 둔화 동반",
          "다음 실적에서 매출 성장률 둔화 또는 판매 및 마케팅 비용 증가가 영업이익률을 압박하는 경우",
          "완제품 재고 165457160450원 관련 회전율 악화, 재고평가손, 할인 판매 확대 또는 매출채권 회수 악화",
          "해외 성장률 둔화나 K-뷰티 대표주 프리미엄 축소로 선행 PER 24.75배 정당성이 약화되는 경우",
          "공시 부재가 지속되는 가운데 실적·계약·자본정책 관련 신규 촉매가 나오지 않는 경우"
        ],
        "watchlist_triggers": [
          "278470.KS가 417000~418000원 위에서 종가 안착하고 2026-04-16의 161094주를 뚜렷하게 넘어서는 거래량 회복이 나타나는지 확인",
          "393000~400000원 눌림 구간에서 지지 확인 후 강한 양봉 전환과 수요 회복이 나타나는지 확인",
          "390000원 종가 이탈 여부와 이탈 시 거래량 증가 여부 확인",
          "379000원대 10일 EMA 방어 여부 확인",
          "RSI가 70 이상으로 올라간 뒤 거래량 둔화와 윗꼬리 확대가 동시에 나타나는지 확인",
          "다음 분기 매출 성장률, 영업이익률, 판매 및 마케팅 비용 효율 확인",
          "재고 165457160450원과 완제품 재고 회전, 할인 판매, 재고평가손 징후 확인",
          "실적, 계약, 지분 변동, 자사주, 배당, 자본정책 관련 신규 공시 확인"
        ],
        "data_coverage": {
          "company_news_count": 4,
          "disclosures_count": 0,
          "social_source": "news_derived",
          "macro_items_count": 0
        }
      },
      "data_coverage": {
        "company_news_count": 4,
        "disclosures_count": 0,
        "social_source": "news_derived",
        "macro_items_count": 0
      },
      "quality_flags": [
        "token_usage_unavailable",
        "intraday_snapshot_missing_same_day"
      ],
      "vendor_health": {
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 5
      },
      "suggested_action_now": "HOLD",
      "suggested_action_if_triggered": "ADD_IF_TRIGGERED",
      "trigger_conditions": [
        "278470.KS가 417000~418000원 위에서 종가 안착하고 2026-04-16의 161094주를 뚜렷하게 넘어서는 거래량 회복이 나타나는지 확인",
        "393000~400000원 눌림 구간에서 지지 확인 후 강한 양봉 전환과 수요 회복이 나타나는지 확인",
        "390000원 종가 이탈 여부와 이탈 시 거래량 증가 여부 확인",
        "379000원대 10일 EMA 방어 여부 확인",
        "RSI가 70 이상으로 올라간 뒤 거래량 둔화와 윗꼬리 확대가 동시에 나타나는지 확인",
        "다음 분기 매출 성장률, 영업이익률, 판매 및 마케팅 비용 효율 확인",
        "재고 165457160450원과 완제품 재고 회전, 할인 판매, 재고평가손 징후 확인",
        "실적, 계약, 지분 변동, 자사주, 배당, 자본정책 관련 신규 공시 확인",
        "2025-12-31 분기 매출 547634595480원, 영업이익 130272376980원, 순이익 98770046870원으로 성장성과 수익성이 확인됨",
        "영업현금흐름 156069250900원과 자유현금흐름 150847694940원이 순이익을 상회해 이익의 질이 우수함",
        "278470.KS가 10일 EMA, 50일 SMA, 200일 SMA를 모두 상회하고 MACD 23662.01, 히스토그램 6860.72로 모멘텀이 개선됨",
        "2026-04-09에 868166주 거래량을 동반해 365500원 돌파 후 가격대가 상향 이동한 점은 수급 변화의 근거임",
        "K-뷰티 대표 성장주 프리미엄과 ESG 평판 개선 뉴스는 단기 매수 근거보다는 중기 보유 명분을 보강함",
        "417000~418000원 돌파 실패 후 거래량 증가를 동반한 390000원 하향 종가 이탈",
        "379000원대 10일 EMA 이탈과 MACD, RSI 등 모멘텀 둔화 동반",
        "다음 실적에서 매출 성장률 둔화 또는 판매 및 마케팅 비용 증가가 영업이익률을 압박하는 경우",
        "완제품 재고 165457160450원 관련 회전율 악화, 재고평가손, 할인 판매 확대 또는 매출채권 회수 악화",
        "해외 성장률 둔화나 K-뷰티 대표주 프리미엄 축소로 선행 PER 24.75배 정당성이 약화되는 경우",
        "공시 부재가 지속되는 가운데 실적·계약·자본정책 관련 신규 촉매가 나오지 않는 경우"
      ],
      "confidence": 0.72,
      "stance": "BULLISH",
      "entry_action": "WAIT",
      "setup_quality": "DEVELOPING",
      "rationale": "Medium-term thesis is constructive: APR has strong reported growth, high cash generation, positive trend alignment above key moving averages, and improving MACD momentum. However, the action is not ready now because the stock is near highs, extended above the 10-day EMA, and recent volume has faded versus the prior breakout. Existing holding can be maintained, but adding requires confirmation via a close above 417000-418000 KRW with renewed volume or a supported pullback near 393000-400000 KRW.",
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.3198,
      "capital_reallocation_rank": null,
      "trigger_profile": {
        "primary_trigger_type": "breakout_confirmation",
        "trigger_horizon": "days_to_weeks",
        "trigger_quality": 0.58,
        "entry_readiness": 0.38,
        "thesis_state": "constructive_but_not_confirmed",
        "semantic_summary": "Medium-term thesis is constructive: APR has strong reported growth, high cash generation, positive trend alignment above key moving averages, and improving MACD momentum. However, the action is not ready now because the stock is near highs, extended above the 10-day EMA, and recent volume has faded versus the prior breakout. Existing holding can be maintained, but adding requires confirmation via a close above 417000-418000 KRW with renewed volume or a supported pullback near 393000-400000 KRW."
      },
      "decision_source": "RULE+DEEP",
      "thesis_strength": 0.74,
      "timing_readiness": 0.38,
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_wait",
        "breakout_needs_volume_confirmation",
        "extended_above_short_term_average",
        "volume_confirmation_missing",
        "held_position_hold_not_add_now",
        "stale_or_degraded_data",
        "specific_price_triggers_defined"
      ],
      "review_required": true,
      "score_now": 0.05710685696,
      "score_triggered": 0.16776714239999999,
      "gate_reasons": [
        "high_fallback_count"
      ],
      "data_health": {
        "coverage_score": 0.67,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 5,
        "quality_flags": [
          "token_usage_unavailable",
          "intraday_snapshot_missing_same_day"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.58,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.38,
        "thesis_multiplier": 1.144,
        "timing_now": 0.152,
        "timing_triggered": 0.38,
        "funding_source_score": 0.3198
      },
      "broker_symbol": "278470",
      "canonical_ticker": "278470.KS",
      "display_name": "에이피알"
    }
  ],
  "actions": [
    {
      "canonical_ticker": "012450.KS",
      "display_name": "한화에어로스페이스",
      "priority": 1,
      "confidence": 0.72,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.1274,
      "action_if_triggered": "ADD_IF_TRIGGERED",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.1274,
      "trigger_conditions": [
        "1,559,000 KRW 위 종가 돌파와 최근 4월 평균을 뚜렷하게 웃도는 거래량 동반",
        "돌파 후 다음 거래일에도 1,559,000 KRW 위 가격 안착 또는 지지 재확인",
        "1,485,000 KRW 부근 되돌림에서 지지 확인 및 RSI 55 이상 안정",
        "1,600,000 KRW 부근 Bollinger 상단 접근 시 3월식 거래 참여 회복 여부 확인",
        "실적·IR 이후 2025-12-31 현금흐름 개선이 단순한 시점 차이나 운전자본 효과만이 아니라는 증거",
        "새 OpenDART 계약 또는 수주 발표에서 규모, 마진 품질, 납기 일정이 명확하게 확인됨",
        "2026-04-01 및 2026-04-10 OpenDART 단일판매·공급계약 공시가 수주잔고와 매출 가시성을 강화",
        "2026-04-15 실적 프리뷰와 IR에서 마진, 수주잔고 품질, 현금 전환율, 가이던스 확인 가능",
        "주요 4개 K-방산 기업의 1분기 영업이익이 전년 대비 37.4% 증가한 1.2389조 KRW로 예상된다는 섹터 기대",
        "중동 방공·미사일 방어 수요가 012450.KS의 수출 수주 기대를 지지",
        "103.3십억 KRW 규모의 달 관련 프로젝트와 우주·항공 서사가 전통 방산을 넘어선 플랫폼 가치평가를 지지",
        "실적 또는 IR에서 마진 품질, 수출 수익성, 수주잔고 전환, 현금흐름 지속성이 확인되지 않음",
        "추가 증자, 지배구조 이슈, 자본정책 실책으로 희석 우려가 재부각됨",
        "공급계약이 저마진, 지연, 또는 운전자본 부담이 큰 구조로 드러남",
        "지정학 프리미엄이 약해지는 동안 신규 수주나 실적 상향이 이를 대체하지 못함",
        "1,437,000-1,450,000 KRW 지지대의 지속 이탈 또는 1,345,000 KRW 50 SMA 하회 종가로 추세가 훼손됨"
      ],
      "rationale": "Best risk-adjusted priority in this wait-heavy batch: strong defense/aerospace thesis, better news and disclosure support, and clear breakout or pullback triggers. Existing position is already meaningful, so no immediate add until volume and price confirmation arrive.",
      "data_health": {
        "coverage_score": 0.72,
        "vendor_calls": {
          "yfinance": 16,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4,
        "quality_flags": [
          "token_usage_unavailable"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.68,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.38,
        "thesis_multiplier": 1.132,
        "timing_now": 0.152,
        "timing_triggered": 0.38,
        "funding_source_score": 0.3108,
        "score_now": 0.0614,
        "score_triggered": 0.1784,
        "strict_cash_available_for_new_buys_krw": 298835
      },
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.3108,
      "capital_reallocation_rank": 10,
      "decision_source": "RULE+DEEP+CODEX",
      "timing_readiness": 0.38,
      "reason_codes": [
        "bullish_medium_term_thesis",
        "entry_action_wait",
        "developing_setup",
        "breakout_not_confirmed",
        "volume_confirmation_required",
        "pullback_support_alternative",
        "stale_or_degraded_data",
        "held_position_core_hold",
        "strong_medium_term_thesis",
        "better_disclosure_support",
        "clear_trigger_framework",
        "existing_weight_limits_urgency"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "064400.KS",
      "display_name": "LG CNS",
      "priority": 2,
      "confidence": 0.68,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.0118,
      "action_if_triggered": "ADD_IF_TRIGGERED",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.0118,
      "trigger_conditions": [
        "다음 거래일 064400.KS가 급반등 이후 65,500-66,000을 방어하는지 확인한다.",
        "67,200 위 종가 안착과 거래량이 최근 771,022-804,682주 범위를 의미 있게 넘는지 확인한다.",
        "70,000-72,500 1차 저항·공급 구간에서 가격이 밀리는지, 아니면 거래량으로 흡수하는지 관찰한다.",
        "75,500-76,900 이전 고점 저항대에 접근할 경우 실적·IR 확인 없이 단순 테마로 돌파를 시도하는지 점검한다.",
        "OpenDART 실적 공시와 IR에서 매출 성장, 영업이익률, 정상화 이익, 매출채권, 자유현금흐름, 신사업 기여를 확인한다.",
        "AI·로봇 M&A, R&D 예산 방향, 물류 자동화 고객 수주와 관련된 뉴스 또는 공시를 추적한다.",
        "064400.KS가 65,500-66,000 지지대를 방어하고 종가 기준 200일선 위 안정성을 확인한다.",
        "064400.KS가 67,200 위에서 거래량이 최근 771,022-804,682주 범위를 의미 있게 넘는 종가 안착을 보인다.",
        "실적 공시와 IR에서 수주잔고, 매출 성장, 10% 안팎의 마진 내구성, 현금전환, AI·클라우드·자동화 수요가 확인된다.",
        "피지컬 AI, 모바일 셔틀, 물류 자동화, 클라우드·AI 프로젝트가 고객명, 계약 규모, 반복 매출 또는 실적 기여로 구체화된다.",
        "로봇 또는 AI M&A가 검토 단계에서 합리적 밸류에이션과 전략적 적합성을 갖춘 발표로 진전된다.",
        "R&D 투자 방향이 개선되어 AI·로봇 성장 내러티브의 신뢰도 우려를 낮춘다.",
        "064400.KS가 64,600-65,500 지지 구간을 종가 기준으로 이탈해 50일선과 200일선 회복이 실패 신호로 바뀐다.",
        "67,200 돌파 시도 후 거래량이 붙지 않거나 종가가 다시 200일선 아래로 밀린다.",
        "실적 또는 IR에서 마진 하락, 수주 둔화, 현금전환 악화, 매출채권 부담, AI·자동화 매출화 부재가 확인된다.",
        "R&D 비용이 매출 대비 0.8% 수준에 머물거나 더 낮아져 AI·로봇 성장 논리와 기술 내재화 신뢰도가 약해진다.",
        "M&A가 반복 지연되거나 발표된 거래가 고가 인수, 희석, 전략 부적합, 통합 비용 부담으로 해석된다.",
        "운전자본 부담, 매출채권 회수 지연, 리스부채 증가, 투자현금흐름 유출이 현재 예상보다 악화된다."
      ],
      "rationale": "Constructive LG CNS thesis with small existing weight and defined support or breakout triggers, but legacy HOLD, high fallback count, and missing same-day intraday data keep it behind the higher-quality defense setup.",
      "data_health": {
        "coverage_score": 0.72,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4,
        "quality_flags": [
          "token_usage_unavailable",
          "intraday_snapshot_missing_same_day"
        ],
        "legacy_rating": "HOLD",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.62,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.42,
        "thesis_multiplier": 1.108,
        "timing_now": 0.168,
        "timing_triggered": 0.42,
        "funding_source_score": 0.31,
        "score_now": 0.0629,
        "score_triggered": 0.1823,
        "strict_cash_available_for_new_buys_krw": 298835
      },
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.31,
      "capital_reallocation_rank": 11,
      "decision_source": "RULE+DEEP+CODEX",
      "timing_readiness": 0.42,
      "reason_codes": [
        "constructive_fundamental_thesis",
        "technical_recovery_but_unconfirmed",
        "explicit_wait_entry_action",
        "specific_price_volume_triggers_defined",
        "support_confirmation_required",
        "elevated_volatility_pullback_risk",
        "stale_or_degraded_data",
        "held_position_hold_not_add_now",
        "small_existing_weight",
        "technical_recovery_unconfirmed",
        "legacy_hold_signal"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "005930.KS",
      "display_name": "삼성전자",
      "priority": 3,
      "confidence": 0.66,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.1158,
      "action_if_triggered": "ADD_IF_TRIGGERED",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.1158,
      "trigger_conditions": [
        "005930.KS의 218000 및 223000 부근 일봉 종가와 거래량 변화",
        "210500 및 203900 눌림 구간에서 지지와 반등 여부",
        "RSI가 55-60 위를 유지하는지 또는 저항권에서 하락 반전하는지",
        "MACD 히스토그램 확장 지속 여부와 저항권 약세 다이버전스 발생 여부",
        "2026-04-23 노동 집회와 2026-05-21 파업 가능성 관련 협상 진전 또는 악화 뉴스",
        "DRAM/NAND 가격, HBM4E 검증, Nvidia 관련 수요, CAPEX 및 재고 추세의 후속 증거",
        "005930.KS가 218000 위에서 거래량 확장을 동반한 일봉 종가를 만들며 저항 흡수를 확인",
        "223000 돌파 또는 돌파 후 재지지로 52주 고가권 위 연속성이 확인",
        "DRAM/NAND 가격 강세와 메모리 회복 사이클 지속 증거 확대",
        "HBM4E 진전 또는 Nvidia 공급망 관련 긍정적 검증",
        "최근 분기에서 확인된 매출 93.84조원, 영업이익 20.07조원, 영업현금흐름 28.8조원 흐름의 지속",
        "2026-04-23 및 2026-05-21 관련 노동 리스크가 생산 차질 없이 완화",
        "005930.KS가 218000-223000 저항에서 재차 실패한 뒤 203900 아래로 종가 이탈",
        "195000-195200 아래 종가로 VWMA 및 수급 지지 훼손",
        "2026-04-23 집회 또는 2026-05-21 파업 가능성이 실제 생산 차질 위험으로 확대",
        "메모리 가격 모멘텀 둔화 또는 이익 전망 하향",
        "HBM4E/Nvidia 기대가 지연되거나 SK하이닉스, TSMC 대비 경쟁 열위가 부각",
        "재고 52.64조원 증가와 CAPEX 부담이 마진 압박 또는 재고평가손실 우려로 전환"
      ],
      "rationale": "Samsung offers higher liquidity and stronger balance-sheet quality than the more speculative semiconductor names, but it is sitting just below resistance with labor-event risk and insufficient volume confirmation. Prefer only after a clean 218000-223000 resolution or supported pullback.",
      "data_health": {
        "coverage_score": 0.72,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4,
        "quality_flags": [
          "token_usage_unavailable",
          "intraday_snapshot_missing_same_day"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.64,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.38,
        "thesis_multiplier": 1.108,
        "timing_now": 0.152,
        "timing_triggered": 0.38,
        "funding_source_score": 0.318,
        "score_now": 0.054,
        "score_triggered": 0.1601,
        "strict_cash_available_for_new_buys_krw": 298835
      },
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.318,
      "capital_reallocation_rank": 8,
      "decision_source": "RULE+DEEP+CODEX",
      "timing_readiness": 0.38,
      "reason_codes": [
        "bullish_thesis_waiting_for_confirmation",
        "near_resistance_no_chase",
        "volume_confirmation_missing",
        "stale_intraday_data",
        "explicit_breakout_trigger_defined",
        "support_pullback_alternative_defined",
        "labor_event_risk_pending",
        "large_cap_quality_bias",
        "memory_recovery_thesis",
        "semiconductor_concentration_control"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "278470.KS",
      "display_name": "에이피알",
      "priority": 4,
      "confidence": 0.72,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.0367,
      "action_if_triggered": "ADD_IF_TRIGGERED",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.0367,
      "trigger_conditions": [
        "278470.KS가 417000~418000원 위에서 종가 안착하고 2026-04-16의 161094주를 뚜렷하게 넘어서는 거래량 회복이 나타나는지 확인",
        "393000~400000원 눌림 구간에서 지지 확인 후 강한 양봉 전환과 수요 회복이 나타나는지 확인",
        "390000원 종가 이탈 여부와 이탈 시 거래량 증가 여부 확인",
        "379000원대 10일 EMA 방어 여부 확인",
        "RSI가 70 이상으로 올라간 뒤 거래량 둔화와 윗꼬리 확대가 동시에 나타나는지 확인",
        "다음 분기 매출 성장률, 영업이익률, 판매 및 마케팅 비용 효율 확인",
        "재고 165457160450원과 완제품 재고 회전, 할인 판매, 재고평가손 징후 확인",
        "실적, 계약, 지분 변동, 자사주, 배당, 자본정책 관련 신규 공시 확인",
        "2025-12-31 분기 매출 547634595480원, 영업이익 130272376980원, 순이익 98770046870원으로 성장성과 수익성이 확인됨",
        "영업현금흐름 156069250900원과 자유현금흐름 150847694940원이 순이익을 상회해 이익의 질이 우수함",
        "278470.KS가 10일 EMA, 50일 SMA, 200일 SMA를 모두 상회하고 MACD 23662.01, 히스토그램 6860.72로 모멘텀이 개선됨",
        "2026-04-09에 868166주 거래량을 동반해 365500원 돌파 후 가격대가 상향 이동한 점은 수급 변화의 근거임",
        "K-뷰티 대표 성장주 프리미엄과 ESG 평판 개선 뉴스는 단기 매수 근거보다는 중기 보유 명분을 보강함",
        "417000~418000원 돌파 실패 후 거래량 증가를 동반한 390000원 하향 종가 이탈",
        "379000원대 10일 EMA 이탈과 MACD, RSI 등 모멘텀 둔화 동반",
        "다음 실적에서 매출 성장률 둔화 또는 판매 및 마케팅 비용 증가가 영업이익률을 압박하는 경우",
        "완제품 재고 165457160450원 관련 회전율 악화, 재고평가손, 할인 판매 확대 또는 매출채권 회수 악화",
        "해외 성장률 둔화나 K-뷰티 대표주 프리미엄 축소로 선행 PER 24.75배 정당성이 약화되는 경우",
        "공시 부재가 지속되는 가운데 실적·계약·자본정책 관련 신규 촉매가 나오지 않는 경우"
      ],
      "rationale": "APR has strong growth and cash-flow evidence, but the setup is extended above short-term averages, recent volume has faded, disclosures are absent in this batch, and fallback count is elevated. Keep below higher-quality or more liquid candidates until either breakout volume or pullback support confirms.",
      "data_health": {
        "coverage_score": 0.67,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 5,
        "quality_flags": [
          "token_usage_unavailable",
          "intraday_snapshot_missing_same_day"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.58,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.38,
        "thesis_multiplier": 1.144,
        "timing_now": 0.152,
        "timing_triggered": 0.38,
        "funding_source_score": 0.3198,
        "score_now": 0.0571,
        "score_triggered": 0.1678,
        "strict_cash_available_for_new_buys_krw": 298835
      },
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.3198,
      "capital_reallocation_rank": 7,
      "decision_source": "RULE+DEEP+CODEX",
      "timing_readiness": 0.38,
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_wait",
        "breakout_needs_volume_confirmation",
        "extended_above_short_term_average",
        "volume_confirmation_missing",
        "held_position_hold_not_add_now",
        "stale_or_degraded_data",
        "specific_price_triggers_defined",
        "strong_growth_thesis",
        "low_disclosure_support",
        "high_fallback_count",
        "entry_action_wait"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "042700.KS",
      "display_name": "한미반도체",
      "priority": 5,
      "confidence": 0.66,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.0255,
      "action_if_triggered": "ADD_IF_TRIGGERED",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.0255,
      "trigger_conditions": [
        "042700.KS의 일간 종가가 296500원을 상회하고 거래량이 458794주를 넘는지 확인한다.",
        "돌파 시 거래량이 단순 기준 충족을 넘어 전일 대비 의미 있게 증가하고 종가가 고가권에서 유지되는지 확인한다.",
        "286000~280500원 눌림에서 지지가 유지되고 거래량 균형이 개선되는지 확인한다.",
        "RSI가 60 위로 올라서고 MACD 히스토그램이 양수를 유지하는지 확인한다.",
        "272000원 또는 262566원 이탈 시 BULLISH에서 NEUTRAL 또는 BEARISH로 하향 조정할지 재평가한다.",
        "공매도 잔고, 주요주주 거래 계획, 기관 보유 변화, ETF 편입 수급 변화를 추적한다.",
        "다음 공시 또는 실적 발표에서 수주잔고, TC 본더 수요, 매출채권, 재고, 건설중인자산, 설비 활용도가 개선되는지 확인한다.",
        "042700.KS가 296500원 위에서 종가를 만들고 거래량이 458794주를 넘으며 전일 대비 의미 있게 회복하면 305000~317000원 재시험 가능성이 열린다.",
        "HBM 또는 TC 본더 신규 수주, 고객사 설비투자 확인, AI/HBM 장비 수요 지속 증거가 나오면 고마진 성장주 프리미엄이 방어된다.",
        "TC 본더 특허 분쟁에서 우호적 진행 또는 해결이 확인되면 기술 진입장벽과 고객 신뢰가 강화될 수 있다.",
        "다음 분기 실적에서 매출이 재가속되고 매출총이익률과 영업이익률이 높은 수준으로 유지되면 2025-12-31 매출 감소가 일시적이었다는 해석이 강화된다.",
        "긍정적 영업 뉴스가 공매도 잔고 1조7718억 원 및 시총 대비 6.72%의 반대 포지션을 압박하면 숏커버링 수급이 추가 상승 동력이 될 수 있다.",
        "AI 반도체 및 HBM 테마형 자금과 ETF 수급이 재유입되면 대표주 프리미엄이 유지될 수 있다.",
        "042700.KS가 272000원 부근 VWMA를 하향 이탈하고 빠르게 회복하지 못하는 경우.",
        "042700.KS가 50일선 262566원 부근 아래에서 지속 마감해 중기 회복 구조를 잃는 경우.",
        "다음 실적에서 2025-12-31 매출 감소가 일시적 인식 문제가 아니라 구조적 주문 사이클 둔화로 확인되는 경우.",
        "TC 본더 특허 분쟁이 비용 증가, 납품 지연, 고객사 대체 검토, 경쟁사 대체 가능성으로 이어지는 경우.",
        "HBM/AI 반도체 테마가 약화되어 ETF 및 테마형 자금 유출이 발생하는 경우.",
        "공매도 잔고 확대가 긍정 촉매 없이 지속되고 주가가 저항권에서 거래량 감소와 함께 밀리는 경우."
      ],
      "rationale": "Hanmi Semiconductor has a constructive HBM equipment thesis and high trigger quality, but it carries the highest conservatism penalties: semiconductor concentration, high valuation, high beta, short-interest risk, patent and revenue-cycle uncertainty, and stale execution data.",
      "data_health": {
        "coverage_score": 0.72,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4,
        "quality_flags": [
          "token_usage_unavailable",
          "intraday_snapshot_missing_same_day"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.72,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.38,
        "thesis_multiplier": 1.108,
        "timing_now": 0.152,
        "timing_triggered": 0.38,
        "funding_source_score": 0.318,
        "score_now": 0.054,
        "score_triggered": 0.1601,
        "strict_cash_available_for_new_buys_krw": 298835
      },
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.318,
      "capital_reallocation_rank": 9,
      "decision_source": "RULE+DEEP+CODEX",
      "timing_readiness": 0.38,
      "reason_codes": [
        "entry_action_wait",
        "constructive_medium_term_thesis",
        "breakout_trigger_defined",
        "volume_confirmation_missing",
        "stale_or_degraded_same_day_data",
        "high_volatility_high_valuation",
        "risk_levels_defined",
        "constructive_hbm_thesis",
        "high_trigger_quality",
        "high_valuation_risk",
        "high_beta_volatility",
        "short_interest_risk",
        "semiconductor_concentration_control",
        "stale_or_degraded_data"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "000660.KS",
      "display_name": "SK하이닉스",
      "priority": 6,
      "confidence": 0.76,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.1014,
      "action_if_triggered": "ADD_IF_TRIGGERED",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.1014,
      "trigger_conditions": [
        "1162000 위 종가와 거래량 확대: 신규 투자자는 소규모 STARTER, 기존 보유자는 제한적 ADD 검토",
        "1162000 돌파 후 1130000-1162000 구간 지지 확인: 돌파 신뢰도 상향",
        "1040000-1050000 눌림에서 10일 EMA 지지와 거래량 안정 확인: 단계적 진입 검토",
        "1100000 아래 종가와 거래량 약화 또는 외국인 매도 동반: 신규 진입 보류 및 기존 OVERWEIGHT 일부 축소 검토",
        "1030000-1040000 붕괴 또는 10일 EMA 지속 이탈: 전술 노출 축소",
        "RSI가 70을 넘고 가격이 볼린저 상단 위로 더 확장되는 경우: 추격 매수 금지 및 기존 포지션 관리 강화",
        "다음 실적 발표에서 HBM 가이던스, DRAM/NAND 가격, capex, 재고, 매출채권, 자유현금흐름을 강세 기대와 비교",
        "000660.KS 실적과 가이던스가 HBM 출하 성장과 AI 서버 수요 지속성을 확인하는 경우",
        "DRAM과 NAND 가격 강세가 유지되어 높은 마진의 지속 가능성을 뒷받침하는 경우",
        "1162000 위 종가 안착과 거래량 확대가 동반되어 신고가 이후 가격 수용이 확인되는 경우",
        "TSMC, Micron 등 글로벌 AI 반도체와 메모리 동종 기업의 긍정적 실적이 000660.KS 수요 전망을 강화하는 경우",
        "높은 HBM 및 선단 공정 capex에도 자유현금흐름과 순차입금 개선이 이어지는 경우",
        "HBM 수요, 가격, 고객 주문, 출하 가이던스가 높아진 기대에 미달하는 경우",
        "DRAM/NAND 공급 확대가 가격과 마진 전망을 압박하기 시작하는 경우",
        "capex, 재고, 매출채권 증가가 자유현금흐름 방어력을 훼손하는 경우",
        "ITC, 특허, 수출통제, 패키징 병목, 지정학 리스크가 출하 또는 투자심리를 흔드는 경우",
        "외국인 매도 전환이 000660.KS와 KOSPI 반도체 주도력에 부정적 피드백을 만드는 경우"
      ],
      "rationale": "SK하이닉스의 중기 thesis는 AI/HBM 수요, 메모리 가격 강세, 높은 수익성, FCF와 순차입금 개선으로 constructive하다. 그러나 주가는 단기간 약 40% 급반등 후 신고가와 볼린저 상단 부근에 있어 즉시 ADD 타이밍은 확인되지 않았다. 실행은 1,162,000원 위 종가 안착과 거래량 확대, 또는 1,040,000~1,050,000원 지지 확인 전까지 HOLD/WAIT 성격이다.",
      "data_health": {
        "coverage_score": 0.67,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 5,
        "quality_flags": [
          "token_usage_unavailable"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.64,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.34,
        "thesis_multiplier": 1.132,
        "timing_now": 0.136,
        "timing_triggered": 0.34,
        "funding_source_score": 0.3206,
        "score_now": 0.0527,
        "score_triggered": 0.1568,
        "strict_cash_available_for_new_buys_krw": 298835
      },
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.3206,
      "capital_reallocation_rank": 6,
      "decision_source": "RULE+DEEP",
      "timing_readiness": 0.34,
      "reason_codes": [
        "bullish_medium_term_thesis",
        "entry_wait_state",
        "breakout_not_confirmed",
        "near_upper_band_after_sharp_rally",
        "specific_price_volume_trigger",
        "held_position_hold_preferred",
        "stale_or_degraded_data",
        "risk_levels_defined"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "034020.KS",
      "display_name": "두산에너빌리티",
      "priority": 7,
      "confidence": 0.62,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.1258,
      "action_if_triggered": "ADD_IF_TRIGGERED",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.1258,
      "trigger_conditions": [
        "034020.KS가 110800 KRW 위에서 종가를 형성하고 최근 돌파일에 준하는 거래량 후속 매수세를 보임",
        "034020.KS가 105700-106500 KRW에서 거래량 감소와 함께 지지를 확인하고 RSI가 70 이상 과열로 급등하지 않음",
        "034020.KS가 105700 KRW를 하회해 신규 매수 금지와 기존 전술 비중 축소 검토가 필요해짐",
        "다음 실적에서 영업이익률 확대, 이자비용 부담 완화, 운전자본 효과를 제외한 양의 자유현금흐름, 순부채 추가 감소가 확인",
        "KRX와 KOSPI 위험선호가 개선되고 외국인·기관 순매도 압력이 완화",
        "110800 KRW 재돌파가 거래량 없이 발생하거나 외국인·기관 매도가 지속돼 돌파 추격을 보류해야 하는 상황 발생",
        "034020.KS가 105700-106500 KRW를 종가 기준으로 지키고 이후 110800 KRW 위로 거래량을 동반해 재안착",
        "원전 공급망, 전력 인프라, 해외 에너지 협력 관련 뉴스가 실제 수주 또는 실적 기대를 높이는 방향으로 이어짐",
        "2025년 4분기 영업현금흐름 1.397조 KRW, 자유현금흐름 1.206조 KRW, 순부채 감소가 일회성 운전자본 효과가 아니라 반복 가능한 개선으로 확인",
        "자사주 취득 정정 공시가 주주가치에 긍정적인 조건으로 명확해짐",
        "KOSPI 위험선호 회복과 함께 외국인·기관의 대형주 매도 압력이 완화",
        "034020.KS가 101800-102000 KRW를 종가 기준으로 하회해 돌파 실패와 10일 EMA 훼손을 동시에 시사",
        "105700 KRW 이탈 후 거래량이 증가하며 매도 압력이 확대",
        "외국인·기관 매도가 시장 안정 이후에도 지속돼 2026-04-17 약세가 단순 조정이 아니라 분산 매도로 확인",
        "다음 실적에서 영업이익률, 순이익률, 자유현금흐름, 순부채 개선이 기대를 충족하지 못함",
        "원전·전력 인프라·해외 협력 재료가 구체적 계약이나 이익 전망 개선으로 연결되지 못함",
        "자사주 취득 관련 후속 공시가 불리하거나 재무 부담을 키우는 방향으로 확인"
      ],
      "rationale": "Medium-term thesis is constructive: the stock reclaimed 110800 KRW with stronger volume and remains above key moving averages, with nuclear and power-infrastructure catalysts still relevant. Timing is not actionable now because the recommendation is explicitly WAIT/HOLD, the setup is developing, price is extended with high beta/ATR, and confirmation is required through either support at 105700-106500 KRW or a renewed close above 110800 KRW with follow-through volume.",
      "data_health": {
        "coverage_score": 0.72,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4,
        "quality_flags": [
          "token_usage_unavailable",
          "intraday_snapshot_missing_same_day"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.62,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.36,
        "thesis_multiplier": 1.096,
        "timing_now": 0.144,
        "timing_triggered": 0.36,
        "funding_source_score": 0.3256,
        "score_now": 0.0464,
        "score_triggered": 0.1409,
        "strict_cash_available_for_new_buys_krw": 298835
      },
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.3256,
      "capital_reallocation_rank": 4,
      "decision_source": "RULE+DEEP",
      "timing_readiness": 0.36,
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_wait_not_actionable_now",
        "breakout_needs_volume_follow_through",
        "support_retest_required",
        "high_valuation_and_volatility",
        "stale_or_degraded_timing_data",
        "held_position_core_hold"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "005380.KS",
      "display_name": "현대차",
      "priority": 8,
      "confidence": 0.65,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.0474,
      "action_if_triggered": "ADD_IF_TRIGGERED",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.0474,
      "trigger_conditions": [
        "519000원 위 종가와 명확한 거래량 확대 여부",
        "519000원 돌파 후 후속 거래에서 지지 전환 여부",
        "489000~497000원 구간에서 매도 압력 둔화와 반등 거래량 확인",
        "RSI 60 상회 유지 및 MACD 0선 상향 전환",
        "April 17 전후 5~6% 급등 이후 뉴스 기반 수급이 실제 기관성 거래량으로 이어지는지 여부",
        "하이브리드 판매, 친환경차 수출, 북미 인센티브와 인도 판매 믹스 추이",
        "Boston Dynamics, DEEPX, 로봇·피지컬 AI 사업의 구체적 제품화·매출화 뉴스",
        "OpenDART 임원·주요주주 보유상황보고서의 지분 변동 세부 내용",
        "영업이익률, 잉여현금흐름, 순부채 개선 여부",
        "005380.KS가 519000원 위에서 거래량 증가를 동반해 종가 안착하고 후속 거래에서도 해당 가격대를 지지로 유지",
        "미국 하이브리드 판매 53.2% 증가세 지속 및 고마진 하이브리드 라인업 확대",
        "친환경차 수출 259121대 기록 이후 북미·인도 판매 믹스 개선 지속",
        "Boston Dynamics, DEEPX, 로봇·피지컬 AI 관련 상용화 또는 매출화 진척",
        "영업이익률 회복, 운전자본 정상화, 잉여현금흐름 개선 확인",
        "KB Securities의 800000원 목표가처럼 우호적 리서치와 수급 개선이 실제 거래량으로 연결",
        "465000원 종가 이탈로 중기 반등 구조가 훼손되고 445500원 재시험 가능성이 확대",
        "514000~519000원 저항 돌파 실패 후 거래량 증가를 동반한 하락",
        "489000원 하회와 하락 거래량 증가로 489000~497000원 지지 구간이 무효화",
        "영업이익률 약 3.6% 수준에서 추가 둔화하거나 2026년 실적 개선이 지연",
        "분기 잉여현금흐름 약 -5.94조 KRW 및 2025년 연속 적자 흐름이 지속되고 순부채가 추가 증가",
        "BYD, Zeekr, Xpeng, Tesla 등 중국 EV·PHEV 가격 경쟁이 현대차 전기차·하이브리드 마진을 훼손",
        "로봇·AI·수소 관련 뉴스가 구체적 수익 기여 없이 단기 테마로 소진"
      ],
      "rationale": "Constructive medium-term overweight thesis for Hyundai Motor is supported by rebound above short-term averages, improving RSI/MACD, hybrid and eco-car momentum, and optionality from robotics/physical AI. Timing is not actionable now because the stated action is WAIT, resistance at 514000-519000 KRW has not yet become confirmed support on volume, and execution is flagged as stale or degraded. Action should remain hold/add-if-triggered until a close above 519000 KRW with clear volume expansion and follow-through support, or a confirmed pullback support setup at 489000-497000 KRW.",
      "data_health": {
        "coverage_score": 0.72,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4,
        "quality_flags": [
          "token_usage_unavailable"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.62,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.34,
        "thesis_multiplier": 1.096,
        "timing_now": 0.136,
        "timing_triggered": 0.34,
        "funding_source_score": 0.3248,
        "score_now": 0.0458,
        "score_triggered": 0.1395,
        "strict_cash_available_for_new_buys_krw": 298835
      },
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.3248,
      "capital_reallocation_rank": 5,
      "decision_source": "RULE+DEEP",
      "timing_readiness": 0.34,
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_action_wait",
        "breakout_not_confirmed",
        "volume_confirmation_required",
        "high_atr_volatility",
        "stale_or_degraded_execution_data",
        "held_position_hold_not_add_now",
        "clear_price_invalidators_defined"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "058470.KQ",
      "display_name": "리노공업",
      "priority": 9,
      "confidence": 0.66,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.0203,
      "action_if_triggered": "ADD_IF_TRIGGERED",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.0203,
      "trigger_conditions": [
        "주문 전 058470.KQ 현재가가 115000 및 117300 대비 어디에 있는지 확인",
        "117300 위 일봉 종가와 거래량 800000주 이상 동반 여부",
        "111500-112000 눌림 구간에서 지지와 반등이 나타나는지 확인",
        "111000 전술 지지선 이탈 여부",
        "106500 부근 50일 단순이동평균 유지 여부",
        "MACD 히스토그램이 양수 구간에서 확대되는지 확인",
        "RSI가 60 위로 올라선 뒤 유지되는지 확인",
        "외국인·기관의 058470.KQ 및 KOSDAQ 순매수 전환 여부",
        "원/달러가 1481.4원 부근에서 안정되는지 확인",
        "미국 반도체 지수와 주요 반도체주의 차익실현 이후 반응",
        "058470.KQ가 117300 위에서 일봉 종가로 안착하고 거래량이 800000-1000000주로 회복",
        "RSI가 60을 상향 돌파하고 가격이 115000 위를 유지",
        "MACD 히스토그램이 양수 구간에서 추가 확대",
        "외국인과 기관 수급이 순매도에서 순매수 또는 누적 매수로 전환",
        "미국 반도체주 차익실현 압력이 완화되고 업종 심리가 안정",
        "다음 실적 또는 가이던스에서 2025-06부터 2025-12까지의 매출 둔화 이후 재가속 확인",
        "건설중인자산과 설비투자가 수요 증가 또는 가동률 개선으로 연결된다는 증거",
        "058470.KQ 일봉 종가가 111000 아래로 하락해 단기 반등 실패 확인",
        "106500 부근 50일 단순이동평균 아래 종가로 중기 추세 훼손",
        "116800-117300 저항권에서 거래량 감소와 함께 반복적으로 거절",
        "RSI가 60을 회복하지 못하고 MACD 히스토그램이 재차 약화",
        "외국인·기관 동반 매도가 지속되고 KOSDAQ 위험회피가 확대",
        "매출 또는 영업이익 둔화가 이어지며 회복 가이던스가 부재",
        "건설중인자산 증가가 성장 투자가 아니라 감가상각 부담, 가동률 저하, 투자 회수 지연으로 해석될 증거",
        "회사 고유의 부정 공시, 주문 약화, 고객 수요 악화, 경쟁력 훼손 신호"
      ],
      "rationale": "Quality and medium-term trend are constructive: price is above key moving averages, MACD has improved, margins/ROE/net cash are strong, and the held position can be maintained. Timing is not ready for an add because entry_action is WAIT, same-day intraday data is missing, resistance at 116800-117300 has not been cleared with volume, and confirmation requires a close above 117300 with 800000-1000000 shares plus RSI/MACD/flow improvement or a controlled pullback hold at 111500-112000.",
      "data_health": {
        "coverage_score": 0.67,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 5,
        "quality_flags": [
          "token_usage_unavailable",
          "intraday_snapshot_missing_same_day"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.62,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.34,
        "thesis_multiplier": 1.108,
        "timing_now": 0.136,
        "timing_triggered": 0.34,
        "funding_source_score": 0.3326,
        "score_now": 0.0433,
        "score_triggered": 0.1333,
        "strict_cash_available_for_new_buys_krw": 298835
      },
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.3326,
      "capital_reallocation_rank": 2,
      "decision_source": "RULE+DEEP",
      "timing_readiness": 0.34,
      "reason_codes": [
        "bullish_medium_term_thesis",
        "entry_action_wait",
        "breakout_not_confirmed",
        "intraday_data_missing",
        "volume_confirmation_required",
        "held_position_maintain_only",
        "valuation_risk_high",
        "institutional_flow_unconfirmed",
        "support_invalidation_defined"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "095340.KS",
      "display_name": "ISC",
      "priority": 10,
      "confidence": 0.62,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.0393,
      "action_if_triggered": "ADD_IF_TRIGGERED",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.0393,
      "trigger_conditions": [
        "237,000원 종가 회복: 거래량이 분배성 매도가 아니면 축소 starter를 검토한다.",
        "248,000원 종가 회복: VWMA 공급 흡수 가능성이 높아져 setup_quality 상향을 검토한다.",
        "257,500원 거래량 동반 회복: 2026-04-10 급락 복구 신호로 ADD를 검토한다.",
        "216,500-211,000원 지지 확인과 매도 거래량 둔화: 205,000원 종가 손절을 전제로 매우 작은 starter를 검토한다.",
        "205,000원 종가 이탈: 방어적 stance로 전환하고 기존 노출을 축소 또는 청산한다.",
        "095340.KS가 237,000원 위로 종가 회복하고 거래량이 분배성 매도가 아니라 흡수 형태로 안정된다.",
        "095340.KS가 248,000원 VWMA 공급대를 회복해 2026-04-10 이후 매물 부담이 줄었음을 확인한다.",
        "095340.KS가 257,500원 위로 거래량을 동반해 회복하며 급락일 충격을 상당 부분 복구한다.",
        "IR 또는 회사 커뮤니케이션에서 AI 반도체, 고성능 테스트 소켓, 고객 다변화, 고마진 제품 믹스 확대가 확인된다.",
        "다음 분기 실적에서 강한 매출 성장, 높은 영업이익률, 건강한 영업현금흐름이 유지된다.",
        "공매도 거래대금 214억 원과 기관 매도 압력이 완화되고 반도체 부품 업종 심리가 회복된다.",
        "095340.KS가 205,000원 아래로 종가 이탈해 50일 SMA 방어에 실패한다.",
        "095340.KS가 237,000원 아래에 머무는 동안 업종 및 동종 종목이 회복해 상대 약세가 고착된다.",
        "매출채권과 재고 증가가 현금전환 악화, 회수 지연, 재고평가손실로 연결된다.",
        "다음 실적에서 매출 성장 둔화, 마진 피크아웃, 고객사 재고 조정, 수주 기대 미달이 확인된다.",
        "대표이사 변경, 교환청구권 행사, 자기주식처분 정정 등 이벤트가 희석, 오버행, 지배구조 불확실성으로 재평가된다."
      ],
      "rationale": "ISC has a constructive medium-term thesis supported by strong profitability, net cash, and AI/high-performance semiconductor socket exposure, but the action timing is not confirmed. Current guidance is HOLD/WAIT because price remains below the 237,000 KRW short-term recovery level and 248,000 KRW VWMA supply zone after a high-volume selloff. Add exposure only after a confirmed close above 237,000 with non-distribution volume, stronger confirmation above 248,000/257,500, or a verified support test near 216,500-211,000 with controlled risk.",
      "data_health": {
        "coverage_score": 0.72,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 4,
        "quality_flags": [
          "token_usage_unavailable"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.68,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.34,
        "thesis_multiplier": 1.096,
        "timing_now": 0.136,
        "timing_triggered": 0.34,
        "funding_source_score": 0.3284,
        "score_now": 0.0432,
        "score_triggered": 0.1331,
        "strict_cash_available_for_new_buys_krw": 298835
      },
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.3284,
      "capital_reallocation_rank": 3,
      "decision_source": "RULE+DEEP",
      "timing_readiness": 0.34,
      "reason_codes": [
        "constructive_medium_term_thesis",
        "entry_wait_confirmations_required",
        "price_below_key_recovery_levels",
        "high_volume_selloff_not_repaired",
        "specific_breakout_levels_defined",
        "support_test_alternative_trigger",
        "clear_risk_invalidation_level",
        "stale_or_degraded_data_flag"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    },
    {
      "canonical_ticker": "010950.KS",
      "display_name": "S-Oil",
      "priority": 11,
      "confidence": 0.64,
      "action_now": "HOLD",
      "delta_krw_now": 0,
      "target_weight_now": 0.0207,
      "action_if_triggered": "ADD_IF_TRIGGERED",
      "delta_krw_if_triggered": 0,
      "target_weight_if_triggered": 0.0207,
      "trigger_conditions": [
        "010950.KS가 116,500~117,000원 부근에서 지지를 방어하고 거래량이 안정되는지 확인",
        "010950.KS가 120,700~122,000원 위로 거래량을 동반해 종가 안착하는지 확인",
        "MACD 히스토그램이 609.15 부근 둔화 이후 다시 확장되는지 확인",
        "010950.KS가 114,500원 또는 112,500원 아래로 무거운 거래량과 함께 이탈하는지 확인",
        "1Q 실적의 영업이익, 재고평가 이익, 운전자본 제외 현금흐름, CAPEX, 순부채 변화를 확인",
        "정제마진, 디젤 스프레드, 원유 조달비, KRW/USD 흐름을 갱신",
        "긍정 뉴스가 한화투자증권 보고서 반복 인용을 넘어 다른 독립 증권사 추정치 상향으로 넓어지는지 확인",
        "010950.KS 1Q 실적이 정제마진, 디젤 강세, 재고평가 이익으로 시장 기대를 상회하는 경우",
        "010950.KS가 120,700~122,000원 위에서 거래량을 동반해 종가 안착하고 MACD 히스토그램이 다시 확장되는 경우",
        "124,500원 재시험에 성공해 150,000원 목표가 상향 논리의 신뢰도가 높아지는 경우",
        "디젤 수요, 재건 수요, 공급 정상화 지연으로 높은 정제마진이 유지된다는 추가 증거",
        "한화투자증권 중심의 긍정 서사가 다른 증권사 추정치 상향으로 확산되는 경우",
        "순부채 감소가 이어지고 영업현금흐름 개선이 단순 운전자본 타이밍이 아님이 확인되는 경우",
        "010950.KS가 114,500원 아래로 종가 이탈해 VWMA 기반 수급 구조가 약화되는 경우",
        "010950.KS가 112,000~112,500원 아래로 이탈해 50일 추세가 훼손되는 경우",
        "116,500~117,000원 지지 실패와 거래량 악화가 동시에 나타나는 경우",
        "MACD 히스토그램 둔화가 이어지고 가격이 122,000원, 119,100원, 117,500원으로 밀린 흐름을 회복하지 못하는 경우",
        "정제마진이나 디젤 스프레드가 예상보다 빠르게 둔화되는 경우",
        "원유 조달비 상승이 제품 가격으로 충분히 전가되지 못하는 경우",
        "1Q 실적 또는 가이던스가 목표가 150,000원 상향 서사를 뒷받침하지 못하는 경우",
        "운전자본 효과를 제외한 자유현금흐름이 약화되고 대규모 CAPEX와 순부채 부담이 다시 커지는 경우"
      ],
      "rationale": "S-Oil has a constructive medium-term thesis supported by price still above key moving averages, neutral RSI, recovering profitability, stronger free cash flow, and lower net debt. However, execution timing is not confirmed: the plan explicitly says WAIT, momentum has faded, price has pulled back from resistance, ATR is elevated, and adds require either support confirmation near KRW 116,500-117,000 with stable volume or a volume-backed close above KRW 120,700-122,000 with MACD re-expansion.",
      "data_health": {
        "coverage_score": 0.67,
        "vendor_calls": {
          "yfinance": 15,
          "naver": 3,
          "ecos": 1,
          "opendart": 1,
          "alpha_vantage": 2
        },
        "fallback_count": 5,
        "quality_flags": [
          "token_usage_unavailable"
        ],
        "legacy_rating": "OVERWEIGHT",
        "strategy_state": "add_if_triggered",
        "execution_feasibility_now": "blocked_stale_or_degraded_data",
        "stale_but_triggerable": true,
        "trigger_quality": 0.56,
        "decision_source": "RULE+DEEP",
        "timing_readiness": 0.34,
        "thesis_multiplier": 1.084,
        "timing_now": 0.136,
        "timing_triggered": 0.34,
        "funding_source_score": 0.335,
        "score_now": 0.0406,
        "score_triggered": 0.1264,
        "strict_cash_available_for_new_buys_krw": 298835
      },
      "strategy_state": "add_if_triggered",
      "execution_feasibility_now": "blocked_stale_or_degraded_data",
      "stale_but_triggerable": true,
      "funding_source_score": 0.335,
      "capital_reallocation_rank": 1,
      "decision_source": "RULE+DEEP",
      "timing_readiness": 0.34,
      "reason_codes": [
        "bullish_but_wait",
        "developing_setup",
        "momentum_confirmation_missing",
        "volume_breakout_required",
        "support_hold_required",
        "elevated_volatility",
        "stale_or_degraded_data",
        "earnings_event_pending"
      ],
      "review_required": true,
      "trigger_type": "breakout_confirmation",
      "gate_reasons": [
        "high_fallback_count"
      ],
      "sector": null
    }
  ]
}