[
    {
        "user_id": 1,
        "ticker": "0700.HK",
        "currency": "HKD",
        "price_eur": 47.6876,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85.2,
        "conviction_pct": 5.4,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 45.3032,
        "entry_max_eur": 47.2107,
        "trigger_price_eur": 49.6956,
        "stop_loss_eur": 40.1291,
        "target_1_eur": 49.2036,
        "target_2_eur": null,
        "upside_pct": 3.18,
        "risk_reward": 0.28,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "upside_unknown",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 40.13 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "A-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.853312+00:00",
            "vela": "2026-05-27T06:43:27.853312+00:00",
            "cvt": "2026-05-20T12:09:27.853312+00:00",
            "victoria": "2026-05-20T12:19:51.853312+00:00",
            "fmp": "2026-05-27T21:29:58.853312+00:00",
            "unf": "2026-06-18T14:05:44.853312+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "FMP"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "1693060cfc92542f1bb0e3b81782173994bcbd008b280772dce58cdde9a0b9db",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T16:09:27",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Tencent Holdings Limited",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "UNF: tier negativo"
        ],
        "id": "0700.HK"
    },
    {
        "user_id": 1,
        "ticker": "BAMXF",
        "currency": "USD",
        "price_eur": 75.7542,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6.6,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 71.9665,
        "entry_max_eur": 74.9967,
        "trigger_price_eur": 82.4971,
        "stop_loss_eur": 63.7472,
        "target_1_eur": 81.6803,
        "target_2_eur": null,
        "upside_pct": 7.82,
        "risk_reward": 0.59,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: inputs sin cambios, Velas: venta.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_stale",
            "vela_sell",
            "upside_unknown",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 63.75 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "A-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.590687+00:00",
            "vela": "2026-05-06T19:56:11.590687+00:00",
            "cvt": null,
            "victoria": "2026-05-19T17:45:41.590687+00:00",
            "fmp": "2026-05-27T21:29:59.590687+00:00",
            "unf": "2026-06-18T14:30:31.590687+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "score_below_55",
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "FMP"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "e150ac41ec6504309bd00bc2459c9c1e5930035531cb17a36610ff8ce0417bd8",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:19:02",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Bayerische Motoren Werke AG",
        "veto_reasons_human": [
            "CVT: inputs sin cambios",
            "Velas: venta",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "BAMXF"
    },
    {
        "user_id": 1,
        "ticker": "8053.T",
        "currency": "JPY",
        "price_eur": 38.7757,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 80.5,
        "conviction_pct": 41.8,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 37.8104,
        "entry_max_eur": 39.3228,
        "trigger_price_eur": 41.9359,
        "stop_loss_eur": 37.0542,
        "target_1_eur": 41.5207,
        "target_2_eur": null,
        "upside_pct": 7.08,
        "risk_reward": 0.97,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (42/100), Recorrido limitado (7.1%), R/R 0.97 (<2).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 37.05 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.885130+00:00",
            "vela": "2026-05-27T06:43:28.885130+00:00",
            "cvt": "2026-06-18T14:05:54.885130+00:00",
            "victoria": "2026-05-27T18:49:28.885130+00:00",
            "fmp": "2026-05-27T21:29:58.885130+00:00",
            "unf": "2026-06-18T14:30:32.885130+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "7f2e17280f25c700fe4dd145d24619a138803ba6ae6e41a65fe6f580936e9604",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:06:44",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Sumitomo Corporation",
        "veto_reasons_human": [
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "8053.T"
    },
    {
        "user_id": 1,
        "ticker": "013A.F",
        "currency": "EUR",
        "price_eur": 27.45,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 2.8,
        "quality_score": 20,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 27.43,
        "entry_max_eur": 28.5272,
        "trigger_price_eur": 28.583,
        "stop_loss_eur": 26.8814,
        "target_1_eur": 28.3,
        "target_2_eur": null,
        "upside_pct": 3.1,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "score_below_55"
        ],
        "invalidators_json": [
            "Perder 26.88 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-16T09:26:47.198291+00:00",
            "vela": "2026-05-16T12:46:19.198291+00:00",
            "cvt": "2026-05-16T12:51:57.198291+00:00",
            "victoria": "2026-05-16T13:41:38.198291+00:00",
            "fmp": "2026-05-16T09:26:47.198291+00:00",
            "unf": "2026-06-18T14:05:43.198291+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "score_below_55"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "9b58af64c40dc9f4833fc798f85082ae2d191db28223a63203f4a89d7156f4a9",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T06:28:50",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "JD.com, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "Score < 55"
        ],
        "id": "013A.F"
    },
    {
        "user_id": 1,
        "ticker": "4519.T",
        "currency": "JPY",
        "price_eur": 42.4861,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 63.5,
        "conviction_pct": 22.5,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 40.9113,
        "entry_max_eur": 42.5478,
        "trigger_price_eur": 43.0199,
        "stop_loss_eur": 40.0931,
        "target_1_eur": 42.594,
        "target_2_eur": null,
        "upside_pct": 0.25,
        "risk_reward": 0.02,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (22/100), Recorrido limitado (0.3%).",
        "why_now_json": [
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 40.09 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.021728+00:00",
            "vela": "2026-05-28T03:25:03.021728+00:00",
            "cvt": "2026-05-27T10:03:58.021728+00:00",
            "victoria": "2026-05-27T18:38:40.021728+00:00",
            "fmp": "2026-05-27T21:29:58.021728+00:00",
            "unf": "2026-06-18T14:05:44.021728+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "ac1f0d6426c595b35dff0386cbaab9976e489df17633cd1fbc8132d5854179b5",
        "previous_action": "REJECT",
        "changed_at": "2026-05-27T20:04:25",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Chugai Pharmaceutical Co., Ltd.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "4519.T"
    },
    {
        "user_id": 1,
        "ticker": "VOW3.DE",
        "currency": "EUR",
        "price_eur": 87.94,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.4,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 83.543,
        "entry_max_eur": 87.0606,
        "trigger_price_eur": 91.8494,
        "stop_loss_eur": 74.0015,
        "target_1_eur": 90.94,
        "target_2_eur": null,
        "upside_pct": 3.41,
        "risk_reward": 0.3,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 74.00 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-16T09:31:54.357513+00:00",
            "vela": "2026-05-27T06:43:34.357513+00:00",
            "cvt": "2026-05-15T08:25:17.357513+00:00",
            "victoria": "2026-05-20T11:50:29.357513+00:00",
            "fmp": "2026-05-16T09:31:54.357513+00:00",
            "unf": "2026-06-18T14:05:43.357513+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "FMP"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "08b708f08bd116a6ef68bc95935f06d49596ef05ad0ff33f4901aebf0418aa91",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T06:28:51",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Volkswagen AG",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "VOW3.DE"
    },
    {
        "user_id": 1,
        "ticker": "4063.T",
        "currency": "JPY",
        "price_eur": 39.9406,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 80.5,
        "conviction_pct": 43.1,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 36.9151,
        "entry_max_eur": 38.3917,
        "trigger_price_eur": 42.0014,
        "stop_loss_eur": 36.1768,
        "target_1_eur": 41.5855,
        "target_2_eur": null,
        "upside_pct": 4.12,
        "risk_reward": 1.44,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (43/100), Recorrido limitado (4.1%), R/R 1.44 (<2).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 36.18 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.367986+00:00",
            "vela": "2026-05-25T13:36:35.367986+00:00",
            "cvt": "2026-06-18T14:30:41.367986+00:00",
            "victoria": "2026-05-27T18:38:01.367986+00:00",
            "fmp": "2026-05-27T21:29:58.367986+00:00",
            "unf": "2026-06-18T14:30:41.367986+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:32:33",
        "snapshot_hash": "906698657784d1d3b9de901f5c39c50b507d5258c2b809c08d4121f1b37f355b",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:32:33",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:32:33",
        "expires_at": "2026-06-19T14:32:33",
        "company_name": "Shin-Etsu Chemical Co., Ltd.",
        "veto_reasons_human": [
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "4063.T"
    },
    {
        "user_id": 1,
        "ticker": "8015.T",
        "currency": "JPY",
        "price_eur": 36.8935,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 80.5,
        "conviction_pct": 43.5,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 36.4728,
        "entry_max_eur": 37.9317,
        "trigger_price_eur": 40.2909,
        "stop_loss_eur": 35.7433,
        "target_1_eur": 39.892,
        "target_2_eur": null,
        "upside_pct": 8.13,
        "risk_reward": 0.9,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (43/100), Recorrido limitado (8.1%), R/R 0.90 (<2).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 35.74 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.371134+00:00",
            "vela": "2026-05-25T21:13:52.371134+00:00",
            "cvt": "2026-06-18T14:30:41.371134+00:00",
            "victoria": "2026-05-27T18:49:10.371134+00:00",
            "fmp": "2026-05-27T21:29:58.371134+00:00",
            "unf": "2026-06-18T14:30:41.371134+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:32:33",
        "snapshot_hash": "e861b1845baf90925c46cec735dfbcb89472010f8bc6ffe778a991c8c7c4b280",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:32:33",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:32:33",
        "expires_at": "2026-06-19T14:32:33",
        "company_name": "Toyota Tsusho Corporation",
        "veto_reasons_human": [
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "8015.T"
    },
    {
        "user_id": 1,
        "ticker": "QTTB",
        "currency": "USD",
        "price_eur": 11.0483,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 70.5,
        "conviction_pct": 46.7,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 5.0728,
        "entry_max_eur": 5.2757,
        "trigger_price_eur": null,
        "stop_loss_eur": 4.9713,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (47/100).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 4.97 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.384644+00:00",
            "vela": "2026-05-27T02:39:41.384644+00:00",
            "cvt": "2026-06-18T14:30:36.384644+00:00",
            "victoria": "2026-05-29T00:42:22.384644+00:00",
            "fmp": "2026-05-27T21:29:59.384644+00:00",
            "unf": "2026-06-18T14:30:36.384644+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:32:33",
        "snapshot_hash": "5cdb0fafcbe8a36c2feda50849d6868562e3261d878aced4aaa5eb6352e5d314",
        "previous_action": "BLOCKED",
        "changed_at": "2026-06-18T14:32:33",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:32:33",
        "expires_at": "2026-06-19T14:32:33",
        "company_name": "Q32 Bio Inc.",
        "veto_reasons_human": [
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "QTTB"
    },
    {
        "user_id": 1,
        "ticker": "8001.T",
        "currency": "JPY",
        "price_eur": 10.395,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 63.5,
        "conviction_pct": 22,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 10.3276,
        "entry_max_eur": 10.7407,
        "trigger_price_eur": 11.3787,
        "stop_loss_eur": 10.121,
        "target_1_eur": 11.266,
        "target_2_eur": null,
        "upside_pct": 8.38,
        "risk_reward": 0.85,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (22/100), Recorrido limitado (8.4%).",
        "why_now_json": [
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 10.12 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.910977+00:00",
            "vela": "2026-05-27T06:43:28.910977+00:00",
            "cvt": "2026-05-27T08:17:06.910977+00:00",
            "victoria": "2026-05-27T18:46:41.910977+00:00",
            "fmp": "2026-05-27T21:29:58.910977+00:00",
            "unf": "2026-06-18T14:05:43.910977+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "559381a7429504e3262f381edbe37f26d4ceab047a1ea844fbb4e14c7b13f97b",
        "previous_action": "REJECT",
        "changed_at": "2026-05-27T14:30:46",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "ITOCHU Corporation",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "8001.T"
    },
    {
        "user_id": 1,
        "ticker": "8002.T",
        "currency": "JPY",
        "price_eur": 28.1515,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 68,
        "conviction_pct": 35.8,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 26.7439,
        "entry_max_eur": 27.87,
        "trigger_price_eur": 31.7829,
        "stop_loss_eur": 23.6895,
        "target_1_eur": 31.4682,
        "target_2_eur": null,
        "upside_pct": 11.78,
        "risk_reward": 0.86,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (36/100), R/R 0.86 (<2).",
        "why_now_json": [
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 23.69 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.357361+00:00",
            "vela": "2026-05-27T11:44:10.357361+00:00",
            "cvt": "2026-06-18T14:30:36.357361+00:00",
            "victoria": "2026-05-29T01:07:42.357361+00:00",
            "fmp": "2026-05-27T21:29:58.357361+00:00",
            "unf": "2026-06-18T14:30:36.357361+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:32:33",
        "snapshot_hash": "6698b2d60a38ad84cadfa4eb35c4e4a8fc28a9364159d23491f0edab6428ace6",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:32:33",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:32:33",
        "expires_at": "2026-06-19T14:32:33",
        "company_name": "Marubeni Corporation",
        "veto_reasons_human": [
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "8002.T"
    },
    {
        "user_id": 1,
        "ticker": "6098.T",
        "currency": "JPY",
        "price_eur": 53.4285,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.3,
        "quality_score": 35,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 50.6633,
        "entry_max_eur": 52.6898,
        "trigger_price_eur": null,
        "stop_loss_eur": 49.65,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 49.65 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "COMPRA",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.839628+00:00",
            "vela": "2026-05-25T12:52:32.839628+00:00",
            "cvt": "2026-06-18T14:12:49.839628+00:00",
            "victoria": "2026-05-30T22:04:29.839628+00:00",
            "fmp": "2026-05-27T21:29:58.839628+00:00",
            "unf": "2026-06-18T14:12:49.839628+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "VIC",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:14:10",
        "snapshot_hash": "79bee1644876222d3f7a5f1a34b6e21953003f21a12f900fb8d64c485e3641d2",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:14:09",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:14:10",
        "expires_at": "2026-06-19T14:14:09",
        "company_name": "Recruit Holdings Co., Ltd.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "6098.T"
    },
    {
        "user_id": 1,
        "ticker": "LFVN",
        "currency": "USD",
        "price_eur": 6.9213,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 53.5,
        "conviction_pct": 24.1,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 5.9325,
        "entry_max_eur": 6.1698,
        "trigger_price_eur": null,
        "stop_loss_eur": 5.8138,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (24/100).",
        "why_now_json": [
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 5.81 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.040200+00:00",
            "vela": "2026-05-27T15:08:07.040200+00:00",
            "cvt": "2026-05-27T08:24:26.040200+00:00",
            "victoria": "2026-05-27T19:37:23.040200+00:00",
            "fmp": "2026-05-27T21:29:59.040200+00:00",
            "unf": "2026-06-18T14:30:31.040200+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "63d2db42e2a9109c1873ef88f63997fb54a99c2c8b4031603801c15df5bb59dc",
        "previous_action": "REJECT",
        "changed_at": "2026-05-27T20:04:25",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "LifeVantage Corporation",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "LFVN"
    },
    {
        "user_id": 1,
        "ticker": "ANG.JO",
        "currency": "ZAR",
        "price_eur": 7543.55,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 76.3,
        "conviction_pct": 29.4,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 7457.604,
        "entry_max_eur": 7755.9082,
        "trigger_price_eur": 7722.4196,
        "stop_loss_eur": 7308.4519,
        "target_1_eur": 7645.96,
        "target_2_eur": null,
        "upside_pct": 1.36,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (29/100), Recorrido limitado (1.4%).",
        "why_now_json": [
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 7308.45 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "COMPRA",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.010228+00:00",
            "vela": "2026-05-25T17:39:25.010228+00:00",
            "cvt": "2026-06-18T14:11:28.010228+00:00",
            "victoria": "2026-05-29T01:10:36.010228+00:00",
            "fmp": "2026-05-27T21:29:58.010228+00:00",
            "unf": "2026-06-18T14:11:28.010228+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "VIC",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "db6341fc7d7c86e5d192f9f3a3c3132e4c2174af48332287780afc6de74e7390",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:11:46",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:33",
        "company_name": "AngloGold Ashanti Plc",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "ANG.JO"
    },
    {
        "user_id": 1,
        "ticker": "GSK.L",
        "currency": "GBp",
        "price_eur": 22.3999,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 80.5,
        "conviction_pct": 46.1,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 21.2854,
        "entry_max_eur": 22.1368,
        "trigger_price_eur": 25.5459,
        "stop_loss_eur": 20.8597,
        "target_1_eur": 25.293,
        "target_2_eur": null,
        "upside_pct": 12.92,
        "risk_reward": 2.47,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (46/100).",
        "why_now_json": [
            "R/R 2.5",
            "Velas COMPRA_MANTENER",
            "UNF MEJOR_RECOMENDACION"
        ],
        "veto_reasons_json": [
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 20.86 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "MEJOR_RECOMENDACION"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.129767+00:00",
            "vela": "2026-05-27T05:41:53.129767+00:00",
            "cvt": "2026-06-18T14:05:53.129767+00:00",
            "victoria": "2026-05-27T19:29:59.129767+00:00",
            "fmp": "2026-05-27T21:29:59.129767+00:00",
            "unf": "2026-06-18T14:05:53.129767+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "f817840d0db654de060aaea39541595267af38abd0248f2311c44459a2ffded7",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:06:44",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "GSK plc",
        "veto_reasons_human": [
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "GSK.L"
    },
    {
        "user_id": 1,
        "ticker": "5802.T",
        "currency": "JPY",
        "price_eur": 64.7969,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 76.3,
        "conviction_pct": 37,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 56.7613,
        "entry_max_eur": 59.0318,
        "trigger_price_eur": 66.8067,
        "stop_loss_eur": 55.6261,
        "target_1_eur": 66.1452,
        "target_2_eur": null,
        "upside_pct": 2.08,
        "risk_reward": 2.09,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (37/100), Recorrido limitado (2.1%).",
        "why_now_json": [
            "R/R 2.1",
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 55.63 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.038314+00:00",
            "vela": "2026-05-27T06:43:28.038314+00:00",
            "cvt": "2026-06-18T14:33:40.038314+00:00",
            "victoria": "2026-05-27T18:39:46.038314+00:00",
            "fmp": "2026-05-27T21:29:58.038314+00:00",
            "unf": "2026-06-18T14:33:40.038314+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:34:34",
        "snapshot_hash": "2bfed03c0844616b1b678baf5d385705438e4af16fcda913e63bc02a87d2fa0a",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:34:34",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:34:34",
        "expires_at": "2026-06-19T14:34:34",
        "company_name": "Sumitomo Electric Industries, Ltd.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "5802.T"
    },
    {
        "user_id": 1,
        "ticker": "6503.T",
        "currency": "JPY",
        "price_eur": 35.0545,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 76.3,
        "conviction_pct": 34.3,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 30.9936,
        "entry_max_eur": 32.2333,
        "trigger_price_eur": 35.7319,
        "stop_loss_eur": 30.3737,
        "target_1_eur": 35.3781,
        "target_2_eur": null,
        "upside_pct": 0.92,
        "risk_reward": 1.69,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (34/100), Recorrido limitado (0.9%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 30.37 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.000706+00:00",
            "vela": "2026-05-27T05:41:52.000706+00:00",
            "cvt": "2026-06-18T14:09:54.000706+00:00",
            "victoria": "2026-05-27T18:43:33.000706+00:00",
            "fmp": "2026-05-27T21:29:58.000706+00:00",
            "unf": "2026-06-18T14:30:32.000706+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "81e44c9c59acd9c1274047c457a895d077980e25789e75d0b8acb993eecf46ed",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:10:46",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:33",
        "company_name": "Mitsubishi Electric Corporation",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "6503.T"
    },
    {
        "user_id": 1,
        "ticker": "8766.T",
        "currency": "JPY",
        "price_eur": 39.7302,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 80.5,
        "conviction_pct": 42.5,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 39.6709,
        "entry_max_eur": 41.2577,
        "trigger_price_eur": 42.7965,
        "stop_loss_eur": 38.8775,
        "target_1_eur": 42.3728,
        "target_2_eur": null,
        "upside_pct": 6.65,
        "risk_reward": 0.47,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (42/100), Recorrido limitado (6.7%), R/R 0.47 (<2).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 38.88 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.374379+00:00",
            "vela": "2026-05-27T06:43:28.374379+00:00",
            "cvt": "2026-06-18T14:30:41.374379+00:00",
            "victoria": "2026-05-27T18:50:00.374379+00:00",
            "fmp": "2026-05-27T21:29:58.374379+00:00",
            "unf": "2026-06-18T14:30:41.374379+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:32:33",
        "snapshot_hash": "ad4cae2f46e8a23be515571aa67d48c8e28f8cd4530cbc5ae21862a7672197ab",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:32:33",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:32:33",
        "expires_at": "2026-06-19T14:32:33",
        "company_name": "Tokio Marine Holdings, Inc.",
        "veto_reasons_human": [
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "8766.T"
    },
    {
        "user_id": 1,
        "ticker": "BATS.L",
        "currency": "GBp",
        "price_eur": 55.125,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 76.3,
        "conviction_pct": 35,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 49.7199,
        "entry_max_eur": 51.7087,
        "trigger_price_eur": 57.8809,
        "stop_loss_eur": 48.7255,
        "target_1_eur": 57.3078,
        "target_2_eur": null,
        "upside_pct": 3.96,
        "risk_reward": 1.88,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (35/100), Recorrido limitado (4.0%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 48.73 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.013275+00:00",
            "vela": "2026-05-27T04:40:25.013275+00:00",
            "cvt": "2026-06-18T14:11:27.013275+00:00",
            "victoria": "2026-05-27T19:12:40.013275+00:00",
            "fmp": "2026-05-27T21:29:59.013275+00:00",
            "unf": "2026-06-18T14:11:27.013275+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "bf49f85f825f39386866a057a64138e1d57abba46e0ef574f68651b39fca439c",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:11:46",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:33",
        "company_name": "British American Tobacco p.l.c.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "BATS.L"
    },
    {
        "user_id": 1,
        "ticker": "6367.T",
        "currency": "JPY",
        "price_eur": 126.2232,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 66.3,
        "conviction_pct": 34.9,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 124.7671,
        "entry_max_eur": 129.7578,
        "trigger_price_eur": null,
        "stop_loss_eur": 122.2718,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (35/100).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 122.27 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.989907+00:00",
            "vela": "2026-05-27T05:41:52.989907+00:00",
            "cvt": "2026-06-18T14:08:11.989907+00:00",
            "victoria": "2026-05-27T18:42:30.989907+00:00",
            "fmp": "2026-05-27T21:29:58.989907+00:00",
            "unf": "2026-06-18T14:30:32.989907+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "ff49c38118d0e869231ae9b6d6178d3dcd9f15918cb9c56d848f585a93d62a69",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:08:45",
        "created_at": "2026-05-27T08:28:51",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Daikin Industries,Ltd.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "6367.T"
    },
    {
        "user_id": 1,
        "ticker": "REPYY",
        "currency": "USD",
        "price_eur": 22.7361,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 63.5,
        "conviction_pct": 22,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 20.3102,
        "entry_max_eur": 21.1226,
        "trigger_price_eur": 23.9279,
        "stop_loss_eur": 19.904,
        "target_1_eur": 23.691,
        "target_2_eur": null,
        "upside_pct": 4.2,
        "risk_reward": 2.11,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (22/100), Recorrido limitado (4.2%).",
        "why_now_json": [
            "R/R 2.1",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 19.90 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-16T09:31:54.495485+00:00",
            "vela": "2026-05-26T14:25:14.495485+00:00",
            "cvt": "2026-05-27T08:14:02.495485+00:00",
            "victoria": "2026-05-27T19:56:23.495485+00:00",
            "fmp": "2026-05-16T09:31:54.495485+00:00",
            "unf": "2026-06-18T14:30:31.495485+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "d97e3ffff9d624be3f29f5c20f0decf54d894dafbbfc65479a2239b5d979a706",
        "previous_action": "REJECT",
        "changed_at": "2026-05-27T14:15:34",
        "created_at": "2026-05-26T14:51:25",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Repsol, S.A.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "REPYY"
    },
    {
        "user_id": 1,
        "ticker": "AHLA.DE",
        "currency": "EUR",
        "price_eur": 111.4,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.8,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 110.4,
        "entry_max_eur": 114.816,
        "trigger_price_eur": 113.12,
        "stop_loss_eur": 108.192,
        "target_1_eur": 112,
        "target_2_eur": null,
        "upside_pct": 0.54,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "score_below_55"
        ],
        "invalidators_json": [
            "Perder 108.19 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T17:24:42.288629+00:00",
            "vela": "2026-05-28T02:24:45.288629+00:00",
            "cvt": "2026-05-27T19:43:03.288629+00:00",
            "victoria": "2026-05-27T19:44:49.288629+00:00",
            "fmp": "2026-05-26T17:24:42.288629+00:00",
            "unf": "2026-06-18T14:05:43.288629+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "score_below_55"
        ],
        "cvt_buy_signals_json": [
            "FMP"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "66eb941879584bf8a64c568be3de952646e2db0fb55a70fe28fa72e01dbdb760",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:43:11",
        "created_at": "2026-05-26T14:51:24",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Alibaba Group Holding Limited",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "Score < 55"
        ],
        "id": "AHLA.DE"
    },
    {
        "user_id": 1,
        "ticker": "ADB.DE",
        "currency": "EUR",
        "price_eur": 208.55,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 63.5,
        "conviction_pct": 23.4,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 207.3,
        "entry_max_eur": 215.592,
        "trigger_price_eur": 219.17,
        "stop_loss_eur": 203.154,
        "target_1_eur": 217,
        "target_2_eur": null,
        "upside_pct": 4.05,
        "risk_reward": 0.11,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (23/100), Recorrido limitado (4.1%).",
        "why_now_json": [
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 203.15 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T17:31:46.189584+00:00",
            "vela": "2026-05-28T02:24:45.189584+00:00",
            "cvt": "2026-05-28T04:16:54.189584+00:00",
            "victoria": "2026-05-27T20:39:04.189584+00:00",
            "fmp": "2026-05-26T17:31:46.189584+00:00",
            "unf": "2026-06-18T14:30:31.189584+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "d632ab15b3a3087c01ac53e919f68172713b99ea36d6090d006b72854b367b94",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T10:20:43",
        "created_at": "2026-05-26T14:51:24",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Adobe Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "ADB.DE"
    },
    {
        "user_id": 1,
        "ticker": "PAH3.DE",
        "currency": "EUR",
        "price_eur": 31.95,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 0.8,
        "quality_score": 5,
        "quality_state": "BROKEN",
        "entry_min_eur": 30.3525,
        "entry_max_eur": 31.6305,
        "trigger_price_eur": 33.9562,
        "stop_loss_eur": 26.8859,
        "target_1_eur": 33.62,
        "target_2_eur": null,
        "upside_pct": 5.23,
        "risk_reward": 0.42,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown",
            "report_bad"
        ],
        "invalidators_json": [
            "Perder 26.89 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-16T09:26:47.187614+00:00",
            "vela": "2026-05-27T06:43:33.187614+00:00",
            "cvt": "2026-05-27T08:22:08.187614+00:00",
            "victoria": "2026-05-27T19:51:45.187614+00:00",
            "fmp": "2026-05-16T09:26:47.187614+00:00",
            "unf": "2026-06-18T14:05:44.187614+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "bb3f713c37e7ae276591de573dd9cf8d8471a3cd9c70cf68dfb326f91ac1e17f",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:30:47",
        "created_at": "2026-05-26T14:51:24",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Porsche Automobil Holding SE",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "Informe roto / FMP 429"
        ],
        "id": "PAH3.DE"
    },
    {
        "user_id": 1,
        "ticker": "ABR0.DE",
        "currency": "EUR",
        "price_eur": 36.44,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 66.3,
        "conviction_pct": 39.7,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 34.14,
        "entry_max_eur": 35.5056,
        "trigger_price_eur": null,
        "stop_loss_eur": 33.4572,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (40/100).",
        "why_now_json": [
            "Velas COMPRA_FUERTE",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 33.46 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_FUERTE",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-09T11:21:55.017210+00:00",
            "vela": "2026-05-27T12:48:32.017210+00:00",
            "cvt": "2026-06-18T14:12:21.017210+00:00",
            "victoria": "2026-05-27T18:53:27.017210+00:00",
            "fmp": "2026-05-09T11:21:55.017210+00:00",
            "unf": "2026-06-18T14:12:21.017210+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "bb6f2a75fc583fd49b679413f93f4acd7137988eb928cda76524183e8705f6b0",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:12:47",
        "created_at": "2026-05-26T14:51:24",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:33",
        "company_name": "Barrick Mining Corporation",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "ABR0.DE"
    },
    {
        "user_id": 1,
        "ticker": "CUK",
        "currency": "USD",
        "price_eur": 23.6307,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.4,
        "quality_score": 20,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 22.607,
        "entry_max_eur": 23.5113,
        "trigger_price_eur": null,
        "stop_loss_eur": 22.1549,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "upside_unknown",
            "report_bad"
        ],
        "invalidators_json": [
            "Perder 22.15 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-16T09:26:46.525226+00:00",
            "vela": "2026-05-27T04:40:25.525226+00:00",
            "cvt": "2026-06-18T14:38:58.525226+00:00",
            "victoria": "2026-05-28T01:37:46.525226+00:00",
            "fmp": "2026-05-16T09:26:46.525226+00:00",
            "unf": "2026-06-18T14:38:58.525226+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:39:35",
        "snapshot_hash": "ddb439afac91ca82677fbf6ed71d623e9f0c110da1f5dd6cc623b581d06b1e0a",
        "previous_action": "BLOCKED",
        "changed_at": "2026-06-18T14:39:35",
        "created_at": "2026-05-26T14:51:24",
        "updated_at": "2026-06-18T16:39:35",
        "expires_at": "2026-06-19T14:39:35",
        "company_name": "Carnival Corporation & plc",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "Informe roto / FMP 429"
        ],
        "id": "CUK"
    },
    {
        "user_id": 1,
        "ticker": "RIO.L",
        "currency": "GBp",
        "price_eur": 89.0249,
        "action": "WAIT",
        "action_family": "wait",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 93,
        "conviction_pct": 50.2,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 86.0788,
        "entry_max_eur": 89.522,
        "trigger_price_eur": 95.7737,
        "stop_loss_eur": 84.3572,
        "target_1_eur": 94.8254,
        "target_2_eur": null,
        "upside_pct": 6.52,
        "risk_reward": 1.03,
        "position_size_pct": null,
        "reason_short": "Esperar: Convicción baja (50/100), Recorrido limitado (6.5%), R/R 1.03 (<2).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF MEJOR_RECOMENDACION"
        ],
        "veto_reasons_json": [
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 84.36 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "COMPRA",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A",
            "UNF": "MEJOR_RECOMENDACION"
        },
        "source_freshness_json": {
            "price": "2026-05-16T09:21:37.772052+00:00",
            "vela": "2026-05-27T21:23:13.772052+00:00",
            "cvt": "2026-06-18T14:05:53.772052+00:00",
            "victoria": "2026-05-27T19:58:33.772052+00:00",
            "fmp": "2026-05-16T09:21:37.772052+00:00",
            "unf": "2026-06-18T14:30:32.772052+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "VEL",
            "VIC",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "a2db249012629aefe47e476fe748f39a85659d799135144b7bacc6c0e6971140",
        "previous_action": "WAIT",
        "changed_at": "2026-06-18T14:06:44",
        "created_at": "2026-05-25T19:14:56",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Rio Tinto Group",
        "veto_reasons_human": [
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "RIO.L"
    },
    {
        "user_id": 1,
        "ticker": "CMCLF",
        "currency": "USD",
        "price_eur": 2.1925,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.5,
        "quality_score": 35,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 2.1839,
        "entry_max_eur": 2.2713,
        "trigger_price_eur": null,
        "stop_loss_eur": 2.1402,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 2.14 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.845767+00:00",
            "vela": "2026-05-28T02:24:46.845767+00:00",
            "cvt": "2026-06-18T14:36:51.845767+00:00",
            "victoria": "2026-05-27T20:45:41.845767+00:00",
            "fmp": "2026-05-27T21:29:59.845767+00:00",
            "unf": "2026-06-18T14:36:51.845767+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:37:35",
        "snapshot_hash": "7ce6ae4bacb77a317770bd517355e8fdfdfa29c3c9b2ebe78c385da4e2e1cae2",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:37:34",
        "created_at": "2026-05-21T14:44:24",
        "updated_at": "2026-06-18T16:37:35",
        "expires_at": "2026-06-19T14:37:34",
        "company_name": "CMOC Group Limited",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "CMCLF"
    },
    {
        "user_id": 1,
        "ticker": "0R2J.L",
        "currency": "GBp",
        "price_eur": 2.8742,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6.2,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 2.8274,
        "entry_max_eur": 2.9405,
        "trigger_price_eur": null,
        "stop_loss_eur": 2.7709,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 2.77 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T17:17:09.351527+00:00",
            "vela": "2026-05-28T02:24:45.351527+00:00",
            "cvt": "2026-05-27T21:11:35.351527+00:00",
            "victoria": "2026-05-27T20:32:07.351527+00:00",
            "fmp": "2026-05-26T17:17:09.351527+00:00",
            "unf": "2026-06-18T14:05:43.351527+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "474f648a78ec1f9b5ff4b8808a6325bf03d0d8e28bca8c8dab2ae52701787366",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:35:07",
        "created_at": "2026-05-21T14:23:22",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": null,
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "0R2J.L"
    },
    {
        "user_id": 1,
        "ticker": "2899.HK",
        "currency": "HKD",
        "price_eur": 3.8636,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 80.5,
        "conviction_pct": 42.2,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 3.6704,
        "entry_max_eur": 3.825,
        "trigger_price_eur": 3.9267,
        "stop_loss_eur": 3.2512,
        "target_1_eur": 3.8878,
        "target_2_eur": null,
        "upside_pct": 0.63,
        "risk_reward": 0.11,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (42/100), Recorrido limitado (0.6%), R/R 0.11 (<2).",
        "why_now_json": [
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 3.25 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "COMPRA",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-16T09:31:52.077830+00:00",
            "vela": "2026-05-27T06:43:27.077830+00:00",
            "cvt": "2026-06-18T14:14:15.077830+00:00",
            "victoria": "2026-05-27T18:34:55.077830+00:00",
            "fmp": "2026-05-16T09:31:52.077830+00:00",
            "unf": "2026-06-18T14:14:15.077830+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "VIC",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "dfd1158f2b552af3cbaa1c97d73252762beeab33cbe48a42c7c893298b120dc7",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:15:10",
        "created_at": "2026-05-21T14:23:22",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:33",
        "company_name": "Zijin Mining Group Company Limited",
        "veto_reasons_human": [
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "2899.HK"
    },
    {
        "user_id": 1,
        "ticker": "XPEV",
        "currency": "USD",
        "price_eur": 13.991,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 8.7,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 13.3595,
        "entry_max_eur": 13.8939,
        "trigger_price_eur": null,
        "stop_loss_eur": 13.0923,
        "target_1_eur": 19.477,
        "target_2_eur": 22.22,
        "upside_pct": 45.41,
        "risk_reward": 6.96,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 45.4",
            "R/R 7.0",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 13.09 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:01.190501+00:00",
            "vela": "2026-05-23T12:23:50.190501+00:00",
            "cvt": "2026-05-20T09:07:55.190501+00:00",
            "victoria": "2026-05-20T09:41:25.190501+00:00",
            "fmp": "2026-05-27T14:11:01.190501+00:00",
            "unf": "2026-05-24T18:10:43.190501+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "246833030ae8910bb0552fe293acb3c6e78a35a344669d1111b0384bf1265b40",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:30:47",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "XPeng Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "XPEV"
    },
    {
        "user_id": 1,
        "ticker": "REP.MC",
        "currency": "EUR",
        "price_eur": 21.76,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85.2,
        "conviction_pct": 5.3,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 21.75,
        "entry_max_eur": 22.62,
        "trigger_price_eur": 23.7653,
        "stop_loss_eur": 21.315,
        "target_1_eur": 23.53,
        "target_2_eur": null,
        "upside_pct": 8.13,
        "risk_reward": 0.7,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "upside_unknown",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 21.32 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "A-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T13:28:27.818011+00:00",
            "vela": "2026-05-27T06:43:33.818011+00:00",
            "cvt": "2026-05-26T21:11:49.818011+00:00",
            "victoria": "2026-05-19T11:11:22.818011+00:00",
            "fmp": "2026-05-25T13:28:27.818011+00:00",
            "unf": "2026-06-18T14:30:31.818011+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "FMP"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "9323b3d63df381884ac57124dde9a647cc5af5227bf626c9f9776ebb4e7643b1",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:04:17",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Repsol, S.A.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "UNF: tier negativo"
        ],
        "id": "REP.MC"
    },
    {
        "user_id": 1,
        "ticker": "TTE.PA",
        "currency": "EUR",
        "price_eur": 78.22,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 76.3,
        "conviction_pct": 33.4,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 73.07,
        "entry_max_eur": 75.9928,
        "trigger_price_eur": 81.0727,
        "stop_loss_eur": 71.6086,
        "target_1_eur": 80.27,
        "target_2_eur": null,
        "upside_pct": 2.62,
        "risk_reward": 0.98,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (33/100), Recorrido limitado (2.6%).",
        "why_now_json": [
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 71.61 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "COMPRA",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-26T18:00:48.712614+00:00",
            "vela": "2026-05-27T15:08:07.712614+00:00",
            "cvt": "2026-06-18T14:32:40.712614+00:00",
            "victoria": "2026-05-27T20:03:31.712614+00:00",
            "fmp": "2026-05-26T18:00:48.712614+00:00",
            "unf": "2026-06-18T14:32:40.712614+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VIC",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:33:33",
        "snapshot_hash": "8f03b9d7e6556cc5145346226ea1a5921e503ba42a16e5473acc2bf2ff147474",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:33:33",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:33:33",
        "expires_at": "2026-06-19T14:33:33",
        "company_name": "TotalEnergies SE",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "TTE.PA"
    },
    {
        "user_id": 1,
        "ticker": "ZIJMF",
        "currency": "USD",
        "price_eur": 3.806,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 68,
        "conviction_pct": 29.8,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 3.6514,
        "entry_max_eur": 3.7975,
        "trigger_price_eur": 3.9134,
        "stop_loss_eur": 3.5784,
        "target_1_eur": 3.8747,
        "target_2_eur": null,
        "upside_pct": 1.81,
        "risk_reward": 0.35,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (30/100), Recorrido limitado (1.8%).",
        "why_now_json": [
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 3.58 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:01.199985+00:00",
            "vela": "2026-05-27T06:43:35.199985+00:00",
            "cvt": "2026-06-18T14:38:15.199985+00:00",
            "victoria": "2026-05-29T00:45:16.199985+00:00",
            "fmp": "2026-05-27T14:11:01.199985+00:00",
            "unf": "2026-06-18T14:38:15.199985+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:38:35",
        "snapshot_hash": "9118cb80f0e22df0df71709e9717b3ffd1c23e6f62b28c6ee8da6890c05f32c6",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:38:35",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:38:35",
        "expires_at": "2026-06-19T14:38:35",
        "company_name": "Zijin Mining Group Company Limited",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "ZIJMF"
    },
    {
        "user_id": 1,
        "ticker": "RGTI",
        "currency": "USD",
        "price_eur": 21.1681,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 4.1,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 20.1621,
        "entry_max_eur": 20.9686,
        "trigger_price_eur": 22.335,
        "stop_loss_eur": 19.7589,
        "target_1_eur": 26.7797,
        "target_2_eur": 29.5855,
        "upside_pct": 17.98,
        "risk_reward": 4.8,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 18.0",
            "R/R 4.8",
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 19.76 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.390947+00:00",
            "vela": "2026-05-26T20:42:56.390947+00:00",
            "cvt": "2026-05-19T08:06:22.390947+00:00",
            "victoria": "2026-05-26T16:26:18.390947+00:00",
            "fmp": "2026-05-27T21:29:59.390947+00:00",
            "unf": "2026-05-28T21:27:02.390947+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "bc2279178cb55f417c7e3814b9eb0643fe73cf0cb2c4f17feb95dfc43cc680d2",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:58:21",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Rigetti Computing, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "RGTI"
    },
    {
        "user_id": 1,
        "ticker": "SOFI",
        "currency": "USD",
        "price_eur": 13.4126,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 8.7,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 13.0777,
        "entry_max_eur": 13.6008,
        "trigger_price_eur": null,
        "stop_loss_eur": 12.8161,
        "target_1_eur": 18.3858,
        "target_2_eur": 20.8724,
        "upside_pct": 37,
        "risk_reward": 6.1,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 37.0",
            "R/R 6.1",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 12.82 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T13:28:28.322919+00:00",
            "vela": "2026-05-21T21:17:04.322919+00:00",
            "cvt": "2026-05-20T11:57:10.322919+00:00",
            "victoria": "2026-05-20T11:55:29.322919+00:00",
            "fmp": "2026-05-25T13:28:28.322919+00:00",
            "unf": "2026-05-19T15:20:32.322919+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "e480262789cb2f0470490a577f5821c7c62c65f01dddd55910de30e8027df845",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:03:09",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "SoFi Technologies, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "SOFI"
    },
    {
        "user_id": 1,
        "ticker": "SYK.DE",
        "currency": "EUR",
        "price_eur": 273.05,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.5,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 253.3,
        "entry_max_eur": 263.432,
        "trigger_price_eur": 279.467,
        "stop_loss_eur": 248.234,
        "target_1_eur": 276.7,
        "target_2_eur": null,
        "upside_pct": 1.34,
        "risk_reward": 0.87,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 248.23 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T12:07:06.313938+00:00",
            "vela": "2026-05-27T06:43:34.313938+00:00",
            "cvt": "2026-05-18T08:29:56.313938+00:00",
            "victoria": "2026-05-25T18:17:24.313938+00:00",
            "fmp": "2026-05-25T12:07:06.313938+00:00",
            "unf": "2026-06-18T14:05:43.313938+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "77d4fd2cc131b65700eac777c6c0f89b3baa77daad6e6e7fd6a863177f757574",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-25T17:52:30",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Stryker Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "SYK.DE"
    },
    {
        "user_id": 1,
        "ticker": "SYM",
        "currency": "USD",
        "price_eur": 45.8113,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 7.3,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 40.0237,
        "entry_max_eur": 41.6246,
        "trigger_price_eur": null,
        "stop_loss_eur": 39.2232,
        "target_1_eur": 57.8209,
        "target_2_eur": 63.8257,
        "upside_pct": 24.56,
        "risk_reward": 6.74,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 24.6",
            "R/R 6.7",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 39.22 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:34:28.345206+00:00",
            "vela": "2026-05-21T21:17:04.345206+00:00",
            "cvt": "2026-05-19T13:12:10.345206+00:00",
            "victoria": "2026-05-20T09:12:30.345206+00:00",
            "fmp": "2026-05-27T14:34:28.345206+00:00",
            "unf": "2026-05-24T18:10:43.345206+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "e10579205fcffa8462c313e442ee60e178d068511569f20df2097c7cd0dbe5c9",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:13:33",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Symbotic Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "SYM"
    },
    {
        "user_id": 1,
        "ticker": "T",
        "currency": "USD",
        "price_eur": 21.5918,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 4.8,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 20.9864,
        "entry_max_eur": 21.8259,
        "trigger_price_eur": 22.5666,
        "stop_loss_eur": 20.5667,
        "target_1_eur": 25.2419,
        "target_2_eur": 27.067,
        "upside_pct": 16.31,
        "risk_reward": 2.71,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Score < 55.",
        "why_now_json": [
            "upside_pct 16.3",
            "R/R 2.7",
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "score_below_55"
        ],
        "invalidators_json": [
            "Perder 20.57 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:34:28.348204+00:00",
            "vela": "2026-05-26T14:25:15.348204+00:00",
            "cvt": "2026-05-18T14:53:08.348204+00:00",
            "victoria": "2026-05-18T18:52:15.348204+00:00",
            "fmp": "2026-05-27T14:34:28.348204+00:00",
            "unf": "2026-06-18T14:05:44.348204+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "score_below_55"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "a22d20b2d2eeac87754ccf06ccb974f787155b653659ffad23168a6c0eed40f6",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T05:05:57",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "AT&T Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Score < 55"
        ],
        "id": "T"
    },
    {
        "user_id": 1,
        "ticker": "TEAM",
        "currency": "USD",
        "price_eur": 73.3578,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 9.6,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 70.5753,
        "entry_max_eur": 73.3983,
        "trigger_price_eur": 77.5782,
        "stop_loss_eur": 69.1638,
        "target_1_eur": 119.1041,
        "target_2_eur": 141.9772,
        "upside_pct": 62.29,
        "risk_reward": 10.79,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "upside_pct 62.3",
            "R/R 10.8",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 69.16 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T12:07:06.377916+00:00",
            "vela": "2026-05-26T14:25:15.377916+00:00",
            "cvt": "2026-05-20T04:28:43.377916+00:00",
            "victoria": "2026-05-20T11:41:54.377916+00:00",
            "fmp": "2026-05-25T12:07:06.377916+00:00",
            "unf": "2026-05-20T13:32:34.377916+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "26c59dc047cc2323810cf4e97a64e5975bdc5d8163280d65d5f7c4d631c29f81",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:03:10",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": null,
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "TEAM"
    },
    {
        "user_id": 1,
        "ticker": "TME",
        "currency": "USD",
        "price_eur": 7.5659,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 10.1,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 7.1876,
        "entry_max_eur": 7.4902,
        "trigger_price_eur": 7.9278,
        "stop_loss_eur": 6.3667,
        "target_1_eur": 15.3101,
        "target_2_eur": 19.1822,
        "upside_pct": 102.27,
        "risk_reward": 6.96,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "upside_pct 102.3",
            "R/R 7.0",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "vela_sell"
        ],
        "invalidators_json": [
            "Perder 6.37 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "A",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T12:07:06.845116+00:00",
            "vela": "2026-05-21T21:17:04.845116+00:00",
            "cvt": "2026-05-20T11:52:46.845116+00:00",
            "victoria": "2026-05-20T09:17:19.845116+00:00",
            "fmp": "2026-05-25T12:07:06.845116+00:00",
            "unf": "2026-06-18T14:30:31.845116+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "vela_sell"
        ],
        "cvt_buy_signals_json": [
            "FMP",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "3bfcd943f324b4f0fcfef39e25429d8692885bff65b3d52b2f1cb64be3c274cc",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-26T16:41:09",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Tencent Music Entertainment Group",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Velas: venta"
        ],
        "id": "TME"
    },
    {
        "user_id": 1,
        "ticker": "UEC",
        "currency": "USD",
        "price_eur": 11.3793,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 9,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 10.2323,
        "entry_max_eur": 10.6416,
        "trigger_price_eur": null,
        "stop_loss_eur": 10.0277,
        "target_1_eur": 17.7758,
        "target_2_eur": 20.974,
        "upside_pct": 58.91,
        "risk_reward": 11.62,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 58.9",
            "R/R 11.6",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 10.03 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "D+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:00.369058+00:00",
            "vela": "2026-05-21T21:17:04.369058+00:00",
            "cvt": "2026-05-20T11:37:35.369058+00:00",
            "victoria": "2026-05-20T11:45:11.369058+00:00",
            "fmp": "2026-05-27T14:11:00.369058+00:00",
            "unf": "2026-05-19T15:09:26.369058+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "8034935b7883e6b9f2cc87f9ddc54c7b7807fa7f28363569eb8d8db2561b84ef",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:53:05",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Uranium Energy Corp.",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "UEC"
    },
    {
        "user_id": 1,
        "ticker": "UNH",
        "currency": "USD",
        "price_eur": 333.6138,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.4,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 323.6433,
        "entry_max_eur": 336.589,
        "trigger_price_eur": 347.9569,
        "stop_loss_eur": 317.1704,
        "target_1_eur": 337.1309,
        "target_2_eur": 338.8894,
        "upside_pct": 1.01,
        "risk_reward": 0.03,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside"
        ],
        "invalidators_json": [
            "Perder 317.17 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T12:07:06.968102+00:00",
            "vela": "2026-05-27T06:43:34.968102+00:00",
            "cvt": "2026-05-20T12:08:28.968102+00:00",
            "victoria": "2026-05-20T09:28:02.968102+00:00",
            "fmp": "2026-05-25T12:07:06.968102+00:00",
            "unf": "2026-06-18T14:30:31.968102+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "3a1c7552b50d02740d38f6517a5e38801d7b1d3b422a1c483502e4d9ce19260f",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:01:55",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "UnitedHealth Group Incorporated",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)"
        ],
        "id": "UNH"
    },
    {
        "user_id": 1,
        "ticker": "VICI",
        "currency": "USD",
        "price_eur": 24.7388,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 83.5,
        "conviction_pct": 41.4,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 24.408,
        "entry_max_eur": 25.3843,
        "trigger_price_eur": 24.9992,
        "stop_loss_eur": 23.9198,
        "target_1_eur": 27.6389,
        "target_2_eur": 29.089,
        "upside_pct": 12.88,
        "risk_reward": 1.54,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (41/100), R/R 1.54 (<2).",
        "why_now_json": [
            "upside_pct 12.9",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [],
        "invalidators_json": [
            "Perder 23.92 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "COMPRA",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:00.048777+00:00",
            "vela": "2026-05-28T05:25:35.048777+00:00",
            "cvt": "2026-06-18T14:14:20.048777+00:00",
            "victoria": "2026-05-27T22:30:05.048777+00:00",
            "fmp": "2026-05-27T14:11:00.048777+00:00",
            "unf": "2026-06-18T14:14:20.048777+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VIC",
            "FMP",
            "UNF>=2",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "d23e1e41f8a400d301a7a75f666b4a7a8c6a160c68bc521df4664c70933ca6f5",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:15:10",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:33",
        "company_name": "VICI Properties Inc.",
        "veto_reasons_human": [],
        "id": "VICI"
    },
    {
        "user_id": 1,
        "ticker": "VST",
        "currency": "USD",
        "price_eur": 137.9601,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 8.4,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 115.7342,
        "entry_max_eur": 120.3636,
        "trigger_price_eur": null,
        "stop_loss_eur": 113.4195,
        "target_1_eur": 195.6974,
        "target_2_eur": 224.566,
        "upside_pct": 45.76,
        "risk_reward": 10.85,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Score < 55.",
        "why_now_json": [
            "upside_pct 45.8",
            "R/R 10.8",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 113.42 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:01.201536+00:00",
            "vela": "2026-05-21T21:17:05.201536+00:00",
            "cvt": "2026-05-20T10:49:21.201536+00:00",
            "victoria": "2026-05-20T11:53:04.201536+00:00",
            "fmp": "2026-05-27T14:11:01.201536+00:00",
            "unf": "2026-05-18T13:35:35.201536+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "e5b31c9f6f3aa277da2d0b209ac95b775d7db939246ed7fdf79372e0ee836164",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:30:47",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Vistra Corp.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "VST"
    },
    {
        "user_id": 1,
        "ticker": "ZETA",
        "currency": "USD",
        "price_eur": 17.0796,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 10.5,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 15.9198,
        "entry_max_eur": 16.5566,
        "trigger_price_eur": null,
        "stop_loss_eur": 15.6014,
        "target_1_eur": 22.8534,
        "target_2_eur": 25.7403,
        "upside_pct": 41.56,
        "risk_reward": 6.59,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "upside_pct 41.6",
            "R/R 6.6",
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "fmp_sell"
        ],
        "invalidators_json": [
            "Perder 15.60 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:01.354485+00:00",
            "vela": "2026-05-26T15:25:48.354485+00:00",
            "cvt": "2026-05-20T08:51:51.354485+00:00",
            "victoria": "2026-05-26T08:34:02.354485+00:00",
            "fmp": "2026-05-27T14:11:01.354485+00:00",
            "unf": "2026-05-26T14:00:05.354485+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "fmp_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "78d68281cad53983b814e0abdb4532328408a2bf13e0073198cf41733b604666",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:55:16",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Zeta Global Holdings Corp.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "FMP: rating venta"
        ],
        "id": "ZETA"
    },
    {
        "user_id": 1,
        "ticker": "ZS",
        "currency": "USD",
        "price_eur": 110.4986,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 8.6,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 104.9737,
        "entry_max_eur": 109.3936,
        "trigger_price_eur": 158.2474,
        "stop_loss_eur": 92.9846,
        "target_1_eur": 232.0739,
        "target_2_eur": 292.8616,
        "upside_pct": 48.12,
        "risk_reward": 7.48,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 48.1",
            "R/R 7.5",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 92.98 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:01.380737+00:00",
            "vela": "2026-05-26T14:25:15.380737+00:00",
            "cvt": "2026-05-20T10:17:23.380737+00:00",
            "victoria": "2026-05-25T21:21:16.380737+00:00",
            "fmp": "2026-05-27T14:11:01.380737+00:00",
            "unf": "2026-05-27T13:59:53.380737+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "7539a208fdf4b6bccc8b9a25b8248c9487662fd253a242c17f59aef1cc07ee87",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:11:26",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Zscaler, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "ZS"
    },
    {
        "user_id": 1,
        "ticker": "TSM",
        "currency": "USD",
        "price_eur": 363.6809,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 83.5,
        "conviction_pct": 40,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 337.3054,
        "entry_max_eur": 350.7976,
        "trigger_price_eur": null,
        "stop_loss_eur": 330.5593,
        "target_1_eur": 367.2871,
        "target_2_eur": 369.0902,
        "upside_pct": 5.68,
        "risk_reward": 0.81,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (40/100), Recorrido limitado (5.7%), R/R 0.81 (<2).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "low_upside"
        ],
        "invalidators_json": [
            "Perder 330.56 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:10:59.364193+00:00",
            "vela": "2026-05-26T14:25:15.364193+00:00",
            "cvt": "2026-06-18T14:30:36.364193+00:00",
            "victoria": "2026-05-27T21:00:23.364193+00:00",
            "fmp": "2026-05-27T14:10:59.364193+00:00",
            "unf": "2026-06-18T14:30:36.364193+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "VEL",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:32:33",
        "snapshot_hash": "76ffd86368b9e8eb8e1de10457a1425af2c6d861e00b787378fcefc612f769c9",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:32:33",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:32:33",
        "expires_at": "2026-06-19T14:32:33",
        "company_name": "Taiwan Semiconductor Manufacturing Company Limited",
        "veto_reasons_human": [
            "Recorrido bajo (3-10%)"
        ],
        "id": "TSM"
    },
    {
        "user_id": 1,
        "ticker": "UPS",
        "currency": "USD",
        "price_eur": 88.8862,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 74.8,
        "conviction_pct": 29.2,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 82.0733,
        "entry_max_eur": 85.3562,
        "trigger_price_eur": null,
        "stop_loss_eur": 80.4318,
        "target_1_eur": 99,
        "target_2_eur": 104.0569,
        "upside_pct": 14.07,
        "risk_reward": 2.77,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (29/100).",
        "why_now_json": [
            "upside_pct 14.1",
            "R/R 2.8",
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale"
        ],
        "invalidators_json": [
            "Perder 80.43 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:00.661235+00:00",
            "vela": "2026-05-21T21:17:04.661235+00:00",
            "cvt": "2026-05-27T08:02:26.661235+00:00",
            "victoria": "2026-05-27T20:07:35.661235+00:00",
            "fmp": "2026-05-27T14:11:00.661235+00:00",
            "unf": "2026-06-18T14:05:44.661235+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "ee53577884e9e450a85af7faa7395acf0f75ec265c7f45b15a9f14ac403111c6",
        "previous_action": "REJECT",
        "changed_at": "2026-05-27T14:16:35",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "United Parcel Service, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios"
        ],
        "id": "UPS"
    },
    {
        "user_id": 1,
        "ticker": "VRT",
        "currency": "USD",
        "price_eur": 273.2052,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 74.8,
        "conviction_pct": 29.9,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 271.2034,
        "entry_max_eur": 282.0515,
        "trigger_price_eur": 326.465,
        "stop_loss_eur": 265.7793,
        "target_1_eur": 319.3207,
        "target_2_eur": 342.3784,
        "upside_pct": 13.5,
        "risk_reward": 2.29,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (30/100).",
        "why_now_json": [
            "upside_pct 13.5",
            "R/R 2.3",
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale"
        ],
        "invalidators_json": [
            "Perder 265.78 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:01.675910+00:00",
            "vela": "2026-05-28T06:25:42.675910+00:00",
            "cvt": "2026-05-28T04:09:47.675910+00:00",
            "victoria": "2026-05-27T23:17:02.675910+00:00",
            "fmp": "2026-05-27T14:11:01.675910+00:00",
            "unf": "2026-06-18T14:30:31.675910+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "31f403f2e6a97cad36a55db79cae6038f375e63d99bb50265f9fd50be0c43124",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T10:13:40",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Vertiv Holdings Co",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios"
        ],
        "id": "VRT"
    },
    {
        "user_id": 1,
        "ticker": "XOM",
        "currency": "USD",
        "price_eur": 126.8214,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 74.8,
        "conviction_pct": 27.3,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 125.5971,
        "entry_max_eur": 130.621,
        "trigger_price_eur": 134.9837,
        "stop_loss_eur": 123.0852,
        "target_1_eur": 141.3647,
        "target_2_eur": 148.6364,
        "upside_pct": 6.21,
        "risk_reward": 1.43,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (27/100), Recorrido limitado (6.2%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "low_upside"
        ],
        "invalidators_json": [
            "Perder 123.09 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:01.559470+00:00",
            "vela": "2026-05-24T20:21:08.559470+00:00",
            "cvt": "2026-05-28T21:01:41.559470+00:00",
            "victoria": "2026-05-29T00:45:35.559470+00:00",
            "fmp": "2026-05-27T14:11:01.559470+00:00",
            "unf": "2026-06-18T14:05:44.559470+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "d7435c3c04846b9a2fe5765059e7f72f22c8b9d0d779964ad32821eb60a19e2e",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:05:43",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Exxon Mobil Corporation",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Recorrido bajo (3-10%)"
        ],
        "id": "XOM"
    },
    {
        "user_id": 1,
        "ticker": "SIE.DE",
        "currency": "EUR",
        "price_eur": 274.05,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 71.8,
        "conviction_pct": 24.1,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 256.8,
        "entry_max_eur": 267.072,
        "trigger_price_eur": 279.5175,
        "stop_loss_eur": 251.664,
        "target_1_eur": 276.75,
        "target_2_eur": null,
        "upside_pct": 0.99,
        "risk_reward": 0.63,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (24/100), Recorrido limitado (1.0%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 251.66 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.983695+00:00",
            "vela": "2026-05-28T06:25:42.983695+00:00",
            "cvt": "2026-05-28T04:11:18.983695+00:00",
            "victoria": "2026-05-27T23:54:51.983695+00:00",
            "fmp": "2026-05-27T21:29:59.983695+00:00",
            "unf": "2026-06-18T14:05:44.983695+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "40c57b5bc58eb4138e0cb18d431fd7940bb7332a5bb4fa754a3b0bd670715d0b",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T10:14:41",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Siemens AG",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "SIE.DE"
    },
    {
        "user_id": 1,
        "ticker": "VOW.DE",
        "currency": "EUR",
        "price_eur": 95,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.3,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 90.9,
        "entry_max_eur": 94.536,
        "trigger_price_eur": null,
        "stop_loss_eur": 89.082,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 89.08 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:00.360246+00:00",
            "vela": "2026-05-27T06:43:34.360246+00:00",
            "cvt": "2026-05-19T11:45:11.360246+00:00",
            "victoria": "2026-05-20T11:50:49.360246+00:00",
            "fmp": "2026-05-27T14:11:00.360246+00:00",
            "unf": "2026-06-18T14:05:44.360246+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "FMP"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "c27f90d86861419215000ed1384910909900c05f5aeee64dad401ab35df56476",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T12:20:35",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Volkswagen AG",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "VOW.DE"
    },
    {
        "user_id": 1,
        "ticker": "ZURN.SW",
        "currency": "CHF",
        "price_eur": 622.1153,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6.1,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 605.2718,
        "entry_max_eur": 629.4827,
        "trigger_price_eur": 633.418,
        "stop_loss_eur": 593.1664,
        "target_1_eur": 627.1465,
        "target_2_eur": null,
        "upside_pct": 0.81,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 593.17 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:01.230640+00:00",
            "vela": "2026-05-21T21:17:05.230640+00:00",
            "cvt": "2026-05-20T12:08:26.230640+00:00",
            "victoria": "2026-05-20T11:58:06.230640+00:00",
            "fmp": "2026-05-27T14:11:01.230640+00:00",
            "unf": "2026-05-24T18:10:43.230640+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "fdaba1518341a560ff2d418a5432f932bfd474e667747292af8aaf8f1f6bca90",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T13:09:59",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Zurich Insurance Group AG",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "UNF: tier negativo"
        ],
        "id": "ZURN.SW"
    },
    {
        "user_id": 1,
        "ticker": "SAP.DE",
        "currency": "EUR",
        "price_eur": 151.46,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.2,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 140.7,
        "entry_max_eur": 146.328,
        "trigger_price_eur": null,
        "stop_loss_eur": 137.886,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "upside_unknown",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 137.89 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T18:06:56.935999+00:00",
            "vela": "2026-05-21T21:17:03.935999+00:00",
            "cvt": "2026-05-20T12:12:24.935999+00:00",
            "victoria": "2026-05-20T09:02:51.935999+00:00",
            "fmp": "2026-05-26T18:06:56.935999+00:00",
            "unf": "2026-05-24T18:10:43.935999+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "fb4322f80f0c0cd1f28f5335bdb1ecdcdbf0b89b0348204b048487836281e111",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-26T21:25:47",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "SAP SE",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "UNF: tier negativo"
        ],
        "id": "SAP.DE"
    },
    {
        "user_id": 1,
        "ticker": "RHM.DE",
        "currency": "EUR",
        "price_eur": 1232.8,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85.2,
        "conviction_pct": 4.8,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 1120,
        "entry_max_eur": 1164.8,
        "trigger_price_eur": 1256.036,
        "stop_loss_eur": 1097.6,
        "target_1_eur": 1243.6,
        "target_2_eur": null,
        "upside_pct": 0.88,
        "risk_reward": 1.17,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "upside_unknown",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 1097.60 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.778085+00:00",
            "vela": "2026-05-26T20:42:56.778085+00:00",
            "cvt": "2026-05-19T04:51:23.778085+00:00",
            "victoria": "2026-05-20T11:31:12.778085+00:00",
            "fmp": "2026-05-27T21:29:59.778085+00:00",
            "unf": "2026-05-24T18:10:43.778085+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "b98378af5b1621ad900d7a8d81fe641a710ab55c66c3ea852d6ec247ab322e9c",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:45:42",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Rheinmetall AG",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "RHM.DE"
    },
    {
        "user_id": 1,
        "ticker": "TEM",
        "currency": "USD",
        "price_eur": 40.3231,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 0,
        "quality_score": 0,
        "quality_state": "BROKEN",
        "entry_min_eur": 39.4732,
        "entry_max_eur": 41.0521,
        "trigger_price_eur": null,
        "stop_loss_eur": 38.6837,
        "target_1_eur": 64.8058,
        "target_2_eur": 77.0472,
        "upside_pct": 63.34,
        "risk_reward": 10.03,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "upside_pct 63.3",
            "R/R 10.0",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "report_bad",
            "fmp_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 38.68 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "D+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:27:48.811820+00:00",
            "vela": "2026-05-24T20:21:08.811820+00:00",
            "cvt": "2026-05-19T11:35:06.811820+00:00",
            "victoria": "2026-05-19T18:41:49.811820+00:00",
            "fmp": "2026-05-27T14:27:48.811820+00:00",
            "unf": "2026-05-27T18:37:19.811820+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "vela_sell",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "8bbae657d9e94656666a76742ac89f9ba79ecf464f29a833d102afbb16c9a584",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:15:34",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Tempus AI, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "Informe roto / FMP 429",
            "FMP: rating venta",
            "UNF: tier negativo"
        ],
        "id": "TEM"
    },
    {
        "user_id": 1,
        "ticker": "RKLB",
        "currency": "USD",
        "price_eur": 129.1667,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.9,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 107.861,
        "entry_max_eur": 112.1754,
        "trigger_price_eur": null,
        "stop_loss_eur": 105.7038,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -28.92,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "no_upside",
            "above_target",
            "fmp_sell"
        ],
        "invalidators_json": [
            "Perder 105.70 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.766376+00:00",
            "vela": "2026-05-26T23:28:08.766376+00:00",
            "cvt": "2026-05-19T13:03:29.766376+00:00",
            "victoria": "2026-05-20T11:32:29.766376+00:00",
            "fmp": "2026-05-27T21:29:59.766376+00:00",
            "unf": "2026-05-28T19:32:43.766376+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "fmp_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "bd22cd9ecee6a438bb692045cb9960dcbeff5a6585744cc16ec02837757ea379",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:56:20",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Rocket Lab USA, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "FMP: rating venta"
        ],
        "id": "RKLB"
    },
    {
        "user_id": 1,
        "ticker": "SQ",
        "currency": "USD",
        "price_eur": 71.8059,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 8.8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 49.2214,
        "entry_max_eur": 51.1903,
        "trigger_price_eur": null,
        "stop_loss_eur": 48.237,
        "target_1_eur": 110.5899,
        "target_2_eur": 129.9819,
        "upside_pct": 54.23,
        "risk_reward": 20.11,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Score < 55.",
        "why_now_json": [
            "upside_pct 54.2",
            "R/R 20.1",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 48.24 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": null,
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T18:17:42.316831+00:00",
            "vela": "2026-05-21T21:17:04.316831+00:00",
            "cvt": "2026-05-20T11:28:26.316831+00:00",
            "victoria": "2026-05-20T11:41:07.316831+00:00",
            "fmp": "2026-05-27T18:17:42.316831+00:00",
            "unf": "2026-05-14T20:33:05.316831+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "763a492588f65091290f08f95efdd28c6de4263a9f6827035fa2742967db4536",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-26T10:54:31",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Block, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "SQ"
    },
    {
        "user_id": 1,
        "ticker": "TRP",
        "currency": "USD",
        "price_eur": 58.7434,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6.3,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 51.5997,
        "entry_max_eur": 53.6637,
        "trigger_price_eur": 60.1509,
        "stop_loss_eur": 50.5677,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -12.57,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "no_upside",
            "above_target",
            "fmp_sell"
        ],
        "invalidators_json": [
            "Perder 50.57 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:10:59.904143+00:00",
            "vela": "2026-05-21T21:17:04.904143+00:00",
            "cvt": "2026-05-20T12:20:54.904143+00:00",
            "victoria": "2026-05-19T12:00:57.904143+00:00",
            "fmp": "2026-05-27T14:10:59.904143+00:00",
            "unf": "2026-05-27T19:06:02.904143+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "fmp_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "fa06baca5d987c8f39948ac557df111b9b5930bb238f11aa42e4ad3994533c63",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T13:43:33",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "TC Energy Corporation",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "FMP: rating venta"
        ],
        "id": "TRP"
    },
    {
        "user_id": 1,
        "ticker": "VICR",
        "currency": "USD",
        "price_eur": 299.668,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.9,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 213.942,
        "entry_max_eur": 222.4997,
        "trigger_price_eur": null,
        "stop_loss_eur": 209.6632,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -8.58,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 209.66 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:00.866688+00:00",
            "vela": "2026-05-21T21:17:04.866688+00:00",
            "cvt": "2026-05-19T12:11:23.866688+00:00",
            "victoria": "2026-05-19T18:50:40.866688+00:00",
            "fmp": "2026-05-27T14:11:00.866688+00:00",
            "unf": "2026-05-24T18:10:43.866688+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "4ee9da6ea5e457ee2d6d8381a04da1141bc24c898b2408024e8858d7162becca",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:11:26",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Vicor Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "UNF: tier negativo"
        ],
        "id": "VICR"
    },
    {
        "user_id": 1,
        "ticker": "VNNVF",
        "currency": "USD",
        "price_eur": 22.4492,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.1,
        "quality_score": 20,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 21.3267,
        "entry_max_eur": 22.2247,
        "trigger_price_eur": 24.6608,
        "stop_loss_eur": 18.891,
        "target_1_eur": 24.4166,
        "target_2_eur": null,
        "upside_pct": 8.76,
        "risk_reward": 0.66,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "score_below_55"
        ],
        "invalidators_json": [
            "Perder 18.89 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "COMPRA",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:00.362943+00:00",
            "vela": "2026-05-21T21:17:04.362943+00:00",
            "cvt": "2026-05-20T11:01:56.362943+00:00",
            "victoria": "2026-05-20T11:47:51.362943+00:00",
            "fmp": "2026-05-27T14:11:00.362943+00:00",
            "unf": "2026-06-18T14:05:43.362943+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "score_below_55"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "VIC",
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "1d758a2f64ce2db8b989048342620c8726db9f7580c86642e0ff3b0c2a0119d1",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T12:48:27",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "VONOVIA SE",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "Score < 55"
        ],
        "id": "VNNVF"
    },
    {
        "user_id": 1,
        "ticker": "SPHR",
        "currency": "USD",
        "price_eur": 113.9035,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 74.8,
        "conviction_pct": 25.6,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 109.1887,
        "entry_max_eur": 113.5562,
        "trigger_price_eur": 119.4134,
        "stop_loss_eur": 107.0049,
        "target_1_eur": 118.3051,
        "target_2_eur": 120.5059,
        "upside_pct": 6.44,
        "risk_reward": 0.72,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (26/100), Recorrido limitado (6.4%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "low_upside"
        ],
        "invalidators_json": [
            "Perder 107.00 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T18:17:42.744678+00:00",
            "vela": "2026-05-26T23:28:08.744678+00:00",
            "cvt": "2026-05-26T21:00:16.744678+00:00",
            "victoria": "2026-05-19T17:15:43.744678+00:00",
            "fmp": "2026-05-27T18:17:42.744678+00:00",
            "unf": "2026-05-26T21:00:16.744678+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "f9541ca876380c5b5f6c72a9abe2b79c1d3bf625b4fdf071d4d6f61b3392d5b7",
        "previous_action": "REJECT",
        "changed_at": "2026-05-27T16:55:09",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Sphere Entertainment Co.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Recorrido bajo (3-10%)"
        ],
        "id": "SPHR"
    },
    {
        "user_id": 1,
        "ticker": "UNP",
        "currency": "USD",
        "price_eur": 236.0648,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 74.8,
        "conviction_pct": 30.3,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 204.5087,
        "entry_max_eur": 212.689,
        "trigger_price_eur": 241.584,
        "stop_loss_eur": 200.4185,
        "target_1_eur": 246.8341,
        "target_2_eur": 252.2188,
        "upside_pct": 8.06,
        "risk_reward": 2.78,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (30/100), Recorrido limitado (8.1%).",
        "why_now_json": [
            "R/R 2.8",
            "Velas COMPRA_FUERTE",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "low_upside"
        ],
        "invalidators_json": [
            "Perder 200.42 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_FUERTE",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:00.102673+00:00",
            "vela": "2026-05-28T02:24:46.102673+00:00",
            "cvt": "2026-05-27T20:31:08.102673+00:00",
            "victoria": "2026-05-27T20:06:26.102673+00:00",
            "fmp": "2026-05-27T14:11:00.102673+00:00",
            "unf": "2026-06-18T14:05:44.102673+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "a4e6ff2e2f893a491c8f3430344d08a87e10a9d3381b0a84cfe35bf78a985e29",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T04:00:28",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Union Pacific Corporation",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Recorrido bajo (3-10%)"
        ],
        "id": "UNP"
    },
    {
        "user_id": 1,
        "ticker": "SPOT",
        "currency": "USD",
        "price_eur": 444.6055,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 0,
        "quality_score": 0,
        "quality_state": "BROKEN",
        "entry_min_eur": 359.4855,
        "entry_max_eur": 373.8649,
        "trigger_price_eur": null,
        "stop_loss_eur": 352.2958,
        "target_1_eur": 528.3177,
        "target_2_eur": 570.1738,
        "upside_pct": 18.29,
        "risk_reward": 7.16,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Informe roto / FMP 429.",
        "why_now_json": [
            "upside_pct 18.3",
            "R/R 7.2",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "report_bad",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 352.30 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T18:17:42.319702+00:00",
            "vela": "2026-05-21T21:17:04.319702+00:00",
            "cvt": "2026-05-24T17:57:34.319702+00:00",
            "victoria": "2026-05-18T21:00:31.319702+00:00",
            "fmp": "2026-05-27T18:17:42.319702+00:00",
            "unf": "2026-05-27T12:00:37.319702+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "828e55397e28e135509695f39cdabffcfbaaa34cb3e2ee4656edf17038cfb16a",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T17:18:21",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Spotify Technology S.A.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Informe roto / FMP 429",
            "UNF: tier negativo"
        ],
        "id": "SPOT"
    },
    {
        "user_id": 1,
        "ticker": "TMUS",
        "currency": "USD",
        "price_eur": 165.791,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 2.3,
        "quality_score": 15,
        "quality_state": "BROKEN",
        "entry_min_eur": 159.009,
        "entry_max_eur": 165.3694,
        "trigger_price_eur": 171.8277,
        "stop_loss_eur": 155.8288,
        "target_1_eur": 214.2894,
        "target_2_eur": 238.5386,
        "upside_pct": 30.27,
        "risk_reward": 5.13,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Informe roto / FMP 429.",
        "why_now_json": [
            "upside_pct 30.3",
            "R/R 5.1",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "report_bad",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 155.83 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:27:48.371822+00:00",
            "vela": "2026-05-21T21:17:04.371822+00:00",
            "cvt": "2026-05-18T15:00:42.371822+00:00",
            "victoria": "2026-05-19T18:43:04.371822+00:00",
            "fmp": "2026-05-27T14:27:48.371822+00:00",
            "unf": "2026-05-24T18:10:43.371822+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "9c58adc73669e8961780c1924b4414230380153b89a7e4b25c971f3fde0de29b",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:13:33",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "T-Mobile US, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Informe roto / FMP 429",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "TMUS"
    },
    {
        "user_id": 1,
        "ticker": "SNOW",
        "currency": "USD",
        "price_eur": 150.4492,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 0,
        "quality_score": 0,
        "quality_state": "BROKEN",
        "entry_min_eur": 138.0422,
        "entry_max_eur": 143.5639,
        "trigger_price_eur": null,
        "stop_loss_eur": 135.2814,
        "target_1_eur": 199.2887,
        "target_2_eur": 223.7084,
        "upside_pct": 34.7,
        "risk_reward": 6.73,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: inputs sin cambios, Informe roto / FMP 429.",
        "why_now_json": [
            "upside_pct 34.7",
            "R/R 6.7",
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_stale",
            "report_bad",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 135.28 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T19:30:41.204228+00:00",
            "vela": "2026-05-21T21:17:04.204228+00:00",
            "cvt": "2026-05-18T14:22:21.204228+00:00",
            "victoria": "2026-05-19T21:32:16.204228+00:00",
            "fmp": "2026-05-27T19:30:41.204228+00:00",
            "unf": "2026-05-27T20:35:39.204228+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "55dedb3df01720a985911cb029da5e86ce1ebd25d361d09893b8830abcd77ee7",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:34:58",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Snowflake Inc.",
        "veto_reasons_human": [
            "CVT: inputs sin cambios",
            "Informe roto / FMP 429",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "SNOW"
    },
    {
        "user_id": 1,
        "ticker": "SAB.MC",
        "currency": "EUR",
        "price_eur": 2.911,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6.1,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 2.7654,
        "entry_max_eur": 2.8819,
        "trigger_price_eur": 3.3734,
        "stop_loss_eur": 2.4496,
        "target_1_eur": 3.34,
        "target_2_eur": null,
        "upside_pct": 14.74,
        "risk_reward": 1.06,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 2.45 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.386653+00:00",
            "vela": "2026-05-21T21:17:03.386653+00:00",
            "cvt": "2026-05-20T11:42:24.386653+00:00",
            "victoria": "2026-05-19T08:20:05.386653+00:00",
            "fmp": "2026-05-27T21:29:59.386653+00:00",
            "unf": "2026-05-28T20:06:46.386653+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "57c563cbbcd10a51a11f622151a5f9a0dc160e5177812716f50f3003de299be4",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T15:57:51",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Banco de Sabadell, S.A.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "UNF: tier negativo"
        ],
        "id": "SAB.MC"
    },
    {
        "user_id": 1,
        "ticker": "SFT.F",
        "currency": "EUR",
        "price_eur": 38.325,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.9,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 29.71,
        "entry_max_eur": 30.8984,
        "trigger_price_eur": null,
        "stop_loss_eur": 29.1158,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 29.12 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T13:28:27.335848+00:00",
            "vela": "2026-05-21T21:17:04.335848+00:00",
            "cvt": "2026-05-18T13:35:43.335848+00:00",
            "victoria": "2026-05-20T11:35:20.335848+00:00",
            "fmp": "2026-05-25T13:28:27.335848+00:00",
            "unf": "2026-05-22T05:30:56.335848+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "c5d3e776599af36b0727ff93fefd38533eb6430e09397c92c2f9998930da5ffb",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:03:09",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "SoftBank Group Corp.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "UNF: tier negativo"
        ],
        "id": "SFT.F"
    },
    {
        "user_id": 1,
        "ticker": "SLR.MC",
        "currency": "EUR",
        "price_eur": 24.33,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 2.7,
        "quality_score": 20,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 23.35,
        "entry_max_eur": 24.284,
        "trigger_price_eur": null,
        "stop_loss_eur": 22.883,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 22.88 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T13:28:27.383663+00:00",
            "vela": "2026-05-21T21:17:04.383663+00:00",
            "cvt": "2026-05-26T21:25:42.383663+00:00",
            "victoria": "2026-05-20T11:47:05.383663+00:00",
            "fmp": "2026-05-25T13:28:27.383663+00:00",
            "unf": "2026-05-26T21:25:42.383663+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "3baba1cb3eee03f52577f76af8b81112ac7eb5c6167e5eb744cb86481eb8df98",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:04:17",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Solaria Energía y Medio Ambiente, S.A.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "SLR.MC"
    },
    {
        "user_id": 1,
        "ticker": "SU.PA",
        "currency": "EUR",
        "price_eur": 269.1,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 71.8,
        "conviction_pct": 24,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 260.55,
        "entry_max_eur": 270.972,
        "trigger_price_eur": 274.417,
        "stop_loss_eur": 255.339,
        "target_1_eur": 271.7,
        "target_2_eur": null,
        "upside_pct": 0.97,
        "risk_reward": 0.05,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (24/100), Recorrido limitado (1.0%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 255.34 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T15:05:06.939814+00:00",
            "vela": "2026-05-28T05:25:35.939814+00:00",
            "cvt": "2026-05-28T04:07:07.939814+00:00",
            "victoria": "2026-05-27T23:15:45.939814+00:00",
            "fmp": "2026-05-27T15:05:06.939814+00:00",
            "unf": "2026-06-18T14:05:43.939814+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "2e52afcb6bf6a3602f959d8346cf6dc38e363b2fb96fc0bd0b918fbaeb55fcfc",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T10:10:40",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Schneider Electric S.E.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "SU.PA"
    },
    {
        "user_id": 1,
        "ticker": "SBUX",
        "currency": "USD",
        "price_eur": 87.7849,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.5,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 83.3957,
        "entry_max_eur": 86.9071,
        "trigger_price_eur": 92.7615,
        "stop_loss_eur": 73.871,
        "target_1_eur": 93.2179,
        "target_2_eur": 95.9344,
        "upside_pct": 5.23,
        "risk_reward": 0.48,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Recorrido bajo (3-10%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "low_upside",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 73.87 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.924099+00:00",
            "vela": "2026-05-21T21:17:04.924099+00:00",
            "cvt": "2026-05-18T13:16:01.924099+00:00",
            "victoria": "2026-05-18T13:16:57.924099+00:00",
            "fmp": "2026-05-27T21:29:59.924099+00:00",
            "unf": "2026-05-28T21:52:35.924099+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "e6a0bec0942baab5dfc0d0fe6ad13192821f421cc6348214bb5e4155f951bd0c",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:58:21",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Starbucks Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "Recorrido bajo (3-10%)",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "SBUX"
    },
    {
        "user_id": 1,
        "ticker": "TSLA",
        "currency": "USD",
        "price_eur": 373.0392,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6.4,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 362.1087,
        "entry_max_eur": 376.593,
        "trigger_price_eur": null,
        "stop_loss_eur": 354.8665,
        "target_1_eur": 387.0046,
        "target_2_eur": 393.9873,
        "upside_pct": 5.74,
        "risk_reward": 0.48,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Recorrido bajo (3-10%).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "low_upside",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 354.87 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T18:32:13.712612+00:00",
            "vela": "2026-05-24T01:40:19.712612+00:00",
            "cvt": "2026-05-20T08:06:46.712612+00:00",
            "victoria": "2026-05-20T09:17:26.712612+00:00",
            "fmp": "2026-05-26T18:32:13.712612+00:00",
            "unf": "2026-05-28T11:20:51.712612+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "3f25b28bdc1d41c1d1dae31ebaa94f89ae878ea6730bbc9cb6da4be72d9292f3",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-26T20:55:11",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Tesla, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Recorrido bajo (3-10%)",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "TSLA"
    },
    {
        "user_id": 1,
        "ticker": "USGO",
        "currency": "USD",
        "price_eur": 9.3001,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 9,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 8.9178,
        "entry_max_eur": 9.2745,
        "trigger_price_eur": null,
        "stop_loss_eur": 8.7394,
        "target_1_eur": 26.4189,
        "target_2_eur": 34.9783,
        "upside_pct": 196.24,
        "risk_reward": 32.04,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 196.2",
            "R/R 32.0",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 8.74 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:00.184805+00:00",
            "vela": "2026-05-25T21:05:38.184805+00:00",
            "cvt": "2026-05-20T04:46:11.184805+00:00",
            "victoria": "2026-05-20T11:47:28.184805+00:00",
            "fmp": "2026-05-27T14:11:00.184805+00:00",
            "unf": "2026-05-21T15:53:21.184805+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "0d1b86344f60cc4602379f058db7a3b8564635c2d503abbbabfa61160e01b646",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:30:47",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "U.S. GoldMining Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "UNF: tier negativo"
        ],
        "id": "USGO"
    },
    {
        "user_id": 1,
        "ticker": "WPC",
        "currency": "USD",
        "price_eur": 64.2118,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.6,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 63.9197,
        "entry_max_eur": 66.4765,
        "trigger_price_eur": null,
        "stop_loss_eur": 62.6413,
        "target_1_eur": 65.1236,
        "target_2_eur": 65.5795,
        "upside_pct": 1.77,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_FUERTE",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside"
        ],
        "invalidators_json": [
            "Perder 62.64 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_FUERTE",
            "FMP": "B",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:01.955589+00:00",
            "vela": "2026-05-26T15:25:48.955589+00:00",
            "cvt": "2026-05-20T12:18:27.955589+00:00",
            "victoria": "2026-05-26T08:27:16.955589+00:00",
            "fmp": "2026-05-27T14:11:01.955589+00:00",
            "unf": "2026-06-18T14:30:31.955589+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "b9c78eb5a18887940bf6d46925c350d89fc169d0809bcf3cc7becb91af2af814",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:15:34",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "W. P. Carey Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)"
        ],
        "id": "WPC"
    },
    {
        "user_id": 1,
        "ticker": "SO",
        "currency": "USD",
        "price_eur": 80.7881,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 0,
        "quality_score": 0,
        "quality_state": "BROKEN",
        "entry_min_eur": 78.9813,
        "entry_max_eur": 82.1406,
        "trigger_price_eur": null,
        "stop_loss_eur": 77.4017,
        "target_1_eur": 85.7175,
        "target_2_eur": 88.1822,
        "upside_pct": 5.52,
        "risk_reward": 0.75,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Recorrido bajo (3-10%).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "low_upside",
            "report_bad",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 77.40 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T18:17:42.881742+00:00",
            "vela": "2026-05-21T21:17:04.881742+00:00",
            "cvt": "2026-05-18T13:57:04.881742+00:00",
            "victoria": "2026-05-19T17:13:46.881742+00:00",
            "fmp": "2026-05-27T18:17:42.881742+00:00",
            "unf": "2026-05-28T19:41:21.881742+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "d410f41a0028276c22a1ea7143ad376a307f355335ce5b968035176cd27d51db",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T17:10:17",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "The Southern Company",
        "veto_reasons_human": [
            "CVT: descartar",
            "Recorrido bajo (3-10%)",
            "Informe roto / FMP 429",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "SO"
    },
    {
        "user_id": 1,
        "ticker": "SQM",
        "currency": "USD",
        "price_eur": 70.1133,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 66.6076,
        "entry_max_eur": 69.4122,
        "trigger_price_eur": 72.0734,
        "stop_loss_eur": 59.0004,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -2.47,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 59.00 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T15:06:26.907423+00:00",
            "vela": "2026-05-21T21:17:04.907423+00:00",
            "cvt": "2026-05-20T12:04:16.907423+00:00",
            "victoria": "2026-05-19T17:17:26.907423+00:00",
            "fmp": "2026-05-27T15:06:26.907423+00:00",
            "unf": "2026-05-27T19:57:49.907423+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "no_upside"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "97f204b9054fe9ff5c3b5f8656a53f627818b9385a73fa84487cd8935c2c0091",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T15:20:13",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Sociedad Química y Minera de Chile S.A.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "SQM"
    },
    {
        "user_id": 1,
        "ticker": "WDC",
        "currency": "USD",
        "price_eur": 456.3816,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6.6,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 391.5942,
        "entry_max_eur": 407.258,
        "trigger_price_eur": null,
        "stop_loss_eur": 383.7623,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -12.35,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 383.76 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:01.025983+00:00",
            "vela": "2026-05-27T06:43:35.025983+00:00",
            "cvt": "2026-05-20T12:04:36.025983+00:00",
            "victoria": "2026-05-20T11:54:10.025983+00:00",
            "fmp": "2026-05-27T14:11:01.025983+00:00",
            "unf": "2026-06-18T14:05:44.025983+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "e353093fd4eeb50563f55be47d5b80ae38dcd3fe962c8db93c0ebfcfe5eba67e",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:21:03",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Western Digital Corporation",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "WDC"
    },
    {
        "user_id": 1,
        "ticker": "SCYR.MC",
        "currency": "EUR",
        "price_eur": 4.738,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 2.8,
        "quality_score": 20,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 4.02,
        "entry_max_eur": 4.1808,
        "trigger_price_eur": 4.9187,
        "stop_loss_eur": 3.9396,
        "target_1_eur": 4.87,
        "target_2_eur": null,
        "upside_pct": 2.79,
        "risk_reward": 2.86,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "R/R 2.9",
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 3.94 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.341752+00:00",
            "vela": "2026-05-21T21:17:04.341752+00:00",
            "cvt": "2026-05-18T13:39:13.341752+00:00",
            "victoria": "2026-05-19T17:07:50.341752+00:00",
            "fmp": "2026-05-27T21:29:59.341752+00:00",
            "unf": "2026-05-24T18:10:43.341752+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "0a0adb0ddad9086cad6c4785d62a50f1c4492a7207a08414028c6d584bfac3aa",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T09:05:45",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Sacyr, S.A.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "SCYR.MC"
    },
    {
        "user_id": 1,
        "ticker": "TA.TO",
        "currency": "CAD",
        "price_eur": 11.849,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 2.5,
        "quality_score": 20,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 10.5049,
        "entry_max_eur": 10.9251,
        "trigger_price_eur": null,
        "stop_loss_eur": 10.2948,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Victoria: evitar.",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "victoria_avoid",
            "upside_unknown",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 10.29 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "VENTA",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:27:48.915528+00:00",
            "vela": "2026-05-21T21:17:04.915528+00:00",
            "cvt": "2026-05-19T13:06:00.915528+00:00",
            "victoria": "2026-05-19T18:38:41.915528+00:00",
            "fmp": "2026-05-27T14:27:48.915528+00:00",
            "unf": "2026-05-24T18:10:43.915528+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "victoria_sell",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "400bc44b064f7a8d563ee9a1e9aa9ba0e7dc696566c5439df7810dc79c96d079",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:15:34",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "TransAlta Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "Victoria: evitar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "TA.TO"
    },
    {
        "user_id": 1,
        "ticker": "RYCEF",
        "currency": "USD",
        "price_eur": 14.8789,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 53.5,
        "conviction_pct": 22.3,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 13.0603,
        "entry_max_eur": 13.5827,
        "trigger_price_eur": null,
        "stop_loss_eur": 12.7991,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (22/100).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 12.80 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.958579+00:00",
            "vela": "2026-05-21T21:17:03.958579+00:00",
            "cvt": "2026-05-20T12:17:15.958579+00:00",
            "victoria": "2026-05-20T09:01:57.958579+00:00",
            "fmp": "2026-05-27T21:29:59.958579+00:00",
            "unf": "2026-05-27T20:11:09.958579+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "1235807b19436c7f9d9cff64ef1bfc69fddb5742d6786542ce31bd7420405543",
        "previous_action": "REJECT",
        "changed_at": "2026-05-27T19:58:21",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Rolls-Royce Holdings plc",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "RYCEF"
    },
    {
        "user_id": 1,
        "ticker": "SIRI",
        "currency": "USD",
        "price_eur": 25.5101,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.6,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 25.278,
        "entry_max_eur": 26.2891,
        "trigger_price_eur": null,
        "stop_loss_eur": 24.7724,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -3.77,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 24.77 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.869600+00:00",
            "vela": "2026-05-27T06:43:34.869600+00:00",
            "cvt": "2026-05-21T05:55:46.869600+00:00",
            "victoria": "2026-05-19T11:47:20.869600+00:00",
            "fmp": "2026-05-27T21:29:59.869600+00:00",
            "unf": "2026-06-18T14:30:31.869600+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "1768566112a2fe44b58eb869f9825e30075e88dd9538a08741322edc89c2cfb4",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T18:27:15",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Sirius XM Holdings Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "SIRI"
    },
    {
        "user_id": 1,
        "ticker": "TEF.MC",
        "currency": "EUR",
        "price_eur": 3.996,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 0.7,
        "quality_score": 5,
        "quality_state": "BROKEN",
        "entry_min_eur": 3.7962,
        "entry_max_eur": 3.956,
        "trigger_price_eur": 4.1521,
        "stop_loss_eur": 3.3626,
        "target_1_eur": 4.111,
        "target_2_eur": null,
        "upside_pct": 2.88,
        "risk_reward": 0.26,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: inputs sin cambios, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_stale",
            "upside_unknown",
            "report_bad",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 3.36 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:27:48.374718+00:00",
            "vela": "2026-05-21T21:17:04.374718+00:00",
            "cvt": "2026-05-19T14:34:31.374718+00:00",
            "victoria": "2026-05-19T18:40:34.374718+00:00",
            "fmp": "2026-05-27T14:27:48.374718+00:00",
            "unf": "2026-05-24T18:10:43.374718+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "e8a97ba892fa586f4e9fd24968a1391dbd88f1ddf49c3a03829a0aa3c132c21a",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:13:33",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Telefónica, S.A.",
        "veto_reasons_human": [
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "Informe roto / FMP 429",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "TEF.MC"
    },
    {
        "user_id": 1,
        "ticker": "RIG",
        "currency": "USD",
        "price_eur": 5.3135,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.3,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 5.0478,
        "entry_max_eur": 5.2604,
        "trigger_price_eur": 6.0179,
        "stop_loss_eur": 4.4713,
        "target_1_eur": 5.6962,
        "target_2_eur": 5.8876,
        "upside_pct": -2.64,
        "risk_reward": 0.55,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_FUERTE",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "fmp_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 4.47 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_FUERTE",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.775047+00:00",
            "vela": "2026-05-26T14:25:15.775047+00:00",
            "cvt": "2026-05-20T11:40:42.775047+00:00",
            "victoria": "2026-05-19T21:26:10.775047+00:00",
            "fmp": "2026-05-27T21:29:59.775047+00:00",
            "unf": "2026-05-28T10:26:17.775047+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "fmp_sell",
            "unf_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "07b1a87fb54efc91cee558aa8273abfd626b16340721378221c41c9995d4de5c",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:41:05",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Transocean Ltd.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "FMP: rating venta",
            "UNF: tier negativo"
        ],
        "id": "RIG"
    },
    {
        "user_id": 1,
        "ticker": "RIO",
        "currency": "USD",
        "price_eur": 91.6625,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.7,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 86.7703,
        "entry_max_eur": 90.2411,
        "trigger_price_eur": 97.2945,
        "stop_loss_eur": 85.0349,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -2.38,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 85.03 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.873570+00:00",
            "vela": "2026-05-27T03:40:08.873570+00:00",
            "cvt": "2026-05-20T12:03:17.873570+00:00",
            "victoria": "2026-05-20T11:32:28.873570+00:00",
            "fmp": "2026-05-27T21:29:59.873570+00:00",
            "unf": "2026-06-18T14:30:32.873570+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "9e5be21d443b84394e4694f074debb3ae7819371b3cede5f6b26bf04c0e295d9",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:58:21",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Rio Tinto Group",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "RIO"
    },
    {
        "user_id": 1,
        "ticker": "SCCO",
        "currency": "USD",
        "price_eur": 161.4261,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.3,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 153.3548,
        "entry_max_eur": 159.8118,
        "trigger_price_eur": 164.8901,
        "stop_loss_eur": 135.84,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -13.08,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 135.84 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.974640+00:00",
            "vela": "2026-05-27T06:43:34.974640+00:00",
            "cvt": "2026-05-20T11:44:29.974640+00:00",
            "victoria": "2026-05-19T21:30:00.974640+00:00",
            "fmp": "2026-05-27T21:29:59.974640+00:00",
            "unf": "2026-06-18T14:30:31.974640+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "87e72a02a781234e9c7b223b450db060b7cd50070c53ea9947caaf4b2952a719",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:12:43",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Southern Copper Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "SCCO"
    },
    {
        "user_id": 1,
        "ticker": "TSEM",
        "currency": "USD",
        "price_eur": 243.2815,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.3,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 213.1258,
        "entry_max_eur": 221.6508,
        "trigger_price_eur": null,
        "stop_loss_eur": 208.8633,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -9.21,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_FUERTE",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 208.86 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_FUERTE",
            "FMP": "B-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:10:59.829193+00:00",
            "vela": "2026-05-21T21:17:04.829193+00:00",
            "cvt": "2026-05-19T04:44:55.829193+00:00",
            "victoria": "2026-05-19T18:43:44.829193+00:00",
            "fmp": "2026-05-27T14:10:59.829193+00:00",
            "unf": "2026-05-27T18:37:19.829193+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "655f1989488206d9dac88ce9768c7bb4aeae6c411991736acbccf23c9f2f05e2",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:04:43",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Tower Semiconductor Ltd.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "TSEM"
    },
    {
        "user_id": 1,
        "ticker": "TTMI",
        "currency": "USD",
        "price_eur": 157.8405,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.1,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 136.4824,
        "entry_max_eur": 141.9417,
        "trigger_price_eur": null,
        "stop_loss_eur": 133.7528,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -16.63,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 133.75 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:10:59.888630+00:00",
            "vela": "2026-05-21T21:17:04.888630+00:00",
            "cvt": "2026-05-20T12:12:23.888630+00:00",
            "victoria": "2026-05-19T21:36:42.888630+00:00",
            "fmp": "2026-05-27T14:10:59.888630+00:00",
            "unf": "2026-05-20T13:32:58.888630+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "eace355e4d05818b643fd728f2de0e9b1235f0844cec9b7d1acf2dbd8a89049d",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:11:26",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "TTM Technologies, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "TTMI"
    },
    {
        "user_id": 1,
        "ticker": "TXN",
        "currency": "USD",
        "price_eur": 271.6674,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.6,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 227.671,
        "entry_max_eur": 236.7778,
        "trigger_price_eur": null,
        "stop_loss_eur": 223.1176,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -12.9,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 223.12 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:10:59.070490+00:00",
            "vela": "2026-05-25T20:00:49.070490+00:00",
            "cvt": "2026-05-18T15:17:47.070490+00:00",
            "victoria": "2026-05-20T11:44:00.070490+00:00",
            "fmp": "2026-05-27T14:10:59.070490+00:00",
            "unf": "2026-05-24T18:10:43.070490+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "9ffd9be36738bdc40ba09f150f3efffafd601277f73dd7097904a91ad1d30007",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:15:34",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Texas Instruments Incorporated",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "UNF: tier negativo"
        ],
        "id": "TXN"
    },
    {
        "user_id": 1,
        "ticker": "SMSN.L",
        "currency": "GBp",
        "price_eur": 58.1557,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 79.3,
        "conviction_pct": 42.1,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 56.735,
        "entry_max_eur": 59.0044,
        "trigger_price_eur": 68.5365,
        "stop_loss_eur": 55.6003,
        "target_1_eur": 67.8579,
        "target_2_eur": null,
        "upside_pct": 16.68,
        "risk_reward": 2.6,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (42/100).",
        "why_now_json": [
            "R/R 2.6",
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 55.60 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T20:28:22.861274+00:00",
            "vela": "2026-06-18T14:30:50.861274+00:00",
            "cvt": "2026-06-18T14:37:04.861274+00:00",
            "victoria": "2026-06-18T14:33:24.861274+00:00",
            "fmp": "2026-05-27T20:28:22.861274+00:00",
            "unf": "2026-06-18T14:37:04.861274+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:37:35",
        "snapshot_hash": "fc620398c39e05c9332a90553678cfffe8dd6335c4363250717edd8e1f95346b",
        "previous_action": "WAIT",
        "changed_at": "2026-06-18T14:37:34",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:37:35",
        "expires_at": "2026-06-19T14:37:34",
        "company_name": "Samsung Electronics Co., Ltd.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "SMSN.L"
    },
    {
        "user_id": 1,
        "ticker": "SESG.PA",
        "currency": "EUR",
        "price_eur": 9.42,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 2.6,
        "quality_score": 20,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 7.57,
        "entry_max_eur": 7.8728,
        "trigger_price_eur": null,
        "stop_loss_eur": 7.4186,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 7.42 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.338829+00:00",
            "vela": "2026-05-21T21:17:04.338829+00:00",
            "cvt": "2026-05-18T13:51:48.338829+00:00",
            "victoria": "2026-05-20T09:04:29.338829+00:00",
            "fmp": "2026-05-27T21:29:59.338829+00:00",
            "unf": "2026-05-28T04:10:57.338829+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "fcc490b4a44081865423dcc02cbe052f1bb8b5f0e0c5462bfee083b0f5976028",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T15:25:13",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "SES S.A.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "SESG.PA"
    },
    {
        "user_id": 1,
        "ticker": "S",
        "currency": "USD",
        "price_eur": 15.4333,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 0,
        "quality_score": 0,
        "quality_state": "BROKEN",
        "entry_min_eur": 14.6616,
        "entry_max_eur": 15.279,
        "trigger_price_eur": 16.2476,
        "stop_loss_eur": 12.9872,
        "target_1_eur": 15.8943,
        "target_2_eur": 16.1248,
        "upside_pct": -1.12,
        "risk_reward": 0.27,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "report_bad",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 12.99 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.940583+00:00",
            "vela": "2026-05-26T14:25:15.940583+00:00",
            "cvt": "2026-05-18T14:30:50.940583+00:00",
            "victoria": "2026-05-19T01:57:03.940583+00:00",
            "fmp": "2026-05-27T21:29:59.940583+00:00",
            "unf": "2026-05-24T18:10:43.940583+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "f80f32cb8a33e1130eec51cb8d70f835d83052b7db8f289a7acca589e0438fdd",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:26:56",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "SentinelOne, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Informe roto / FMP 429",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "S"
    },
    {
        "user_id": 1,
        "ticker": "SMEGF",
        "currency": "USD",
        "price_eur": 175.4107,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 0.7,
        "quality_score": 5,
        "quality_state": "BROKEN",
        "entry_min_eur": 174.9679,
        "entry_max_eur": 181.9666,
        "trigger_price_eur": 184.0989,
        "stop_loss_eur": 171.4685,
        "target_1_eur": 182.2761,
        "target_2_eur": null,
        "upside_pct": 3.91,
        "risk_reward": 0.03,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown",
            "report_bad"
        ],
        "invalidators_json": [
            "Perder 171.47 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.332815+00:00",
            "vela": "2026-05-27T06:43:34.332815+00:00",
            "cvt": "2026-05-26T21:02:19.332815+00:00",
            "victoria": "2026-05-20T09:09:51.332815+00:00",
            "fmp": "2026-05-27T21:29:59.332815+00:00",
            "unf": "2026-06-18T14:05:43.332815+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "98c8fe72de2adab539a71a8866b7d454fc37882733d1f37c274de7d3a1c1d4f2",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:25:55",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Siemens Energy AG",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "Informe roto / FMP 429"
        ],
        "id": "SMEGF"
    },
    {
        "user_id": 1,
        "ticker": "WMT",
        "currency": "USD",
        "price_eur": 101.769,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 71,
        "conviction_pct": 37.7,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 96.6806,
        "entry_max_eur": 100.7513,
        "trigger_price_eur": 116.1801,
        "stop_loss_eur": 85.6386,
        "target_1_eur": 119.6282,
        "target_2_eur": 128.5578,
        "upside_pct": 15.77,
        "risk_reward": 1.25,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (38/100), R/R 1.25 (<2).",
        "why_now_json": [
            "upside_pct 15.8",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed"
        ],
        "invalidators_json": [
            "Perder 85.64 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:01.518869+00:00",
            "vela": "2026-05-28T05:25:35.518869+00:00",
            "cvt": "2026-06-18T14:39:32.518869+00:00",
            "victoria": "2026-05-27T22:31:53.518869+00:00",
            "fmp": "2026-05-27T14:11:01.518869+00:00",
            "unf": "2026-06-18T14:39:32.518869+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:39:35",
        "snapshot_hash": "7e0e7db4d516af8169b3f986abe0d146d61ee8be95c5290a02066155911a09d8",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:39:35",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:39:35",
        "expires_at": "2026-06-19T14:39:35",
        "company_name": "Walmart Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener"
        ],
        "id": "WMT"
    },
    {
        "user_id": 1,
        "ticker": "RGLD",
        "currency": "USD",
        "price_eur": 187.7186,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 66.5,
        "conviction_pct": 33.8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 178.3327,
        "entry_max_eur": 185.8414,
        "trigger_price_eur": 213.0597,
        "stop_loss_eur": 157.9652,
        "target_1_eur": 270.6326,
        "target_2_eur": 312.0896,
        "upside_pct": 42.99,
        "risk_reward": 3.04,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (34/100).",
        "why_now_json": [
            "upside_pct 43.0",
            "R/R 3.0",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale"
        ],
        "invalidators_json": [
            "Perder 157.97 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.621632+00:00",
            "vela": "2026-05-28T05:25:34.621632+00:00",
            "cvt": "2026-05-28T04:09:34.621632+00:00",
            "victoria": "2026-05-27T23:13:13.621632+00:00",
            "fmp": "2026-05-27T21:29:59.621632+00:00",
            "unf": "2026-06-18T14:05:44.621632+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "FMP",
            "UNF>=1",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "3fe06382d6f75a33c2acd2b573569798c927fd6803168a00d838229a67dd969c",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T10:13:40",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Royal Gold, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios"
        ],
        "id": "RGLD"
    },
    {
        "user_id": 1,
        "ticker": "UAL",
        "currency": "USD",
        "price_eur": 97.3659,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 66.5,
        "conviction_pct": 33.7,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 76.5662,
        "entry_max_eur": 79.6288,
        "trigger_price_eur": null,
        "stop_loss_eur": 75.0349,
        "target_1_eur": 116.9305,
        "target_2_eur": 126.7128,
        "upside_pct": 36.15,
        "risk_reward": 8.12,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (34/100).",
        "why_now_json": [
            "upside_pct 36.2",
            "R/R 8.1",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale"
        ],
        "invalidators_json": [
            "Perder 75.03 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:10:59.650797+00:00",
            "vela": "2026-05-21T21:17:04.650797+00:00",
            "cvt": "2026-05-28T15:48:26.650797+00:00",
            "victoria": "2026-05-29T00:44:42.650797+00:00",
            "fmp": "2026-05-27T14:10:59.650797+00:00",
            "unf": "2026-06-18T14:05:44.650797+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "FMP",
            "UNF>=1",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "891710354764ffd8bec25ec6587c12325e37a30c688dc7cec4293d538318440f",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:05:43",
        "created_at": "2026-05-20T00:04:05",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "United Airlines Holdings, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios"
        ],
        "id": "UAL"
    },
    {
        "user_id": 1,
        "ticker": "BMNR",
        "currency": "USD",
        "price_eur": 16.1813,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 96.5,
        "conviction_pct": 8.7,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 15.3722,
        "entry_max_eur": 16.0195,
        "trigger_price_eur": 17.1855,
        "stop_loss_eur": 13.6166,
        "target_1_eur": 33.5069,
        "target_2_eur": 42.1697,
        "upside_pct": 106.57,
        "risk_reward": 7.28,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Victoria: evitar.",
        "why_now_json": [
            "upside_pct 106.6",
            "R/R 7.3",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "victoria_avoid",
            "vela_sell",
            "fmp_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 13.62 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "VENTA",
            "VEL": "REDUCIR_VENDER",
            "FMP": "C+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.230529+00:00",
            "vela": "2026-05-26T21:13:21.230529+00:00",
            "cvt": "2026-05-19T07:22:03.230529+00:00",
            "victoria": "2026-05-25T15:44:09.230529+00:00",
            "fmp": "2026-05-27T21:29:59.230529+00:00",
            "unf": "2026-05-28T20:06:46.230529+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "vela_sell",
            "victoria_sell",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "b12bd6f0dab9a2f9989c0ae7c1ab36799ba79074de0d65ece0fe6ccdcc0fd571",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:12:29",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Bitmine Immersion Technologies, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Victoria: evitar",
            "Velas: venta",
            "FMP: rating venta",
            "UNF: tier negativo"
        ],
        "id": "BMNR"
    },
    {
        "user_id": 1,
        "ticker": "CGC",
        "currency": "USD",
        "price_eur": 0.92,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 96.5,
        "conviction_pct": 8.4,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 0.8856,
        "entry_max_eur": 0.921,
        "trigger_price_eur": null,
        "stop_loss_eur": 0.8679,
        "target_1_eur": 12.4319,
        "target_2_eur": 18.1878,
        "upside_pct": 1291.35,
        "risk_reward": 216.78,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Victoria: evitar.",
        "why_now_json": [
            "upside_pct 1291.3",
            "R/R 216.8",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "victoria_avoid",
            "vela_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 0.87 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "VENTA",
            "VEL": "REDUCIR_VENDER",
            "FMP": "B-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.971067+00:00",
            "vela": "2026-05-26T14:26:08.971067+00:00",
            "cvt": "2026-05-20T04:26:30.971067+00:00",
            "victoria": "2026-05-19T20:58:08.971067+00:00",
            "fmp": "2026-05-27T21:29:59.971067+00:00",
            "unf": "2026-05-28T09:55:13.971067+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "vela_sell",
            "victoria_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "7f6a004d32798cbf4af3d351ac55cd1b8bfd8cf3e485e2606717a1f6336906a3",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:11:29",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Canopy Growth Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "Victoria: evitar",
            "Velas: venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "CGC"
    },
    {
        "user_id": 1,
        "ticker": "HD",
        "currency": "USD",
        "price_eur": 273.2852,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 88.2,
        "conviction_pct": 7.5,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 267.2924,
        "entry_max_eur": 277.9841,
        "trigger_price_eur": 284.2938,
        "stop_loss_eur": 261.9466,
        "target_1_eur": 326.7094,
        "target_2_eur": 353.4215,
        "upside_pct": 21.46,
        "risk_reward": 3.04,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "upside_pct 21.5",
            "R/R 3.0",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 261.95 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.122678+00:00",
            "vela": "2026-05-26T14:25:14.122678+00:00",
            "cvt": "2026-05-20T04:48:17.122678+00:00",
            "victoria": "2026-05-18T16:42:41.122678+00:00",
            "fmp": "2026-05-27T21:29:59.122678+00:00",
            "unf": "2026-05-28T21:09:39.122678+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "f82bb0c009849f6b5bbd92001910606cb6a1a2447b6b7a65b876fdc111c1e6ba",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:12:29",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "The Home Depot, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "UNF: tier negativo"
        ],
        "id": "HD"
    },
    {
        "user_id": 1,
        "ticker": "BAM",
        "currency": "USD",
        "price_eur": 41.8441,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 8.3,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 40.7474,
        "entry_max_eur": 42.3773,
        "trigger_price_eur": 42.8489,
        "stop_loss_eur": 39.9325,
        "target_1_eur": 50.2088,
        "target_2_eur": 54.3912,
        "upside_pct": 21.93,
        "risk_reward": 3.2,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, UNF: tier negativo.",
        "why_now_json": [
            "upside_pct 21.9",
            "R/R 3.2",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 39.93 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T16:47:58.470141+00:00",
            "vela": "2026-05-26T21:13:21.470141+00:00",
            "cvt": "2026-05-18T10:39:21.470141+00:00",
            "victoria": "2026-05-20T10:33:41.470141+00:00",
            "fmp": "2026-05-26T16:47:58.470141+00:00",
            "unf": "2026-05-19T20:05:20.470141+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "4f7bb2113cd5cde4e71ad080643f4aad77994e98538b7f4dbc1013dd7aa3a508",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:04:17",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Brookfield Asset Management Ltd.",
        "veto_reasons_human": [
            "CVT: descartar",
            "UNF: tier negativo"
        ],
        "id": "BAM"
    },
    {
        "user_id": 1,
        "ticker": "DIS",
        "currency": "USD",
        "price_eur": 89.5646,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 88.2,
        "conviction_pct": 8.5,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 87.6473,
        "entry_max_eur": 91.1532,
        "trigger_price_eur": 92.5183,
        "stop_loss_eur": 85.8944,
        "target_1_eur": 118.8464,
        "target_2_eur": 133.4873,
        "upside_pct": 34.3,
        "risk_reward": 5.27,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "upside_pct 34.3",
            "R/R 5.3",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 85.89 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.947743+00:00",
            "vela": "2026-05-26T21:13:21.947743+00:00",
            "cvt": "2026-05-20T11:46:03.947743+00:00",
            "victoria": "2026-05-19T15:58:52.947743+00:00",
            "fmp": "2026-05-27T21:29:59.947743+00:00",
            "unf": "2026-05-28T03:53:42.947743+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "6c3801d95df2c481e4fff502c0fd5fcb4d3e6ee659d003cc74f968047e61bbe0",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T21:29:35",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "The Walt Disney Company",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "UNF: tier negativo"
        ],
        "id": "DIS"
    },
    {
        "user_id": 1,
        "ticker": "ISRG",
        "currency": "USD",
        "price_eur": 376.2679,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 88.2,
        "conviction_pct": 8.9,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 371.6215,
        "entry_max_eur": 386.4864,
        "trigger_price_eur": 386.1114,
        "stop_loss_eur": 364.1891,
        "target_1_eur": 534.9074,
        "target_2_eur": 614.2272,
        "upside_pct": 42.11,
        "risk_reward": 6.66,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "upside_pct 42.1",
            "R/R 6.7",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 364.19 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T18:59:46.753951+00:00",
            "vela": "2026-05-24T09:49:58.753951+00:00",
            "cvt": "2026-05-20T12:12:11.753951+00:00",
            "victoria": "2026-05-19T16:24:29.753951+00:00",
            "fmp": "2026-05-25T18:59:46.753951+00:00",
            "unf": "2026-05-17T11:33:39.753951+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "2d7c936c952da4f69dc8bff7a1aeefded3be60acdd5dbc6b122090e3ad50b3d1",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-26T21:25:47",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Intuitive Surgical, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "UNF: tier negativo"
        ],
        "id": "ISRG"
    },
    {
        "user_id": 1,
        "ticker": "JPM",
        "currency": "USD",
        "price_eur": 257.3188,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6.7,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 256.2183,
        "entry_max_eur": 266.467,
        "trigger_price_eur": 274.4636,
        "stop_loss_eur": 251.0939,
        "target_1_eur": 291.0632,
        "target_2_eur": 307.9354,
        "upside_pct": 10.58,
        "risk_reward": 1.6,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Score < 55.",
        "why_now_json": [
            "upside_pct 10.6",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 251.09 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.262411+00:00",
            "vela": "2026-05-26T20:42:55.262411+00:00",
            "cvt": "2026-05-20T04:50:14.262411+00:00",
            "victoria": "2026-05-18T22:12:07.262411+00:00",
            "fmp": "2026-05-27T21:29:59.262411+00:00",
            "unf": "2026-05-27T20:35:39.262411+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "49f9d0dbc84525fa8763f55185fac6fdcc09c47896fc3ba89cf0ac698949c8cf",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:18:49",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "JPMorgan Chase & Co.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "JPM"
    },
    {
        "user_id": 1,
        "ticker": "MA",
        "currency": "USD",
        "price_eur": 425.6319,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 88.2,
        "conviction_pct": 8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 421.247,
        "entry_max_eur": 438.0969,
        "trigger_price_eur": 456.1049,
        "stop_loss_eur": 412.8221,
        "target_1_eur": 563.225,
        "target_2_eur": 632.0216,
        "upside_pct": 31.5,
        "risk_reward": 4.95,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "upside_pct 31.5",
            "R/R 5.0",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 412.82 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.714082+00:00",
            "vela": "2026-05-21T21:17:02.714082+00:00",
            "cvt": "2026-05-20T12:07:51.714082+00:00",
            "victoria": "2026-05-19T10:23:55.714082+00:00",
            "fmp": "2026-05-27T21:29:59.714082+00:00",
            "unf": "2026-05-28T18:34:33.714082+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "976e7daa079c2084d6187acc100d58d737595dc50d21acd74373c75b54b768e1",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:45:42",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Mastercard Incorporated",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "UNF: tier negativo"
        ],
        "id": "MA"
    },
    {
        "user_id": 1,
        "ticker": "NKE",
        "currency": "USD",
        "price_eur": 38.3654,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 88.2,
        "conviction_pct": 8.5,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 35.9692,
        "entry_max_eur": 37.408,
        "trigger_price_eur": 40.3191,
        "stop_loss_eur": 35.2498,
        "target_1_eur": 59.0323,
        "target_2_eur": 69.3658,
        "upside_pct": 53.82,
        "risk_reward": 10.02,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "upside_pct 53.8",
            "R/R 10.0",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 35.25 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T18:59:47.821317+00:00",
            "vela": "2026-05-21T21:17:03.821317+00:00",
            "cvt": "2026-05-18T11:02:19.821317+00:00",
            "victoria": "2026-05-20T11:21:35.821317+00:00",
            "fmp": "2026-05-25T18:59:47.821317+00:00",
            "unf": "2026-05-24T18:10:43.821317+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "92d335906ce9ca0b696059439079edc3b7ee2d8163ca5443ac25e24e33077fd7",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-26T21:25:47",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "NIKE, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "UNF: tier negativo"
        ],
        "id": "NKE"
    },
    {
        "user_id": 1,
        "ticker": "OCGN",
        "currency": "USD",
        "price_eur": 1.1865,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 88.2,
        "conviction_pct": 8.4,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 1.1272,
        "entry_max_eur": 1.1746,
        "trigger_price_eur": 1.2852,
        "stop_loss_eur": 0.9984,
        "target_1_eur": 4.2958,
        "target_2_eur": 5.8504,
        "upside_pct": 273.13,
        "risk_reward": 17.71,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "upside_pct 273.1",
            "R/R 17.7",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 1.00 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "D+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.838963+00:00",
            "vela": "2026-05-21T21:17:03.838963+00:00",
            "cvt": "2026-05-18T13:06:45.838963+00:00",
            "victoria": "2026-05-19T16:46:43.838963+00:00",
            "fmp": "2026-05-27T21:29:59.838963+00:00",
            "unf": "2026-05-28T08:44:44.838963+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "vela_sell",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "585bacc49ba184bc9badd5e46bd429f95d2a79572f9b4a7cbe2ca2c52191f8f1",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:56:20",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Ocugen, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "OCGN"
    },
    {
        "user_id": 1,
        "ticker": "BMW.DE",
        "currency": "EUR",
        "price_eur": 77.02,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85.2,
        "conviction_pct": 4.6,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 73.72,
        "entry_max_eur": 76.6688,
        "trigger_price_eur": 81.8908,
        "stop_loss_eur": 72.2456,
        "target_1_eur": 81.08,
        "target_2_eur": null,
        "upside_pct": 5.27,
        "risk_reward": 1,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "upside_unknown",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 72.25 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "A-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.541673+00:00",
            "vela": "2026-05-21T21:17:00.541673+00:00",
            "cvt": "2026-05-18T10:54:35.541673+00:00",
            "victoria": "2026-05-18T16:07:16.541673+00:00",
            "fmp": "2026-05-27T21:29:59.541673+00:00",
            "unf": "2026-06-18T14:05:44.541673+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "score_below_55",
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "FMP"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "052797724ddd6daa80efd6a9f364c3248a89695e52392768fbb244f212c2564b",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:10:20",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Bayerische Motoren Werke AG",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "BMW.DE"
    },
    {
        "user_id": 1,
        "ticker": "CDI.PA",
        "currency": "EUR",
        "price_eur": 454,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.3,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 439,
        "entry_max_eur": 456.56,
        "trigger_price_eur": null,
        "stop_loss_eur": 430.22,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "upside_unknown",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 430.22 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.983799+00:00",
            "vela": "2026-05-21T21:17:01.983799+00:00",
            "cvt": "2026-05-18T11:03:27.983799+00:00",
            "victoria": "2026-05-18T16:14:07.983799+00:00",
            "fmp": "2026-05-27T21:29:59.983799+00:00",
            "unf": "2026-05-28T10:26:17.983799+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "d042b017840d57e5c2de717638fd06d323620dff0cd17d980eff0cd65d1797b3",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T16:07:16",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Christian Dior SE",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "UNF: tier negativo"
        ],
        "id": "CDI.PA"
    },
    {
        "user_id": 1,
        "ticker": "FRE.DE",
        "currency": "EUR",
        "price_eur": 36.93,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85.2,
        "conviction_pct": 4.9,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 35.0835,
        "entry_max_eur": 36.5607,
        "trigger_price_eur": 41.0565,
        "stop_loss_eur": 31.0766,
        "target_1_eur": 40.65,
        "target_2_eur": null,
        "upside_pct": 10.07,
        "risk_reward": 0.75,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "upside_unknown",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 31.08 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "A-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.741407+00:00",
            "vela": "2026-05-21T21:17:01.741407+00:00",
            "cvt": "2026-05-20T04:40:24.741407+00:00",
            "victoria": "2026-05-19T16:09:38.741407+00:00",
            "fmp": "2026-05-27T21:29:59.741407+00:00",
            "unf": "2026-06-18T14:30:31.741407+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "FMP"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "598afda6108a59bdbf623b4e524c943623763954510884e86bfb98d5907f7d02",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T16:07:13",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Fresenius SE & Co. KGaA",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "UNF: tier negativo"
        ],
        "id": "FRE.DE"
    },
    {
        "user_id": 1,
        "ticker": "HESAF",
        "currency": "USD",
        "price_eur": 1613.7025,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.1,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 1601.846,
        "entry_max_eur": 1665.9198,
        "trigger_price_eur": 1670.5236,
        "stop_loss_eur": 1569.8091,
        "target_1_eur": 1653.9838,
        "target_2_eur": null,
        "upside_pct": 2.5,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 1569.81 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.407337+00:00",
            "vela": "2026-05-26T21:13:21.407337+00:00",
            "cvt": "2026-05-19T11:36:26.407337+00:00",
            "victoria": "2026-05-19T18:06:36.407337+00:00",
            "fmp": "2026-05-27T21:29:59.407337+00:00",
            "unf": "2026-05-20T16:12:02.407337+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "22fa91bec3c5842417857408623936d282964d5271f333c28ff1cbd6075bf702",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:20:37",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Hermès International Société en commandite par actions",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "UNF: tier negativo"
        ],
        "id": "HESAF"
    },
    {
        "user_id": 1,
        "ticker": "MBG.DE",
        "currency": "EUR",
        "price_eur": 52.51,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.3,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 48.77,
        "entry_max_eur": 50.7208,
        "trigger_price_eur": null,
        "stop_loss_eur": 47.7946,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "upside_unknown",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 47.79 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "A-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.717227+00:00",
            "vela": "2026-05-21T21:17:02.717227+00:00",
            "cvt": "2026-05-18T12:56:30.717227+00:00",
            "victoria": "2026-05-20T11:13:01.717227+00:00",
            "fmp": "2026-05-27T21:29:59.717227+00:00",
            "unf": "2026-06-18T14:30:31.717227+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "score_below_55",
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "FMP"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "eb0ab60470edb52ba870505fb7d9c3ad3f19aecb5c8e6b0edf66f925115bec4f",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:52:01",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Mercedes-Benz Group AG",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "MBG.DE"
    },
    {
        "user_id": 1,
        "ticker": "MC.PA",
        "currency": "EUR",
        "price_eur": 483.95,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 4.9,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 456.5,
        "entry_max_eur": 474.76,
        "trigger_price_eur": null,
        "stop_loss_eur": 447.37,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "upside_unknown",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 447.37 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.720215+00:00",
            "vela": "2026-05-21T21:17:02.720215+00:00",
            "cvt": "2026-05-18T10:33:05.720215+00:00",
            "victoria": "2026-05-19T05:54:12.720215+00:00",
            "fmp": "2026-05-27T21:29:59.720215+00:00",
            "unf": "2026-05-24T18:10:43.720215+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "23f6dc04a7c2970d91b4584cfaec407e935cee7f2d19bda043c871023bde9130",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:48:52",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "LVMH Moët Hennessy - Louis Vuitton, Société Européenne",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "UNF: tier negativo"
        ],
        "id": "MC.PA"
    },
    {
        "user_id": 1,
        "ticker": "NNND.F",
        "currency": "EUR",
        "price_eur": 48.75,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 4.5,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 48.3,
        "entry_max_eur": 50.232,
        "trigger_price_eur": null,
        "stop_loss_eur": 47.334,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "upside_unknown",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 47.33 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "A-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T18:59:47.824541+00:00",
            "vela": "2026-05-27T06:43:33.824541+00:00",
            "cvt": "2026-05-20T12:14:23.824541+00:00",
            "victoria": "2026-05-19T06:06:31.824541+00:00",
            "fmp": "2026-05-25T18:59:47.824541+00:00",
            "unf": "2026-06-18T14:30:32.824541+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "FMP"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "7b64d1f9177aeeeb2c9b59cda105a94f0df8d7f752ceec7eb80af8b55cf4e9cd",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:00:44",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Tencent Holdings Limited",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "UNF: tier negativo"
        ],
        "id": "NNND.F"
    },
    {
        "user_id": 1,
        "ticker": "PRG.DE",
        "currency": "EUR",
        "price_eur": 124.72,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85.2,
        "conviction_pct": 4.9,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 121.38,
        "entry_max_eur": 126.2352,
        "trigger_price_eur": 130.088,
        "stop_loss_eur": 118.9524,
        "target_1_eur": 128.8,
        "target_2_eur": null,
        "upside_pct": 3.27,
        "risk_reward": 0.35,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "upside_unknown",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 118.95 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "VENTA_FUERTE",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T17:38:21.798857+00:00",
            "vela": "2026-05-21T21:17:03.798857+00:00",
            "cvt": "2026-05-20T11:39:42.798857+00:00",
            "victoria": "2026-05-19T08:57:38.798857+00:00",
            "fmp": "2026-05-25T17:38:21.798857+00:00",
            "unf": "2026-05-24T18:10:43.798857+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "32bf1e360c18d3776517eef3e5e726109ef091edb37e15dce9706377f379f0f5",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-26T21:25:47",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "The Procter & Gamble Company",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "UNF: tier negativo"
        ],
        "id": "PRG.DE"
    },
    {
        "user_id": 1,
        "ticker": "RED.MC",
        "currency": "EUR",
        "price_eur": 15,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85.2,
        "conviction_pct": 4,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 14.4,
        "entry_max_eur": 14.976,
        "trigger_price_eur": 15.4934,
        "stop_loss_eur": 14.112,
        "target_1_eur": 15.34,
        "target_2_eur": null,
        "upside_pct": 2.27,
        "risk_reward": 0.42,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "upside_unknown",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 14.11 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "VENTA_FUERTE",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T17:38:22.784074+00:00",
            "vela": "2026-05-21T21:17:03.784074+00:00",
            "cvt": "2026-05-18T10:56:36.784074+00:00",
            "victoria": "2026-05-20T11:27:30.784074+00:00",
            "fmp": "2026-05-25T17:38:22.784074+00:00",
            "unf": "2026-05-24T18:10:43.784074+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "vela_sell",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "009c0e00fa7c1e46d50b029cefeaef2f3277427a6731ce85ac0a3a2bae55479c",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-26T20:55:11",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Redeia Corporación, S.A.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "RED.MC"
    },
    {
        "user_id": 1,
        "ticker": "AG",
        "currency": "USD",
        "price_eur": 17.3085,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 66.5,
        "conviction_pct": 34.6,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 16.6162,
        "entry_max_eur": 17.2808,
        "trigger_price_eur": 17.6162,
        "stop_loss_eur": 16.2839,
        "target_1_eur": 23.094,
        "target_2_eur": 25.9868,
        "upside_pct": 38.2,
        "risk_reward": 5.83,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (35/100).",
        "why_now_json": [
            "upside_pct 38.2",
            "R/R 5.8",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale"
        ],
        "invalidators_json": [
            "Perder 16.28 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T17:17:09.209184+00:00",
            "vela": "2026-05-28T03:25:03.209184+00:00",
            "cvt": "2026-05-27T20:43:14.209184+00:00",
            "victoria": "2026-05-27T21:29:05.209184+00:00",
            "fmp": "2026-05-26T17:17:09.209184+00:00",
            "unf": "2026-06-18T14:30:31.209184+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "UNF>=1",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "279faed460bba98348b4de9da167a528c996ae45daa864af4a4f09ad19767990",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T05:32:17",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "First Majestic Silver Corp.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios"
        ],
        "id": "AG"
    },
    {
        "user_id": 1,
        "ticker": "BKNG",
        "currency": "USD",
        "price_eur": 144.7633,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 66.5,
        "conviction_pct": 32.1,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 133.1217,
        "entry_max_eur": 138.4466,
        "trigger_price_eur": null,
        "stop_loss_eur": 130.4593,
        "target_1_eur": 198.2061,
        "target_2_eur": 224.9275,
        "upside_pct": 43.24,
        "risk_reward": 7.48,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (32/100).",
        "why_now_json": [
            "upside_pct 43.2",
            "R/R 7.5",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale"
        ],
        "invalidators_json": [
            "Perder 130.46 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.616244+00:00",
            "vela": "2026-05-26T14:26:08.616244+00:00",
            "cvt": "2026-05-26T21:11:14.616244+00:00",
            "victoria": "2026-05-25T15:38:39.616244+00:00",
            "fmp": "2026-05-27T21:29:59.616244+00:00",
            "unf": "2026-05-28T03:53:42.616244+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "93076499c89f5aca0e1d71a0ac3076efa4110ea2d377d3cf15f76f4e360dd6e5",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T04:00:28",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Booking Holdings Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios"
        ],
        "id": "BKNG"
    },
    {
        "user_id": 1,
        "ticker": "BNR.DE",
        "currency": "EUR",
        "price_eur": 56.48,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 63.5,
        "conviction_pct": 21.4,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 53.656,
        "entry_max_eur": 55.9152,
        "trigger_price_eur": 59.4284,
        "stop_loss_eur": 47.5279,
        "target_1_eur": 58.84,
        "target_2_eur": null,
        "upside_pct": 4.18,
        "risk_reward": 0.35,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (21/100), Recorrido limitado (4.2%).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 47.53 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.528755+00:00",
            "vela": "2026-05-27T06:43:31.528755+00:00",
            "cvt": "2026-05-26T21:05:42.528755+00:00",
            "victoria": "2026-05-19T15:36:28.528755+00:00",
            "fmp": "2026-05-27T21:29:59.528755+00:00",
            "unf": "2026-06-18T14:05:43.528755+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "92e997fa0a215e8a51a060188fe5d2381e5b5eba4779c70c87ccca709a3341c4",
        "previous_action": "REJECT",
        "changed_at": "2026-05-27T16:07:15",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Brenntag SE",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "BNR.DE"
    },
    {
        "user_id": 1,
        "ticker": "CCL",
        "currency": "USD",
        "price_eur": 24.057,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 9.1,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 21.3401,
        "entry_max_eur": 22.1937,
        "trigger_price_eur": null,
        "stop_loss_eur": 20.9133,
        "target_1_eur": 31.0755,
        "target_2_eur": 34.5848,
        "upside_pct": 39.22,
        "risk_reward": 6.94,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, UNF: tier negativo.",
        "why_now_json": [
            "upside_pct 39.2",
            "R/R 6.9",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 20.91 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.215059+00:00",
            "vela": "2026-05-21T21:17:01.215059+00:00",
            "cvt": "2026-05-25T08:25:49.215059+00:00",
            "victoria": "2026-05-20T10:40:45.215059+00:00",
            "fmp": "2026-05-27T21:29:59.215059+00:00",
            "unf": "2026-05-25T08:25:49.215059+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "5c1bb7beb94618b8ef7d964322db4cba02bd077582247a1508a124c7efca3c51",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T16:41:10",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Carnival Corporation & plc",
        "veto_reasons_human": [
            "CVT: descartar",
            "UNF: tier negativo"
        ],
        "id": "CCL"
    },
    {
        "user_id": 1,
        "ticker": "FNV",
        "currency": "USD",
        "price_eur": 191.923,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 66.5,
        "conviction_pct": 29.4,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 191.2524,
        "entry_max_eur": 198.9025,
        "trigger_price_eur": null,
        "stop_loss_eur": 187.4274,
        "target_1_eur": 239.7031,
        "target_2_eur": 263.5932,
        "upside_pct": 23.35,
        "risk_reward": 3.56,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (29/100).",
        "why_now_json": [
            "upside_pct 23.3",
            "R/R 3.6",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale"
        ],
        "invalidators_json": [
            "Perder 187.43 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.667109+00:00",
            "vela": "2026-05-21T21:17:01.667109+00:00",
            "cvt": "2026-05-27T08:00:28.667109+00:00",
            "victoria": "2026-05-27T19:27:27.667109+00:00",
            "fmp": "2026-05-27T21:29:59.667109+00:00",
            "unf": "2026-06-18T14:05:44.667109+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "UNF>=1",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "d8cd1b3583e2703692db930fb9b7aebd20612cc27fc5d40460b566ba365f0c50",
        "previous_action": "REJECT",
        "changed_at": "2026-05-27T21:20:31",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Franco-Nevada Corporation",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios"
        ],
        "id": "FNV"
    },
    {
        "user_id": 1,
        "ticker": "GOOGL",
        "currency": "USD",
        "price_eur": 331.9401,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 7.4,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 255.1507,
        "entry_max_eur": 265.3567,
        "trigger_price_eur": 349.6766,
        "stop_loss_eur": 250.0477,
        "target_1_eur": 352.2519,
        "target_2_eur": 362.4078,
        "upside_pct": 7.06,
        "risk_reward": 5.68,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Recorrido bajo (3-10%).",
        "why_now_json": [
            "R/R 5.7",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "low_upside",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 250.05 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T19:00:21.172751+00:00",
            "vela": "2026-05-26T14:25:14.172751+00:00",
            "cvt": "2026-05-24T18:22:45.172751+00:00",
            "victoria": "2026-05-20T07:58:41.172751+00:00",
            "fmp": "2026-05-26T19:00:21.172751+00:00",
            "unf": "2026-05-27T19:20:09.172751+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "e1dd9952efaee13e12fa5a5a17aaf1a998899404f255c1519a7ae80a6558e44b",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T18:26:15",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Alphabet Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Recorrido bajo (3-10%)",
            "UNF: tier negativo"
        ],
        "id": "GOOGL"
    },
    {
        "user_id": 1,
        "ticker": "NVDA",
        "currency": "USD",
        "price_eur": 183.3229,
        "action": "BUY_LIMIT",
        "action_family": "buy",
        "trigger_kind": "limit",
        "status": "active",
        "confidence_pct": 96,
        "conviction_pct": 58.4,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 174.1568,
        "entry_max_eur": 181.4897,
        "trigger_price_eur": 188.1264,
        "stop_loss_eur": 154.2662,
        "target_1_eur": 263.8625,
        "target_2_eur": 304.1323,
        "upside_pct": 42.63,
        "risk_reward": 3.03,
        "position_size_pct": 2,
        "reason_short": "Comprar sólo si el precio entra en zona (R/R 3.0).",
        "why_now_json": [
            "upside_pct 42.6",
            "R/R 3.0",
            "Velas COMPRA_MANTENER",
            "UNF MEJOR_RECOMENDACION"
        ],
        "veto_reasons_json": [],
        "invalidators_json": [
            "Perder 154.27 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "entry_touched",
                "condition": "price_eur <= 181.4897"
            },
            {
                "type": "invalidated",
                "condition": "price_eur < 154.2662"
            },
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "COMPRA",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "MEJOR_RECOMENDACION"
        },
        "source_freshness_json": {
            "price": "2026-05-26T19:00:22.828350+00:00",
            "vela": "2026-05-27T06:43:33.828350+00:00",
            "cvt": "2026-06-18T14:05:53.828350+00:00",
            "victoria": "2026-05-27T19:50:41.828350+00:00",
            "fmp": "2026-05-26T19:00:22.828350+00:00",
            "unf": "2026-06-18T14:30:32.828350+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "VEL",
            "VIC",
            "FMP",
            "UNF>=2",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "25a58d032d52e70b86258681a58e2a95d8725646aa2c708c79874d670f5aa338",
        "previous_action": "BUY_LIMIT",
        "changed_at": "2026-06-18T14:06:44",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "NVIDIA Corporation",
        "veto_reasons_human": [],
        "id": "NVDA"
    },
    {
        "user_id": 1,
        "ticker": "RCL",
        "currency": "USD",
        "price_eur": 219.9643,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 9.2,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 203.7697,
        "entry_max_eur": 211.9205,
        "trigger_price_eur": null,
        "stop_loss_eur": 199.6943,
        "target_1_eur": 301.4933,
        "target_2_eur": 342.2578,
        "upside_pct": 37.02,
        "risk_reward": 7.33,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, UNF: tier negativo.",
        "why_now_json": [
            "upside_pct 37.0",
            "R/R 7.3",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 199.69 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T17:38:22.393806+00:00",
            "vela": "2026-05-21T21:17:03.393806+00:00",
            "cvt": "2026-05-25T04:11:10.393806+00:00",
            "victoria": "2026-05-19T21:22:23.393806+00:00",
            "fmp": "2026-05-25T17:38:22.393806+00:00",
            "unf": "2026-05-25T04:11:10.393806+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "51b2a2b8d5a9e84b83c3fdbd3c954f5abe051049bb5ad1339db474547bd466b1",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:03:09",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Royal Caribbean Cruises Ltd.",
        "veto_reasons_human": [
            "CVT: descartar",
            "UNF: tier negativo"
        ],
        "id": "RCL"
    },
    {
        "user_id": 1,
        "ticker": "BN",
        "currency": "USD",
        "price_eur": 39.5591,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 7.6,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 38.278,
        "entry_max_eur": 39.8091,
        "trigger_price_eur": null,
        "stop_loss_eur": 37.5124,
        "target_1_eur": 48.7998,
        "target_2_eur": 53.4202,
        "upside_pct": 25.19,
        "risk_reward": 3.91,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 25.2",
            "R/R 3.9",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 37.51 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.270114+00:00",
            "vela": "2026-05-24T15:14:59.270114+00:00",
            "cvt": "2026-05-20T04:11:51.270114+00:00",
            "victoria": "2026-05-19T03:07:25.270114+00:00",
            "fmp": "2026-05-27T21:29:59.270114+00:00",
            "unf": "2026-05-28T10:18:21.270114+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "bfb6eefca0bb5524a1b502312f0edf42ea18459d01dc3d6a37051181b3db2cc1",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T17:12:18",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Brookfield Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "BN"
    },
    {
        "user_id": 1,
        "ticker": "LNG",
        "currency": "USD",
        "price_eur": 198.5864,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 66.5,
        "conviction_pct": 25.8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 188.6571,
        "entry_max_eur": 196.6005,
        "trigger_price_eur": 203.7418,
        "stop_loss_eur": 167.1104,
        "target_1_eur": 220.6815,
        "target_2_eur": 231.729,
        "upside_pct": 6.65,
        "risk_reward": 0.82,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (26/100), Recorrido limitado (6.6%).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "low_upside"
        ],
        "invalidators_json": [
            "Perder 167.11 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.083892+00:00",
            "vela": "2026-05-28T04:25:21.083892+00:00",
            "cvt": "2026-05-27T21:01:51.083892+00:00",
            "victoria": "2026-05-27T21:03:47.083892+00:00",
            "fmp": "2026-05-27T21:29:59.083892+00:00",
            "unf": "2026-06-18T14:30:31.083892+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "b34992abaedba2833ccb7fcb839e52324b4a8cdf57449aabbb98fe5c964f3276",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T04:00:28",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Cheniere Energy, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Recorrido bajo (3-10%)"
        ],
        "id": "LNG"
    },
    {
        "user_id": 1,
        "ticker": "AENA.MC",
        "currency": "EUR",
        "price_eur": 24.54,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 53.5,
        "conviction_pct": 22,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 22.78,
        "entry_max_eur": 23.6912,
        "trigger_price_eur": null,
        "stop_loss_eur": 22.3244,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (22/100).",
        "why_now_json": [
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 22.32 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.114719+00:00",
            "vela": "2026-05-28T04:25:20.114719+00:00",
            "cvt": "2026-05-28T04:58:23.114719+00:00",
            "victoria": "2026-05-27T21:28:31.114719+00:00",
            "fmp": "2026-05-27T21:29:58.114719+00:00",
            "unf": "2026-06-18T14:30:31.114719+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "2fe555200186a03606656a40ff564021afbc602957b28422df8665adcb9cdc4d",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T11:01:57",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Aena S.M.E., S.A.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "AENA.MC"
    },
    {
        "user_id": 1,
        "ticker": "ALV.DE",
        "currency": "EUR",
        "price_eur": 389.4,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 71.8,
        "conviction_pct": 26.9,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 368.2,
        "entry_max_eur": 382.928,
        "trigger_price_eur": 394.91,
        "stop_loss_eur": 360.836,
        "target_1_eur": 391,
        "target_2_eur": null,
        "upside_pct": 0.41,
        "risk_reward": 0.37,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (27/100), Recorrido limitado (0.4%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 360.84 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.065793+00:00",
            "vela": "2026-05-27T06:43:28.065793+00:00",
            "cvt": "2026-05-27T08:15:52.065793+00:00",
            "victoria": "2026-05-27T19:01:06.065793+00:00",
            "fmp": "2026-05-27T21:29:58.065793+00:00",
            "unf": "2026-06-18T14:30:32.065793+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "f8edf7403e670410233cf05d8811257bbcb230fdedf733229be4385a5710ad09",
        "previous_action": "REJECT",
        "changed_at": "2026-05-27T14:30:46",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Allianz SE",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "ALV.DE"
    },
    {
        "user_id": 1,
        "ticker": "AVAX.AT",
        "currency": "EUR",
        "price_eur": 3.56,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 80.5,
        "conviction_pct": 43.8,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 2.98,
        "entry_max_eur": 3.0992,
        "trigger_price_eur": 3.6057,
        "stop_loss_eur": 2.9204,
        "target_1_eur": 3.57,
        "target_2_eur": null,
        "upside_pct": 0.28,
        "risk_reward": 2.63,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (44/100), Recorrido limitado (0.3%).",
        "why_now_json": [
            "R/R 2.6",
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 2.92 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.073318+00:00",
            "vela": "2026-05-28T05:25:34.073318+00:00",
            "cvt": "2026-06-18T14:14:20.073318+00:00",
            "victoria": "2026-05-27T23:02:47.073318+00:00",
            "fmp": "2026-05-27T21:29:59.073318+00:00",
            "unf": "2026-06-18T14:14:20.073318+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "272b4e15f0fe865c7b0ba1649725d4a6f5232a4e72a3a583a45e133ba3f24679",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:15:10",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:33",
        "company_name": "Avax S.A.",
        "veto_reasons_human": [
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "AVAX.AT"
    },
    {
        "user_id": 1,
        "ticker": "FTC.L",
        "currency": "GBp",
        "price_eur": 4.4927,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 76.3,
        "conviction_pct": 34.9,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 4.3772,
        "entry_max_eur": 4.5523,
        "trigger_price_eur": 4.7826,
        "stop_loss_eur": 4.2897,
        "target_1_eur": 4.7352,
        "target_2_eur": null,
        "upside_pct": 5.4,
        "risk_reward": 0.7,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (35/100), Recorrido limitado (5.4%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 4.29 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.054652+00:00",
            "vela": "2026-05-27T02:39:40.054652+00:00",
            "cvt": "2026-06-18T14:34:32.054652+00:00",
            "victoria": "2026-05-27T19:29:51.054652+00:00",
            "fmp": "2026-05-27T21:29:59.054652+00:00",
            "unf": "2026-06-18T14:34:32.054652+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:34:34",
        "snapshot_hash": "9f637fa61369fec46a73c7ce03f22c48a9057010d053b158c003ab2625d76f91",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:34:34",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:34:34",
        "expires_at": "2026-06-19T14:34:34",
        "company_name": "Filtronic plc",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "FTC.L"
    },
    {
        "user_id": 1,
        "ticker": "NOA3.DE",
        "currency": "EUR",
        "price_eur": 13.1,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 76.3,
        "conviction_pct": 34.5,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 11.63,
        "entry_max_eur": 12.0952,
        "trigger_price_eur": 13.938,
        "stop_loss_eur": 11.3974,
        "target_1_eur": 13.8,
        "target_2_eur": null,
        "upside_pct": 5.34,
        "risk_reward": 2.44,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (35/100), Recorrido limitado (5.3%).",
        "why_now_json": [
            "R/R 2.4",
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 11.40 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T18:59:47.719269+00:00",
            "vela": "2026-05-28T04:25:21.719269+00:00",
            "cvt": "2026-06-18T14:33:06.719269+00:00",
            "victoria": "2026-05-27T21:39:39.719269+00:00",
            "fmp": "2026-05-25T18:59:47.719269+00:00",
            "unf": "2026-06-18T14:33:06.719269+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:33:33",
        "snapshot_hash": "8ad2c6b3307826a003924e9daedf3ab53571c615cde6b8730a182ec8b6ee1f0f",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:33:33",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:33:33",
        "expires_at": "2026-06-19T14:33:33",
        "company_name": "Nokia Oyj",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "NOA3.DE"
    },
    {
        "user_id": 1,
        "ticker": "ALB",
        "currency": "USD",
        "price_eur": 152.5875,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 7.4,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 145.3051,
        "entry_max_eur": 151.1173,
        "trigger_price_eur": null,
        "stop_loss_eur": 142.399,
        "target_1_eur": 179.1588,
        "target_2_eur": 192.4444,
        "upside_pct": 21.54,
        "risk_reward": 3.22,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 21.5",
            "R/R 3.2",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 142.40 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.291514+00:00",
            "vela": "2026-05-24T07:47:14.291514+00:00",
            "cvt": "2026-05-19T12:42:44.291514+00:00",
            "victoria": "2026-05-19T17:33:29.291514+00:00",
            "fmp": "2026-05-27T21:29:58.291514+00:00",
            "unf": "2026-05-28T09:46:17.291514+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "d78e4faeef88828854489f336d50308fd1f92c9fa89908680d0a5ce8db3f43b9",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T17:50:19",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Albemarle Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "UNF: tier negativo"
        ],
        "id": "ALB"
    },
    {
        "user_id": 1,
        "ticker": "AMKR",
        "currency": "USD",
        "price_eur": 62.0685,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.3,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 56.3509,
        "entry_max_eur": 58.6049,
        "trigger_price_eur": 66.597,
        "stop_loss_eur": 55.2239,
        "target_1_eur": 65.9376,
        "target_2_eur": null,
        "upside_pct": 1.52,
        "risk_reward": 2.17,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "R/R 2.2",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 55.22 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.049028+00:00",
            "vela": "2026-05-23T17:26:59.049028+00:00",
            "cvt": "2026-05-20T12:00:14.049028+00:00",
            "victoria": "2026-05-25T18:00:48.049028+00:00",
            "fmp": "2026-05-27T21:29:58.049028+00:00",
            "unf": "2026-05-22T15:38:48.049028+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "a86d2d3f3f9ce756b5378661c83dec2cb67e1d1b54238e46a1cfbbdb9aa7bb95",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T21:20:31",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Amkor Technology, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "UNF: tier negativo"
        ],
        "id": "AMKR"
    },
    {
        "user_id": 1,
        "ticker": "APLD",
        "currency": "USD",
        "price_eur": 39.8204,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 9.8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 31.4951,
        "entry_max_eur": 32.7549,
        "trigger_price_eur": null,
        "stop_loss_eur": 30.8652,
        "target_1_eur": 54.8826,
        "target_2_eur": 62.4137,
        "upside_pct": 39.26,
        "risk_reward": 11.71,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "upside_pct 39.3",
            "R/R 11.7",
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "fmp_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 30.87 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "D+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T17:17:09.421784+00:00",
            "vela": "2026-05-21T21:17:00.421784+00:00",
            "cvt": "2026-05-20T11:15:06.421784+00:00",
            "victoria": "2026-05-20T11:14:20.421784+00:00",
            "fmp": "2026-05-26T17:17:09.421784+00:00",
            "unf": "2026-05-19T14:19:53.421784+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "b61c93e2f763cbbc666e2dd00fb08077fed6a813a8316c3f6bfe4f1360ecf84b",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:03:10",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Applied Digital Corporation",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "FMP: rating venta",
            "UNF: tier negativo"
        ],
        "id": "APLD"
    },
    {
        "user_id": 1,
        "ticker": "ARCC",
        "currency": "USD",
        "price_eur": 16.2157,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 8.1,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 15.5537,
        "entry_max_eur": 16.1758,
        "trigger_price_eur": 16.8034,
        "stop_loss_eur": 15.2426,
        "target_1_eur": 18.7982,
        "target_2_eur": 20.0894,
        "upside_pct": 17.7,
        "risk_reward": 2.81,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "upside_pct 17.7",
            "R/R 2.8",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "vela_sell"
        ],
        "invalidators_json": [
            "Perder 15.24 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "A-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.857526+00:00",
            "vela": "2026-05-21T21:17:00.857526+00:00",
            "cvt": "2026-05-20T11:39:47.857526+00:00",
            "victoria": "2026-05-19T20:44:25.857526+00:00",
            "fmp": "2026-05-27T21:29:59.857526+00:00",
            "unf": "2026-06-18T14:30:31.857526+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "vela_sell"
        ],
        "cvt_buy_signals_json": [
            "FMP",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "37f221abac60526c573defd59e9f37bfa610c269faebc4b0e5cfb25e715c960b",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T21:28:35",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Ares Capital Corporation",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Velas: venta"
        ],
        "id": "ARCC"
    },
    {
        "user_id": 1,
        "ticker": "BA",
        "currency": "USD",
        "price_eur": 192.8516,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 190.7365,
        "entry_max_eur": 198.366,
        "trigger_price_eur": 195.6659,
        "stop_loss_eur": 186.9218,
        "target_1_eur": 239.789,
        "target_2_eur": 263.2577,
        "upside_pct": 27.43,
        "risk_reward": 3.62,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 27.4",
            "R/R 3.6",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 186.92 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.193159+00:00",
            "vela": "2026-05-21T21:17:00.193159+00:00",
            "cvt": "2026-05-20T04:08:23.193159+00:00",
            "victoria": "2026-05-20T10:32:23.193159+00:00",
            "fmp": "2026-05-27T21:29:59.193159+00:00",
            "unf": "2026-05-28T20:06:46.193159+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "7ae84089bba2e4f8b5afa724ccd74513cd6123976ddb79b311285aa378947dd8",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:35:07",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "The Boeing Company",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "BA"
    },
    {
        "user_id": 1,
        "ticker": "BBAI",
        "currency": "USD",
        "price_eur": 3.7573,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 9,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 3.508,
        "entry_max_eur": 3.6483,
        "trigger_price_eur": null,
        "stop_loss_eur": 3.4378,
        "target_1_eur": 5.1549,
        "target_2_eur": 5.8537,
        "upside_pct": 43.54,
        "risk_reward": 7.16,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 43.5",
            "R/R 7.2",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 3.44 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.308011+00:00",
            "vela": "2026-05-21T21:17:00.308011+00:00",
            "cvt": "2026-05-18T11:01:46.308011+00:00",
            "victoria": "2026-05-19T17:46:39.308011+00:00",
            "fmp": "2026-05-27T21:29:59.308011+00:00",
            "unf": "2026-05-18T14:43:54.308011+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "9524782d986ba6961e765713f8afea4fedc99118d60227cd2dbc974867394ecd",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:24:51",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "BigBear.ai Holdings, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "BBAI"
    },
    {
        "user_id": 1,
        "ticker": "BIDU",
        "currency": "USD",
        "price_eur": 111.6957,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 9.1,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 106.1109,
        "entry_max_eur": 110.5787,
        "trigger_price_eur": 119.6904,
        "stop_loss_eur": 93.9919,
        "target_1_eur": 137.7133,
        "target_2_eur": 150.7221,
        "upside_pct": 25.43,
        "risk_reward": 1.64,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "upside_pct 25.4",
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "fmp_sell",
            "score_below_55"
        ],
        "invalidators_json": [
            "Perder 93.99 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.300911+00:00",
            "vela": "2026-05-21T21:17:00.300911+00:00",
            "cvt": "2026-05-19T10:52:07.300911+00:00",
            "victoria": "2026-05-20T10:35:33.300911+00:00",
            "fmp": "2026-05-27T21:29:59.300911+00:00",
            "unf": "2026-05-21T13:33:48.300911+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "c63c0d1c0be61467c0f57f3c2858a415ece71b8158d62056deb9e0ed0f0149c7",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:11:29",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Baidu, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "FMP: rating venta",
            "Score < 55"
        ],
        "id": "BIDU"
    },
    {
        "user_id": 1,
        "ticker": "BLK",
        "currency": "USD",
        "price_eur": 924.8881,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 8.1,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 853.7587,
        "entry_max_eur": 887.909,
        "trigger_price_eur": 959.1757,
        "stop_loss_eur": 836.6835,
        "target_1_eur": 1127.0171,
        "target_2_eur": 1228.0816,
        "upside_pct": 22.25,
        "risk_reward": 4.67,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, UNF: tier negativo.",
        "why_now_json": [
            "upside_pct 22.3",
            "R/R 4.7",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 836.68 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T16:47:58.310872+00:00",
            "vela": "2026-05-21T21:17:00.310872+00:00",
            "cvt": "2026-05-18T08:34:59.310872+00:00",
            "victoria": "2026-05-19T20:52:47.310872+00:00",
            "fmp": "2026-05-26T16:47:58.310872+00:00",
            "unf": "2026-05-17T11:33:09.310872+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "195621196359480a8456575d39d211e884ecf0165d8b6edab03d794ec2356b6f",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:04:16",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "BlackRock, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "UNF: tier negativo"
        ],
        "id": "BLK"
    },
    {
        "user_id": 1,
        "ticker": "CEG",
        "currency": "USD",
        "price_eur": 248.205,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 8.5,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 240.0886,
        "entry_max_eur": 249.6921,
        "trigger_price_eur": null,
        "stop_loss_eur": 235.2868,
        "target_1_eur": 336.2975,
        "target_2_eur": 380.3438,
        "upside_pct": 33.11,
        "risk_reward": 6.01,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Score < 55.",
        "why_now_json": [
            "upside_pct 33.1",
            "R/R 6.0",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 235.29 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.212460+00:00",
            "vela": "2026-05-21T21:17:01.212460+00:00",
            "cvt": "2026-05-18T13:38:11.212460+00:00",
            "victoria": "2026-05-18T16:14:57.212460+00:00",
            "fmp": "2026-05-27T21:29:59.212460+00:00",
            "unf": "2026-05-28T21:52:35.212460+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "dd460d08dba485f4fda152a60a9bfbdcea34813c3cd5f1ae603cb9c178a211c4",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:25:55",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Constellation Energy Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "CEG"
    },
    {
        "user_id": 1,
        "ticker": "CENX",
        "currency": "USD",
        "price_eur": 56.5056,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 7.8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 50.7106,
        "entry_max_eur": 52.739,
        "trigger_price_eur": null,
        "stop_loss_eur": 49.6964,
        "target_1_eur": 65.2955,
        "target_2_eur": 69.6904,
        "upside_pct": 16.83,
        "risk_reward": 4.13,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, UNF: tier negativo.",
        "why_now_json": [
            "upside_pct 16.8",
            "R/R 4.1",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 49.70 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.206899+00:00",
            "vela": "2026-05-21T22:33:45.206899+00:00",
            "cvt": "2026-05-20T04:18:13.206899+00:00",
            "victoria": "2026-05-19T17:54:07.206899+00:00",
            "fmp": "2026-05-27T21:29:59.206899+00:00",
            "unf": "2026-05-17T11:26:00.206899+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "767b2017ab53d1b79713c69102d634b5cf07871af95c075b631fe0141c012342",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T18:10:25",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Century Aluminum Company",
        "veto_reasons_human": [
            "CVT: descartar",
            "UNF: tier negativo"
        ],
        "id": "CENX"
    },
    {
        "user_id": 1,
        "ticker": "CRS",
        "currency": "USD",
        "price_eur": 396.2872,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 74.8,
        "conviction_pct": 28.9,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 349.5317,
        "entry_max_eur": 363.513,
        "trigger_price_eur": null,
        "stop_loss_eur": 342.5411,
        "target_1_eur": 400.1925,
        "target_2_eur": 402.1452,
        "upside_pct": 7.3,
        "risk_reward": 1.75,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (29/100), Recorrido limitado (7.3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "low_upside"
        ],
        "invalidators_json": [
            "Perder 342.54 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.733482+00:00",
            "vela": "2026-05-28T06:25:42.733482+00:00",
            "cvt": "2026-05-28T04:09:15.733482+00:00",
            "victoria": "2026-05-27T23:48:03.733482+00:00",
            "fmp": "2026-05-27T21:29:59.733482+00:00",
            "unf": "2026-06-18T14:30:31.733482+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "d57d20966cf445e03910f968bd1cc2d01cd72d4ec28039a37bbaac4abe678aa1",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T10:12:40",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Carpenter Technology Corporation",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Recorrido bajo (3-10%)"
        ],
        "id": "CRS"
    },
    {
        "user_id": 1,
        "ticker": "EL",
        "currency": "USD",
        "price_eur": 78.4131,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.8,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 75.3608,
        "entry_max_eur": 78.3752,
        "trigger_price_eur": null,
        "stop_loss_eur": 73.8536,
        "target_1_eur": 88.3723,
        "target_2_eur": 93.3519,
        "upside_pct": 16.46,
        "risk_reward": 2.21,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 16.5",
            "R/R 2.2",
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 73.85 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "D+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.415889+00:00",
            "vela": "2026-05-26T14:26:08.415889+00:00",
            "cvt": "2026-05-19T11:54:26.415889+00:00",
            "victoria": "2026-05-19T16:01:23.415889+00:00",
            "fmp": "2026-05-27T21:29:59.415889+00:00",
            "unf": "2026-05-28T21:04:53.415889+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "0914cc02bbaa26fbea4fe227ab573a1d66b65dcdb993b258a260d60273783b14",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:25:55",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "The Estée Lauder Companies Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "EL"
    },
    {
        "user_id": 1,
        "ticker": "ETN",
        "currency": "USD",
        "price_eur": 349.3941,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6.5,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 328.3292,
        "entry_max_eur": 341.4624,
        "trigger_price_eur": null,
        "stop_loss_eur": 321.7626,
        "target_1_eur": 351.7021,
        "target_2_eur": 352.8561,
        "upside_pct": 4.6,
        "risk_reward": 0.52,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Recorrido bajo (3-10%).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "low_upside",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 321.76 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.955467+00:00",
            "vela": "2026-05-21T21:17:01.955467+00:00",
            "cvt": "2026-05-19T13:39:33.955467+00:00",
            "victoria": "2026-05-19T16:04:13.955467+00:00",
            "fmp": "2026-05-27T21:29:59.955467+00:00",
            "unf": "2026-05-24T18:10:27.955467+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "f796df27c7be82b1296321a79d6f3c7118d1455ffbb8cd851c42e007fb6ead6e",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T17:25:06",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Eaton Corporation plc",
        "veto_reasons_human": [
            "CVT: descartar",
            "Recorrido bajo (3-10%)",
            "UNF: tier negativo"
        ],
        "id": "ETN"
    },
    {
        "user_id": 1,
        "ticker": "HOOD",
        "currency": "USD",
        "price_eur": 65.542,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 8.9,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 63.3151,
        "entry_max_eur": 65.8477,
        "trigger_price_eur": 70.1486,
        "stop_loss_eur": 62.0488,
        "target_1_eur": 100.6409,
        "target_2_eur": 118.1904,
        "upside_pct": 59.07,
        "risk_reward": 9.16,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, UNF: tier negativo.",
        "why_now_json": [
            "upside_pct 59.1",
            "R/R 9.2",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 62.05 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.404385+00:00",
            "vela": "2026-05-25T19:02:11.404385+00:00",
            "cvt": "2026-05-18T11:08:49.404385+00:00",
            "victoria": "2026-05-20T11:00:46.404385+00:00",
            "fmp": "2026-05-27T21:29:59.404385+00:00",
            "unf": "2026-05-28T03:53:42.404385+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "64d1e40f13d3317e398f026b4ec8ef4486dc77a3e150a9e4cf357e220d26d33f",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T18:42:22",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Robinhood Markets, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "UNF: tier negativo"
        ],
        "id": "HOOD"
    },
    {
        "user_id": 1,
        "ticker": "IREN",
        "currency": "USD",
        "price_eur": 58.3284,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 8.1,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 45.0188,
        "entry_max_eur": 46.8196,
        "trigger_price_eur": null,
        "stop_loss_eur": 44.1184,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": 12.18,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "upside_pct 12.2",
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "above_target",
            "fmp_sell"
        ],
        "invalidators_json": [
            "Perder 44.12 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.183538+00:00",
            "vela": "2026-05-26T14:25:14.183538+00:00",
            "cvt": "2026-05-19T12:20:03.183538+00:00",
            "victoria": "2026-05-19T21:09:04.183538+00:00",
            "fmp": "2026-05-27T21:29:59.183538+00:00",
            "unf": "2026-05-28T21:18:35.183538+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "fmp_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "5fb4ee6c29eacb23d398816339a84de5e35c0254537634a9b88faff8140466e9",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T18:55:27",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "IREN Limited",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Precio sobre objetivo",
            "FMP: rating venta"
        ],
        "id": "IREN"
    },
    {
        "user_id": 1,
        "ticker": "ITX.MC",
        "currency": "EUR",
        "price_eur": 51.6,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6.3,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 50.28,
        "entry_max_eur": 52.2912,
        "trigger_price_eur": 53.2068,
        "stop_loss_eur": 49.2744,
        "target_1_eur": 52.68,
        "target_2_eur": null,
        "upside_pct": 2.09,
        "risk_reward": 0.13,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 49.27 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T18:59:47.228095+00:00",
            "vela": "2026-05-22T17:55:49.228095+00:00",
            "cvt": "2026-05-20T11:55:35.228095+00:00",
            "victoria": "2026-05-20T11:05:03.228095+00:00",
            "fmp": "2026-05-25T18:59:47.228095+00:00",
            "unf": "2026-05-24T18:10:43.228095+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "c6b1621d554feb7e15c5b17e815d3fac0b63ae95ceab2b367bd59d24d90f8cde",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:04:16",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Industria de Diseño Textil, S.A.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "UNF: tier negativo"
        ],
        "id": "ITX.MC"
    },
    {
        "user_id": 1,
        "ticker": "LEU",
        "currency": "USD",
        "price_eur": 154.8745,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 8.3,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 145.305,
        "entry_max_eur": 151.1172,
        "trigger_price_eur": null,
        "stop_loss_eur": 142.3989,
        "target_1_eur": 237.7013,
        "target_2_eur": 279.1147,
        "upside_pct": 54.25,
        "risk_reward": 9.93,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 54.3",
            "R/R 9.9",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 142.40 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.257215+00:00",
            "vela": "2026-05-26T14:25:14.257215+00:00",
            "cvt": "2026-05-20T04:52:24.257215+00:00",
            "victoria": "2026-05-20T11:07:17.257215+00:00",
            "fmp": "2026-05-27T21:29:59.257215+00:00",
            "unf": "2026-05-24T18:10:43.257215+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "ac5dcbfe6a40786d42a6ab7f833327d4516b4387e15c509acecef0e037087dea",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:59:22",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Centrus Energy Corp.",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "LEU"
    },
    {
        "user_id": 1,
        "ticker": "LMND",
        "currency": "USD",
        "price_eur": 48.6901,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 7.7,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 46.8158,
        "entry_max_eur": 48.6884,
        "trigger_price_eur": 49.8109,
        "stop_loss_eur": 45.8795,
        "target_1_eur": 60.9997,
        "target_2_eur": 67.1545,
        "upside_pct": 25.62,
        "risk_reward": 4.38,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 25.6",
            "R/R 4.4",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 45.88 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.253601+00:00",
            "vela": "2026-05-24T20:21:07.253601+00:00",
            "cvt": "2026-05-20T04:58:20.253601+00:00",
            "victoria": "2026-05-19T21:13:28.253601+00:00",
            "fmp": "2026-05-27T21:29:59.253601+00:00",
            "unf": "2026-05-24T18:10:43.253601+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "91d3c233974b05235f7e8ff80ab1e29e592548659b56745b9804e5addda2dd56",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:11:29",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Lemonade, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "UNF: tier negativo"
        ],
        "id": "LMND"
    },
    {
        "user_id": 1,
        "ticker": "MMM",
        "currency": "USD",
        "price_eur": 133.4141,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6.9,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 127.8942,
        "entry_max_eur": 133.01,
        "trigger_price_eur": null,
        "stop_loss_eur": 125.3363,
        "target_1_eur": 143.2634,
        "target_2_eur": 148.188,
        "upside_pct": 9.39,
        "risk_reward": 1.34,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Recorrido bajo (3-10%).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "low_upside",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 125.34 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.726597+00:00",
            "vela": "2026-05-21T21:17:02.726597+00:00",
            "cvt": "2026-05-19T04:48:32.726597+00:00",
            "victoria": "2026-05-18T10:02:03.726597+00:00",
            "fmp": "2026-05-27T21:29:59.726597+00:00",
            "unf": "2026-05-28T20:49:47.726597+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "7c00e3c9f36c6496e6c41f2721a2d9e5a199919901d04a7b92aeecb985106ba3",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:57:21",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "3M Company",
        "veto_reasons_human": [
            "CVT: descartar",
            "Recorrido bajo (3-10%)",
            "UNF: tier negativo"
        ],
        "id": "MMM"
    },
    {
        "user_id": 1,
        "ticker": "MP",
        "currency": "USD",
        "price_eur": 56.0671,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 7.9,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 53.6855,
        "entry_max_eur": 55.8329,
        "trigger_price_eur": null,
        "stop_loss_eur": 52.6118,
        "target_1_eur": 69.1617,
        "target_2_eur": 75.709,
        "upside_pct": 24.88,
        "risk_reward": 4.14,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 24.9",
            "R/R 4.1",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 52.61 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.246718+00:00",
            "vela": "2026-05-26T14:25:14.246718+00:00",
            "cvt": "2026-05-19T07:30:14.246718+00:00",
            "victoria": "2026-05-19T16:35:10.246718+00:00",
            "fmp": "2026-05-27T21:29:59.246718+00:00",
            "unf": "2026-05-28T09:55:13.246718+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "2f550a0bb087867d33d699473cd2a9704d873df7562beef978ef8a84e3e767b5",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:11:29",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "MP Materials Corp.",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "MP"
    },
    {
        "user_id": 1,
        "ticker": "MSTR",
        "currency": "USD",
        "price_eur": 137.3236,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 8.8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 130.4574,
        "entry_max_eur": 135.9504,
        "trigger_price_eur": 144.37,
        "stop_loss_eur": 115.5578,
        "target_1_eur": 261.1819,
        "target_2_eur": 323.111,
        "upside_pct": 90.13,
        "risk_reward": 6.14,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 90.1",
            "R/R 6.1",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 115.56 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T18:59:47.244042+00:00",
            "vela": "2026-05-21T21:17:02.244042+00:00",
            "cvt": "2026-05-20T12:06:53.244042+00:00",
            "victoria": "2026-05-20T12:05:37.244042+00:00",
            "fmp": "2026-05-25T18:59:47.244042+00:00",
            "unf": "2026-05-18T13:38:07.244042+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "b4a778782c7bb6c8a9a8dbd74b2b079c3a80cd62aee85bdc55a0d04cb46b67a2",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:03:10",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Strategy Inc",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "MSTR"
    },
    {
        "user_id": 1,
        "ticker": "NEM",
        "currency": "USD",
        "price_eur": 92.1956,
        "action": "BUY_LIMIT",
        "action_family": "buy",
        "trigger_kind": "limit",
        "status": "active",
        "confidence_pct": 79.3,
        "conviction_pct": 51.2,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 87.5858,
        "entry_max_eur": 91.2736,
        "trigger_price_eur": 104.7887,
        "stop_loss_eur": 77.5826,
        "target_1_eur": 117.781,
        "target_2_eur": 130.5737,
        "upside_pct": 27.36,
        "risk_reward": 1.94,
        "position_size_pct": 2,
        "reason_short": "Comprar sólo si el precio entra en zona (upside 27%).",
        "why_now_json": [
            "upside_pct 27.4",
            "CVT COMPRAR",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [],
        "invalidators_json": [
            "Perder 77.58 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "entry_touched",
                "condition": "price_eur <= 91.2736"
            },
            {
                "type": "invalidated",
                "condition": "price_eur < 77.5826"
            },
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "COMPRAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.992936+00:00",
            "vela": "2026-05-27T01:39:14.992936+00:00",
            "cvt": "2026-06-18T14:08:39.992936+00:00",
            "victoria": "2026-05-27T19:46:18.992936+00:00",
            "fmp": "2026-05-27T21:29:59.992936+00:00",
            "unf": "2026-06-18T14:30:32.992936+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "FMP",
            "UNF>=2",
            "upside>=10",
            "CVT_prev"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "399cc60f186c73cf50fbe553e0faa21cedc167c1d1509556ca3cfaf66d09fa4e",
        "previous_action": "BUY_LIMIT",
        "changed_at": "2026-06-18T14:08:45",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Newmont Corporation",
        "veto_reasons_human": [],
        "id": "NEM"
    },
    {
        "user_id": 1,
        "ticker": "O",
        "currency": "USD",
        "price_eur": 53.2667,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 74.8,
        "conviction_pct": 27.8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 52.4937,
        "entry_max_eur": 54.5934,
        "trigger_price_eur": 54.927,
        "stop_loss_eur": 51.4438,
        "target_1_eur": 57.4428,
        "target_2_eur": 59.5308,
        "upside_pct": 7.8,
        "risk_reward": 0.9,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (28/100), Recorrido limitado (7.8%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "low_upside"
        ],
        "invalidators_json": [
            "Perder 51.44 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T18:59:47.835997+00:00",
            "vela": "2026-05-28T04:25:21.835997+00:00",
            "cvt": "2026-05-28T04:15:39.835997+00:00",
            "victoria": "2026-05-27T21:41:26.835997+00:00",
            "fmp": "2026-05-25T18:59:47.835997+00:00",
            "unf": "2026-06-18T14:30:31.835997+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "13c07eab06dab577a585c5f6fb64e99cb436b9879fc984a7beaabd5c59a0574b",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T10:19:42",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Realty Income Corporation",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Recorrido bajo (3-10%)"
        ],
        "id": "O"
    },
    {
        "user_id": 1,
        "ticker": "PDD",
        "currency": "USD",
        "price_eur": 81.1797,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 10,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 77.1207,
        "entry_max_eur": 80.3679,
        "trigger_price_eur": 84.1428,
        "stop_loss_eur": 68.3127,
        "target_1_eur": 123.503,
        "target_2_eur": 144.6646,
        "upside_pct": 52.08,
        "risk_reward": 3.58,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "upside_pct 52.1",
            "R/R 3.6",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "vela_sell"
        ],
        "invalidators_json": [
            "Perder 68.31 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "A+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T18:59:47.814993+00:00",
            "vela": "2026-05-27T06:43:33.814993+00:00",
            "cvt": "2026-05-20T12:10:05.814993+00:00",
            "victoria": "2026-05-19T16:49:43.814993+00:00",
            "fmp": "2026-05-25T18:59:47.814993+00:00",
            "unf": "2026-06-18T14:30:31.814993+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "vela_sell"
        ],
        "cvt_buy_signals_json": [
            "FMP",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "92009ddde8a99df6c8e2b6de838dacb9cad6b2a1685ba73e7f907c91f5856ff2",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:00:44",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "PDD Holdings Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Velas: venta"
        ],
        "id": "PDD"
    },
    {
        "user_id": 1,
        "ticker": "PEP",
        "currency": "USD",
        "price_eur": 129.3246,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 7.8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 127.6927,
        "entry_max_eur": 132.8004,
        "trigger_price_eur": 131.1817,
        "stop_loss_eur": 125.1388,
        "target_1_eur": 149.4923,
        "target_2_eur": 159.5762,
        "upside_pct": 15.56,
        "risk_reward": 2.18,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, UNF: tier negativo.",
        "why_now_json": [
            "upside_pct 15.6",
            "R/R 2.2",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 125.14 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T17:38:21.452345+00:00",
            "vela": "2026-05-21T21:17:03.452345+00:00",
            "cvt": "2026-05-18T13:26:57.452345+00:00",
            "victoria": "2026-05-19T16:50:57.452345+00:00",
            "fmp": "2026-05-25T17:38:21.452345+00:00",
            "unf": "2026-05-17T11:33:49.452345+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "cd81c70735974af92b33a2e3345d3fd1f80b51fdd6de8043e6d86ef185668518",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:03:09",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "PepsiCo, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "UNF: tier negativo"
        ],
        "id": "PEP"
    },
    {
        "user_id": 1,
        "ticker": "PLTR",
        "currency": "USD",
        "price_eur": 117.5662,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 9.7,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 112.241,
        "entry_max_eur": 116.7306,
        "trigger_price_eur": 123.9729,
        "stop_loss_eur": 109.9962,
        "target_1_eur": 161.2541,
        "target_2_eur": 183.098,
        "upside_pct": 37.12,
        "risk_reward": 6.61,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, UNF: tier negativo.",
        "why_now_json": [
            "upside_pct 37.1",
            "R/R 6.6",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 110.00 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T17:38:21.444797+00:00",
            "vela": "2026-05-24T09:49:58.444797+00:00",
            "cvt": "2026-05-18T08:31:59.444797+00:00",
            "victoria": "2026-05-18T20:44:32.444797+00:00",
            "fmp": "2026-05-25T17:38:21.444797+00:00",
            "unf": "2026-05-17T11:34:40.444797+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "ee017ca777521778cabac0bf3c06b3c2bce5c9b24846364ae2cc996a70e01d5b",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:03:10",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Palantir Technologies Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "UNF: tier negativo"
        ],
        "id": "PLTR"
    },
    {
        "user_id": 1,
        "ticker": "POR",
        "currency": "USD",
        "price_eur": 43.9784,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.9,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 41.9751,
        "entry_max_eur": 43.6541,
        "trigger_price_eur": null,
        "stop_loss_eur": 41.1356,
        "target_1_eur": 45.8787,
        "target_2_eur": 46.8288,
        "upside_pct": 7.19,
        "risk_reward": 0.88,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Recorrido bajo (3-10%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "low_upside",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 41.14 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.792975+00:00",
            "vela": "2026-05-26T14:25:14.792975+00:00",
            "cvt": "2026-05-18T13:46:39.792975+00:00",
            "victoria": "2026-05-19T16:54:23.792975+00:00",
            "fmp": "2026-05-27T21:29:59.792975+00:00",
            "unf": "2026-05-28T21:09:39.792975+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "5d7cd188e8752ccba3484cab69670fcb9ac39d49dfb05a7d3815c0ee717aa0dc",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T18:54:26",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Portland General Electric Company",
        "veto_reasons_human": [
            "CVT: descartar",
            "Recorrido bajo (3-10%)",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "POR"
    },
    {
        "user_id": 1,
        "ticker": "QBTS",
        "currency": "USD",
        "price_eur": 23.6271,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 4.5,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 22.4457,
        "entry_max_eur": 23.3908,
        "trigger_price_eur": 25.5307,
        "stop_loss_eur": 19.8822,
        "target_1_eur": 30.9294,
        "target_2_eur": 34.5806,
        "upside_pct": 22.53,
        "risk_reward": 2.15,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 22.5",
            "R/R 2.1",
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 19.88 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.438815+00:00",
            "vela": "2026-05-26T14:25:14.438815+00:00",
            "cvt": "2026-05-18T10:41:17.438815+00:00",
            "victoria": "2026-05-19T16:57:15.438815+00:00",
            "fmp": "2026-05-27T21:29:59.438815+00:00",
            "unf": "2026-05-28T21:09:39.438815+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "f88749be92f5816a272b4c6801e35de03d80d0ba26711973d29c073614841756",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:59:19",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "D-Wave Quantum Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "QBTS"
    },
    {
        "user_id": 1,
        "ticker": "CS.PA",
        "currency": "EUR",
        "price_eur": 40.43,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 80.5,
        "conviction_pct": 44.3,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 39.33,
        "entry_max_eur": 40.9032,
        "trigger_price_eur": 41.612,
        "stop_loss_eur": 38.5434,
        "target_1_eur": 41.2,
        "target_2_eur": null,
        "upside_pct": 1.9,
        "risk_reward": 0.13,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (44/100), Recorrido limitado (1.9%), R/R 0.13 (<2).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 38.54 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-26T16:47:58.381002+00:00",
            "vela": "2026-05-27T06:43:32.381002+00:00",
            "cvt": "2026-06-18T14:30:41.381002+00:00",
            "victoria": "2026-05-27T20:47:08.381002+00:00",
            "fmp": "2026-05-26T16:47:58.381002+00:00",
            "unf": "2026-06-18T14:30:41.381002+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:32:33",
        "snapshot_hash": "783f095d1a368782bcfe39a6e7123037f2a36cd0146de3bed6a116f776beecc1",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:32:33",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:32:33",
        "expires_at": "2026-06-19T14:32:33",
        "company_name": "AXA S.A.",
        "veto_reasons_human": [
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "CS.PA"
    },
    {
        "user_id": 1,
        "ticker": "ANET",
        "currency": "USD",
        "price_eur": 132.6747,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 74.8,
        "conviction_pct": 33,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 119.8466,
        "entry_max_eur": 124.6405,
        "trigger_price_eur": 137.2145,
        "stop_loss_eur": 117.4497,
        "target_1_eur": 157.4824,
        "target_2_eur": 169.8862,
        "upside_pct": 19,
        "risk_reward": 4.57,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (33/100).",
        "why_now_json": [
            "upside_pct 19.0",
            "R/R 4.6",
            "Velas COMPRA_FUERTE",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale"
        ],
        "invalidators_json": [
            "Perder 117.45 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_FUERTE",
            "FMP": "B",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.110199+00:00",
            "vela": "2026-05-28T05:25:34.110199+00:00",
            "cvt": "2026-05-28T04:07:21.110199+00:00",
            "victoria": "2026-05-27T22:59:03.110199+00:00",
            "fmp": "2026-05-27T21:29:58.110199+00:00",
            "unf": "2026-06-18T14:30:31.110199+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "fd21f171f4cc44450c0e6e6d57363839ba8609b9fba409648545a132447701e3",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T10:10:40",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Arista Networks, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios"
        ],
        "id": "ANET"
    },
    {
        "user_id": 1,
        "ticker": "CTRA",
        "currency": "USD",
        "price_eur": 27.9949,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 83.5,
        "conviction_pct": 37.2,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 26.5952,
        "entry_max_eur": 27.715,
        "trigger_price_eur": 28.4573,
        "stop_loss_eur": 23.5578,
        "target_1_eur": 29.2111,
        "target_2_eur": 29.8192,
        "upside_pct": 4.42,
        "risk_reward": 0.36,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (37/100), Recorrido limitado (4.4%), R/R 0.36 (<2).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "low_upside"
        ],
        "invalidators_json": [
            "Perder 23.56 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.080812+00:00",
            "vela": "2026-05-26T14:26:08.080812+00:00",
            "cvt": "2026-06-18T14:14:15.080812+00:00",
            "victoria": "2026-05-27T19:19:32.080812+00:00",
            "fmp": "2026-05-27T21:29:59.080812+00:00",
            "unf": "2026-06-18T14:14:15.080812+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "b78ebf09afa0f1412b702ad1137fcb2e396c580f2c89c8bc487e697007f06d44",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:15:10",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:33",
        "company_name": "Coterra Energy Inc.",
        "veto_reasons_human": [
            "Recorrido bajo (3-10%)"
        ],
        "id": "CTRA"
    },
    {
        "user_id": 1,
        "ticker": "CVX",
        "currency": "USD",
        "price_eur": 156.8434,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 7.3,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 149.0012,
        "entry_max_eur": 155.275,
        "trigger_price_eur": 163.0751,
        "stop_loss_eur": 131.9838,
        "target_1_eur": 169.3644,
        "target_2_eur": 175.6249,
        "upside_pct": 2.98,
        "risk_reward": 0.6,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "no_upside"
        ],
        "invalidators_json": [
            "Perder 131.98 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.944473+00:00",
            "vela": "2026-05-27T06:43:32.944473+00:00",
            "cvt": "2026-05-25T06:16:41.944473+00:00",
            "victoria": "2026-05-19T21:00:23.944473+00:00",
            "fmp": "2026-05-27T21:29:59.944473+00:00",
            "unf": "2026-06-18T14:30:31.944473+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "396fd0481e28c23d8d26a9b1b1fd44b6fdd1549a4649bdc719563a2f9efe6355",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T21:28:35",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Chevron Corporation",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin recorrido (<3%)"
        ],
        "id": "CVX"
    },
    {
        "user_id": 1,
        "ticker": "FCX",
        "currency": "USD",
        "price_eur": 54.7086,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 79.3,
        "conviction_pct": 39.3,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 52.5247,
        "entry_max_eur": 54.6257,
        "trigger_price_eur": 55.8896,
        "stop_loss_eur": 51.4742,
        "target_1_eur": 60.8966,
        "target_2_eur": 63.9906,
        "upside_pct": 14.36,
        "risk_reward": 1.99,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (39/100), R/R 1.99 (<2).",
        "why_now_json": [
            "upside_pct 14.4",
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed"
        ],
        "invalidators_json": [
            "Perder 51.47 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.023456+00:00",
            "vela": "2026-05-28T04:25:21.023456+00:00",
            "cvt": "2026-06-18T14:12:46.023456+00:00",
            "victoria": "2026-05-28T00:25:41.023456+00:00",
            "fmp": "2026-05-27T21:29:59.023456+00:00",
            "unf": "2026-06-18T14:12:46.023456+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "b817b0bc64ce7d83ea27a57c3e9d7a7439340a3a6ef4398f09fdab1609b850ee",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:12:47",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:33",
        "company_name": "Freeport-McMoRan Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener"
        ],
        "id": "FCX"
    },
    {
        "user_id": 1,
        "ticker": "IBKR",
        "currency": "USD",
        "price_eur": 69.6002,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 74.8,
        "conviction_pct": 26.3,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 66.1202,
        "entry_max_eur": 68.9042,
        "trigger_price_eur": 76.6615,
        "stop_loss_eur": 58.5686,
        "target_1_eur": 75.3218,
        "target_2_eur": 78.1826,
        "upside_pct": 7.77,
        "risk_reward": 0.62,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (26/100), Recorrido limitado (7.8%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "low_upside"
        ],
        "invalidators_json": [
            "Perder 58.57 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.800083+00:00",
            "vela": "2026-05-27T15:08:07.800083+00:00",
            "cvt": "2026-05-27T19:34:34.800083+00:00",
            "victoria": "2026-05-27T19:31:56.800083+00:00",
            "fmp": "2026-05-27T21:29:59.800083+00:00",
            "unf": "2026-06-18T14:11:55.800083+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "89fa57b6a506854636345a329c9a934d55ec28fa04f70a327c79c9b5b6a78721",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T04:00:28",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Interactive Brokers Group, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Recorrido bajo (3-10%)"
        ],
        "id": "IBKR"
    },
    {
        "user_id": 1,
        "ticker": "MTZ",
        "currency": "USD",
        "price_eur": 333.187,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 83.5,
        "conviction_pct": 38,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 328.5355,
        "entry_max_eur": 341.6769,
        "trigger_price_eur": 379.9298,
        "stop_loss_eur": 321.9648,
        "target_1_eur": 358.034,
        "target_2_eur": 370.4575,
        "upside_pct": 9.06,
        "risk_reward": 0.83,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (38/100), Recorrido limitado (9.1%), R/R 0.83 (<2).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "low_upside"
        ],
        "invalidators_json": [
            "Perder 321.96 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B-",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.090275+00:00",
            "vela": "2026-05-26T14:25:14.090275+00:00",
            "cvt": "2026-06-18T14:14:20.090275+00:00",
            "victoria": "2026-05-27T19:44:19.090275+00:00",
            "fmp": "2026-05-27T21:29:59.090275+00:00",
            "unf": "2026-06-18T14:14:20.090275+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "23e90f45f1dca5445e59a8472a5541c9a18c60e3d2cb9e8f266fd78d09436cae",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:15:10",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:33",
        "company_name": "MasTec, Inc.",
        "veto_reasons_human": [
            "Recorrido bajo (3-10%)"
        ],
        "id": "MTZ"
    },
    {
        "user_id": 1,
        "ticker": "NEE",
        "currency": "USD",
        "price_eur": 75.3609,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 66.5,
        "conviction_pct": 26.4,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 71.5929,
        "entry_max_eur": 74.6073,
        "trigger_price_eur": 78.8586,
        "stop_loss_eur": 63.4162,
        "target_1_eur": 85.5371,
        "target_2_eur": 90.6252,
        "upside_pct": 12.43,
        "risk_reward": 0.98,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (26/100), R/R 0.98 (<2).",
        "why_now_json": [
            "upside_pct 12.4",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale"
        ],
        "invalidators_json": [
            "Perder 63.42 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.413398+00:00",
            "vela": "2026-05-27T06:43:32.413398+00:00",
            "cvt": "2026-05-28T20:52:19.413398+00:00",
            "victoria": "2026-05-20T11:18:16.413398+00:00",
            "fmp": "2026-05-27T21:29:59.413398+00:00",
            "unf": "2026-06-18T14:05:44.413398+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "d86ce1aebb3e5d3a7622ab762a7c7130660ffbae082fc761681d592166da184a",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:05:43",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "NextEra Energy, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios"
        ],
        "id": "NEE"
    },
    {
        "user_id": 1,
        "ticker": "DHL.DE",
        "currency": "EUR",
        "price_eur": 50.58,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 61.8,
        "conviction_pct": 24.8,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 50.49,
        "entry_max_eur": 52.5096,
        "trigger_price_eur": null,
        "stop_loss_eur": 49.4802,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (25/100).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 49.48 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.820441+00:00",
            "vela": "2026-05-28T05:25:34.820441+00:00",
            "cvt": "2026-05-28T04:05:02.820441+00:00",
            "victoria": "2026-05-27T23:06:40.820441+00:00",
            "fmp": "2026-05-27T21:29:59.820441+00:00",
            "unf": "2026-06-18T14:05:44.820441+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "5579bb2c4ee3bf2a7ac92330452530988f09c85c2689e0d3faf3bfe21b6cfb2d",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T10:08:39",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Deutsche Post AG",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "DHL.DE"
    },
    {
        "user_id": 1,
        "ticker": "DRO.AX",
        "currency": "AUD",
        "price_eur": 1.9289,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 4.6,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 1.8673,
        "entry_max_eur": 1.942,
        "trigger_price_eur": null,
        "stop_loss_eur": 1.83,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "fmp_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 1.83 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T18:59:46.418766+00:00",
            "vela": "2026-05-25T10:53:21.418766+00:00",
            "cvt": "2026-05-20T09:37:26.418766+00:00",
            "victoria": "2026-05-20T10:49:50.418766+00:00",
            "fmp": "2026-05-25T18:59:46.418766+00:00",
            "unf": "2026-05-20T01:37:53.418766+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "ba3642b871dfbed60e85830c5681b7fc21c8bc4ecd9fd68449309a39e1394d3c",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:03:08",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "DroneShield Limited",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "FMP: rating venta",
            "UNF: tier negativo"
        ],
        "id": "DRO.AX"
    },
    {
        "user_id": 1,
        "ticker": "NFC.DE",
        "currency": "EUR",
        "price_eur": 76.96,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6.2,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 73.41,
        "entry_max_eur": 76.3464,
        "trigger_price_eur": 86.4358,
        "stop_loss_eur": 71.9418,
        "target_1_eur": 85.58,
        "target_2_eur": null,
        "upside_pct": 11.2,
        "risk_reward": 2.1,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "R/R 2.1",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 71.94 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T18:59:47.241453+00:00",
            "vela": "2026-05-21T21:17:03.241453+00:00",
            "cvt": "2026-05-20T11:45:05.241453+00:00",
            "victoria": "2026-05-19T10:44:17.241453+00:00",
            "fmp": "2026-05-25T18:59:47.241453+00:00",
            "unf": "2026-05-18T15:03:48.241453+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "f95cb89d75ece8c0a9bf7a4dc24f98d815d2302fade2bb3e9d8893d5b7cf6e35",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:03:09",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Netflix, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "UNF: tier negativo"
        ],
        "id": "NFC.DE"
    },
    {
        "user_id": 1,
        "ticker": "FI",
        "currency": "USD",
        "price_eur": 54.8548,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 7,
        "quality_score": 40,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 51.3898,
        "entry_max_eur": 53.4454,
        "trigger_price_eur": 58.1387,
        "stop_loss_eur": 50.362,
        "target_1_eur": 127.4808,
        "target_2_eur": 163.7938,
        "upside_pct": 132.57,
        "risk_reward": 24.01,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "upside_pct 132.6",
            "R/R 24.0",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "vela_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 50.36 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": null,
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.848177+00:00",
            "vela": "2026-05-21T21:17:01.848177+00:00",
            "cvt": "2026-05-20T12:10:02.848177+00:00",
            "victoria": "2026-05-19T09:33:19.848177+00:00",
            "fmp": "2026-05-27T21:29:59.848177+00:00",
            "unf": "2026-05-24T18:10:27.848177+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "03e847116986d53a82262148f0c372fee1051a95af5206777bf4a5944d1292a3",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-26T21:25:48",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Fiserv, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Velas: venta",
            "UNF: tier negativo"
        ],
        "id": "FI"
    },
    {
        "user_id": 1,
        "ticker": "AGXPF",
        "currency": "USD",
        "price_eur": 0.4746,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 4.6,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 0.4385,
        "entry_max_eur": 0.456,
        "trigger_price_eur": null,
        "stop_loss_eur": 0.4297,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Victoria: evitar.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "victoria_avoid",
            "upside_unknown",
            "fmp_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 0.43 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "VENTA",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.089196+00:00",
            "vela": "2026-05-23T13:25:03.089196+00:00",
            "cvt": "2026-05-18T10:37:03.089196+00:00",
            "victoria": "2026-05-20T10:23:27.089196+00:00",
            "fmp": "2026-05-27T21:29:58.089196+00:00",
            "unf": "2026-05-28T09:55:13.089196+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "victoria_sell",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "f395eb5ecfd792ce6258c62057cfb829a47c83ed0807e03367415320b6c476eb",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:05:26",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Silver X Mining Corp.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Victoria: evitar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "FMP: rating venta",
            "UNF: tier negativo"
        ],
        "id": "AGXPF"
    },
    {
        "user_id": 1,
        "ticker": "HEIA.AS",
        "currency": "EUR",
        "price_eur": 71.02,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.9,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 66.88,
        "entry_max_eur": 69.5552,
        "trigger_price_eur": null,
        "stop_loss_eur": 65.5424,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 65.54 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.410215+00:00",
            "vela": "2026-05-26T14:25:14.410215+00:00",
            "cvt": "2026-05-22T18:42:11.410215+00:00",
            "victoria": "2026-05-19T09:41:54.410215+00:00",
            "fmp": "2026-05-27T21:29:59.410215+00:00",
            "unf": "2026-05-27T20:11:09.410215+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "2ffc12bdf4b4b40e166f039b76b4f072462272400f1c3a4a5d40c100e151d930",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T13:48:04",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Heineken N.V.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "UNF: tier negativo"
        ],
        "id": "HEIA.AS"
    },
    {
        "user_id": 1,
        "ticker": "KGC",
        "currency": "USD",
        "price_eur": 24.5127,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.2,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 23.5927,
        "entry_max_eur": 24.5364,
        "trigger_price_eur": null,
        "stop_loss_eur": 23.1208,
        "target_1_eur": 36.2991,
        "target_2_eur": 42.1923,
        "upside_pct": 49.35,
        "risk_reward": 8.31,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "upside_pct 49.3",
            "R/R 8.3",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell"
        ],
        "invalidators_json": [
            "Perder 23.12 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "COMPRA",
            "VEL": "REDUCIR_VENDER",
            "FMP": "A",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.143974+00:00",
            "vela": "2026-05-25T21:05:37.143974+00:00",
            "cvt": "2026-05-20T12:12:11.143974+00:00",
            "victoria": "2026-05-19T16:26:13.143974+00:00",
            "fmp": "2026-05-27T21:29:59.143974+00:00",
            "unf": "2026-06-18T14:30:31.143974+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "vela_sell"
        ],
        "cvt_buy_signals_json": [
            "SCR",
            "VIC",
            "FMP",
            "UNF>=1",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "8d1e326c5fef786623002f777db4e3093d602d1edf4fb9d53d05c08f26cb002d",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:57:20",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Kinross Gold Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta"
        ],
        "id": "KGC"
    },
    {
        "user_id": 1,
        "ticker": "AXP",
        "currency": "USD",
        "price_eur": 268.7197,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 8.7,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 265.9426,
        "entry_max_eur": 276.5803,
        "trigger_price_eur": 282.9825,
        "stop_loss_eur": 260.6237,
        "target_1_eur": 321.9497,
        "target_2_eur": 348.5647,
        "upside_pct": 20.19,
        "risk_reward": 2.84,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "upside_pct 20.2",
            "R/R 2.8",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 260.62 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.424331+00:00",
            "vela": "2026-05-26T21:44:22.424331+00:00",
            "cvt": "2026-05-19T04:58:14.424331+00:00",
            "victoria": "2026-05-20T10:31:43.424331+00:00",
            "fmp": "2026-05-27T21:29:59.424331+00:00",
            "unf": "2026-05-17T11:32:45.424331+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "30ff9428dfbbdb007c0c8fc26eb72bbff5a6346c3df7bca7e22703b52e709ee5",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T16:12:38",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "American Express Company",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "UNF: tier negativo"
        ],
        "id": "AXP"
    },
    {
        "user_id": 1,
        "ticker": "COST",
        "currency": "USD",
        "price_eur": 862.9656,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 66.5,
        "conviction_pct": 24.8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 862.3122,
        "entry_max_eur": 896.8047,
        "trigger_price_eur": 917.7589,
        "stop_loss_eur": 845.066,
        "target_1_eur": 930.6925,
        "target_2_eur": 964.556,
        "upside_pct": 5.35,
        "risk_reward": 0.65,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (25/100), Recorrido limitado (5.4%).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "low_upside"
        ],
        "invalidators_json": [
            "Perder 845.07 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.723285+00:00",
            "vela": "2026-05-27T06:43:31.723285+00:00",
            "cvt": "2026-05-26T20:59:01.723285+00:00",
            "victoria": "2026-05-19T19:39:52.723285+00:00",
            "fmp": "2026-05-27T21:29:59.723285+00:00",
            "unf": "2026-06-18T14:05:44.723285+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "349ef3866d279ac1fa90dc78f0ae8f8011a6045de6e4b5518f513c1586db0923",
        "previous_action": "REJECT",
        "changed_at": "2026-05-27T13:43:33",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Costco Wholesale Corporation",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Recorrido bajo (3-10%)"
        ],
        "id": "COST"
    },
    {
        "user_id": 1,
        "ticker": "META",
        "currency": "USD",
        "price_eur": 523.9997,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 66.5,
        "conviction_pct": 32.4,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 519.4852,
        "entry_max_eur": 540.2646,
        "trigger_price_eur": 543.9522,
        "stop_loss_eur": 509.0955,
        "target_1_eur": 708.1294,
        "target_2_eur": 800.1942,
        "upside_pct": 35.06,
        "risk_reward": 5.39,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (32/100).",
        "why_now_json": [
            "upside_pct 35.1",
            "R/R 5.4",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale"
        ],
        "invalidators_json": [
            "Perder 509.10 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T19:00:21.723309+00:00",
            "vela": "2026-05-24T15:15:00.723309+00:00",
            "cvt": "2026-05-20T12:12:16.723309+00:00",
            "victoria": "2026-05-20T12:11:13.723309+00:00",
            "fmp": "2026-05-26T19:00:21.723309+00:00",
            "unf": "2026-05-28T15:34:18.723309+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "fa3498ec00f0a69ef3481b8e30a62e01bd61215854e2e6dfd6446eca43fb876f",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T04:02:29",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Meta Platforms, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios"
        ],
        "id": "META"
    },
    {
        "user_id": 1,
        "ticker": "PFE",
        "currency": "USD",
        "price_eur": 22.5266,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 74.8,
        "conviction_pct": 26.1,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 22.4664,
        "entry_max_eur": 23.3651,
        "trigger_price_eur": 23.5595,
        "stop_loss_eur": 22.0171,
        "target_1_eur": 23.0081,
        "target_2_eur": 23.2488,
        "upside_pct": 3.4,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (26/100), Recorrido limitado (3.4%).",
        "why_now_json": [
            "Velas COMPRA_FUERTE",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "low_upside"
        ],
        "invalidators_json": [
            "Perder 22.02 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_FUERTE",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.812050+00:00",
            "vela": "2026-05-28T03:25:04.812050+00:00",
            "cvt": "2026-05-27T20:09:36.812050+00:00",
            "victoria": "2026-05-27T20:55:48.812050+00:00",
            "fmp": "2026-05-27T21:29:59.812050+00:00",
            "unf": "2026-06-18T14:30:32.812050+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "24b1747d99ff59feda8c53a425bf93ede01e2b941364ae3254955abf1e0a03d0",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T04:01:28",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Pfizer Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Recorrido bajo (3-10%)"
        ],
        "id": "PFE"
    },
    {
        "user_id": 1,
        "ticker": "BWXT",
        "currency": "USD",
        "price_eur": 171.0558,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 7.4,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 169.6629,
        "entry_max_eur": 176.4494,
        "trigger_price_eur": 181.5024,
        "stop_loss_eur": 166.2696,
        "target_1_eur": 193.309,
        "target_2_eur": 204.4356,
        "upside_pct": 10.89,
        "risk_reward": 1.66,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, UNF: tier negativo.",
        "why_now_json": [
            "upside_pct 10.9",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 166.27 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.266624+00:00",
            "vela": "2026-05-26T14:26:08.266624+00:00",
            "cvt": "2026-05-24T17:40:00.266624+00:00",
            "victoria": "2026-05-19T17:51:09.266624+00:00",
            "fmp": "2026-05-27T21:29:59.266624+00:00",
            "unf": "2026-05-24T18:10:27.266624+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "f0031b05b391a637666b45134e95d9b85ebcc443d1c28828af4381d003364c3a",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:13:30",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "BWX Technologies, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "UNF: tier negativo"
        ],
        "id": "BWXT"
    },
    {
        "user_id": 1,
        "ticker": "AUGO",
        "currency": "USD",
        "price_eur": 64.2781,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 4.9,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 61.4408,
        "entry_max_eur": 63.8984,
        "trigger_price_eur": null,
        "stop_loss_eur": 60.212,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -27.25,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 60.21 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.919845+00:00",
            "vela": "2026-05-21T21:17:00.919845+00:00",
            "cvt": "2026-05-18T10:58:19.919845+00:00",
            "victoria": "2026-05-19T19:28:40.919845+00:00",
            "fmp": "2026-05-27T21:29:59.919845+00:00",
            "unf": "2026-05-19T13:44:10.919845+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "no_upside"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "cbed393e5d84e66be151d3b6cd749879c40249b649ea5b6719e5ce94b770ad27",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:57:21",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Aura Minerals",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "AUGO"
    },
    {
        "user_id": 1,
        "ticker": "CRWD",
        "currency": "USD",
        "price_eur": 554.876,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 4.6,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 421.8746,
        "entry_max_eur": 438.7496,
        "trigger_price_eur": null,
        "stop_loss_eur": 413.4371,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -15.64,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 413.44 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.932359+00:00",
            "vela": "2026-05-21T21:17:01.932359+00:00",
            "cvt": "2026-05-19T04:42:58.932359+00:00",
            "victoria": "2026-05-19T17:57:22.932359+00:00",
            "fmp": "2026-05-27T21:29:59.932359+00:00",
            "unf": "2026-05-28T10:08:43.932359+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "336c8409aa242093ba28c6fdd2d1663e5d8fb33dc559d6709f3790c39694620b",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:11:29",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "CrowdStrike Holdings, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "CRWD"
    },
    {
        "user_id": 1,
        "ticker": "INOD",
        "currency": "USD",
        "price_eur": 76.5216,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.2,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 72.6955,
        "entry_max_eur": 75.7564,
        "trigger_price_eur": 83.4524,
        "stop_loss_eur": 64.3929,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -40.83,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 64.39 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.747608+00:00",
            "vela": "2026-05-26T14:25:14.747608+00:00",
            "cvt": "2026-05-20T11:53:50.747608+00:00",
            "victoria": "2026-05-19T18:10:39.747608+00:00",
            "fmp": "2026-05-27T21:29:59.747608+00:00",
            "unf": "2026-06-18T14:30:32.747608+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "c99e6774636baa3e83a3000490d20175e9c003841212fd7f0b7decac22e924cb",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:10:40",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Innodata Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "INOD"
    },
    {
        "user_id": 1,
        "ticker": "MOH",
        "currency": "USD",
        "price_eur": 152.9314,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.5,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 151.4955,
        "entry_max_eur": 157.5553,
        "trigger_price_eur": 159.1327,
        "stop_loss_eur": 148.4656,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -7.81,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 148.47 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.729754+00:00",
            "vela": "2026-05-26T21:13:22.729754+00:00",
            "cvt": "2026-05-18T12:47:54.729754+00:00",
            "victoria": "2026-05-20T11:14:29.729754+00:00",
            "fmp": "2026-05-27T21:29:59.729754+00:00",
            "unf": "2026-05-28T21:27:02.729754+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "39fff888f54c1c860a6047bdb02123c1ed4de44d2fedbbde8acd81459abc49d2",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T18:26:15",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Molina Healthcare, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "UNF: tier negativo"
        ],
        "id": "MOH"
    },
    {
        "user_id": 1,
        "ticker": "MU",
        "currency": "USD",
        "price_eur": 798.2404,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6.8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 585.9833,
        "entry_max_eur": 609.4226,
        "trigger_price_eur": null,
        "stop_loss_eur": 574.2636,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -33.46,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 574.26 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.781086+00:00",
            "vela": "2026-05-22T03:40:34.781086+00:00",
            "cvt": "2026-05-20T11:50:49.781086+00:00",
            "victoria": "2026-05-19T21:16:18.781086+00:00",
            "fmp": "2026-05-27T21:29:59.781086+00:00",
            "unf": "2026-06-18T14:30:31.781086+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "4c6090f15e49e953a08348f2c17da3dadbb844f7e5709bf0b6e0489fda6a3be8",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:24:51",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Micron Technology, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "MU"
    },
    {
        "user_id": 1,
        "ticker": "PANW",
        "currency": "USD",
        "price_eur": 213.6328,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 161.1166,
        "entry_max_eur": 167.5613,
        "trigger_price_eur": 226.2853,
        "stop_loss_eur": 157.8943,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -11.51,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 157.89 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.841909+00:00",
            "vela": "2026-05-27T06:43:33.841909+00:00",
            "cvt": "2026-05-18T13:18:11.841909+00:00",
            "victoria": "2026-05-25T15:43:17.841909+00:00",
            "fmp": "2026-05-27T21:29:59.841909+00:00",
            "unf": "2026-06-18T14:30:31.841909+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "no_upside"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "dc4ff4c84a218d149e65427097f9ba2cb223f87f10a64dd35e2392b2769d9036",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T17:19:21",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Palo Alto Networks, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "PANW"
    },
    {
        "user_id": 1,
        "ticker": "POWL",
        "currency": "USD",
        "price_eur": 254.4471,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6.9,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 224.9046,
        "entry_max_eur": 233.9008,
        "trigger_price_eur": 279.6653,
        "stop_loss_eur": 220.4065,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -14.88,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 220.41 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.795994+00:00",
            "vela": "2026-05-21T21:17:03.795994+00:00",
            "cvt": "2026-05-18T10:44:33.795994+00:00",
            "victoria": "2026-05-19T16:56:11.795994+00:00",
            "fmp": "2026-05-27T21:29:59.795994+00:00",
            "unf": "2026-06-18T14:30:31.795994+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "44ce1275e4c0b5b6179e33d2c74fc470e9571320a83ec1a4f475cbe2e075cf3f",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:43:09",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Powell Industries, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "POWL"
    },
    {
        "user_id": 1,
        "ticker": "PWR",
        "currency": "USD",
        "price_eur": 630.7613,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6.5,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 610.3928,
        "entry_max_eur": 634.8085,
        "trigger_price_eur": 681.8952,
        "stop_loss_eur": 598.1849,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -8.04,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 598.18 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.801754+00:00",
            "vela": "2026-05-26T21:13:22.801754+00:00",
            "cvt": "2026-05-19T09:26:56.801754+00:00",
            "victoria": "2026-05-20T11:27:09.801754+00:00",
            "fmp": "2026-05-27T21:29:59.801754+00:00",
            "unf": "2026-05-28T04:36:55.801754+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "55ffb1c635558d93e5dd438a59dac1c249de8b0303246398fd45bfaf177b1b5d",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:43:09",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Quanta Services, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "PWR"
    },
    {
        "user_id": 1,
        "ticker": "CCI.CN",
        "currency": "CAD",
        "price_eur": 0.3978,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 2.3,
        "quality_score": 20,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 0.3854,
        "entry_max_eur": 0.4008,
        "trigger_price_eur": 0.408,
        "stop_loss_eur": 0.3777,
        "target_1_eur": 0.404,
        "target_2_eur": null,
        "upside_pct": 1.56,
        "risk_reward": 0.14,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Victoria: evitar.",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "victoria_avoid",
            "upside_unknown",
            "fmp_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 0.38 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "VENTA",
            "VEL": "COMPRA_MANTENER",
            "FMP": "D+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.986752+00:00",
            "vela": "2026-05-23T21:38:54.986752+00:00",
            "cvt": "2026-05-20T04:24:45.986752+00:00",
            "victoria": "2026-05-20T10:38:57.986752+00:00",
            "fmp": "2026-05-27T21:29:59.986752+00:00",
            "unf": "2026-05-28T21:52:35.986752+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "victoria_sell",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "6b3eb25658271a632a74eca470badabdede8096d623dede5ed6ec188698c98e4",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:11:29",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Canadian Copper Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Victoria: evitar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "FMP: rating venta",
            "UNF: tier negativo"
        ],
        "id": "CCI.CN"
    },
    {
        "user_id": 1,
        "ticker": "AI.PA",
        "currency": "EUR",
        "price_eur": 182.94,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 71.8,
        "conviction_pct": 26.3,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 174.1,
        "entry_max_eur": 181.064,
        "trigger_price_eur": 185.0926,
        "stop_loss_eur": 170.618,
        "target_1_eur": 183.26,
        "target_2_eur": null,
        "upside_pct": 0.17,
        "risk_reward": 0.21,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (26/100), Recorrido limitado (0.2%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 170.62 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.860428+00:00",
            "vela": "2026-05-28T04:25:20.860428+00:00",
            "cvt": "2026-05-28T04:17:01.860428+00:00",
            "victoria": "2026-05-28T04:08:58.860428+00:00",
            "fmp": "2026-05-27T21:29:58.860428+00:00",
            "unf": "2026-06-18T14:30:31.860428+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "121485bc8553c2db7037f92edf4ef1cba14cb969582117d140a675eda78b518c",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T10:20:43",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "L'Air Liquide S.A.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "AI.PA"
    },
    {
        "user_id": 1,
        "ticker": "ASML.AS",
        "currency": "EUR",
        "price_eur": 1389.8,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 87.7,
        "conviction_pct": 47.9,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 1249,
        "entry_max_eur": 1298.96,
        "trigger_price_eur": 1444.906,
        "stop_loss_eur": 1224.02,
        "target_1_eur": 1450,
        "target_2_eur": 1480.1,
        "upside_pct": 19.6,
        "risk_reward": 2.02,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (48/100).",
        "why_now_json": [
            "upside_pct 19.6",
            "R/R 2.0",
            "Velas COMPRA_FUERTE",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed"
        ],
        "invalidators_json": [
            "Perder 1224.02 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "COMPRA",
            "VEL": "COMPRA_FUERTE",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-26T18:32:13.997666+00:00",
            "vela": "2026-05-28T04:25:20.997666+00:00",
            "cvt": "2026-06-18T14:08:57.997666+00:00",
            "victoria": "2026-05-29T01:10:36.997666+00:00",
            "fmp": "2026-05-26T18:32:13.997666+00:00",
            "unf": "2026-06-18T14:30:32.997666+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "VIC",
            "FMP",
            "UNF>=2",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "f13ad35f3e4af6891f41a663a229b4179d3f0e9f6f66e010a31d22d78a8f1cf0",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:09:46",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "ASML Holding N.V.",
        "veto_reasons_human": [
            "CVT: esperar / mantener"
        ],
        "id": "ASML.AS"
    },
    {
        "user_id": 1,
        "ticker": "ATI",
        "currency": "USD",
        "price_eur": 146.0272,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 79.3,
        "conviction_pct": 36.8,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 128.6422,
        "entry_max_eur": 133.7879,
        "trigger_price_eur": null,
        "stop_loss_eur": 126.0694,
        "target_1_eur": 150.3514,
        "target_2_eur": 152.5135,
        "upside_pct": 7.83,
        "risk_reward": 2.15,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (37/100), Recorrido limitado (7.8%).",
        "why_now_json": [
            "R/R 2.1",
            "Velas COMPRA_FUERTE",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "low_upside"
        ],
        "invalidators_json": [
            "Perder 126.07 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_FUERTE",
            "FMP": "B",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.493436+00:00",
            "vela": "2026-05-28T05:25:34.493436+00:00",
            "cvt": "2026-06-18T14:34:42.493436+00:00",
            "victoria": "2026-05-28T04:12:52.493436+00:00",
            "fmp": "2026-05-27T21:29:59.493436+00:00",
            "unf": "2026-06-18T14:34:42.493436+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:35:34",
        "snapshot_hash": "c386da9b535c2ffdd209ffacdf9e9972fb9c41c7ce6edfb1e8ceba55bf5ff1de",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:35:34",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:35:34",
        "expires_at": "2026-06-19T14:35:34",
        "company_name": "ATI Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "Recorrido bajo (3-10%)"
        ],
        "id": "ATI"
    },
    {
        "user_id": 1,
        "ticker": "AVGO",
        "currency": "USD",
        "price_eur": 362.7123,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 74.8,
        "conviction_pct": 28.8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 353.4351,
        "entry_max_eur": 367.5725,
        "trigger_price_eur": 381.9097,
        "stop_loss_eur": 346.3664,
        "target_1_eur": 395.1579,
        "target_2_eur": 411.3807,
        "upside_pct": 11.06,
        "risk_reward": 1.3,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (29/100), R/R 1.30 (<2).",
        "why_now_json": [
            "upside_pct 11.1",
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale"
        ],
        "invalidators_json": [
            "Perder 346.37 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.576818+00:00",
            "vela": "2026-05-27T06:43:28.576818+00:00",
            "cvt": "2026-05-27T19:12:03.576818+00:00",
            "victoria": "2026-05-27T19:09:23.576818+00:00",
            "fmp": "2026-05-27T21:29:59.576818+00:00",
            "unf": "2026-06-18T14:30:31.576818+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "07fa382af1cb4563b6f87b15656c3efa663aca74748ca4c25b6ad37143cbc9d8",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T04:01:29",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Broadcom Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios"
        ],
        "id": "AVGO"
    },
    {
        "user_id": 1,
        "ticker": "BKR",
        "currency": "USD",
        "price_eur": 54.3389,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 66.5,
        "conviction_pct": 28.7,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 54.3228,
        "entry_max_eur": 56.4957,
        "trigger_price_eur": 55.1341,
        "stop_loss_eur": 53.2363,
        "target_1_eur": 62.8899,
        "target_2_eur": 67.1654,
        "upside_pct": 10.81,
        "risk_reward": 1.96,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (29/100), R/R 1.96 (<2).",
        "why_now_json": [
            "upside_pct 10.8",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale"
        ],
        "invalidators_json": [
            "Perder 53.24 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.548166+00:00",
            "vela": "2026-05-28T00:24:09.548166+00:00",
            "cvt": "2026-05-28T21:00:41.548166+00:00",
            "victoria": "2026-05-27T19:12:53.548166+00:00",
            "fmp": "2026-05-27T21:29:59.548166+00:00",
            "unf": "2026-06-18T14:05:43.548166+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "43dc2cf963cbf259a77afa763449c1dcbf992bd230312fd4050dd77a7db2494d",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:05:42",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Baker Hughes Company",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios"
        ],
        "id": "BKR"
    },
    {
        "user_id": 1,
        "ticker": "CA.PA",
        "currency": "EUR",
        "price_eur": 16.17,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 76.3,
        "conviction_pct": 30.8,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 15.3615,
        "entry_max_eur": 16.0083,
        "trigger_price_eur": 17.4629,
        "stop_loss_eur": 13.6071,
        "target_1_eur": 17.29,
        "target_2_eur": null,
        "upside_pct": 6.93,
        "risk_reward": 0.53,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (31/100), Recorrido limitado (6.9%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 13.61 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.866078+00:00",
            "vela": "2026-05-25T14:58:22.866078+00:00",
            "cvt": "2026-06-18T14:37:11.866078+00:00",
            "victoria": "2026-05-28T05:29:06.866078+00:00",
            "fmp": "2026-05-27T21:29:59.866078+00:00",
            "unf": "2026-06-18T14:37:11.866078+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:37:35",
        "snapshot_hash": "58fde8168fe6f118a3b1f5b6aa29f28e1ffe74852c38438ecfadba7a3c5f10f6",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:37:34",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:37:35",
        "expires_at": "2026-06-19T14:37:34",
        "company_name": "Carrefour S.A.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "CA.PA"
    },
    {
        "user_id": 1,
        "ticker": "DBK.DE",
        "currency": "EUR",
        "price_eur": 28.565,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6.7,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 25.95,
        "entry_max_eur": 26.988,
        "trigger_price_eur": 29.1991,
        "stop_loss_eur": 25.431,
        "target_1_eur": 28.91,
        "target_2_eur": null,
        "upside_pct": 1.21,
        "risk_reward": 1.23,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 25.43 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.455198+00:00",
            "vela": "2026-05-21T21:17:01.455198+00:00",
            "cvt": "2026-05-19T05:04:12.455198+00:00",
            "victoria": "2026-05-20T10:47:47.455198+00:00",
            "fmp": "2026-05-27T21:29:59.455198+00:00",
            "unf": "2026-05-28T10:36:31.455198+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "12f63fa80444d6aa97b4b2bd1c2800e47f7d0321c2c1f056d50e3647304ed3ba",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T16:12:38",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Deutsche Bank AG",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "DBK.DE"
    },
    {
        "user_id": 1,
        "ticker": "EGO",
        "currency": "USD",
        "price_eur": 27.1007,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 71,
        "conviction_pct": 45.1,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 26.9975,
        "entry_max_eur": 28.0774,
        "trigger_price_eur": 28.1967,
        "stop_loss_eur": 26.4576,
        "target_1_eur": 45.2515,
        "target_2_eur": 54.3269,
        "upside_pct": 68.06,
        "risk_reward": 10.6,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (45/100).",
        "why_now_json": [
            "upside_pct 68.1",
            "R/R 10.6",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed"
        ],
        "invalidators_json": [
            "Perder 26.46 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.512467+00:00",
            "vela": "2026-05-28T02:24:46.512467+00:00",
            "cvt": "2026-06-18T14:38:54.512467+00:00",
            "victoria": "2026-05-27T19:22:12.512467+00:00",
            "fmp": "2026-05-27T21:29:59.512467+00:00",
            "unf": "2026-06-18T14:38:54.512467+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "UNF>=1",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:39:35",
        "snapshot_hash": "edc6d7fc453d48a3ff1131a962757dd0f78c6a206ccdb526d992ea1a24f0c07b",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:39:35",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:39:35",
        "expires_at": "2026-06-19T14:39:35",
        "company_name": "Eldorado Gold Corporation",
        "veto_reasons_human": [
            "CVT: esperar / mantener"
        ],
        "id": "EGO"
    },
    {
        "user_id": 1,
        "ticker": "FANG",
        "currency": "USD",
        "price_eur": 165.8025,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.6,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 157.5124,
        "entry_max_eur": 164.1445,
        "trigger_price_eur": 173.244,
        "stop_loss_eur": 139.5228,
        "target_1_eur": 184.537,
        "target_2_eur": 193.9042,
        "upside_pct": 7.02,
        "risk_reward": 0.83,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Recorrido bajo (3-10%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "low_upside",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 139.52 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.643651+00:00",
            "vela": "2026-05-28T04:25:21.643651+00:00",
            "cvt": "2026-05-27T21:16:42.643651+00:00",
            "victoria": "2026-05-27T21:16:29.643651+00:00",
            "fmp": "2026-05-27T21:29:59.643651+00:00",
            "unf": "2026-06-18T14:05:44.643651+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "5b24d5000af410a2eb18305eda00d6d07f63a48101eb75358db5f1130e7f11ff",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-28T04:00:28",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Diamondback Energy, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Recorrido bajo (3-10%)",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "FANG"
    },
    {
        "user_id": 1,
        "ticker": "FIX",
        "currency": "USD",
        "price_eur": 1606.2481,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 79.3,
        "conviction_pct": 34.7,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 1569.5521,
        "entry_max_eur": 1632.3342,
        "trigger_price_eur": 1773.5669,
        "stop_loss_eur": 1538.1611,
        "target_1_eur": 1652.3192,
        "target_2_eur": 1675.3548,
        "upside_pct": 5.19,
        "risk_reward": 0.21,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (35/100), Recorrido limitado (5.2%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "low_upside"
        ],
        "invalidators_json": [
            "Perder 1538.16 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.500624+00:00",
            "vela": "2026-05-27T06:43:32.500624+00:00",
            "cvt": "2026-06-18T14:38:45.500624+00:00",
            "victoria": "2026-05-29T00:41:14.500624+00:00",
            "fmp": "2026-05-27T21:29:59.500624+00:00",
            "unf": "2026-06-18T14:38:45.500624+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:39:35",
        "snapshot_hash": "f03d671c68e3ebddc37f706fd03068a091bbdf424f99b7d188d92e5f52286dfd",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:39:35",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:39:35",
        "expires_at": "2026-06-19T14:39:35",
        "company_name": "Comfort Systems USA, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "Recorrido bajo (3-10%)"
        ],
        "id": "FIX"
    },
    {
        "user_id": 1,
        "ticker": "HRTG",
        "currency": "USD",
        "price_eur": 19.0186,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 9.8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 18.9326,
        "entry_max_eur": 19.6899,
        "trigger_price_eur": 20.8327,
        "stop_loss_eur": 18.5539,
        "target_1_eur": 30.9294,
        "target_2_eur": 36.8848,
        "upside_pct": 57.34,
        "risk_reward": 9.89,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "upside_pct 57.3",
            "R/R 9.9",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "vela_sell"
        ],
        "invalidators_json": [
            "Perder 18.55 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "A",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.135859+00:00",
            "vela": "2026-05-27T06:43:32.135859+00:00",
            "cvt": "2026-05-26T20:53:20.135859+00:00",
            "victoria": "2026-05-25T15:39:41.135859+00:00",
            "fmp": "2026-05-27T21:29:59.135859+00:00",
            "unf": "2026-06-18T14:30:31.135859+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "vela_sell"
        ],
        "cvt_buy_signals_json": [
            "FMP",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "97665bff64d9214bdc5ed39c227ea3b5df2fb333b1006e4deb6de14cdf760c60",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:42:06",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Heritage Insurance Holdings, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Velas: venta"
        ],
        "id": "HRTG"
    },
    {
        "user_id": 1,
        "ticker": "IONQ",
        "currency": "USD",
        "price_eur": 56.2305,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 74.8,
        "conviction_pct": 25.8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 52.8773,
        "entry_max_eur": 54.9924,
        "trigger_price_eur": null,
        "stop_loss_eur": 51.8198,
        "target_1_eur": 57.7779,
        "target_2_eur": 58.5516,
        "upside_pct": 5.67,
        "risk_reward": 0.88,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (26/100), Recorrido limitado (5.7%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "low_upside"
        ],
        "invalidators_json": [
            "Perder 51.82 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.750762+00:00",
            "vela": "2026-05-28T05:25:34.750762+00:00",
            "cvt": "2026-05-28T04:17:58.750762+00:00",
            "victoria": "2026-05-27T23:10:36.750762+00:00",
            "fmp": "2026-05-27T21:29:59.750762+00:00",
            "unf": "2026-06-18T14:30:31.750762+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "f4f7c14b8165f53279899d34cc14f6922c6bed3ab9dcde79fb3d5460f93d7f11",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T10:21:43",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "IonQ, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Recorrido bajo (3-10%)"
        ],
        "id": "IONQ"
    },
    {
        "user_id": 1,
        "ticker": "KO",
        "currency": "USD",
        "price_eur": 69.9802,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 83.5,
        "conviction_pct": 39.1,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 64.097,
        "entry_max_eur": 66.6609,
        "trigger_price_eur": 71.0617,
        "stop_loss_eur": 62.8151,
        "target_1_eur": 74.1361,
        "target_2_eur": 76.214,
        "upside_pct": 5.9,
        "risk_reward": 1.94,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (39/100), Recorrido limitado (5.9%), R/R 1.94 (<2).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "low_upside"
        ],
        "invalidators_json": [
            "Perder 62.82 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-25T18:59:47.096863+00:00",
            "vela": "2026-05-21T21:17:02.096863+00:00",
            "cvt": "2026-06-18T14:30:36.096863+00:00",
            "victoria": "2026-05-27T19:34:57.096863+00:00",
            "fmp": "2026-05-25T18:59:47.096863+00:00",
            "unf": "2026-06-18T14:30:36.096863+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "VEL",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "8fb21bb449256b1dbf6db12545b3352e4ca8c1cfbf3a549bdb8dbb64e1dc227f",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:30:31",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:33",
        "company_name": "The Coca-Cola Company",
        "veto_reasons_human": [
            "Recorrido bajo (3-10%)"
        ],
        "id": "KO"
    },
    {
        "user_id": 1,
        "ticker": "LIN",
        "currency": "USD",
        "price_eur": 436.6631,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 74.8,
        "conviction_pct": 29.4,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 410.9295,
        "entry_max_eur": 427.3667,
        "trigger_price_eur": 442.3063,
        "stop_loss_eur": 402.7109,
        "target_1_eur": 480.3857,
        "target_2_eur": 502.247,
        "upside_pct": 8.03,
        "risk_reward": 2.15,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (29/100), Recorrido limitado (8.0%).",
        "why_now_json": [
            "R/R 2.2",
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "low_upside"
        ],
        "invalidators_json": [
            "Perder 402.71 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.178579+00:00",
            "vela": "2026-05-28T04:25:21.178579+00:00",
            "cvt": "2026-05-28T04:02:05.178579+00:00",
            "victoria": "2026-05-27T22:23:02.178579+00:00",
            "fmp": "2026-05-27T21:29:59.178579+00:00",
            "unf": "2026-06-18T14:30:31.178579+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "a5b307d0909c181ff49327306485d85e679e9b3d01f1950c0a1dd2d58babf6eb",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T10:05:38",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Linde plc",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Recorrido bajo (3-10%)"
        ],
        "id": "LIN"
    },
    {
        "user_id": 1,
        "ticker": "PYPL",
        "currency": "USD",
        "price_eur": 37.6245,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 66.5,
        "conviction_pct": 29.8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 35.7433,
        "entry_max_eur": 37.2483,
        "trigger_price_eur": 41.3701,
        "stop_loss_eur": 31.6611,
        "target_1_eur": 43.937,
        "target_2_eur": 47.0932,
        "upside_pct": 15.62,
        "risk_reward": 1.2,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (30/100), R/R 1.20 (<2).",
        "why_now_json": [
            "upside_pct 15.6",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale"
        ],
        "invalidators_json": [
            "Perder 31.66 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.804620+00:00",
            "vela": "2026-05-27T15:08:07.804620+00:00",
            "cvt": "2026-05-27T19:56:22.804620+00:00",
            "victoria": "2026-05-27T19:53:55.804620+00:00",
            "fmp": "2026-05-27T21:29:59.804620+00:00",
            "unf": "2026-06-18T14:30:32.804620+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "FMP",
            "UNF>=1",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "aadafc14e4b68e48762eb14c435ae0445b88eb63826b75e637aa3ad5fcf469c9",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T04:01:29",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "PayPal Holdings, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios"
        ],
        "id": "PYPL"
    },
    {
        "user_id": 1,
        "ticker": "RDDT",
        "currency": "USD",
        "price_eur": 132.6317,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 66.5,
        "conviction_pct": 35,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 126.5874,
        "entry_max_eur": 131.6509,
        "trigger_price_eur": null,
        "stop_loss_eur": 124.0557,
        "target_1_eur": 195.9809,
        "target_2_eur": 227.6555,
        "upside_pct": 61.02,
        "risk_reward": 8.47,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (35/100).",
        "why_now_json": [
            "upside_pct 61.0",
            "R/R 8.5",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale"
        ],
        "invalidators_json": [
            "Perder 124.06 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.480192+00:00",
            "vela": "2026-05-28T05:25:34.480192+00:00",
            "cvt": "2026-05-28T20:44:06.480192+00:00",
            "victoria": "2026-05-27T22:38:28.480192+00:00",
            "fmp": "2026-05-27T21:29:59.480192+00:00",
            "unf": "2026-06-18T14:05:44.480192+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "702ba282f70b9c2d37a097a73cbcb68c3301ac58677cd24cb4aa1527af92d803",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:05:42",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Reddit, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios"
        ],
        "id": "RDDT"
    },
    {
        "user_id": 1,
        "ticker": "NR",
        "currency": "USD",
        "price_eur": 6.2335,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 0,
        "quality_score": 0,
        "quality_state": "BROKEN",
        "entry_min_eur": 5.9218,
        "entry_max_eur": 6.1712,
        "trigger_price_eur": 6.5129,
        "stop_loss_eur": 5.2455,
        "target_1_eur": 9.4507,
        "target_2_eur": 11.0593,
        "upside_pct": 51.72,
        "risk_reward": 3.54,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Informe roto / FMP 429.",
        "why_now_json": [
            "upside_pct 51.7",
            "R/R 3.5",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "report_bad",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 5.25 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": null,
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.464153+00:00",
            "vela": "2026-05-21T21:17:03.464153+00:00",
            "cvt": "2026-05-24T18:21:03.464153+00:00",
            "victoria": "2026-05-19T09:25:28.464153+00:00",
            "fmp": "2026-05-27T21:29:59.464153+00:00",
            "unf": "2026-05-24T18:21:03.464153+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "205aa9d4ecf426b84d2b966ce6521bc7a7ef65935b16a3f2554a51c68ab2fb6c",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-26T21:14:30",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Newpark Resources, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Informe roto / FMP 429",
            "UNF: tier negativo"
        ],
        "id": "NR"
    },
    {
        "user_id": 1,
        "ticker": "BIP",
        "currency": "USD",
        "price_eur": 33.3084,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 4.7,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 31.643,
        "entry_max_eur": 32.9753,
        "trigger_price_eur": 34.5186,
        "stop_loss_eur": 28.029,
        "target_1_eur": 39.6928,
        "target_2_eur": 42.885,
        "upside_pct": 16.55,
        "risk_reward": 1.36,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 16.5",
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 28.03 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.297684+00:00",
            "vela": "2026-05-22T11:51:13.297684+00:00",
            "cvt": "2026-05-20T04:14:35.297684+00:00",
            "victoria": "2026-05-18T16:02:53.297684+00:00",
            "fmp": "2026-05-27T21:29:59.297684+00:00",
            "unf": "2026-05-28T04:10:57.297684+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "92fc7071d6274ec4c81f0c80ae53a63fe3eb36ff932bc91fa97ad1f109dba8d7",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T21:16:29",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Brookfield Infrastructure Partners L.P.",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "UNF: tier negativo"
        ],
        "id": "BIP"
    },
    {
        "user_id": 1,
        "ticker": "COIN",
        "currency": "USD",
        "price_eur": 149.4148,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 8.1,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 141.9441,
        "entry_max_eur": 147.9207,
        "trigger_price_eur": 161.8333,
        "stop_loss_eur": 125.7326,
        "target_1_eur": 206.6,
        "target_2_eur": 235.1926,
        "upside_pct": 29.99,
        "risk_reward": 2.64,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Score < 55.",
        "why_now_json": [
            "upside_pct 30.0",
            "R/R 2.6",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 125.73 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.225454+00:00",
            "vela": "2026-05-23T16:25:26.225454+00:00",
            "cvt": "2026-05-20T04:38:19.225454+00:00",
            "victoria": "2026-05-20T10:43:46.225454+00:00",
            "fmp": "2026-05-27T21:29:59.225454+00:00",
            "unf": "2026-05-28T08:44:44.225454+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "280698d7a98bd2795c7f3fc73a9d3c2a46c04dee06f35b5c2b0ea004e6acda3e",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:24:50",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Coinbase Global, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "COIN"
    },
    {
        "user_id": 1,
        "ticker": "CON.DE",
        "currency": "EUR",
        "price_eur": 71.78,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 4.7,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 66.44,
        "entry_max_eur": 69.0976,
        "trigger_price_eur": null,
        "stop_loss_eur": 65.1112,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 65.11 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.209689+00:00",
            "vela": "2026-05-26T20:41:37.209689+00:00",
            "cvt": "2026-05-18T10:30:11.209689+00:00",
            "victoria": "2026-05-20T10:45:53.209689+00:00",
            "fmp": "2026-05-27T21:29:59.209689+00:00",
            "unf": "2026-05-28T20:22:39.209689+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "4038d652ae3f8b8815c15bae95aae9af7de99ae62c3cd88486ed0ed2aa0b93f0",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T15:12:50",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Continental AG",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "CON.DE"
    },
    {
        "user_id": 1,
        "ticker": "CDNS",
        "currency": "USD",
        "price_eur": 321.6056,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 291.0657,
        "entry_max_eur": 302.7083,
        "trigger_price_eur": null,
        "stop_loss_eur": 285.2444,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -0.74,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 285.24 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.979615+00:00",
            "vela": "2026-05-21T21:17:01.979615+00:00",
            "cvt": "2026-05-19T06:57:44.979615+00:00",
            "victoria": "2026-05-20T10:40:58.979615+00:00",
            "fmp": "2026-05-27T21:29:59.979615+00:00",
            "unf": "2026-05-24T18:10:27.979615+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "no_upside"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "feca1ca54579e4b817110c6c8b144d9acc2a2d755752eaf493c52b9e9de21e32",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:26:52",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Cadence Design Systems, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "CDNS"
    },
    {
        "user_id": 1,
        "ticker": "IBM",
        "currency": "USD",
        "price_eur": 218.0138,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 0,
        "quality_score": 0,
        "quality_state": "BROKEN",
        "entry_min_eur": 201.6353,
        "entry_max_eur": 209.7007,
        "trigger_price_eur": null,
        "stop_loss_eur": 197.6026,
        "target_1_eur": 262.1184,
        "target_2_eur": 284.1707,
        "upside_pct": 20.19,
        "risk_reward": 4.33,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Informe roto / FMP 429.",
        "why_now_json": [
            "upside_pct 20.2",
            "R/R 4.3",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "report_bad",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 197.60 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T18:59:46.396924+00:00",
            "vela": "2026-05-27T06:43:32.396924+00:00",
            "cvt": "2026-05-20T11:42:46.396924+00:00",
            "victoria": "2026-05-20T11:01:49.396924+00:00",
            "fmp": "2026-05-25T18:59:46.396924+00:00",
            "unf": "2026-05-27T12:00:36.396924+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "c5957a25ffe237f7856fbf0f62151ba441551a046f6640fb0fe7756f18dab182",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T13:10:00",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "International Business Machines Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "Informe roto / FMP 429",
            "UNF: tier negativo"
        ],
        "id": "IBM"
    },
    {
        "user_id": 1,
        "ticker": "BKT.MC",
        "currency": "EUR",
        "price_eur": 14.29,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 71.8,
        "conviction_pct": 24.3,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 13.58,
        "entry_max_eur": 14.1232,
        "trigger_price_eur": 14.5541,
        "stop_loss_eur": 13.3084,
        "target_1_eur": 14.41,
        "target_2_eur": null,
        "upside_pct": 0.84,
        "risk_reward": 0.35,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (24/100), Recorrido limitado (0.8%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 13.31 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B-",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.236448+00:00",
            "vela": "2026-05-28T04:25:20.236448+00:00",
            "cvt": "2026-05-28T04:02:05.236448+00:00",
            "victoria": "2026-05-27T22:17:14.236448+00:00",
            "fmp": "2026-05-27T21:29:59.236448+00:00",
            "unf": "2026-06-18T14:30:31.236448+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "fb65929c6b883c0d0bfc68f52003c775b1c10f7cf5d01ca18fcba2160a018ebc",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T10:05:38",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Bankinter, S.A.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "BKT.MC"
    },
    {
        "user_id": 1,
        "ticker": "CNR.TO",
        "currency": "CAD",
        "price_eur": 99.8524,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 71.8,
        "conviction_pct": 25.6,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 98.1396,
        "entry_max_eur": 102.0652,
        "trigger_price_eur": 103.0778,
        "stop_loss_eur": 96.1768,
        "target_1_eur": 102.0572,
        "target_2_eur": null,
        "upside_pct": 2.21,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (26/100), Recorrido limitado (2.2%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 96.18 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T16:47:58.506580+00:00",
            "vela": "2026-05-28T03:25:03.506580+00:00",
            "cvt": "2026-05-27T21:07:10.506580+00:00",
            "victoria": "2026-05-27T20:46:06.506580+00:00",
            "fmp": "2026-05-26T16:47:58.506580+00:00",
            "unf": "2026-06-18T14:30:31.506580+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "a64e7b53a984097bef3df700a5cd570e382325f138583b916d38e7381a8f127b",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T04:00:28",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Canadian National Railway Company",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "CNR.TO"
    },
    {
        "user_id": 1,
        "ticker": "HSBK.L",
        "currency": "GBp",
        "price_eur": 0.3621,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6.4,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 0.3534,
        "entry_max_eur": 0.3675,
        "trigger_price_eur": 0.3826,
        "stop_loss_eur": 0.3463,
        "target_1_eur": 0.3788,
        "target_2_eur": null,
        "upside_pct": 4.61,
        "risk_reward": 0.53,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 0.35 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.401107+00:00",
            "vela": "2026-05-26T14:25:14.401107+00:00",
            "cvt": "2026-05-27T20:08:39.401107+00:00",
            "victoria": "2026-05-27T19:31:17.401107+00:00",
            "fmp": "2026-05-27T21:29:59.401107+00:00",
            "unf": "2026-06-18T14:05:44.401107+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "c3bd4bac69f5ca8843e1b586ceb91fcd27bd8125728bbcbdfd39cdcbc4ce28c4",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:34:58",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "JSC Halyk Bank",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "HSBK.L"
    },
    {
        "user_id": 1,
        "ticker": "IBE.MC",
        "currency": "EUR",
        "price_eur": 19.73,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 71.8,
        "conviction_pct": 23.3,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 19.2,
        "entry_max_eur": 19.968,
        "trigger_price_eur": 20.5535,
        "stop_loss_eur": 18.816,
        "target_1_eur": 20.35,
        "target_2_eur": null,
        "upside_pct": 3.14,
        "risk_reward": 0.33,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (23/100), Recorrido limitado (3.1%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 18.82 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T18:59:46.845295+00:00",
            "vela": "2026-05-21T21:17:02.845295+00:00",
            "cvt": "2026-05-26T20:55:27.845295+00:00",
            "victoria": "2026-05-19T16:18:55.845295+00:00",
            "fmp": "2026-05-25T18:59:46.845295+00:00",
            "unf": "2026-05-26T20:55:27.845295+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "3355731b5cdbe5ff57262a254fad6dfab54dc2e0e7069a03458e11f6ac80c7d5",
        "previous_action": "REJECT",
        "changed_at": "2026-05-27T04:01:55",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Iberdrola, S.A.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "IBE.MC"
    },
    {
        "user_id": 1,
        "ticker": "IDEXF",
        "currency": "USD",
        "price_eur": 52.4517,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 63.5,
        "conviction_pct": 24.5,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 49.9798,
        "entry_max_eur": 51.979,
        "trigger_price_eur": 52.9806,
        "stop_loss_eur": 48.9802,
        "target_1_eur": 52.456,
        "target_2_eur": null,
        "upside_pct": 0.01,
        "risk_reward": 0.16,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (24/100), Recorrido limitado (0.0%).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 48.98 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.994055+00:00",
            "vela": "2026-05-28T05:25:34.994055+00:00",
            "cvt": "2026-05-27T22:53:50.994055+00:00",
            "victoria": "2026-05-27T22:55:28.994055+00:00",
            "fmp": "2026-05-27T21:29:59.994055+00:00",
            "unf": "2026-06-18T14:30:31.994055+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "f6e5a0adc20a8539e11d2bf11569f4edc3f2654d7343d8452bf06f52dfecae0c",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T05:00:57",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Industria de Diseño Textil, S.A.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "IDEXF"
    },
    {
        "user_id": 1,
        "ticker": "LOG.MC",
        "currency": "EUR",
        "price_eur": 33.74,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 70.5,
        "conviction_pct": 45.6,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 29.96,
        "entry_max_eur": 31.1584,
        "trigger_price_eur": null,
        "stop_loss_eur": 29.3608,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (46/100).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 29.36 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.087053+00:00",
            "vela": "2026-05-27T15:08:07.087053+00:00",
            "cvt": "2026-06-18T14:14:20.087053+00:00",
            "victoria": "2026-05-27T19:40:16.087053+00:00",
            "fmp": "2026-05-27T21:29:59.087053+00:00",
            "unf": "2026-06-18T14:14:20.087053+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "e9b7bfe41bfcbf0d0c7b00cff8aa99196655245fdfd3428d106db4ac9b564cab",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:15:10",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:33",
        "company_name": "Logista Integral, S.A.",
        "veto_reasons_human": [
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "LOG.MC"
    },
    {
        "user_id": 1,
        "ticker": "MRL.MC",
        "currency": "EUR",
        "price_eur": 15.27,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.3,
        "quality_score": 20,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 13.45,
        "entry_max_eur": 13.988,
        "trigger_price_eur": 15.5136,
        "stop_loss_eur": 13.181,
        "target_1_eur": 15.36,
        "target_2_eur": null,
        "upside_pct": 0.59,
        "risk_reward": 1.7,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 13.18 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.178112+00:00",
            "vela": "2026-05-28T04:25:21.178112+00:00",
            "cvt": "2026-05-28T04:34:47.178112+00:00",
            "victoria": "2026-05-28T04:19:50.178112+00:00",
            "fmp": "2026-05-27T21:29:59.178112+00:00",
            "unf": "2026-06-18T14:05:43.178112+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "3160a7b9c73cdc466ea61ebb267dcb371b0d2d335666f34afe5e7b0cba157784",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-28T04:02:30",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "MERLIN Properties SOCIMI, S.A.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "MRL.MC"
    },
    {
        "user_id": 1,
        "ticker": "NESN.SW",
        "currency": "CHF",
        "price_eur": 88.6302,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 80.5,
        "conviction_pct": 41.2,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 84.0495,
        "entry_max_eur": 87.4115,
        "trigger_price_eur": 89.6269,
        "stop_loss_eur": 82.3685,
        "target_1_eur": 88.7395,
        "target_2_eur": null,
        "upside_pct": 0.12,
        "risk_reward": 0.26,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (41/100), Recorrido limitado (0.1%), R/R 0.26 (<2).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 82.37 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.030942+00:00",
            "vela": "2026-05-27T03:40:08.030942+00:00",
            "cvt": "2026-06-18T14:14:15.030942+00:00",
            "victoria": "2026-05-27T19:46:11.030942+00:00",
            "fmp": "2026-05-27T21:29:59.030942+00:00",
            "unf": "2026-06-18T14:14:15.030942+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "f23da1da3506ca7fcf1590ee0d7ffe840d7aaf92b391fc044ea6413004bbed59",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:15:10",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:33",
        "company_name": "Nestlé S.A.",
        "veto_reasons_human": [
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "NESN.SW"
    },
    {
        "user_id": 1,
        "ticker": "BABA",
        "currency": "USD",
        "price_eur": 111.4627,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.2,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 105.8896,
        "entry_max_eur": 110.3481,
        "trigger_price_eur": 116.4428,
        "stop_loss_eur": 93.7959,
        "target_1_eur": 165.988,
        "target_2_eur": 193.2506,
        "upside_pct": 48.62,
        "risk_reward": 3.36,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Score < 55.",
        "why_now_json": [
            "upside_pct 48.6",
            "R/R 3.4",
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 93.80 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T17:17:10.427209+00:00",
            "vela": "2026-05-21T21:17:00.427209+00:00",
            "cvt": "2026-05-19T04:53:46.427209+00:00",
            "victoria": "2026-05-19T15:27:13.427209+00:00",
            "fmp": "2026-05-26T17:17:10.427209+00:00",
            "unf": "2026-05-28T07:08:12.427209+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "65364c219a448b5a33bb49ce1e27881962f28da4cbc6ef6f41c810db96e630b7",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:03:10",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Alibaba Group Holding Limited",
        "veto_reasons_human": [
            "CVT: descartar",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "BABA"
    },
    {
        "user_id": 1,
        "ticker": "BEP",
        "currency": "USD",
        "price_eur": 31.3996,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.4,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 28.8632,
        "entry_max_eur": 30.0177,
        "trigger_price_eur": null,
        "stop_loss_eur": 28.2859,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -0.34,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_FUERTE",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 28.29 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_FUERTE",
            "FMP": "C+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.256220+00:00",
            "vela": "2026-05-21T21:17:00.256220+00:00",
            "cvt": "2026-05-20T04:06:14.256220+00:00",
            "victoria": "2026-05-18T16:01:01.256220+00:00",
            "fmp": "2026-05-27T21:29:59.256220+00:00",
            "unf": "2026-05-24T18:10:27.256220+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "f9abf71e510730f6d27917c779fb7ce21dbb5868d7c05bcd1574be65db1a2f0e",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:11:42",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Brookfield Renewable Partners L.P.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "BEP"
    },
    {
        "user_id": 1,
        "ticker": "CNX",
        "currency": "USD",
        "price_eur": 29.0094,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.6,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 27.5589,
        "entry_max_eur": 28.7193,
        "trigger_price_eur": 32.3041,
        "stop_loss_eur": 24.4114,
        "target_1_eur": 31.0755,
        "target_2_eur": 32.1086,
        "upside_pct": 2.44,
        "risk_reward": 0.55,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside"
        ],
        "invalidators_json": [
            "Perder 24.41 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.927587+00:00",
            "vela": "2026-05-21T21:17:01.927587+00:00",
            "cvt": "2026-05-20T12:02:13.927587+00:00",
            "victoria": "2026-05-19T15:48:43.927587+00:00",
            "fmp": "2026-05-27T21:29:59.927587+00:00",
            "unf": "2026-06-18T14:30:31.927587+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "3f30d472a19b9a1fbf00349bda0c8de56f0e377faff458f4503f2d5753041915",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:42:07",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "CNX Resources Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)"
        ],
        "id": "CNX"
    },
    {
        "user_id": 1,
        "ticker": "CRCL",
        "currency": "USD",
        "price_eur": 88.2492,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.5,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 83.8367,
        "entry_max_eur": 87.3667,
        "trigger_price_eur": 100.0821,
        "stop_loss_eur": 74.2617,
        "target_1_eur": 107.076,
        "target_2_eur": 116.4894,
        "upside_pct": 10.18,
        "risk_reward": 1.5,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 10.2",
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 74.26 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "D+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.195747+00:00",
            "vela": "2026-05-26T14:26:08.195747+00:00",
            "cvt": "2026-05-20T04:42:12.195747+00:00",
            "victoria": "2026-05-20T10:44:52.195747+00:00",
            "fmp": "2026-05-27T21:29:59.195747+00:00",
            "unf": "2026-05-28T20:49:47.195747+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "587000e3491e0a8de4677e7f6bd5f7eca96230245e3097e45987a9561dfc38e0",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:35:07",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Circle Internet Group",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "CRCL"
    },
    {
        "user_id": 1,
        "ticker": "GM",
        "currency": "USD",
        "price_eur": 72.3258,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 4.6,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 66.9005,
        "entry_max_eur": 69.5765,
        "trigger_price_eur": null,
        "stop_loss_eur": 65.5625,
        "target_1_eur": 80.6915,
        "target_2_eur": 84.8744,
        "upside_pct": 19.2,
        "risk_reward": 2.77,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Score < 55.",
        "why_now_json": [
            "upside_pct 19.2",
            "R/R 2.8",
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 65.56 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.413210+00:00",
            "vela": "2026-05-26T14:25:14.413210+00:00",
            "cvt": "2026-05-20T04:04:28.413210+00:00",
            "victoria": "2026-05-18T20:17:05.413210+00:00",
            "fmp": "2026-05-27T21:29:59.413210+00:00",
            "unf": "2026-05-19T13:49:04.413210+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "2773fe7422c3f046a9e6ff87feb1382fb218a4136f4278f48c42b6321b63b343",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T18:24:14",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "General Motors Company",
        "veto_reasons_human": [
            "CVT: descartar",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "GM"
    },
    {
        "user_id": 1,
        "ticker": "LUNR",
        "currency": "USD",
        "price_eur": 34.684,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 29.1383,
        "entry_max_eur": 30.3038,
        "trigger_price_eur": null,
        "stop_loss_eur": 28.5555,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -1.12,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target",
            "fmp_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 28.56 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.703714+00:00",
            "vela": "2026-05-21T21:17:02.703714+00:00",
            "cvt": "2026-05-18T13:21:34.703714+00:00",
            "victoria": "2026-05-20T11:09:56.703714+00:00",
            "fmp": "2026-05-27T21:29:59.703714+00:00",
            "unf": "2026-05-24T18:10:43.703714+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "fmp_sell",
            "unf_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "3b270cf530907c807c366b9a2ec89e26d8ddd19100351f1de2872a024ef0418e",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:56:20",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Intuitive Machines, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "FMP: rating venta",
            "UNF: tier negativo"
        ],
        "id": "LUNR"
    },
    {
        "user_id": 1,
        "ticker": "ORCL",
        "currency": "USD",
        "price_eur": 164.0313,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 156.018,
        "entry_max_eur": 162.2587,
        "trigger_price_eur": 167.1045,
        "stop_loss_eur": 152.8976,
        "target_1_eur": 219.7107,
        "target_2_eur": 247.5504,
        "upside_pct": 33.15,
        "risk_reward": 6.14,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Score < 55.",
        "why_now_json": [
            "upside_pct 33.2",
            "R/R 6.1",
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 152.90 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.458187+00:00",
            "vela": "2026-05-21T21:17:03.458187+00:00",
            "cvt": "2026-05-19T05:03:50.458187+00:00",
            "victoria": "2026-05-20T11:22:50.458187+00:00",
            "fmp": "2026-05-27T21:29:59.458187+00:00",
            "unf": "2026-05-28T09:46:17.458187+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "9b76e893ccb4c626d4a75594038f9592cfc098bc46fd1a2b0576c305753bcc6c",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T18:19:13",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Oracle Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "ORCL"
    },
    {
        "user_id": 1,
        "ticker": "OXY",
        "currency": "USD",
        "price_eur": 48.9136,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 46.4679,
        "entry_max_eur": 48.4245,
        "trigger_price_eur": 52.7113,
        "stop_loss_eur": 41.1608,
        "target_1_eur": 51.8755,
        "target_2_eur": 53.3564,
        "upside_pct": 2.67,
        "risk_reward": 0.48,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside"
        ],
        "invalidators_json": [
            "Perder 41.16 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.468593+00:00",
            "vela": "2026-05-26T14:25:14.468593+00:00",
            "cvt": "2026-05-20T12:22:04.468593+00:00",
            "victoria": "2026-05-19T18:26:28.468593+00:00",
            "fmp": "2026-05-27T21:29:59.468593+00:00",
            "unf": "2026-06-18T14:30:31.468593+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "FMP"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "d866e0ae40d3266d00ac0dbe98bb5cb9fc7a135018de102a5984243c5ff4e5b4",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:03:24",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Occidental Petroleum Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)"
        ],
        "id": "OXY"
    },
    {
        "user_id": 1,
        "ticker": "PLNT",
        "currency": "USD",
        "price_eur": 44.7006,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 0,
        "quality_score": 0,
        "quality_state": "BROKEN",
        "entry_min_eur": 43.196,
        "entry_max_eur": 44.9238,
        "trigger_price_eur": 47.006,
        "stop_loss_eur": 42.3321,
        "target_1_eur": 66.9107,
        "target_2_eur": 78.0158,
        "upside_pct": 49.63,
        "risk_reward": 8.48,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Informe roto / FMP 429.",
        "why_now_json": [
            "upside_pct 49.6",
            "R/R 8.5",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "report_bad",
            "fmp_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 42.33 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.447709+00:00",
            "vela": "2026-05-26T14:25:14.447709+00:00",
            "cvt": "2026-05-20T11:38:28.447709+00:00",
            "victoria": "2026-05-19T18:27:38.447709+00:00",
            "fmp": "2026-05-27T21:29:59.447709+00:00",
            "unf": "2026-05-28T04:36:55.447709+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "fca1ac080f6db2b847394a2715e0cb8f4980e87c788bd524778ba209e91cade5",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:15:31",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Planet Fitness, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Informe roto / FMP 429",
            "FMP: rating venta",
            "UNF: tier negativo"
        ],
        "id": "PLNT"
    },
    {
        "user_id": 1,
        "ticker": "FN",
        "currency": "USD",
        "price_eur": 604.5193,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 1.9,
        "quality_score": 15,
        "quality_state": "BROKEN",
        "entry_min_eur": 560.8547,
        "entry_max_eur": 583.2889,
        "trigger_price_eur": 622.6567,
        "stop_loss_eur": 549.6376,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -7.23,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: inputs sin cambios, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_stale",
            "no_upside",
            "above_target",
            "report_bad",
            "score_below_55"
        ],
        "invalidators_json": [
            "Perder 549.64 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T18:59:46.695241+00:00",
            "vela": "2026-05-21T21:17:01.695241+00:00",
            "cvt": "2026-05-19T14:47:08.695241+00:00",
            "victoria": "2026-05-20T07:53:28.695241+00:00",
            "fmp": "2026-05-25T18:59:46.695241+00:00",
            "unf": "2026-06-18T14:30:32.695241+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "score_below_55",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "99d38bc5896b134a4af9bfdca4fab790db40af72ba56294a075e35aa5360ec2a",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:01:54",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Fabrinet",
        "veto_reasons_human": [
            "CVT: inputs sin cambios",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "Informe roto / FMP 429",
            "Score < 55"
        ],
        "id": "FN"
    },
    {
        "user_id": 1,
        "ticker": "AMD",
        "currency": "USD",
        "price_eur": 426.0618,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.2,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 355.9973,
        "entry_max_eur": 370.2372,
        "trigger_price_eur": 437.5735,
        "stop_loss_eur": 348.8774,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -6.4,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 348.88 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.033982+00:00",
            "vela": "2026-05-26T21:13:21.033982+00:00",
            "cvt": "2026-05-21T06:37:32.033982+00:00",
            "victoria": "2026-05-19T19:25:42.033982+00:00",
            "fmp": "2026-05-27T21:29:58.033982+00:00",
            "unf": "2026-05-28T05:36:54.033982+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "91291eb1403d1c90b75a1fc52e14c2af58d89ff353238002dc0d16aa670f2ebb",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:04:32",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Advanced Micro Devices, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "AMD"
    },
    {
        "user_id": 1,
        "ticker": "ANA.MC",
        "currency": "EUR",
        "price_eur": 251,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 2.6,
        "quality_score": 20,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 249.6,
        "entry_max_eur": 259.584,
        "trigger_price_eur": 270.074,
        "stop_loss_eur": 244.608,
        "target_1_eur": 267.4,
        "target_2_eur": null,
        "upside_pct": 6.53,
        "risk_reward": 0.52,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "fmp_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 244.61 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "D+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.430161+00:00",
            "vela": "2026-05-21T21:17:00.430161+00:00",
            "cvt": "2026-05-20T12:14:13.430161+00:00",
            "victoria": "2026-05-19T17:37:12.430161+00:00",
            "fmp": "2026-05-27T21:29:58.430161+00:00",
            "unf": "2026-05-28T21:52:35.430161+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "f665257fc654c89dbec70e4ffe238d8dd805283d0ac988a36e0ff710a5328d12",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T15:40:03",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Acciona, S.A.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "FMP: rating venta",
            "UNF: tier negativo"
        ],
        "id": "ANA.MC"
    },
    {
        "user_id": 1,
        "ticker": "MAP.MC",
        "currency": "EUR",
        "price_eur": 4.058,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 2.8,
        "quality_score": 20,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 3.83,
        "entry_max_eur": 3.9832,
        "trigger_price_eur": 4.3026,
        "stop_loss_eur": 3.7534,
        "target_1_eur": 4.26,
        "target_2_eur": null,
        "upside_pct": 4.98,
        "risk_reward": 1.2,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "fmp_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 3.75 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.249348+00:00",
            "vela": "2026-05-21T21:17:02.249348+00:00",
            "cvt": "2026-05-20T12:15:46.249348+00:00",
            "victoria": "2026-05-20T08:17:54.249348+00:00",
            "fmp": "2026-05-27T21:29:59.249348+00:00",
            "unf": "2026-05-24T18:10:43.249348+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "2faced212dcb927f4f8b52659ab4cdafa7b133f0cdd40694c3e8570f77ceecf8",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T16:27:08",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Mapfre, S.A.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "FMP: rating venta",
            "UNF: tier negativo"
        ],
        "id": "MAP.MC"
    },
    {
        "user_id": 1,
        "ticker": "CCJ",
        "currency": "USD",
        "price_eur": 92.3762,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 0,
        "quality_score": 0,
        "quality_state": "BROKEN",
        "entry_min_eur": 89.0058,
        "entry_max_eur": 92.566,
        "trigger_price_eur": 104.2764,
        "stop_loss_eur": 87.2257,
        "target_1_eur": 113.5368,
        "target_2_eur": 124.1171,
        "upside_pct": 26.16,
        "risk_reward": 3.93,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Informe roto / FMP 429.",
        "why_now_json": [
            "upside_pct 26.2",
            "R/R 3.9",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "report_bad",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 87.23 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.222831+00:00",
            "vela": "2026-05-27T06:43:31.222831+00:00",
            "cvt": "2026-05-27T19:41:22.222831+00:00",
            "victoria": "2026-05-18T20:02:14.222831+00:00",
            "fmp": "2026-05-27T21:29:59.222831+00:00",
            "unf": "2026-06-18T14:05:44.222831+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "603264e6ecd4bb523919a8642a09d4413e013afbf3f6cf594c768636a1d3af15",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:42:10",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Cameco Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "Informe roto / FMP 429",
            "UNF: tier negativo"
        ],
        "id": "CCJ"
    },
    {
        "user_id": 1,
        "ticker": "PURR",
        "currency": "USD",
        "price_eur": 7.1879,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 2,
        "quality_score": 15,
        "quality_state": "BROKEN",
        "entry_min_eur": 6.5946,
        "entry_max_eur": 6.8584,
        "trigger_price_eur": 7.364,
        "stop_loss_eur": 6.4627,
        "target_1_eur": 7.3629,
        "target_2_eur": 7.4504,
        "upside_pct": 11.73,
        "risk_reward": 1.27,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 11.7",
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 6.46 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.441827+00:00",
            "vela": "2026-05-26T14:25:14.441827+00:00",
            "cvt": "2026-05-18T13:28:48.441827+00:00",
            "victoria": "2026-05-20T11:25:56.441827+00:00",
            "fmp": "2026-05-27T21:29:59.441827+00:00",
            "unf": "2026-05-28T20:33:49.441827+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "fd6d072e29ebaf47ebbc1892dcc85d69bab4b4dcbcd124b1fc02569342716991",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:20:49",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Hyperliquid Strategies Inc Common Stock",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "PURR"
    },
    {
        "user_id": 1,
        "ticker": "NTGY.MC",
        "currency": "EUR",
        "price_eur": 29.94,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 8.8,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 26.79,
        "entry_max_eur": 27.8616,
        "trigger_price_eur": null,
        "stop_loss_eur": 26.2542,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": 7.7,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "Velas COMPRA_FUERTE",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "low_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 26.25 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_FUERTE",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T18:06:56.447480+00:00",
            "vela": "2026-05-28T05:25:34.447480+00:00",
            "cvt": "2026-05-28T21:00:45.447480+00:00",
            "victoria": "2026-05-29T00:41:12.447480+00:00",
            "fmp": "2026-05-26T18:06:56.447480+00:00",
            "unf": "2026-06-18T14:05:44.447480+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "e4e39ebb73d5565b5bd1d489a07188c826caf0bacc77e10ff60bfd71d511e3ca",
        "previous_action": "BLOCKED",
        "changed_at": "2026-06-18T14:05:42",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Naturgy Energy Group, S.A.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Recorrido bajo (3-10%)",
            "Precio sobre objetivo"
        ],
        "id": "NTGY.MC"
    },
    {
        "user_id": 1,
        "ticker": "COHR",
        "currency": "USD",
        "price_eur": 326.8761,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 2.9,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 304.0486,
        "entry_max_eur": 316.2105,
        "trigger_price_eur": null,
        "stop_loss_eur": 297.9676,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -14.19,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 297.97 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.628139+00:00",
            "vela": "2026-05-23T18:32:29.628139+00:00",
            "cvt": "2026-05-20T04:30:49.628139+00:00",
            "victoria": "2026-05-19T19:37:23.628139+00:00",
            "fmp": "2026-05-27T21:29:59.628139+00:00",
            "unf": "2026-05-24T18:10:27.628139+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "091c84f4ac1b59b062b3cc825f86502e736bf21003986d645402393adcdc1356",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:00:23",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Coherent, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "COHR"
    },
    {
        "user_id": 1,
        "ticker": "BBVA.MC",
        "currency": "EUR",
        "price_eur": null,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.6,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": null,
        "entry_max_eur": null,
        "trigger_price_eur": null,
        "stop_loss_eur": null,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "unf_sell"
        ],
        "invalidators_json": [],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": null,
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-13T19:30:41.303867+00:00",
            "vela": "2026-05-21T21:17:00.303867+00:00",
            "cvt": "2026-05-20T11:53:45.303867+00:00",
            "victoria": "2026-05-13T19:30:41.303867+00:00",
            "fmp": "2026-05-13T19:30:41.303867+00:00",
            "unf": "2026-05-24T18:10:27.303867+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "070d9b5f9d228113fe83abee1de71dfeadb30486ed7ada468e4179864e55968f",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:03:11",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": null,
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "UNF: tier negativo"
        ],
        "id": "BBVA.MC"
    },
    {
        "user_id": 1,
        "ticker": "BAC.DE",
        "currency": "EUR",
        "price_eur": 41.485,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 71.8,
        "conviction_pct": 23.8,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 38.61,
        "entry_max_eur": 40.1544,
        "trigger_price_eur": 42.4402,
        "stop_loss_eur": 37.8378,
        "target_1_eur": 42.02,
        "target_2_eur": null,
        "upside_pct": 1.29,
        "risk_reward": 0.81,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (24/100), Recorrido limitado (1.3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 37.84 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T17:17:10.583790+00:00",
            "vela": "2026-05-28T04:25:20.583790+00:00",
            "cvt": "2026-05-28T16:17:20.583790+00:00",
            "victoria": "2026-05-29T00:38:04.583790+00:00",
            "fmp": "2026-05-26T17:17:10.583790+00:00",
            "unf": "2026-06-18T14:30:31.583790+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "2b1faa52fda19c6962b09274b2558c351b29064d686c7b0eb65c9eeb413fbc59",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:05:43",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Verizon Communications Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "BAC.DE"
    },
    {
        "user_id": 1,
        "ticker": "CABK.MC",
        "currency": "EUR",
        "price_eur": 11.42,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 71.8,
        "conviction_pct": 26.8,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 10.02,
        "entry_max_eur": 10.4208,
        "trigger_price_eur": 11.817,
        "stop_loss_eur": 9.8196,
        "target_1_eur": 11.7,
        "target_2_eur": null,
        "upside_pct": 2.45,
        "risk_reward": 2.13,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (27/100), Recorrido limitado (2.5%).",
        "why_now_json": [
            "R/R 2.1",
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 9.82 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.389654+00:00",
            "vela": "2026-05-28T05:25:34.389654+00:00",
            "cvt": "2026-05-28T04:06:29.389654+00:00",
            "victoria": "2026-05-27T23:04:41.389654+00:00",
            "fmp": "2026-05-27T21:29:59.389654+00:00",
            "unf": "2026-06-18T14:05:43.389654+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "3da1e3fb145f36be24a4548f153bc84a977e0b134c0b319442f7b1bc77ce7208",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T10:09:39",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "CaixaBank, S.A.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "CABK.MC"
    },
    {
        "user_id": 1,
        "ticker": "ENG.MC",
        "currency": "EUR",
        "price_eur": 17,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 76.3,
        "conviction_pct": 35.4,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 15.53,
        "entry_max_eur": 16.1512,
        "trigger_price_eur": 17.3518,
        "stop_loss_eur": 15.2194,
        "target_1_eur": 17.18,
        "target_2_eur": null,
        "upside_pct": 1.06,
        "risk_reward": 1.1,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (35/100), Recorrido limitado (1.1%).",
        "why_now_json": [
            "Velas COMPRA_FUERTE",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 15.22 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_FUERTE",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.856237+00:00",
            "vela": "2026-05-28T06:25:42.856237+00:00",
            "cvt": "2026-06-18T14:37:00.856237+00:00",
            "victoria": "2026-05-28T04:14:46.856237+00:00",
            "fmp": "2026-05-27T21:29:59.856237+00:00",
            "unf": "2026-06-18T14:37:00.856237+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:37:35",
        "snapshot_hash": "51308a60466fee3edea3058c91b1a311584500df009bd7fa769ecbf4a4ba3bba",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:37:34",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:37:35",
        "expires_at": "2026-06-19T14:37:34",
        "company_name": "Enagás, S.A.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "ENG.MC"
    },
    {
        "user_id": 1,
        "ticker": "IFX.DE",
        "currency": "EUR",
        "price_eur": 76.73,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 61.8,
        "conviction_pct": 24,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 40.31,
        "entry_max_eur": 41.9224,
        "trigger_price_eur": null,
        "stop_loss_eur": 39.5038,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (24/100).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 39.50 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-25T18:59:46.567587+00:00",
            "vela": "2026-05-21T21:17:02.567587+00:00",
            "cvt": "2026-05-26T21:09:35.567587+00:00",
            "victoria": "2026-05-20T11:02:33.567587+00:00",
            "fmp": "2026-05-25T18:59:46.567587+00:00",
            "unf": "2026-05-26T21:09:35.567587+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "fa11e493bca65c91d246db38bade3ccaf87f3a49944914cb89e71dcd0c608982",
        "previous_action": "REJECT",
        "changed_at": "2026-05-27T04:00:44",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Infineon Technologies AG",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "IFX.DE"
    },
    {
        "user_id": 1,
        "ticker": "P911.DE",
        "currency": "EUR",
        "price_eur": 46.74,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 61.8,
        "conviction_pct": 22.6,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 44.09,
        "entry_max_eur": 45.8536,
        "trigger_price_eur": null,
        "stop_loss_eur": 43.2082,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (23/100).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 43.21 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.076594+00:00",
            "vela": "2026-05-21T21:17:03.076594+00:00",
            "cvt": "2026-05-26T21:17:17.076594+00:00",
            "victoria": "2026-05-19T16:48:16.076594+00:00",
            "fmp": "2026-05-27T21:29:59.076594+00:00",
            "unf": "2026-05-26T21:17:17.076594+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "82a3b1532fc8526ddccbf67938d5957427b7b0a34c3df57b00910128e4d3eb2e",
        "previous_action": "REJECT",
        "changed_at": "2026-05-27T15:51:10",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Porsche AG Vz",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "P911.DE"
    },
    {
        "user_id": 1,
        "ticker": "AGX",
        "currency": "USD",
        "price_eur": 579.0792,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.4,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 542.0995,
        "entry_max_eur": 563.7835,
        "trigger_price_eur": null,
        "stop_loss_eur": 531.2575,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -31.97,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 531.26 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.863809+00:00",
            "vela": "2026-05-27T06:43:28.863809+00:00",
            "cvt": "2026-05-18T11:12:58.863809+00:00",
            "victoria": "2026-05-20T10:22:41.863809+00:00",
            "fmp": "2026-05-27T21:29:58.863809+00:00",
            "unf": "2026-06-18T14:30:32.863809+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "20da10c008216c1500a14734796ec0304d77155847dd486f56f66771e0e1a861",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T18:26:15",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Argan, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "AGX"
    },
    {
        "user_id": 1,
        "ticker": "ASTS",
        "currency": "USD",
        "price_eur": 111.4292,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 90.0891,
        "entry_max_eur": 93.6927,
        "trigger_price_eur": null,
        "stop_loss_eur": 88.2873,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -9.08,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 88.29 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.854582+00:00",
            "vela": "2026-05-26T20:42:55.854582+00:00",
            "cvt": "2026-05-19T10:41:13.854582+00:00",
            "victoria": "2026-05-20T10:34:04.854582+00:00",
            "fmp": "2026-05-27T21:29:59.854582+00:00",
            "unf": "2026-05-28T04:10:57.854582+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "ea556d8ebc26c67e71a60cded36f4e3111593418665218cc8ad474e26648fede",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:56:20",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "AST SpaceMobile, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "ASTS"
    },
    {
        "user_id": 1,
        "ticker": "BE",
        "currency": "USD",
        "price_eur": 252.6072,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 2.8,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 222.4371,
        "entry_max_eur": 231.3346,
        "trigger_price_eur": null,
        "stop_loss_eur": 217.9884,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -31.73,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 217.99 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.608912+00:00",
            "vela": "2026-05-21T21:17:00.608912+00:00",
            "cvt": "2026-05-19T04:38:59.608912+00:00",
            "victoria": "2026-05-20T10:34:15.608912+00:00",
            "fmp": "2026-05-27T21:29:59.608912+00:00",
            "unf": "2026-05-28T21:52:35.608912+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "7e5d40c89f6b22e38ea1ff2f889f84380cf318a90b860bbc1ea13fed8886046b",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:00:23",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Bloom Energy Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "BE"
    },
    {
        "user_id": 1,
        "ticker": "BRK-B",
        "currency": "USD",
        "price_eur": 412.6319,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.5,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 408.9864,
        "entry_max_eur": 425.3459,
        "trigger_price_eur": 440.1961,
        "stop_loss_eur": 400.8067,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -4.28,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 400.81 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.219229+00:00",
            "vela": "2026-05-27T06:43:31.219229+00:00",
            "cvt": "2026-05-20T11:51:39.219229+00:00",
            "victoria": "2026-05-20T10:38:15.219229+00:00",
            "fmp": "2026-05-27T21:29:59.219229+00:00",
            "unf": "2026-06-18T14:30:31.219229+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "c2d58169b7833bb163455547c52abb37b845c6c24ee08f0f04d2a8b0aaf439d7",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T14:45:42",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Berkshire Hathaway Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "BRK-B"
    },
    {
        "user_id": 1,
        "ticker": "CMP",
        "currency": "USD",
        "price_eur": 27.2554,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.3,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 22.5437,
        "entry_max_eur": 23.4454,
        "trigger_price_eur": null,
        "stop_loss_eur": 22.0928,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -13.93,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 22.09 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.962947+00:00",
            "vela": "2026-05-21T21:17:01.962947+00:00",
            "cvt": "2026-05-20T12:01:08.962947+00:00",
            "victoria": "2026-05-19T15:47:15.962947+00:00",
            "fmp": "2026-05-27T21:29:59.962947+00:00",
            "unf": "2026-05-24T18:10:27.962947+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "121ac010c687775b7659c77f0617a27084529ed058f03a7705fa98881e782f64",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:12:29",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Compass Minerals International, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "CMP"
    },
    {
        "user_id": 1,
        "ticker": "ENB",
        "currency": "USD",
        "price_eur": 48.2774,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 38.8885,
        "entry_max_eur": 40.444,
        "trigger_price_eur": 50.4014,
        "stop_loss_eur": 38.1107,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -19.26,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 38.11 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.952033+00:00",
            "vela": "2026-05-23T18:32:30.952033+00:00",
            "cvt": "2026-05-18T15:07:11.952033+00:00",
            "victoria": "2026-05-20T10:51:05.952033+00:00",
            "fmp": "2026-05-27T21:29:59.952033+00:00",
            "unf": "2026-05-28T08:44:44.952033+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "ca43fe88cea613d9b60002a31c235b98d28297d466f209d7b0dbdc964a705d3a",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T21:28:35",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Enbridge Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "ENB"
    },
    {
        "user_id": 1,
        "ticker": "GLW",
        "currency": "USD",
        "price_eur": 164.1259,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 151.1774,
        "entry_max_eur": 157.2245,
        "trigger_price_eur": 170.3523,
        "stop_loss_eur": 148.1539,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -13.14,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 148.15 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.744525+00:00",
            "vela": "2026-05-26T23:28:07.744525+00:00",
            "cvt": "2026-05-19T11:11:57.744525+00:00",
            "victoria": "2026-05-20T10:56:02.744525+00:00",
            "fmp": "2026-05-27T21:29:59.744525+00:00",
            "unf": "2026-05-28T16:05:40.744525+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "c5e02fd049e08af2d34a845564403acb08064a47ced0dbbb3d76344194888ca6",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:56:20",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Corning Incorporated",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "GLW"
    },
    {
        "user_id": 1,
        "ticker": "GS",
        "currency": "USD",
        "price_eur": 856.7579,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 2.8,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 765.5683,
        "entry_max_eur": 796.191,
        "trigger_price_eur": null,
        "stop_loss_eur": 750.2569,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -1.6,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 750.26 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.156441+00:00",
            "vela": "2026-05-21T21:17:01.156441+00:00",
            "cvt": "2026-05-20T04:56:33.156441+00:00",
            "victoria": "2026-05-20T10:58:04.156441+00:00",
            "fmp": "2026-05-27T21:29:59.156441+00:00",
            "unf": "2026-05-28T20:14:53.156441+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "707c741021c8dddceb0af6fd15f620dd7dc7f00225cdc8914c75f8bf8e22cddf",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T16:22:36",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "The Goldman Sachs Group, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "GS"
    },
    {
        "user_id": 1,
        "ticker": "INTC",
        "currency": "USD",
        "price_eur": 104.697,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 93.0038,
        "entry_max_eur": 96.724,
        "trigger_price_eur": null,
        "stop_loss_eur": 91.1437,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -29.29,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 91.14 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.163271+00:00",
            "vela": "2026-05-23T08:17:19.163271+00:00",
            "cvt": "2026-05-19T04:59:26.163271+00:00",
            "victoria": "2026-05-20T11:03:50.163271+00:00",
            "fmp": "2026-05-27T21:29:59.163271+00:00",
            "unf": "2026-05-28T20:49:47.163271+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "29283e86b3a1a1c4f9511821c1cbe632c63aa01c6f6a4a45e1e54273192ca592",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:56:20",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Intel Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "INTC"
    },
    {
        "user_id": 1,
        "ticker": "LRCX",
        "currency": "USD",
        "price_eur": 274.2138,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.5,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 238.9881,
        "entry_max_eur": 248.5476,
        "trigger_price_eur": null,
        "stop_loss_eur": 234.2083,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -2.46,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 234.21 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.738447+00:00",
            "vela": "2026-05-21T21:17:02.738447+00:00",
            "cvt": "2026-05-20T11:38:24.738447+00:00",
            "victoria": "2026-05-19T05:48:46.738447+00:00",
            "fmp": "2026-05-27T21:29:59.738447+00:00",
            "unf": "2026-06-18T14:30:31.738447+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "1476415d1a57438afa6d86b89a0930c9407e3fab5266ba80b991b92edf83525a",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T17:25:06",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Lam Research Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "LRCX"
    },
    {
        "user_id": 1,
        "ticker": "MRVL",
        "currency": "USD",
        "price_eur": 170.8409,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.2,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 145.2449,
        "entry_max_eur": 151.0547,
        "trigger_price_eur": null,
        "stop_loss_eur": 142.34,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -21.69,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 142.34 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.732621+00:00",
            "vela": "2026-05-26T14:25:14.732621+00:00",
            "cvt": "2026-05-18T12:32:39.732621+00:00",
            "victoria": "2026-05-20T11:13:14.732621+00:00",
            "fmp": "2026-05-27T21:29:59.732621+00:00",
            "unf": "2026-05-28T16:05:40.732621+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "700670e95cf6231ed643a39c5b2c6f8d451d0515db0dafe6be29b28ec540baea",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:56:20",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Marvell Technology, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "MRVL"
    },
    {
        "user_id": 1,
        "ticker": "NBIS",
        "currency": "USD",
        "price_eur": 179.1551,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 2.9,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 152.2264,
        "entry_max_eur": 158.3155,
        "trigger_price_eur": 192.0447,
        "stop_loss_eur": 149.1819,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -14.23,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 149.18 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.096176+00:00",
            "vela": "2026-05-21T21:17:02.096176+00:00",
            "cvt": "2026-05-18T10:47:38.096176+00:00",
            "victoria": "2026-05-20T11:16:49.096176+00:00",
            "fmp": "2026-05-27T21:29:59.096176+00:00",
            "unf": "2026-05-28T19:32:43.096176+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "1800de3847e7ead4846314e81bdb612fbeb9d2abfddb6b10b6bdb097694154b7",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T21:21:32",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Nebius Group N.V.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "NBIS"
    },
    {
        "user_id": 1,
        "ticker": "NVTS",
        "currency": "USD",
        "price_eur": 24.8308,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 2.7,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 16.7058,
        "entry_max_eur": 17.374,
        "trigger_price_eur": 25.4004,
        "stop_loss_eur": 16.3717,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -37.68,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 16.37 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.832928+00:00",
            "vela": "2026-05-26T14:25:14.832928+00:00",
            "cvt": "2026-05-18T13:20:00.832928+00:00",
            "victoria": "2026-05-19T18:25:03.832928+00:00",
            "fmp": "2026-05-27T21:29:59.832928+00:00",
            "unf": "2026-05-28T17:51:40.832928+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "f9f80e601ff26c04f4d83a19e38d19e82e6eebc072d31d1fbfca79ff8d4ce40f",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T21:27:34",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Navitas Semiconductor Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "NVTS"
    },
    {
        "user_id": 1,
        "ticker": "OR.PA",
        "currency": "EUR",
        "price_eur": 385.85,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 3.9,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 365.2,
        "entry_max_eur": 379.808,
        "trigger_price_eur": null,
        "stop_loss_eur": 357.896,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 357.90 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.461084+00:00",
            "vela": "2026-05-27T10:43:30.461084+00:00",
            "cvt": "2026-05-27T04:27:03.461084+00:00",
            "victoria": "2026-05-20T08:41:49.461084+00:00",
            "fmp": "2026-05-27T21:29:59.461084+00:00",
            "unf": "2026-05-27T10:55:27.461084+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "e1f79bafc9657cbd235471fae6796d4f5321b1994a507d142e805b98f6de0bdb",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T15:33:49",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "L'Oréal S.A.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "UNF: tier negativo"
        ],
        "id": "OR.PA"
    },
    {
        "user_id": 1,
        "ticker": "PL",
        "currency": "USD",
        "price_eur": 43.4024,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 2.8,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 30.2991,
        "entry_max_eur": 31.5111,
        "trigger_price_eur": null,
        "stop_loss_eur": 29.6931,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -36.21,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_FUERTE",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 29.69 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_FUERTE",
            "FMP": "D+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.786981+00:00",
            "vela": "2026-05-26T14:25:14.786981+00:00",
            "cvt": "2026-05-18T13:33:58.786981+00:00",
            "victoria": "2026-05-20T11:25:17.786981+00:00",
            "fmp": "2026-05-27T21:29:59.786981+00:00",
            "unf": "2026-05-28T03:39:07.786981+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "0f1383beb0781c014eca445af813aed15e6349bdb0fd9122eeed5a98f5c2d4b4",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T19:25:52",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Planet Labs PBC",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "PL"
    },
    {
        "user_id": 1,
        "ticker": "PLAB",
        "currency": "USD",
        "price_eur": 46.0075,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 1.8,
        "quality_score": 15,
        "quality_state": "BROKEN",
        "entry_min_eur": 43.0068,
        "entry_max_eur": 44.7271,
        "trigger_price_eur": null,
        "stop_loss_eur": 42.1467,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -4.14,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target"
        ],
        "invalidators_json": [
            "Perder 42.15 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.789897+00:00",
            "vela": "2026-05-21T21:17:03.789897+00:00",
            "cvt": "2026-05-21T06:13:17.789897+00:00",
            "victoria": "2026-05-19T16:53:13.789897+00:00",
            "fmp": "2026-05-27T21:29:59.789897+00:00",
            "unf": "2026-06-18T14:30:31.789897+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "bec20b3ad1ce37160cc7d797631064d75aa6da4d7db06043b90152328dfd2426",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T21:28:35",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Photronics, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo"
        ],
        "id": "PLAB"
    },
    {
        "user_id": 1,
        "ticker": "AMZN",
        "currency": "USD",
        "price_eur": 228.077,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 79.3,
        "conviction_pct": 37.4,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 187.2142,
        "entry_max_eur": 194.7028,
        "trigger_price_eur": 238.7806,
        "stop_loss_eur": 183.4699,
        "target_1_eur": 263.536,
        "target_2_eur": 281.2655,
        "upside_pct": 15.18,
        "risk_reward": 6.13,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (37/100).",
        "why_now_json": [
            "upside_pct 15.2",
            "R/R 6.1",
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed"
        ],
        "invalidators_json": [
            "Perder 183.47 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T21:29:57.003707+00:00",
            "vela": "2026-05-28T06:25:42.003707+00:00",
            "cvt": "2026-06-18T14:10:24.003707+00:00",
            "victoria": "2026-05-27T23:45:30.003707+00:00",
            "fmp": "2026-05-26T21:29:57.003707+00:00",
            "unf": "2026-06-18T14:30:32.003707+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "b0573b08f34b33f9f4aa21ced29c3840ae1ba084d6be469e0966074db42f1d89",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:10:46",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:33",
        "company_name": "Amazon.com, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener"
        ],
        "id": "AMZN"
    },
    {
        "user_id": 1,
        "ticker": "LITE",
        "currency": "USD",
        "price_eur": 775.7998,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 4,
        "quality_score": 40,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 767.434,
        "entry_max_eur": 798.1314,
        "trigger_price_eur": 837.563,
        "stop_loss_eur": 752.0853,
        "target_1_eur": 789.2762,
        "target_2_eur": 796.0144,
        "upside_pct": -2.98,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "fmp_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 752.09 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.106899+00:00",
            "vela": "2026-05-26T14:25:14.106899+00:00",
            "cvt": "2026-05-20T05:00:08.106899+00:00",
            "victoria": "2026-05-20T11:08:40.106899+00:00",
            "fmp": "2026-05-27T21:29:59.106899+00:00",
            "unf": "2026-05-28T19:32:43.106899+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "fmp_sell",
            "unf_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "ac9b590abed9113cd3d97d84caa45fd219939077d5dcb8c0709c53723f682092",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:05:26",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Lumentum Holdings Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "FMP: rating venta",
            "UNF: tier negativo"
        ],
        "id": "LITE"
    },
    {
        "user_id": 1,
        "ticker": "QCOM",
        "currency": "USD",
        "price_eur": 200.6757,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 0,
        "quality_score": 0,
        "quality_state": "BROKEN",
        "entry_min_eur": 168.1841,
        "entry_max_eur": 174.9115,
        "trigger_price_eur": 216.073,
        "stop_loss_eur": 164.8204,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -21.33,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "no_upside",
            "above_target",
            "report_bad"
        ],
        "invalidators_json": [
            "Perder 164.82 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.807729+00:00",
            "vela": "2026-05-27T06:43:33.807729+00:00",
            "cvt": "2026-05-20T12:18:39.807729+00:00",
            "victoria": "2026-05-19T16:58:04.807729+00:00",
            "fmp": "2026-05-27T21:29:59.807729+00:00",
            "unf": "2026-06-18T14:30:31.807729+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "00bf4462dc4d8b15681e784eb6f11270bdebe35409b5cc35243af43d0b382d17",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:11:28",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "QUALCOMM Incorporated",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "Informe roto / FMP 429"
        ],
        "id": "QCOM"
    },
    {
        "user_id": 1,
        "ticker": "APP",
        "currency": "USD",
        "price_eur": 488.2163,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 74.8,
        "conviction_pct": 35.5,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 389.942,
        "entry_max_eur": 405.5397,
        "trigger_price_eur": null,
        "stop_loss_eur": 382.1432,
        "target_1_eur": 560.3383,
        "target_2_eur": 596.3993,
        "upside_pct": 35.4,
        "risk_reward": 6.62,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (35/100).",
        "why_now_json": [
            "upside_pct 35.4",
            "R/R 6.6",
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale"
        ],
        "invalidators_json": [
            "Perder 382.14 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.057407+00:00",
            "vela": "2026-05-27T06:43:28.057407+00:00",
            "cvt": "2026-05-27T19:09:50.057407+00:00",
            "victoria": "2026-05-27T19:07:40.057407+00:00",
            "fmp": "2026-05-27T21:29:58.057407+00:00",
            "unf": "2026-06-18T14:30:31.057407+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "fe1b4b5e9e0332905e7be5dce653ec5ca782b77b8978a2d92831fd869ac3e223",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T04:00:28",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "AppLovin Corporation",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios"
        ],
        "id": "APP"
    },
    {
        "user_id": 1,
        "ticker": "B",
        "currency": "USD",
        "price_eur": 35.4579,
        "action": "BUY_LIMIT",
        "action_family": "buy",
        "trigger_kind": "limit",
        "status": "active",
        "confidence_pct": 96,
        "conviction_pct": 54,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 33.9619,
        "entry_max_eur": 35.3204,
        "trigger_price_eur": 36.5593,
        "stop_loss_eur": 33.2827,
        "target_1_eur": 45.1656,
        "target_2_eur": 50.0194,
        "upside_pct": 29.23,
        "risk_reward": 4.83,
        "position_size_pct": 2,
        "reason_short": "Comprar sólo si el precio entra en zona (R/R 4.8).",
        "why_now_json": [
            "upside_pct 29.2",
            "R/R 4.8",
            "Velas COMPRA_MANTENER",
            "UNF MEJOR_RECOMENDACION"
        ],
        "veto_reasons_json": [],
        "invalidators_json": [
            "Perder 33.28 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "entry_touched",
                "condition": "price_eur <= 35.3204"
            },
            {
                "type": "invalidated",
                "condition": "price_eur < 33.2827"
            },
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "COMPRA",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "MEJOR_RECOMENDACION"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.476569+00:00",
            "vela": "2026-05-28T03:25:03.476569+00:00",
            "cvt": "2026-06-18T14:05:53.476569+00:00",
            "victoria": "2026-05-27T20:58:31.476569+00:00",
            "fmp": "2026-05-27T21:29:59.476569+00:00",
            "unf": "2026-06-18T14:30:32.476569+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "VEL",
            "VIC",
            "FMP",
            "UNF>=2",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:35:34",
        "snapshot_hash": "90ad0f9247f9a2c8803af3d0a988b0cd8962b0998f558fbcdf05b2558214e6ec",
        "previous_action": "BUY_LIMIT",
        "changed_at": "2026-06-18T14:07:45",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:35:34",
        "expires_at": "2026-06-19T14:35:34",
        "company_name": "Barrick Mining Corporation",
        "veto_reasons_human": [],
        "id": "B"
    },
    {
        "user_id": 1,
        "ticker": "AEM",
        "currency": "USD",
        "price_eur": 155.635,
        "action": "WAIT",
        "action_family": "wait",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 71,
        "conviction_pct": 50.5,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 154.0611,
        "entry_max_eur": 160.2235,
        "trigger_price_eur": 159.1458,
        "stop_loss_eur": 150.9799,
        "target_1_eur": 201.5826,
        "target_2_eur": 224.5564,
        "upside_pct": 33.38,
        "risk_reward": 4.47,
        "position_size_pct": null,
        "reason_short": "Esperar: Convicción baja (50/100).",
        "why_now_json": [
            "upside_pct 33.4",
            "R/R 4.5",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [],
        "invalidators_json": [
            "Perder 150.98 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-26T17:17:09.093477+00:00",
            "vela": "2026-05-27T06:43:28.093477+00:00",
            "cvt": "2026-06-18T14:30:36.093477+00:00",
            "victoria": "2026-05-29T01:09:55.093477+00:00",
            "fmp": "2026-05-26T17:17:09.093477+00:00",
            "unf": "2026-06-18T14:30:36.093477+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "FMP",
            "UNF>=2",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "1ac4d0ed17eae9f35096c1f018a73e527e45a0ca3ec772da9589ccf3777cca00",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:31:33",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:33",
        "company_name": null,
        "veto_reasons_human": [],
        "id": "AEM"
    },
    {
        "user_id": 1,
        "ticker": "LMT",
        "currency": "USD",
        "price_eur": 456.6705,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 83.5,
        "conviction_pct": 48.4,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 435.4938,
        "entry_max_eur": 452.9136,
        "trigger_price_eur": 533.8694,
        "stop_loss_eur": 426.7839,
        "target_1_eur": 545.6554,
        "target_2_eur": 590.1478,
        "upside_pct": 19.1,
        "risk_reward": 3.55,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (48/100).",
        "why_now_json": [
            "upside_pct 19.1",
            "R/R 3.5",
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [],
        "invalidators_json": [
            "Perder 426.78 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.083928+00:00",
            "vela": "2026-05-28T03:25:03.083928+00:00",
            "cvt": "2026-06-18T14:14:20.083928+00:00",
            "victoria": "2026-05-27T19:39:52.083928+00:00",
            "fmp": "2026-05-27T21:29:59.083928+00:00",
            "unf": "2026-06-18T14:14:20.083928+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=2",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "430bc1158ea00f6f627d324cdb507175ca6abb6a27c5250a4fb09341955434ee",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:15:10",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:33",
        "company_name": "Lockheed Martin Corporation",
        "veto_reasons_human": [],
        "id": "LMT"
    },
    {
        "user_id": 1,
        "ticker": "NOW",
        "currency": "USD",
        "price_eur": 87.8021,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 2.9,
        "quality_score": 15,
        "quality_state": "BROKEN",
        "entry_min_eur": 85.1367,
        "entry_max_eur": 88.5422,
        "trigger_price_eur": null,
        "stop_loss_eur": 83.434,
        "target_1_eur": 132.378,
        "target_2_eur": 154.666,
        "upside_pct": 50.87,
        "risk_reward": 8.58,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, Informe roto / FMP 429.",
        "why_now_json": [
            "upside_pct 50.9",
            "R/R 8.6",
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "report_bad"
        ],
        "invalidators_json": [
            "Perder 83.43 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.153875+00:00",
            "vela": "2026-05-27T10:38:03.153875+00:00",
            "cvt": "2026-06-18T14:08:47.153875+00:00",
            "victoria": "2026-05-27T19:48:00.153875+00:00",
            "fmp": "2026-05-27T21:29:59.153875+00:00",
            "unf": "2026-06-18T14:08:47.153875+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:09:46",
        "snapshot_hash": "ef034591e3bb517d2cc1fc26ed0fb7ff39a9b23e448c126239af89285552e484",
        "previous_action": "BLOCKED",
        "changed_at": "2026-06-18T14:09:46",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:09:46",
        "expires_at": "2026-06-19T14:09:46",
        "company_name": "ServiceNow, Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "Informe roto / FMP 429"
        ],
        "id": "NOW"
    },
    {
        "user_id": 1,
        "ticker": "MSFT",
        "currency": "USD",
        "price_eur": 356.9118,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 66.5,
        "conviction_pct": 33.3,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 339.0662,
        "entry_max_eur": 353.3427,
        "trigger_price_eur": 372.9092,
        "stop_loss_eur": 300.3413,
        "target_1_eur": 474.217,
        "target_2_eur": 532.8696,
        "upside_pct": 31.87,
        "risk_reward": 2.28,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (33/100).",
        "why_now_json": [
            "upside_pct 31.9",
            "R/R 2.3",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale"
        ],
        "invalidators_json": [
            "Perder 300.34 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T19:00:21.978972+00:00",
            "vela": "2026-05-27T06:43:32.978972+00:00",
            "cvt": "2026-05-27T19:46:27.978972+00:00",
            "victoria": "2026-05-27T19:43:37.978972+00:00",
            "fmp": "2026-05-26T19:00:21.978972+00:00",
            "unf": "2026-06-18T14:05:44.978972+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "FMP",
            "UNF>=1",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "1f45c84d9bc1ef0103b600f47f428684eb4df05aa20d8e3b714096fc4a920c54",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T04:00:28",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Microsoft Corporation",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios"
        ],
        "id": "MSFT"
    },
    {
        "user_id": 1,
        "ticker": "FSM",
        "currency": "USD",
        "price_eur": 8.1852,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 71,
        "conviction_pct": 46.9,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 7.7759,
        "entry_max_eur": 8.1033,
        "trigger_price_eur": 8.4928,
        "stop_loss_eur": 6.8878,
        "target_1_eur": 12.0281,
        "target_2_eur": 13.9496,
        "upside_pct": 49.73,
        "risk_reward": 3.23,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (47/100).",
        "why_now_json": [
            "upside_pct 49.7",
            "R/R 3.2",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed"
        ],
        "invalidators_json": [
            "Perder 6.89 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.007109+00:00",
            "vela": "2026-05-27T06:43:32.007109+00:00",
            "cvt": "2026-06-18T14:10:17.007109+00:00",
            "victoria": "2026-05-29T00:40:16.007109+00:00",
            "fmp": "2026-05-27T21:29:59.007109+00:00",
            "unf": "2026-06-18T14:30:32.007109+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "FMP",
            "UNF>=2",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "35700efee501dc1f4f4b9ce28b21d402099e696069c12b9c3e32027ac9fe3af6",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:10:46",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:33",
        "company_name": "Fortuna Mining Corp.",
        "veto_reasons_human": [
            "CVT: esperar / mantener"
        ],
        "id": "FSM"
    },
    {
        "user_id": 1,
        "ticker": "LULU",
        "currency": "USD",
        "price_eur": 112.6673,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 66.5,
        "conviction_pct": 34.2,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 102.4358,
        "entry_max_eur": 106.5332,
        "trigger_price_eur": null,
        "stop_loss_eur": 100.3871,
        "target_1_eur": 172.3199,
        "target_2_eur": 202.1462,
        "upside_pct": 57.71,
        "risk_reward": 10.7,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (34/100).",
        "why_now_json": [
            "upside_pct 57.7",
            "R/R 10.7",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale"
        ],
        "invalidators_json": [
            "Perder 100.39 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:59.735564+00:00",
            "vela": "2026-05-28T04:25:21.735564+00:00",
            "cvt": "2026-05-28T05:19:09.735564+00:00",
            "victoria": "2026-05-28T04:18:08.735564+00:00",
            "fmp": "2026-05-27T21:29:59.735564+00:00",
            "unf": "2026-06-18T14:30:32.735564+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "FMP",
            "UNF>=1",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "fe0d2d5d19a619883651ae643eb39b22a1c6916069de20ba34509aa673979536",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T11:22:05",
        "created_at": "2026-05-20T00:04:04",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Lululemon Athletica Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios"
        ],
        "id": "LULU"
    },
    {
        "user_id": 1,
        "ticker": "3350.T",
        "currency": "JPY",
        "price_eur": 1.5765,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 93.5,
        "conviction_pct": 4.4,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 1.4977,
        "entry_max_eur": 1.5607,
        "trigger_price_eur": 1.7613,
        "stop_loss_eur": 1.3266,
        "target_1_eur": 1.7439,
        "target_2_eur": null,
        "upside_pct": 10.62,
        "risk_reward": 0.78,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Victoria: evitar.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "victoria_avoid",
            "vela_sell",
            "upside_unknown",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 1.33 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "VENTA",
            "VEL": "REDUCIR_VENDER",
            "FMP": "C+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T17:17:09.912171+00:00",
            "vela": "2026-05-23T15:26:58.912171+00:00",
            "cvt": "2026-05-20T04:34:50.912171+00:00",
            "victoria": "2026-05-20T04:50:25.912171+00:00",
            "fmp": "2026-05-26T17:17:09.912171+00:00",
            "unf": "2026-05-26T04:03:33.912171+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "vela_sell",
            "victoria_sell",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "f05e6f30fdf092ca37d2c51068f4740492f55dc1eb06e44742a30dc94da5f74b",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-26T20:55:11",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Metaplanet Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Victoria: evitar",
            "Velas: venta",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "3350.T"
    },
    {
        "user_id": 1,
        "ticker": "0R29.L",
        "currency": "GBp",
        "price_eur": 5.0866,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85.2,
        "conviction_pct": 3.9,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 5.0387,
        "entry_max_eur": 5.2402,
        "trigger_price_eur": 5.2195,
        "stop_loss_eur": 4.9379,
        "target_1_eur": 5.1678,
        "target_2_eur": null,
        "upside_pct": 1.6,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Velas: venta.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "vela_sell",
            "upside_unknown",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 4.94 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "B",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T17:31:46.851472+00:00",
            "vela": "2026-05-21T21:16:58.851472+00:00",
            "cvt": "2026-05-19T12:26:32.851472+00:00",
            "victoria": "2026-05-20T12:19:40.851472+00:00",
            "fmp": "2026-05-26T17:31:46.851472+00:00",
            "unf": "2026-05-15T20:52:26.851472+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "1789aa9dfe75cd002107a099de64fa7d98162dd1290040bf8de1d642a9c16bfe",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-26T20:55:11",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Intuitive Surgical, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Velas: venta",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "UNF: tier negativo"
        ],
        "id": "0R29.L"
    },
    {
        "user_id": 1,
        "ticker": "2600.HK",
        "currency": "HKD",
        "price_eur": 1.257,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 63.5,
        "conviction_pct": 23.4,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 1.1747,
        "entry_max_eur": 1.2217,
        "trigger_price_eur": 1.2972,
        "stop_loss_eur": 1.1512,
        "target_1_eur": 1.2844,
        "target_2_eur": null,
        "upside_pct": 2.18,
        "risk_reward": 0.89,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (23/100), Recorrido limitado (2.2%).",
        "why_now_json": [
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 1.15 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.989556+00:00",
            "vela": "2026-05-28T05:25:34.989556+00:00",
            "cvt": "2026-05-28T04:19:37.989556+00:00",
            "victoria": "2026-05-27T22:54:10.989556+00:00",
            "fmp": "2026-05-27T21:29:58.989556+00:00",
            "unf": "2026-06-18T14:30:31.989556+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "FMP",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "d0f87e90f479b8b9e1848b097a3003159dd026fcbcfb250993512da6be1863b1",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T10:22:44",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Aluminum Corporation of China Limited",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "2600.HK"
    },
    {
        "user_id": 1,
        "ticker": "3CP.F",
        "currency": "EUR",
        "price_eur": 3.3035,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.3,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 3.1383,
        "entry_max_eur": 3.2705,
        "trigger_price_eur": 3.6259,
        "stop_loss_eur": 2.7799,
        "target_1_eur": 3.59,
        "target_2_eur": null,
        "upside_pct": 8.67,
        "risk_reward": 0.65,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 2.78 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T17:17:09.436069+00:00",
            "vela": "2026-05-26T14:26:07.436069+00:00",
            "cvt": "2026-05-20T10:02:38.436069+00:00",
            "victoria": "2026-05-20T10:12:21.436069+00:00",
            "fmp": "2026-05-26T17:17:09.436069+00:00",
            "unf": "2026-05-21T06:16:00.436069+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "55c1afb1b24f30604bab96bd9c4c91e77fcc3f641a261218c4a2127fca297cc3",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:03:08",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Xiaomi Corporation",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "3CP.F"
    },
    {
        "user_id": 1,
        "ticker": "ABNB",
        "currency": "USD",
        "price_eur": 113.5787,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 4.6,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 113.3895,
        "entry_max_eur": 117.9251,
        "trigger_price_eur": 117.8494,
        "stop_loss_eur": 111.1217,
        "target_1_eur": 131.4501,
        "target_2_eur": 140.3858,
        "upside_pct": 15.6,
        "risk_reward": 1.99,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar.",
        "why_now_json": [
            "upside_pct 15.6",
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard"
        ],
        "invalidators_json": [
            "Perder 111.12 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.279384+00:00",
            "vela": "2026-05-26T14:26:07.279384+00:00",
            "cvt": "2026-05-24T18:08:55.279384+00:00",
            "victoria": "2026-05-20T12:23:05.279384+00:00",
            "fmp": "2026-05-27T21:29:58.279384+00:00",
            "unf": "2026-05-28T21:52:35.279384+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "58d79337d7751bf89a3aa465370fc729586ae3088343430b90b3650098950c23",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:20:37",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Airbnb, Inc.",
        "veto_reasons_human": [
            "CVT: descartar"
        ],
        "id": "ABNB"
    },
    {
        "user_id": 1,
        "ticker": "3988.HK",
        "currency": "HKD",
        "price_eur": 0.5697,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 76.3,
        "conviction_pct": 35.5,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 0.4907,
        "entry_max_eur": 0.5103,
        "trigger_price_eur": 0.5865,
        "stop_loss_eur": 0.4809,
        "target_1_eur": 0.5807,
        "target_2_eur": null,
        "upside_pct": 1.93,
        "risk_reward": 2.39,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (35/100), Recorrido limitado (1.9%).",
        "why_now_json": [
            "R/R 2.4",
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 0.48 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.830643+00:00",
            "vela": "2026-05-28T02:24:45.830643+00:00",
            "cvt": "2026-06-18T14:36:43.830643+00:00",
            "victoria": "2026-05-27T20:33:49.830643+00:00",
            "fmp": "2026-05-27T21:29:58.830643+00:00",
            "unf": "2026-06-18T14:36:43.830643+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:37:35",
        "snapshot_hash": "498176971844933c765fd8890acf952ba1c9d7cfa50cd254e1a0ea58ffd227d0",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:37:34",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:37:35",
        "expires_at": "2026-06-19T14:37:34",
        "company_name": "Bank of China Limited",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "3988.HK"
    },
    {
        "user_id": 1,
        "ticker": "3993.HK",
        "currency": "HKD",
        "price_eur": 2.1033,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 76.3,
        "conviction_pct": 36.4,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 1.9606,
        "entry_max_eur": 2.039,
        "trigger_price_eur": 2.1742,
        "stop_loss_eur": 1.9214,
        "target_1_eur": 2.1527,
        "target_2_eur": null,
        "upside_pct": 2.35,
        "risk_reward": 0.97,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT esperando, Convicción baja (36/100), Recorrido limitado (2.3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 1.92 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.851626+00:00",
            "vela": "2026-05-28T06:25:42.851626+00:00",
            "cvt": "2026-06-18T14:36:55.851626+00:00",
            "victoria": "2026-05-28T04:45:29.851626+00:00",
            "fmp": "2026-05-27T21:29:58.851626+00:00",
            "unf": "2026-06-18T14:36:55.851626+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:37:35",
        "snapshot_hash": "da39217cbbf3b85e6e8ca757733174f9a4c2b9027a0ce4297b8fb5bd2bbb71a5",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:37:34",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:37:35",
        "expires_at": "2026-06-19T14:37:34",
        "company_name": "CMOC Group Limited",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "3993.HK"
    },
    {
        "user_id": 1,
        "ticker": "AAL",
        "currency": "USD",
        "price_eur": 12.8281,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 4.4,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 11.8651,
        "entry_max_eur": 12.3397,
        "trigger_price_eur": null,
        "stop_loss_eur": 11.6278,
        "target_1_eur": 13.6605,
        "target_2_eur": 14.0767,
        "upside_pct": 14.8,
        "risk_reward": 1.86,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, FMP: rating venta.",
        "why_now_json": [
            "upside_pct 14.8",
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 11.63 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.276342+00:00",
            "vela": "2026-05-26T14:26:07.276342+00:00",
            "cvt": "2026-05-18T11:05:42.276342+00:00",
            "victoria": "2026-05-20T12:21:11.276342+00:00",
            "fmp": "2026-05-27T21:29:58.276342+00:00",
            "unf": "2026-05-28T16:54:14.276342+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "d722dda56fd4bed74cf99577306b36cff408caefbdf9a445dc9859325c41cc8b",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T17:13:18",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "American Airlines Group Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "AAL"
    },
    {
        "user_id": 1,
        "ticker": "ACN",
        "currency": "USD",
        "price_eur": 151.6331,
        "action": "BUY_LIMIT",
        "action_family": "buy",
        "trigger_kind": "limit",
        "status": "active",
        "confidence_pct": 71,
        "conviction_pct": 52.2,
        "quality_score": 70,
        "quality_state": "STALE",
        "entry_min_eur": 137.2574,
        "entry_max_eur": 142.7477,
        "trigger_price_eur": 155.6504,
        "stop_loss_eur": 134.5123,
        "target_1_eur": 257.6766,
        "target_2_eur": 310.6984,
        "upside_pct": 67.33,
        "risk_reward": 13.96,
        "position_size_pct": 2,
        "reason_short": "Comprar sólo si el precio entra en zona (R/R 14.0).",
        "why_now_json": [
            "upside_pct 67.3",
            "R/R 14.0",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [],
        "invalidators_json": [
            "Perder 134.51 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "entry_touched",
                "condition": "price_eur <= 142.7477"
            },
            {
                "type": "invalidated",
                "condition": "price_eur < 134.5123"
            },
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.063165+00:00",
            "vela": "2026-05-27T02:39:40.063165+00:00",
            "cvt": "2026-06-18T14:14:15.063165+00:00",
            "victoria": "2026-05-29T01:08:53.063165+00:00",
            "fmp": "2026-05-27T21:29:58.063165+00:00",
            "unf": "2026-06-18T14:14:15.063165+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "FMP",
            "UNF>=2",
            "upside>=10"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "09b768d51204fe7d4206dfadb29a42eaa83b318d33faa077fdd1bea62564aedf",
        "previous_action": "BUY_LIMIT",
        "changed_at": "2026-06-18T14:15:10",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:33",
        "company_name": "Accenture plc",
        "veto_reasons_human": [],
        "id": "ACN"
    },
    {
        "user_id": 1,
        "ticker": "7974.T",
        "currency": "JPY",
        "price_eur": 38.4575,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 38.0746,
        "entry_max_eur": 39.5976,
        "trigger_price_eur": 40.9555,
        "stop_loss_eur": 37.3131,
        "target_1_eur": 40.55,
        "target_2_eur": null,
        "upside_pct": 5.44,
        "risk_reward": 0.42,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "vela_sell",
            "upside_unknown",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 37.31 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.974009+00:00",
            "vela": "2026-05-27T20:14:58.974009+00:00",
            "cvt": "2026-05-27T20:16:26.974009+00:00",
            "victoria": "2026-05-27T20:17:51.974009+00:00",
            "fmp": "2026-05-27T21:29:58.974009+00:00",
            "unf": "2026-05-28T21:52:35.974009+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "vela_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "cfc5b8b0b8279e6d78dd44aa3fce6aba8c6aaf8e9ca6a5a078383b7963abd240",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-28T04:00:28",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Nintendo Co., Ltd.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Velas: venta",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "UNF: tier negativo"
        ],
        "id": "7974.T"
    },
    {
        "user_id": 1,
        "ticker": "AAPL",
        "currency": "USD",
        "price_eur": 267.7583,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 74.8,
        "conviction_pct": 25.2,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 219.7498,
        "entry_max_eur": 228.5398,
        "trigger_price_eur": null,
        "stop_loss_eur": 215.3548,
        "target_1_eur": 278.5453,
        "target_2_eur": 283.9388,
        "upside_pct": 4.98,
        "risk_reward": 3.79,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (25/100), Recorrido limitado (5.0%).",
        "why_now_json": [
            "R/R 3.8",
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "low_upside"
        ],
        "invalidators_json": [
            "Perder 215.35 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T14:11:01.962124+00:00",
            "vela": "2026-05-27T06:43:27.962124+00:00",
            "cvt": "2026-05-27T08:19:47.962124+00:00",
            "victoria": "2026-05-27T18:54:57.962124+00:00",
            "fmp": "2026-05-27T14:11:01.962124+00:00",
            "unf": "2026-06-18T14:05:43.962124+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "b4fe8bdf6764a66a9e295ec2fb8cf37b00686ba9d7713d24a0e4b3b2fb14ca49",
        "previous_action": "REJECT",
        "changed_at": "2026-05-27T14:34:29",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Apple Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Recorrido bajo (3-10%)"
        ],
        "id": "AAPL"
    },
    {
        "user_id": 1,
        "ticker": "1816.HK",
        "currency": "HKD",
        "price_eur": 0.3381,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 0.9,
        "quality_score": 5,
        "quality_state": "BROKEN",
        "entry_min_eur": 0.3212,
        "entry_max_eur": 0.3347,
        "trigger_price_eur": 0.3792,
        "stop_loss_eur": 0.2845,
        "target_1_eur": 0.3754,
        "target_2_eur": null,
        "upside_pct": 11.03,
        "risk_reward": 0.81,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: inputs sin cambios, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_stale",
            "upside_unknown",
            "report_bad",
            "score_below_55"
        ],
        "invalidators_json": [
            "Perder 0.28 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.366099+00:00",
            "vela": "2026-05-21T21:16:58.366099+00:00",
            "cvt": "2026-05-19T14:56:37.366099+00:00",
            "victoria": "2026-05-20T04:49:04.366099+00:00",
            "fmp": "2026-05-27T21:29:58.366099+00:00",
            "unf": "2026-05-24T18:10:27.366099+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "66c625fcc04160c0c6c9e164be760ba23037d464f79ef0361b991576bb0e9166",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T16:18:14",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "CGN Power Co., Ltd.",
        "veto_reasons_human": [
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "Informe roto / FMP 429",
            "Score < 55"
        ],
        "id": "1816.HK"
    },
    {
        "user_id": 1,
        "ticker": "1211.HK",
        "currency": "HKD",
        "price_eur": 10.2781,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 5.9,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 9.7642,
        "entry_max_eur": 10.1753,
        "trigger_price_eur": 10.9296,
        "stop_loss_eur": 8.649,
        "target_1_eur": 10.8214,
        "target_2_eur": null,
        "upside_pct": 5.29,
        "risk_reward": 0.42,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 8.65 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T17:17:09.294827+00:00",
            "vela": "2026-05-21T21:16:58.294827+00:00",
            "cvt": "2026-05-18T12:50:34.294827+00:00",
            "victoria": "2026-05-20T04:48:04.294827+00:00",
            "fmp": "2026-05-26T17:17:09.294827+00:00",
            "unf": "2026-05-20T01:57:48.294827+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "e53915e39de382a3a9ec3ff85fc4971590dee122e84d275bc8902b03b37f2c2e",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:03:09",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "BYD Company Limited",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "1211.HK"
    },
    {
        "user_id": 1,
        "ticker": "AA",
        "currency": "USD",
        "price_eur": 62.8939,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 74.8,
        "conviction_pct": 28.6,
        "quality_score": 55,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 53.7629,
        "entry_max_eur": 55.9134,
        "trigger_price_eur": 63.6618,
        "stop_loss_eur": 52.6876,
        "target_1_eur": 64.9518,
        "target_2_eur": 65.9808,
        "upside_pct": 5.91,
        "risk_reward": 2.8,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (29/100), Recorrido limitado (5.9%).",
        "why_now_json": [
            "R/R 2.8",
            "Velas COMPRA_FUERTE",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "low_upside"
        ],
        "invalidators_json": [
            "Perder 52.69 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_FUERTE",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.950351+00:00",
            "vela": "2026-05-28T03:25:03.950351+00:00",
            "cvt": "2026-05-28T13:48:56.950351+00:00",
            "victoria": "2026-05-27T21:25:07.950351+00:00",
            "fmp": "2026-05-27T21:29:58.950351+00:00",
            "unf": "2026-06-18T14:05:44.950351+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "286cc67c3e45c9b7b47a2aa682a6541e43e19b8f66de246de96ae18f3e66f950",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T19:51:46",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:31",
        "company_name": "Alcoa Corporation",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Recorrido bajo (3-10%)"
        ],
        "id": "AA"
    },
    {
        "user_id": 1,
        "ticker": "ACB.TO",
        "currency": "CAD",
        "price_eur": 2.9901,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 4.6,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 2.816,
        "entry_max_eur": 2.9286,
        "trigger_price_eur": 3.0263,
        "stop_loss_eur": 2.7597,
        "target_1_eur": 2.9963,
        "target_2_eur": null,
        "upside_pct": 0.21,
        "risk_reward": 0.4,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "fmp_sell",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 2.76 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "MANTENER_NEUTRAL",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.282766+00:00",
            "vela": "2026-05-21T21:17:00.282766+00:00",
            "cvt": "2026-05-18T11:06:03.282766+00:00",
            "victoria": "2026-05-18T12:32:39.282766+00:00",
            "fmp": "2026-05-27T21:29:58.282766+00:00",
            "unf": "2026-05-19T13:34:28.282766+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "fmp_sell",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "33cc9371a11a91756c1701d475d5273ff2249b6e2468c4c940bb7440e9944d6e",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T21:21:32",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Aurora Cannabis Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "FMP: rating venta",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "ACB.TO"
    },
    {
        "user_id": 1,
        "ticker": "ACX.MC",
        "currency": "EUR",
        "price_eur": 15.87,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6.8,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 14.07,
        "entry_max_eur": 14.6328,
        "trigger_price_eur": null,
        "stop_loss_eur": 13.7886,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: esperar / mantener, CVT: inputs sin cambios.",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown",
            "fmp_sell"
        ],
        "invalidators_json": [
            "Perder 13.79 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.285637+00:00",
            "vela": "2026-05-21T21:17:00.285637+00:00",
            "cvt": "2026-05-18T07:44:25.285637+00:00",
            "victoria": "2026-05-20T10:18:04.285637+00:00",
            "fmp": "2026-05-27T21:29:58.285637+00:00",
            "unf": "2026-05-26T07:20:50.285637+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "fmp_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "622f9145112b0356571118f5d9c88ac264aaa6e8a9b1047fe9149d77ecb2204c",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T08:05:16",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "Acerinox, S.A.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "FMP: rating venta"
        ],
        "id": "ACX.MC"
    },
    {
        "user_id": 1,
        "ticker": "3V64.DE",
        "currency": "EUR",
        "price_eur": 280.85,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 71.8,
        "conviction_pct": 24.3,
        "quality_score": 45,
        "quality_state": "CONFLICTED",
        "entry_min_eur": 280.2,
        "entry_max_eur": 291.408,
        "trigger_price_eur": 290.476,
        "stop_loss_eur": 274.596,
        "target_1_eur": 287.6,
        "target_2_eur": null,
        "upside_pct": 2.4,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Descartado: CVT sigue en ESPERAR (inputs sin cambios), Convicción baja (24/100), Recorrido limitado (2.4%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_not_confirmed",
            "cvt_stale",
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 274.60 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": "ESPERAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T17:17:09.012232+00:00",
            "vela": "2026-05-28T03:25:03.012232+00:00",
            "cvt": "2026-05-27T20:46:07.012232+00:00",
            "victoria": "2026-05-27T20:35:00.012232+00:00",
            "fmp": "2026-05-26T17:17:09.012232+00:00",
            "unf": "2026-06-18T14:11:18.012232+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "595c39c8e37242e34d4a20cff8193f6809a2a9b6895e0bc69c1f2a1dcdc72cda",
        "previous_action": "REJECT",
        "changed_at": "2026-05-28T04:00:28",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Visa Inc.",
        "veto_reasons_human": [
            "CVT: esperar / mantener",
            "CVT: inputs sin cambios",
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "3V64.DE"
    },
    {
        "user_id": 1,
        "ticker": "9618.HK",
        "currency": "HKD",
        "price_eur": 13.0163,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 2.8,
        "quality_score": 20,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 12.3655,
        "entry_max_eur": 12.8861,
        "trigger_price_eur": 14.4212,
        "stop_loss_eur": 10.9532,
        "target_1_eur": 14.2784,
        "target_2_eur": null,
        "upside_pct": 9.7,
        "risk_reward": 0.72,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin objetivo FMP (mercado EU/ASIA).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "upside_unknown",
            "score_below_55",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 10.95 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T17:17:09.433003+00:00",
            "vela": "2026-05-21T21:17:00.433003+00:00",
            "cvt": "2026-05-20T10:34:30.433003+00:00",
            "victoria": "2026-05-20T10:32:03.433003+00:00",
            "fmp": "2026-05-26T17:17:09.433003+00:00",
            "unf": "2026-05-19T01:19:49.433003+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "score_below_55",
            "unf_sell"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:07:45",
        "snapshot_hash": "f733ebfca12d9c41f8bdef448733d0c89efa1a51769be68f4242ba7e6358b9fb",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:03:09",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:07:45",
        "expires_at": "2026-06-19T14:07:45",
        "company_name": "JD.com, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin objetivo FMP (mercado EU/ASIA)",
            "Score < 55",
            "UNF: tier negativo"
        ],
        "id": "9618.HK"
    },
    {
        "user_id": 1,
        "ticker": "3750.HK",
        "currency": "HKD",
        "price_eur": 76.8446,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 70.5,
        "conviction_pct": 46.5,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 67.3488,
        "entry_max_eur": 70.0428,
        "trigger_price_eur": null,
        "stop_loss_eur": 66.0018,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (47/100).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDACION_FUERTE"
        ],
        "veto_reasons_json": [
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 66.00 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "A-",
            "UNF": "RECOMENDACION_FUERTE"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.036043+00:00",
            "vela": "2026-05-28T01:24:27.036043+00:00",
            "cvt": "2026-06-18T14:14:15.036043+00:00",
            "victoria": "2026-05-27T20:33:24.036043+00:00",
            "fmp": "2026-05-27T21:29:58.036043+00:00",
            "unf": "2026-06-18T14:14:15.036043+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "SCR",
            "VEL",
            "FMP",
            "UNF>=2"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "567d6b88808ea7f5acb436696c340366097b4a5979922de483e2da2e688d0e98",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:15:10",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:33",
        "company_name": "Contemporary Amperex Technology Co., Limited",
        "veto_reasons_human": [
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "3750.HK"
    },
    {
        "user_id": 1,
        "ticker": "ADS.DE",
        "currency": "EUR",
        "price_eur": 165.65,
        "action": "REJECT",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "active",
        "confidence_pct": 70.5,
        "conviction_pct": 37.7,
        "quality_score": 60,
        "quality_state": "STALE",
        "entry_min_eur": 164.74,
        "entry_max_eur": 171.3296,
        "trigger_price_eur": null,
        "stop_loss_eur": 161.4452,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": null,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Descartado: Convicción baja (38/100).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "upside_unknown"
        ],
        "invalidators_json": [
            "Perder 161.45 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [],
        "source_verdicts_json": {
            "CVT": null,
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "B+",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.377617+00:00",
            "vela": "2026-05-28T02:24:45.377617+00:00",
            "cvt": "2026-06-18T14:30:41.377617+00:00",
            "victoria": "2026-05-27T20:40:05.377617+00:00",
            "fmp": "2026-05-27T21:29:58.377617+00:00",
            "unf": "2026-06-18T14:30:41.377617+00:00"
        },
        "cvt_eligible": 1,
        "cvt_eligibility_status": "eligible",
        "cvt_invalidators_json": [],
        "cvt_buy_signals_json": [
            "VEL",
            "UNF>=1"
        ],
        "cvt_eligibility_at": "2026-06-18T16:32:33",
        "snapshot_hash": "82cd6db644e06baa03ead72540375353c613e4a9b5d3b34b5d8adfcea28482f3",
        "previous_action": "REJECT",
        "changed_at": "2026-06-18T14:32:33",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:32:33",
        "expires_at": "2026-06-19T14:32:33",
        "company_name": "adidas AG",
        "veto_reasons_human": [
            "Sin objetivo FMP (mercado EU/ASIA)"
        ],
        "id": "ADS.DE"
    },
    {
        "user_id": 1,
        "ticker": "AAOI",
        "currency": "USD",
        "price_eur": 154.6166,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 2.8,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 142.0894,
        "entry_max_eur": 147.773,
        "trigger_price_eur": 157.6043,
        "stop_loss_eur": 139.2476,
        "target_1_eur": null,
        "target_2_eur": null,
        "upside_pct": -58.95,
        "risk_reward": null,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: descartar, Sin recorrido (<3%).",
        "why_now_json": [
            "Velas COMPRA_MANTENER",
            "UNF NO_RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_discard",
            "no_upside",
            "above_target",
            "fmp_sell",
            "unf_sell"
        ],
        "invalidators_json": [
            "Perder 139.25 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "DESCARTAR",
            "VIC": "MANTENER",
            "VEL": "COMPRA_MANTENER",
            "FMP": "C-",
            "UNF": "NO_RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-27T21:29:58.878033+00:00",
            "vela": "2026-05-26T21:13:21.878033+00:00",
            "cvt": "2026-05-19T11:45:56.878033+00:00",
            "victoria": "2026-05-20T12:21:52.878033+00:00",
            "fmp": "2026-05-27T21:29:58.878033+00:00",
            "unf": "2026-05-27T13:48:43.878033+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "not_in_watchlist_or_portfolio",
            "fmp_sell",
            "unf_sell",
            "no_upside"
        ],
        "cvt_buy_signals_json": [
            "VEL"
        ],
        "cvt_eligibility_at": "2026-06-18T16:31:33",
        "snapshot_hash": "6067a4b5a7ca27188e61d0e279424df069a275f043b5a01194fd5e2be6ad45f3",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T20:11:28",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:31:33",
        "expires_at": "2026-06-19T14:31:32",
        "company_name": "Applied Optoelectronics, Inc.",
        "veto_reasons_human": [
            "CVT: descartar",
            "Sin recorrido (<3%)",
            "Precio sobre objetivo",
            "FMP: rating venta",
            "UNF: tier negativo"
        ],
        "id": "AAOI"
    },
    {
        "user_id": 1,
        "ticker": "ADBE",
        "currency": "USD",
        "price_eur": 208.2143,
        "action": "BLOCKED",
        "action_family": "blocked",
        "trigger_kind": null,
        "status": "blocked",
        "confidence_pct": 85,
        "conviction_pct": 6.4,
        "quality_score": 30,
        "quality_state": "INSUFFICIENT",
        "entry_min_eur": 205.5352,
        "entry_max_eur": 213.7566,
        "trigger_price_eur": 222.0623,
        "stop_loss_eur": 201.4245,
        "target_1_eur": 293.0736,
        "target_2_eur": 335.5032,
        "upside_pct": 39.37,
        "risk_reward": 6.43,
        "position_size_pct": null,
        "reason_short": "Bloqueado: CVT: inputs sin cambios, Velas: venta.",
        "why_now_json": [
            "upside_pct 39.4",
            "R/R 6.4",
            "CVT COMPRAR",
            "UNF RECOMENDADO"
        ],
        "veto_reasons_json": [
            "cvt_stale",
            "vela_sell"
        ],
        "invalidators_json": [
            "Perder 201.42 EUR",
            "CVT pasa a DESCARTAR"
        ],
        "alerts_json": [
            {
                "type": "cvt_upgrade",
                "condition": "cvt_decision IN ('COMPRAR','ACUMULAR')"
            }
        ],
        "source_verdicts_json": {
            "CVT": "COMPRAR",
            "VIC": "MANTENER",
            "VEL": "REDUCIR_VENDER",
            "FMP": "A-",
            "UNF": "RECOMENDADO"
        },
        "source_freshness_json": {
            "price": "2026-05-26T17:17:09.270707+00:00",
            "vela": "2026-05-27T06:43:28.270707+00:00",
            "cvt": "2026-05-26T20:44:37.270707+00:00",
            "victoria": "2026-05-19T23:23:34.270707+00:00",
            "fmp": "2026-05-26T17:17:09.270707+00:00",
            "unf": "2026-06-18T14:30:31.270707+00:00"
        },
        "cvt_eligible": 0,
        "cvt_eligibility_status": "min_criteria_not_met",
        "cvt_invalidators_json": [
            "vela_sell"
        ],
        "cvt_buy_signals_json": [
            "FMP",
            "UNF>=1",
            "upside>=10",
            "CVT_prev"
        ],
        "cvt_eligibility_at": "2026-06-18T16:30:32",
        "snapshot_hash": "67869b67d829dbfdf9dd41787b3f167dda2c9688ac18dfbe9b7c68d013736352",
        "previous_action": "BLOCKED",
        "changed_at": "2026-05-27T04:00:36",
        "created_at": "2026-05-20T00:04:03",
        "updated_at": "2026-06-18T16:30:32",
        "expires_at": "2026-06-19T14:30:32",
        "company_name": "Adobe Inc.",
        "veto_reasons_human": [
            "CVT: inputs sin cambios",
            "Velas: venta"
        ],
        "id": "ADBE"
    }
]