{"id":13960,"date":"2026-04-20T14:40:49","date_gmt":"2026-04-20T12:40:49","guid":{"rendered":"https:\/\/luxusrealestates.com\/?p=13960"},"modified":"2026-04-20T14:40:49","modified_gmt":"2026-04-20T12:40:49","slug":"calculadora-de-rentabilidad","status":"publish","type":"post","link":"https:\/\/luxusrealestates.com\/nb\/calculadora-de-rentabilidad\/","title":{"rendered":"Calculadora de rentabilidad de alquiler: c\u00f3mo evaluar una inversi\u00f3n inmobiliaria"},"content":{"rendered":"\n<p>La calculadora de rentabilidad del alquiler es una herramienta esencial para cualquier inversor que busque tomar decisiones basadas en datos y no en estimaciones superficiales. En un mercado inmobiliario cada vez m\u00e1s competitivo en 2026, calcular correctamente la rentabilidad de un inmueble en alquiler es lo que diferencia una inversi\u00f3n s\u00f3lida de una operaci\u00f3n poco eficiente.<\/p>\n\n\n\n<p>Antes de adquirir una propiedad destinada al alquiler, no basta con analizar el precio de compra o el ingreso mensual esperado. Es imprescindible considerar todos los costes asociados, la fiscalidad, la ocupaci\u00f3n y el potencial de revalorizaci\u00f3n del activo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\"><strong>\u00bfQu\u00e9 es una calculadora de rentabilidad del alquiler?<\/strong><\/h2>\n\n\n\n<p>Una <strong>calculadora de rentabilidad del alquiler<\/strong> permite estimar el rendimiento econ\u00f3mico de una propiedad en funci\u00f3n de variables clave como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Precio de compra del inmueble.<\/li>\n\n\n\n<li>Ingresos anuales por alquiler.<\/li>\n\n\n\n<li>Gastos asociados (IBI, comunidad, mantenimiento, seguros).<\/li>\n\n\n\n<li>Impuestos aplicables.<\/li>\n\n\n\n<li>Financiaci\u00f3n (en caso de hipoteca).<\/li>\n<\/ul>\n\n\n\n<p>El objetivo es obtener m\u00e9tricas claras como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Rentabilidad bruta<\/strong> \u2192 relaci\u00f3n entre ingresos anuales y precio de compra.<\/li>\n\n\n\n<li><strong>Rentabilidad neta<\/strong> \u2192 beneficio real tras descontar todos los gastos.<\/li>\n\n\n\n<li><strong>Cash flow<\/strong> \u2192 flujo de caja mensual.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<!DOCTYPE html>\n<html lang=\"es\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n  <title>Calculadora de rentabilidad inmobiliaria | Luxus<\/title>\n  <style>\n    :root {\n      --bg: #0f1115;\n      --panel: #171a20;\n      --panel-2: #1f2430;\n      --line: rgba(255,255,255,0.08);\n      --text: #f3f4f6;\n      --muted: #a6adbb;\n      --accent: #d6b36a;\n      --accent-2: #f2deb1;\n      --ok: #22c55e;\n      --warn: #f59e0b;\n      --bad: #ef4444;\n      --shadow: 0 18px 50px rgba(0,0,0,0.35);\n      --radius: 18px;\n    }\n\n    * { box-sizing: border-box; }\n    body {\n      margin: 0;\n      font-family: Inter, Arial, sans-serif;\n      background:\n        radial-gradient(circle at top right, rgba(214,179,106,0.10), transparent 25%),\n        linear-gradient(180deg, #0b0d11 0%, #0f1115 100%);\n      color: var(--text);\n      line-height: 1.45;\n      padding: 28px 16px;\n    }\n\n    .luxus-wrap {\n      max-width: 1100px;\n      margin: 0 auto;\n    }\n\n    .hero {\n      background: linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01));\n      border: 1px solid var(--line);\n      border-radius: 24px;\n      padding: 28px;\n      box-shadow: var(--shadow);\n      margin-bottom: 20px;\n    }\n\n    .eyebrow {\n      color: var(--accent-2);\n      text-transform: uppercase;\n      letter-spacing: 0.14em;\n      font-size: 12px;\n      font-weight: 700;\n      margin-bottom: 10px;\n    }\n\n    h1 {\n      margin: 0 0 10px;\n      font-size: clamp(28px, 5vw, 42px);\n      line-height: 1.1;\n    }\n\n    .hero p {\n      margin: 0;\n      max-width: 900px;\n      color: var(--muted);\n      font-size: 16px;\n    }\n\n    .toolbar {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 10px;\n      margin-top: 18px;\n    }\n\n    .toolbar button {\n      min-height: 46px;\n      line-height: 1.2;\n    }\n\n    .toolbar button,\n    .actions button {\n      border: 1px solid rgba(214,179,106,0.38);\n      background: linear-gradient(180deg, rgba(214,179,106,0.18), rgba(214,179,106,0.10));\n      color: #fff7e6;\n      padding: 11px 15px;\n      border-radius: 999px;\n      cursor: pointer;\n      font-weight: 700;\n      letter-spacing: 0.01em;\n      transition: 0.2s ease;\n    }\n\n    .luxus-wrap .toolbar button {\n      background: #f6efe0 !important;\n      color: #6f5318 !important;\n      border: 1px solid #d6b36a !important;\n      font-size: 15px;\n      font-weight: 800;\n      text-shadow: none;\n      opacity: 1 !important;\n      box-shadow: none;\n    }\n\n    .toolbar button:hover,\n    .actions button:hover {\n      transform: translateY(-1px);\n      background: linear-gradient(180deg, rgba(214,179,106,0.28), rgba(214,179,106,0.16));\n      border-color: rgba(214,179,106,0.6);\n    }\n\n    .luxus-wrap .toolbar button:hover {\n      background: #ead9b0 !important;\n      color: #4f3b10 !important;\n      border-color: #c8a04d !important;\n    }\n\n    .toolbar button:focus-visible,\n    .actions button:focus-visible {\n      outline: none;\n      box-shadow: 0 0 0 4px rgba(214,179,106,0.18);\n      border-color: rgba(214,179,106,0.7);\n    }\n\n    .luxus-wrap .toolbar button:focus-visible {\n      box-shadow: 0 0 0 4px rgba(214,179,106,0.22) !important;\n      color: #4f3b10 !important;\n    }\n\n    .toolbar button:focus-visible,\n    .actions button:focus-visible {\n      outline: none;\n      box-shadow: 0 0 0 4px rgba(214,179,106,0.18);\n      border-color: rgba(214,179,106,0.7);\n    }\n\n    .layout {\n      display: grid;\n      grid-template-columns: 1fr;\n      gap: 18px;\n      align-items: start;\n    }\n\n    .panel {\n      background: var(--panel);\n      border: 1px solid var(--line);\n      border-radius: 24px;\n      box-shadow: var(--shadow);\n      overflow: hidden;\n    }\n\n    .panel-inner {\n      padding: 22px;\n    }\n\n    .section + .section {\n      margin-top: 18px;\n      padding-top: 18px;\n      border-top: 1px solid var(--line);\n    }\n\n    .section h2 {\n      margin: 0 0 12px;\n      font-size: 18px;\n    }\n\n    .section-note {\n      font-size: 13px;\n      color: var(--muted);\n      margin: -3px 0 14px;\n    }\n\n    .fields {\n      display: grid;\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      gap: 12px;\n    }\n\n    .field {\n      display: flex;\n      flex-direction: column;\n      gap: 7px;\n    }\n\n    .field.full { grid-column: 1 \/ -1; }\n\n    label {\n      font-size: 13px;\n      color: #d7dce5;\n      font-weight: 600;\n    }\n\n    input,\n    select {\n      width: 100%;\n      background: var(--panel-2);\n      border: 1px solid rgba(255,255,255,0.08);\n      color: var(--text);\n      border-radius: 12px;\n      padding: 12px 13px;\n      font-size: 15px;\n      outline: none;\n      transition: border-color 0.2s ease, box-shadow 0.2s ease;\n    }\n\n    input:focus,\n    select:focus {\n      border-color: rgba(214,179,106,0.6);\n      box-shadow: 0 0 0 4px rgba(214,179,106,0.12);\n    }\n\n    .hint {\n      font-size: 12px;\n      color: var(--muted);\n    }\n\n    .actions {\n      display: flex;\n      gap: 10px;\n      flex-wrap: wrap;\n      margin-top: 18px;\n    }\n\n    .actions .primary {\n      background: linear-gradient(180deg, #e5c98a, #cda75c);\n      color: #111318;\n      border-color: transparent;\n    }\n\n    .results-head {\n      display: flex;\n      justify-content: space-between;\n      gap: 10px;\n      align-items: center;\n      margin-bottom: 18px;\n    }\n\n    .results-head h2 {\n      margin: 0;\n      font-size: 22px;\n    }\n\n    .results-head p {\n      margin: 4px 0 0;\n      color: var(--muted);\n      font-size: 14px;\n    }\n\n    .badge {\n      display: inline-flex;\n      align-items: center;\n      gap: 8px;\n      padding: 9px 12px;\n      border-radius: 999px;\n      font-size: 13px;\n      font-weight: 700;\n      background: rgba(255,255,255,0.05);\n      border: 1px solid var(--line);\n    }\n\n    .score-dot {\n      width: 10px;\n      height: 10px;\n      border-radius: 999px;\n      background: var(--warn);\n      box-shadow: 0 0 0 5px rgba(245,158,11,0.12);\n    }\n\n    .cards {\n      display: grid;\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n      gap: 12px;\n    }\n\n    .card {\n      background: linear-gradient(180deg, rgba(255,255,255,0.03), rgba(255,255,255,0.015));\n      border: 1px solid var(--line);\n      border-radius: var(--radius);\n      padding: 16px;\n      min-height: 110px;\n    }\n\n    .card .kicker {\n      color: var(--muted);\n      font-size: 12px;\n      margin-bottom: 8px;\n      text-transform: uppercase;\n      letter-spacing: 0.08em;\n      font-weight: 700;\n    }\n\n    .card .value {\n      font-size: clamp(22px, 3.1vw, 34px);\n      font-weight: 800;\n      line-height: 1.1;\n      margin-bottom: 6px;\n    }\n\n    .card .meta {\n      font-size: 13px;\n      color: var(--muted);\n    }\n\n    .subgrid {\n      margin-top: 18px;\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 14px;\n    }\n\n    .box {\n      background: rgba(255,255,255,0.02);\n      border: 1px solid var(--line);\n      border-radius: var(--radius);\n      padding: 18px;\n    }\n\n    .box h3 {\n      margin: 0 0 14px;\n      font-size: 16px;\n    }\n\n    .metric-list {\n      display: grid;\n      gap: 10px;\n    }\n\n    .metric {\n      display: flex;\n      justify-content: space-between;\n      gap: 12px;\n      align-items: baseline;\n      padding-bottom: 10px;\n      border-bottom: 1px dashed rgba(255,255,255,0.08);\n    }\n\n    .metric:last-child {\n      border-bottom: 0;\n      padding-bottom: 0;\n    }\n\n    .metric span:first-child {\n      color: var(--muted);\n      font-size: 13px;\n    }\n\n    .metric strong {\n      font-size: 15px;\n    }\n\n    .bar-wrap {\n      display: grid;\n      gap: 10px;\n      margin-top: 8px;\n    }\n\n    .bar-row {\n      display: grid;\n      gap: 8px;\n    }\n\n    .bar-row label {\n      display: flex;\n      justify-content: space-between;\n      font-size: 13px;\n      color: var(--muted);\n      font-weight: 600;\n    }\n\n    .bar {\n      width: 100%;\n      height: 12px;\n      border-radius: 999px;\n      background: rgba(255,255,255,0.06);\n      overflow: hidden;\n    }\n\n    .bar > span {\n      display: block;\n      height: 100%;\n      border-radius: 999px;\n      background: linear-gradient(90deg, #7f5d1e, #d6b36a);\n      width: 0;\n      transition: width 0.25s ease;\n    }\n\n    .table-wrap {\n      overflow-x: auto;\n      border: 1px solid var(--line);\n      border-radius: 16px;\n      background: rgba(255,255,255,0.015);\n    }\n\n    table {\n      width: 100%;\n      border-collapse: collapse;\n      min-width: 560px;\n    }\n\n    th, td {\n      padding: 12px;\n      text-align: center;\n      border-bottom: 1px solid rgba(255,255,255,0.06);\n      font-size: 14px;\n    }\n\n    th {\n      color: var(--muted);\n      font-weight: 700;\n      background: rgba(255,255,255,0.02);\n    }\n\n    td:first-child,\n    th:first-child {\n      text-align: left;\n      position: sticky;\n      left: 0;\n      background: #181c23;\n      z-index: 1;\n    }\n\n    .tone-good { color: #7ee787; font-weight: 700; }\n    .tone-mid { color: #f5c04d; font-weight: 700; }\n    .tone-bad { color: #ff8f8f; font-weight: 700; }\n\n    .footer-note {\n      color: var(--muted);\n      font-size: 13px;\n      margin-top: 16px;\n    }\n\n    .results-placeholder {\n      padding: 22px;\n      border: 1px dashed rgba(214,179,106,0.25);\n      border-radius: 18px;\n      background: rgba(214,179,106,0.05);\n      color: var(--muted);\n      margin-top: 8px;\n    }\n\n    .results-placeholder strong {\n      display: block;\n      color: var(--text);\n      margin-bottom: 6px;\n      font-size: 16px;\n    }\n\n    .results-content {\n      display: none;\n    }\n\n    .results-content.is-visible {\n      display: block;\n    }\n\n    .cta-strip {\n      margin-top: 18px;\n      padding: 16px;\n      border-radius: 18px;\n      background: linear-gradient(180deg, rgba(214,179,106,0.13), rgba(214,179,106,0.06));\n      border: 1px solid rgba(214,179,106,0.18);\n      display: flex;\n      justify-content: space-between;\n      gap: 14px;\n      align-items: center;\n      flex-wrap: wrap;\n    }\n\n    .cta-strip a {\n      text-decoration: none;\n      border-radius: 999px;\n      padding: 11px 16px;\n      background: #f1dba9;\n      color: #111318;\n      font-weight: 800;\n    }\n\n    @media (max-width: 980px) {\n      .cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n      .subgrid { grid-template-columns: 1fr; }\n    }\n\n    @media (max-width: 720px) {\n      body { padding: 14px 10px; }\n      .hero, .panel-inner { padding: 16px; }\n      .panel, .hero { border-radius: 18px; }\n      .fields, .cards, .subgrid { grid-template-columns: 1fr; }\n      .results-head { flex-direction: column; align-items: flex-start; }\n      .toolbar { flex-direction: column; }\n      .toolbar button,\n      .actions button,\n      .actions .primary,\n      .cta-strip a {\n        width: 100%;\n        justify-content: center;\n        text-align: center;\n      }\n      .actions { flex-direction: column; }\n      .cta-strip { flex-direction: column; align-items: stretch; }\n      .card { min-height: auto; }\n      .table-wrap {\n        margin: 0 -4px;\n        border-radius: 14px;\n      }\n      table {\n        min-width: 520px;\n      }\n      th, td {\n        padding: 10px 8px;\n        font-size: 13px;\n      }\n      td:first-child,\n      th:first-child {\n        position: static;\n      }\n    }\n  <\/style>\n<\/head>\n<body>\n  <div class=\"luxus-wrap\">\n    <section class=\"hero\">\n      <div class=\"eyebrow\">Inversi\u00f3n inmobiliaria<\/div>\n      <h2>Mejor calculadora de rentabilidad<\/h2>\n      <p>\n        Calcula la rentabilidad <strong>bruta<\/strong>, <strong>neta<\/strong>, <strong>cap rate<\/strong>,\n        <strong>cash flow<\/strong>, <strong>cash-on-cash<\/strong>, <strong>payback<\/strong> y una\n        <strong>TIR estimada<\/strong> con financiaci\u00f3n, vacancia, gastos reales y proyecci\u00f3n de salida.\n      <\/p>\n      <div class=\"toolbar\">\n        <button type=\"button\" data-preset=\"conservador\">Escenario conservador<\/button>\n        <button type=\"button\" data-preset=\"base\">Escenario base<\/button>\n        <button type=\"button\" data-preset=\"optimista\">Escenario optimista<\/button>\n      <\/div>\n    <\/section>\n\n    <div class=\"layout\">\n      <section class=\"panel\">\n        <div class=\"panel-inner\">\n          <form id=\"luxusCalcForm\">\n            <div class=\"section\">\n              <h2>1) Compra y costes de entrada<\/h2>\n              <div class=\"section-note\">Aqu\u00ed va todo lo que realmente te cuesta entrar en la operaci\u00f3n.<\/div>\n              <div class=\"fields\">\n                <div class=\"field\">\n                  <label for=\"purchasePrice\">Precio de compra (\u20ac)<\/label>\n                  <input id=\"purchasePrice\" type=\"number\" min=\"0\" step=\"1000\" value=\"650000\" \/>\n                <\/div>\n                <div class=\"field\">\n                  <label for=\"purchaseCosts\">ITP \/ IVA + notar\u00eda + registro (\u20ac)<\/label>\n                  <input id=\"purchaseCosts\" type=\"number\" min=\"0\" step=\"100\" value=\"65000\" \/>\n                <\/div>\n                <div class=\"field\">\n                  <label for=\"agencyFee\">Comisi\u00f3n \/ honorarios (\u20ac)<\/label>\n                  <input id=\"agencyFee\" type=\"number\" min=\"0\" step=\"100\" value=\"0\" \/>\n                <\/div>\n                <div class=\"field\">\n                  <label for=\"reformCost\">Reforma \/ puesta a punto (\u20ac)<\/label>\n                  <input id=\"reformCost\" type=\"number\" min=\"0\" step=\"100\" value=\"15000\" \/>\n                <\/div>\n                <div class=\"field full\">\n                  <label for=\"furnitureCost\">Mobiliario \/ equipamiento inicial (\u20ac)<\/label>\n                  <input id=\"furnitureCost\" type=\"number\" min=\"0\" step=\"100\" value=\"10000\" \/>\n                <\/div>\n              <\/div>\n            <\/div>\n\n            <div class=\"section\">\n              <h2>2) Ingresos<\/h2>\n              <div class=\"section-note\">No inflar el alquiler es gratis. Luego vienen los disgustos.<\/div>\n              <div class=\"fields\">\n                <div class=\"field\">\n                  <label for=\"monthlyRent\">Alquiler mensual (\u20ac)<\/label>\n                  <input id=\"monthlyRent\" type=\"number\" min=\"0\" step=\"50\" value=\"3200\" \/>\n                <\/div>\n                <div class=\"field\">\n                  <label for=\"otherIncome\">Otros ingresos anuales (\u20ac)<\/label>\n                  <input id=\"otherIncome\" type=\"number\" min=\"0\" step=\"50\" value=\"0\" \/>\n                <\/div>\n                <div class=\"field full\">\n                  <label for=\"vacancy\">Vacancia \/ impago estimado (%)<\/label>\n                  <input id=\"vacancy\" type=\"number\" min=\"0\" max=\"100\" step=\"0.1\" value=\"7\" \/>\n                  <div class=\"hint\">Se aplica sobre el ingreso anual para no vivir en una fantas\u00eda financiera.<\/div>\n                <\/div>\n              <\/div>\n            <\/div>\n\n            <div class=\"section\">\n              <h2>3) Gastos anuales<\/h2>\n              <div class=\"fields\">\n                <div class=\"field\">\n                  <label for=\"ibi\">IBI (\u20ac)<\/label>\n                  <input id=\"ibi\" type=\"number\" min=\"0\" step=\"50\" value=\"1200\" \/>\n                <\/div>\n                <div class=\"field\">\n                  <label for=\"community\">Comunidad (\u20ac)<\/label>\n                  <input id=\"community\" type=\"number\" min=\"0\" step=\"50\" value=\"1800\" \/>\n                <\/div>\n                <div class=\"field\">\n                  <label for=\"insurance\">Seguro (\u20ac)<\/label>\n                  <input id=\"insurance\" type=\"number\" min=\"0\" step=\"50\" value=\"600\" \/>\n                <\/div>\n                <div class=\"field\">\n                  <label for=\"maintenance\">Mantenimiento y reparaciones (\u20ac)<\/label>\n                  <input id=\"maintenance\" type=\"number\" min=\"0\" step=\"50\" value=\"2200\" \/>\n                <\/div>\n                <div class=\"field\">\n                  <label for=\"management\">Gesti\u00f3n \/ property manager (\u20ac)<\/label>\n                  <input id=\"management\" type=\"number\" min=\"0\" step=\"50\" value=\"2400\" \/>\n                <\/div>\n                <div class=\"field\">\n                  <label for=\"utilities\">Suministros asumidos por el propietario (\u20ac)<\/label>\n                  <input id=\"utilities\" type=\"number\" min=\"0\" step=\"50\" value=\"0\" \/>\n                <\/div>\n                <div class=\"field\">\n                  <label for=\"capex\">Reserva de CapEx anual (\u20ac)<\/label>\n                  <input id=\"capex\" type=\"number\" min=\"0\" step=\"50\" value=\"2500\" \/>\n                <\/div>\n                <div class=\"field\">\n                  <label for=\"otherExpenses\">Otros gastos anuales (\u20ac)<\/label>\n                  <input id=\"otherExpenses\" type=\"number\" min=\"0\" step=\"50\" value=\"500\" \/>\n                <\/div>\n              <\/div>\n            <\/div>\n\n            <div class=\"section\">\n              <h2>4) Financiaci\u00f3n<\/h2>\n              <div class=\"section-note\">La deuda cambia el rendimiento sobre tu dinero. Mucho.<\/div>\n              <div class=\"fields\">\n                <div class=\"field\">\n                  <label for=\"financePct\">Financiaci\u00f3n sobre precio (%)<\/label>\n                  <input id=\"financePct\" type=\"number\" min=\"0\" max=\"100\" step=\"1\" value=\"60\" \/>\n                <\/div>\n                <div class=\"field\">\n                  <label for=\"interestRate\">Inter\u00e9s anual \/ TAE estimada (%)<\/label>\n                  <input id=\"interestRate\" type=\"number\" min=\"0\" max=\"25\" step=\"0.01\" value=\"3.7\" \/>\n                <\/div>\n                <div class=\"field full\">\n                  <label for=\"loanYears\">Plazo de hipoteca (a\u00f1os)<\/label>\n                  <input id=\"loanYears\" type=\"number\" min=\"1\" max=\"40\" step=\"1\" value=\"25\" \/>\n                <\/div>\n              <\/div>\n            <\/div>\n\n            <div class=\"section\">\n              <h2>5) Proyecci\u00f3n de salida<\/h2>\n              <div class=\"section-note\">Para ir m\u00e1s all\u00e1 del \u201cda un 5% y ya\u201d.<\/div>\n              <div class=\"fields\">\n                <div class=\"field\">\n                  <label for=\"holdingYears\">Horizonte (a\u00f1os)<\/label>\n                  <input id=\"holdingYears\" type=\"number\" min=\"1\" max=\"40\" step=\"1\" value=\"10\" \/>\n                <\/div>\n                <div class=\"field\">\n                  <label for=\"appreciation\">Revalorizaci\u00f3n anual (%)<\/label>\n                  <input id=\"appreciation\" type=\"number\" min=\"-10\" max=\"20\" step=\"0.1\" value=\"4\" \/>\n                <\/div>\n                <div class=\"field\">\n                  <label for=\"rentGrowth\">Crecimiento anual del alquiler (%)<\/label>\n                  <input id=\"rentGrowth\" type=\"number\" min=\"-10\" max=\"20\" step=\"0.1\" value=\"2\" \/>\n                <\/div>\n                <div class=\"field\">\n                  <label for=\"expenseGrowth\">Crecimiento anual de gastos (%)<\/label>\n                  <input id=\"expenseGrowth\" type=\"number\" min=\"-10\" max=\"20\" step=\"0.1\" value=\"2\" \/>\n                <\/div>\n                <div class=\"field full\">\n                  <label for=\"saleCostsPct\">Costes de salida \/ venta (%)<\/label>\n                  <input id=\"saleCostsPct\" type=\"number\" min=\"0\" max=\"20\" step=\"0.1\" value=\"4\" \/>\n                <\/div>\n              <\/div>\n\n              <div class=\"actions\">\n                <button type=\"button\" class=\"primary\" id=\"calculateBtn\">Actualizar resultados<\/button>\n                <button type=\"button\" id=\"resetBtn\">Restablecer valores<\/button>\n              <\/div>\n            <\/div>\n          <\/form>\n        <\/div>\n      <\/section>\n\n      <section class=\"panel\">\n        <div class=\"panel-inner\">\n          <div id=\"resultsPlaceholder\" class=\"results-placeholder\">\n            <strong>Completa los datos y pulsa \u201cActualizar resultados\u201d<\/strong>\n            La calculadora mostrar\u00e1 aqu\u00ed la rentabilidad bruta, neta, cash flow, TIR estimada y el resto de m\u00e9tricas clave de la operaci\u00f3n.\n          <\/div>\n\n          <div id=\"resultsContent\" class=\"results-content\">\n            <div class=\"results-head\">\n              <div>\n                <h2>Resultado de la operaci\u00f3n<\/h2>\n                <p>Lectura r\u00e1pida y desglose para tomar decisiones sin adivinar.<\/p>\n              <\/div>\n              <div class=\"badge\"><span class=\"score-dot\" id=\"scoreDot\"><\/span><span id=\"scoreText\">Rentabilidad media<\/span><\/div>\n            <\/div>\n\n            <div class=\"cards\">\n              <article class=\"card\">\n                <div class=\"kicker\">Rentabilidad bruta<\/div>\n                <div class=\"value\" id=\"grossYield\">\u2014<\/div>\n                <div class=\"meta\">Ingreso anual \/ inversi\u00f3n total<\/div>\n              <\/article>\n              <article class=\"card\">\n                <div class=\"kicker\">Rentabilidad neta<\/div>\n                <div class=\"value\" id=\"netYield\">\u2014<\/div>\n                <div class=\"meta\">NOI \/ inversi\u00f3n total<\/div>\n              <\/article>\n              <article class=\"card\">\n                <div class=\"kicker\">Cap rate<\/div>\n                <div class=\"value\" id=\"capRate\">\u2014<\/div>\n                <div class=\"meta\">NOI \/ precio de compra<\/div>\n              <\/article>\n              <article class=\"card\">\n                <div class=\"kicker\">Cash-on-cash<\/div>\n                <div class=\"value\" id=\"cashOnCash\">\u2014<\/div>\n                <div class=\"meta\">Flujo anual \/ capital propio<\/div>\n              <\/article>\n              <article class=\"card\">\n                <div class=\"kicker\">Cash flow mensual<\/div>\n                <div class=\"value\" id=\"monthlyCashFlow\">\u2014<\/div>\n                <div class=\"meta\">Despu\u00e9s de gastos y deuda<\/div>\n              <\/article>\n              <article class=\"card\">\n                <div class=\"kicker\">TIR estimada<\/div>\n                <div class=\"value\" id=\"irrValue\">\u2014<\/div>\n                <div class=\"meta\">Con venta al final del horizonte<\/div>\n              <\/article>\n            <\/div>\n\n            <div class=\"subgrid\">\n              <section class=\"box\">\n                <h3>Desglose principal<\/h3>\n                <div class=\"metric-list\">\n                  <div class=\"metric\"><span>Coste total del proyecto<\/span><strong id=\"totalProjectCost\">\u2014<\/strong><\/div>\n                  <div class=\"metric\"><span>Capital propio invertido<\/span><strong id=\"equityInvested\">\u2014<\/strong><\/div>\n                  <div class=\"metric\"><span>Importe financiado<\/span><strong id=\"loanAmount\">\u2014<\/strong><\/div>\n                  <div class=\"metric\"><span>Cuota hipotecaria mensual<\/span><strong id=\"mortgagePayment\">\u2014<\/strong><\/div>\n                  <div class=\"metric\"><span>Ingreso anual efectivo<\/span><strong id=\"effectiveIncome\">\u2014<\/strong><\/div>\n                  <div class=\"metric\"><span>NOI anual<\/span><strong id=\"noiValue\">\u2014<\/strong><\/div>\n                  <div class=\"metric\"><span>Payback simple<\/span><strong id=\"paybackValue\">\u2014<\/strong><\/div>\n                  <div class=\"metric\"><span>Beneficio acumulado al horizonte<\/span><strong id=\"totalProfit\">\u2014<\/strong><\/div>\n                <\/div>\n              <\/section>\n\n              <section class=\"box\">\n                <h3>Peso de cada bloque<\/h3>\n                <div class=\"bar-wrap\">\n                  <div class=\"bar-row\">\n                    <label><span>Gastos operativos<\/span><span id=\"barOpexText\">\u2014<\/span><\/label>\n                    <div class=\"bar\"><span id=\"barOpex\"><\/span><\/div>\n                  <\/div>\n                  <div class=\"bar-row\">\n                    <label><span>Deuda anual<\/span><span id=\"barDebtText\">\u2014<\/span><\/label>\n                    <div class=\"bar\"><span id=\"barDebt\"><\/span><\/div>\n                  <\/div>\n                  <div class=\"bar-row\">\n                    <label><span>Cash flow libre<\/span><span id=\"barCashText\">\u2014<\/span><\/label>\n                    <div class=\"bar\"><span id=\"barCash\"><\/span><\/div>\n                  <\/div>\n                <\/div>\n                <div class=\"footer-note\">Si la barra de deuda se come la de cash flow, la operaci\u00f3n te est\u00e1 dejando un recuerdo, no una rentabilidad.<\/div>\n              <\/section>\n            <\/div>\n\n            <div class=\"box\" style=\"margin-top: 18px;\">\n              <h3>Sensibilidad r\u00e1pida: cash-on-cash seg\u00fan alquiler y vacancia<\/h3>\n              <div class=\"table-wrap\">\n                <table>\n                  <thead>\n                    <tr>\n                      <th>Vacancia \\ Alquiler<\/th>\n                      <th>-10%<\/th>\n                      <th>Base<\/th>\n                      <th>+10%<\/th>\n                    <\/tr>\n                  <\/thead>\n                  <tbody id=\"sensitivityBody\"><\/tbody>\n                <\/table>\n              <\/div>\n            <\/div>\n\n            <div class=\"cta-strip\">\n              <div>\n                <strong>\u00bfQuieres afinar la operaci\u00f3n?<\/strong>\n                <div class=\"footer-note\" style=\"margin-top:6px;\">\u00dasala como filtro inicial y luego ll\u00e9vala a revisi\u00f3n con un asesor para validar zona, demanda y estrategia.<\/div>\n              <\/div>\n              <a href=\"\/contacto\/\">Solicitar an\u00e1lisis personalizado<\/a>\n            <\/div>\n\n            <p class=\"footer-note\">\n              Herramienta orientativa. No sustituye asesoramiento financiero, fiscal ni legal. Las m\u00e9tricas dependen de la calidad del dato de entrada.\n            <\/p>\n          <\/div>\n        <\/div>\n      <\/section>\n    <\/div>\n  <\/div>\n\n  <script>\n    const $ = (id) => document.getElementById(id);\n\n    const ids = [\n      'purchasePrice','purchaseCosts','agencyFee','reformCost','furnitureCost',\n      'monthlyRent','otherIncome','vacancy',\n      'ibi','community','insurance','maintenance','management','utilities','capex','otherExpenses',\n      'financePct','interestRate','loanYears',\n      'holdingYears','appreciation','rentGrowth','expenseGrowth','saleCostsPct'\n    ];\n\n    const defaults = {\n      purchasePrice: 650000,\n      purchaseCosts: 65000,\n      agencyFee: 0,\n      reformCost: 15000,\n      furnitureCost: 10000,\n      monthlyRent: 3200,\n      otherIncome: 0,\n      vacancy: 7,\n      ibi: 1200,\n      community: 1800,\n      insurance: 600,\n      maintenance: 2200,\n      management: 2400,\n      utilities: 0,\n      capex: 2500,\n      otherExpenses: 500,\n      financePct: 60,\n      interestRate: 3.7,\n      loanYears: 25,\n      holdingYears: 10,\n      appreciation: 4,\n      rentGrowth: 2,\n      expenseGrowth: 2,\n      saleCostsPct: 4\n    };\n\n    function num(id) {\n      const val = parseFloat($(id).value);\n      return Number.isFinite(val) ? val : 0;\n    }\n\n    function money(value) {\n      if (!Number.isFinite(value)) return '\u2014';\n      return new Intl.NumberFormat('es-ES', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0 }).format(value);\n    }\n\n    function percent(value, digits = 2) {\n      if (!Number.isFinite(value)) return '\u2014';\n      return `${value.toFixed(digits).replace('.', ',')}%`;\n    }\n\n    function yearsLabel(value) {\n      if (!Number.isFinite(value)) return '\u2014';\n      if (value <= 0) return '0 a\u00f1os';\n      if (value > 1000) return 'No recuperable';\n      return `${value.toFixed(1).replace('.', ',')} a\u00f1os`;\n    }\n\n    function mortgagePayment(principal, annualRate, years) {\n      if (principal <= 0 || years <= 0) return 0;\n      const monthlyRate = annualRate \/ 100 \/ 12;\n      const months = years * 12;\n      if (monthlyRate === 0) return principal \/ months;\n      return principal * (monthlyRate * Math.pow(1 + monthlyRate, months)) \/ (Math.pow(1 + monthlyRate, months) - 1);\n    }\n\n    function remainingBalance(principal, annualRate, years, paidMonths) {\n      if (principal <= 0) return 0;\n      const monthlyRate = annualRate \/ 100 \/ 12;\n      const months = years * 12;\n      if (paidMonths >= months) return 0;\n      if (monthlyRate === 0) return Math.max(0, principal * (1 - paidMonths \/ months));\n      const payment = mortgagePayment(principal, annualRate, years);\n      return principal * Math.pow(1 + monthlyRate, paidMonths) - payment * ((Math.pow(1 + monthlyRate, paidMonths) - 1) \/ monthlyRate);\n    }\n\n    function npv(rate, cashflows) {\n      return cashflows.reduce((acc, cf, i) => acc + cf \/ Math.pow(1 + rate, i), 0);\n    }\n\n    function irr(cashflows) {\n      const hasPositive = cashflows.some(v => v > 0);\n      const hasNegative = cashflows.some(v => v < 0);\n      if (!hasPositive || !hasNegative) return null;\n\n      let low = -0.99;\n      let high = 1.5;\n      let npvLow = npv(low, cashflows);\n      let npvHigh = npv(high, cashflows);\n      let guard = 0;\n\n      while (npvLow * npvHigh > 0 && guard < 50) {\n        high *= 2;\n        npvHigh = npv(high, cashflows);\n        guard++;\n      }\n\n      if (npvLow * npvHigh > 0) return null;\n\n      for (let i = 0; i < 120; i++) {\n        const mid = (low + high) \/ 2;\n        const val = npv(mid, cashflows);\n        if (Math.abs(val) < 0.00001) return mid;\n        if (npvLow * val < 0) {\n          high = mid;\n          npvHigh = val;\n        } else {\n          low = mid;\n          npvLow = val;\n        }\n      }\n\n      return (low + high) \/ 2;\n    }\n\n    function scoreLabel(cashOnCashValue, irrValue) {\n      const metric = Math.max(cashOnCashValue || 0, irrValue || 0);\n      if (metric >= 10) return { text: 'Operaci\u00f3n fuerte', color: 'var(--ok)' };\n      if (metric >= 6) return { text: 'Rentabilidad media', color: 'var(--warn)' };\n      return { text: 'Operaci\u00f3n floja', color: 'var(--bad)' };\n    }\n\n    function toneClass(value) {\n      if (!Number.isFinite(value)) return 'tone-mid';\n      if (value >= 10) return 'tone-good';\n      if (value >= 6) return 'tone-mid';\n      return 'tone-bad';\n    }\n\n    function buildSensitivity(base) {\n      const rentMultipliers = [0.9, 1, 1.1];\n      const vacancyValues = [Math.max(0, base.vacancy - 3), base.vacancy, base.vacancy + 3];\n      const labels = [\n        `${vacancyValues[0].toFixed(0)}%`,\n        `${vacancyValues[1].toFixed(0)}%`,\n        `${vacancyValues[2].toFixed(0)}%`\n      ];\n\n      const tbody = $('sensitivityBody');\n      tbody.innerHTML = '';\n\n      vacancyValues.forEach((vacancyValue, rowIndex) => {\n        const tr = document.createElement('tr');\n        const first = document.createElement('td');\n        first.textContent = labels[rowIndex];\n        tr.appendChild(first);\n\n        rentMultipliers.forEach(mult => {\n          const effectiveGross = ((base.monthlyRent * mult) * 12 + base.otherIncome) * (1 - vacancyValue \/ 100);\n          const noi = effectiveGross - base.annualOpex;\n          const annualCF = noi - base.annualDebt;\n          const coc = base.equityInvested > 0 ? (annualCF \/ base.equityInvested) * 100 : 0;\n          const td = document.createElement('td');\n          td.className = toneClass(coc);\n          td.textContent = percent(coc, 1);\n          tr.appendChild(td);\n        });\n\n        tbody.appendChild(tr);\n      });\n    }\n\n    function updateBars(annualOpex, annualDebt, annualCashFlow) {\n      const positiveCash = Math.max(annualCashFlow, 0);\n      const total = Math.max(annualOpex + annualDebt + positiveCash, 1);\n      const opexPct = (annualOpex \/ total) * 100;\n      const debtPct = (annualDebt \/ total) * 100;\n      const cashPct = (positiveCash \/ total) * 100;\n\n      $('barOpex').style.width = `${Math.min(100, opexPct)}%`;\n      $('barDebt').style.width = `${Math.min(100, debtPct)}%`;\n      $('barCash').style.width = `${Math.min(100, cashPct)}%`;\n\n      $('barOpexText').textContent = money(annualOpex);\n      $('barDebtText').textContent = money(annualDebt);\n      $('barCashText').textContent = annualCashFlow >= 0 ? money(annualCashFlow) : `-${money(Math.abs(annualCashFlow))}`;\n    }\n\n    function showResults() {\n      $('resultsPlaceholder').style.display = 'none';\n      $('resultsContent').classList.add('is-visible');\n    }\n\n    function hideResults() {\n      $('resultsPlaceholder').style.display = 'block';\n      $('resultsContent').classList.remove('is-visible');\n    }\n\n    function calculate() {\n      const purchasePrice = num('purchasePrice');\n      const purchaseCosts = num('purchaseCosts');\n      const agencyFee = num('agencyFee');\n      const reformCost = num('reformCost');\n      const furnitureCost = num('furnitureCost');\n      const monthlyRent = num('monthlyRent');\n      const otherIncome = num('otherIncome');\n      const vacancy = num('vacancy');\n      const ibi = num('ibi');\n      const community = num('community');\n      const insurance = num('insurance');\n      const maintenance = num('maintenance');\n      const management = num('management');\n      const utilities = num('utilities');\n      const capex = num('capex');\n      const otherExpenses = num('otherExpenses');\n      const financePct = num('financePct');\n      const interestRate = num('interestRate');\n      const loanYears = num('loanYears');\n      const holdingYears = num('holdingYears');\n      const appreciation = num('appreciation');\n      const rentGrowth = num('rentGrowth');\n      const expenseGrowth = num('expenseGrowth');\n      const saleCostsPct = num('saleCostsPct');\n\n      const totalEntryCosts = purchaseCosts + agencyFee + reformCost + furnitureCost;\n      const totalProjectCost = purchasePrice + totalEntryCosts;\n      const loanAmount = purchasePrice * (financePct \/ 100);\n      const equityInvested = Math.max(totalProjectCost - loanAmount, 0);\n      const annualGrossIncome = monthlyRent * 12 + otherIncome;\n      const effectiveIncome = annualGrossIncome * (1 - vacancy \/ 100);\n      const annualOpex = ibi + community + insurance + maintenance + management + utilities + capex + otherExpenses;\n      const noi = effectiveIncome - annualOpex;\n      const monthlyMortgage = mortgagePayment(loanAmount, interestRate, loanYears);\n      const annualDebt = monthlyMortgage * 12;\n      const annualCashFlow = noi - annualDebt;\n      const grossYield = totalProjectCost > 0 ? (annualGrossIncome \/ totalProjectCost) * 100 : 0;\n      const netYield = totalProjectCost > 0 ? (noi \/ totalProjectCost) * 100 : 0;\n      const capRate = purchasePrice > 0 ? (noi \/ purchasePrice) * 100 : 0;\n      const cashOnCash = equityInvested > 0 ? (annualCashFlow \/ equityInvested) * 100 : 0;\n      const payback = annualCashFlow > 0 ? equityInvested \/ annualCashFlow : Infinity;\n\n      let currentGross = annualGrossIncome;\n      let currentOpex = annualOpex;\n      const cashflows = [-equityInvested];\n\n      for (let year = 1; year <= holdingYears; year++) {\n        const yearEffective = currentGross * (1 - vacancy \/ 100);\n        const yearNOI = yearEffective - currentOpex;\n        let yearCF = yearNOI - annualDebt;\n\n        if (year === holdingYears) {\n          const futureSalePrice = purchasePrice * Math.pow(1 + appreciation \/ 100, holdingYears);\n          const saleNetBeforeDebt = futureSalePrice * (1 - saleCostsPct \/ 100);\n          const balance = remainingBalance(loanAmount, interestRate, loanYears, Math.min(loanYears * 12, holdingYears * 12));\n          const saleNet = saleNetBeforeDebt - balance;\n          yearCF += saleNet;\n        }\n\n        cashflows.push(yearCF);\n        currentGross *= (1 + rentGrowth \/ 100);\n        currentOpex *= (1 + expenseGrowth \/ 100);\n      }\n\n      const irrValue = irr(cashflows);\n      const totalProfit = cashflows.reduce((sum, value) => sum + value, 0);\n      const score = scoreLabel(cashOnCash, irrValue !== null ? irrValue * 100 : null);\n\n      $('grossYield').textContent = percent(grossYield);\n      $('netYield').textContent = percent(netYield);\n      $('capRate').textContent = percent(capRate);\n      $('cashOnCash').textContent = percent(cashOnCash);\n      $('monthlyCashFlow').textContent = annualCashFlow >= 0 ? money(annualCashFlow \/ 12) : `-${money(Math.abs(annualCashFlow \/ 12))}`;\n      $('irrValue').textContent = irrValue !== null ? percent(irrValue * 100) : '\u2014';\n\n      $('totalProjectCost').textContent = money(totalProjectCost);\n      $('equityInvested').textContent = money(equityInvested);\n      $('loanAmount').textContent = money(loanAmount);\n      $('mortgagePayment').textContent = money(monthlyMortgage);\n      $('effectiveIncome').textContent = money(effectiveIncome);\n      $('noiValue').textContent = money(noi);\n      $('paybackValue').textContent = yearsLabel(payback);\n      $('totalProfit').textContent = money(totalProfit);\n\n      showResults();\n\n      $('scoreText').textContent = score.text;\n      $('scoreDot').style.background = score.color;\n      $('scoreDot').style.boxShadow = `0 0 0 5px ${score.color.replace('var(--ok)', 'rgba(34,197,94,0.12)').replace('var(--warn)', 'rgba(245,158,11,0.12)').replace('var(--bad)', 'rgba(239,68,68,0.12)')}`;\n\n      updateBars(annualOpex, annualDebt, annualCashFlow);\n      buildSensitivity({ monthlyRent, otherIncome, vacancy, annualOpex, annualDebt, equityInvested });\n    }\n\n    function applyPreset(name) {\n      const presets = {\n        conservador: { vacancy: 10, appreciation: 2, rentGrowth: 1, expenseGrowth: 3, financePct: 50 },\n        base: { vacancy: 7, appreciation: 4, rentGrowth: 2, expenseGrowth: 2, financePct: 60 },\n        optimista: { vacancy: 4, appreciation: 6, rentGrowth: 3, expenseGrowth: 2, financePct: 65 }\n      };\n\n      const preset = presets[name];\n      if (!preset) return;\n      Object.entries(preset).forEach(([key, value]) => {\n        $(key).value = value;\n      });\n      hideResults();\n    }\n\n    function resetValues() {\n      Object.entries(defaults).forEach(([key, value]) => {\n        $(key).value = value;\n      });\n      hideResults();\n    }\n\n    ids.forEach(id => $(id).addEventListener('input', hideResults));\n    $('calculateBtn').addEventListener('click', calculate);\n    $('resetBtn').addEventListener('click', resetValues);\n    document.querySelectorAll('[data-preset]').forEach(btn => {\n      btn.addEventListener('click', () => applyPreset(btn.dataset.preset));\n    });\n\n    hideResults();\n  <\/script>\n<\/body>\n<\/html>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\"><strong>Por qu\u00e9 es clave calcular la rentabilidad antes de invertir<\/strong><\/h2>\n\n\n\n<p>En el contexto actual, donde los precios inmobiliarios y los tipos de inter\u00e9s influyen directamente en el rendimiento, utilizar una calculadora permite:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Evitar decisiones basadas en percepciones err\u00f3neas.<\/li>\n\n\n\n<li>Comparar distintas oportunidades de inversi\u00f3n.<\/li>\n\n\n\n<li>Identificar activos infravalorados o con alto potencial.<\/li>\n\n\n\n<li>Ajustar la estrategia seg\u00fan el perfil del inversor.<\/li>\n<\/ul>\n\n\n\n<p>Una propiedad atractiva en apariencia puede no ser rentable si los gastos o la fiscalidad no est\u00e1n correctamente contemplados.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\"><strong>Variables que influyen en la rentabilidad del alquiler<\/strong><\/h2>\n\n\n\n<p>Antes de utilizar una calculadora, es importante entender qu\u00e9 factores afectan al resultado:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ubicaci\u00f3n del inmueble<\/strong><strong><br><\/strong>Determina la demanda, el precio del alquiler y la estabilidad del ingreso.<\/li>\n\n\n\n<li><strong>Tipo de alquiler<\/strong><strong><br><\/strong>Residencial tradicional, tur\u00edstico o de media estancia.<\/li>\n\n\n\n<li><strong>Nivel de ocupaci\u00f3n<\/strong><strong><br><\/strong>Especialmente relevante en alquiler vacacional.<\/li>\n\n\n\n<li><strong>Costes de mantenimiento<\/strong><strong><br><\/strong>Reparaciones, gesti\u00f3n y renovaci\u00f3n del inmueble.<\/li>\n\n\n\n<li><strong>Fiscalidad<\/strong><strong><br><\/strong>IRPF, deducciones y normativa vigente.<\/li>\n\n\n\n<li><strong>Financiaci\u00f3n<\/strong><strong><br><\/strong>El uso de hipoteca puede aumentar o reducir la rentabilidad seg\u00fan condiciones.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\"><strong>Rentabilidad bruta vs. rentabilidad neta<\/strong><\/h2>\n\n\n\n<p>Uno de los errores m\u00e1s comunes es fijarse \u00fanicamente en la rentabilidad bruta.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Rentabilidad bruta<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>C\u00e1lculo sencillo.<\/li>\n\n\n\n<li>No incluye gastos.<\/li>\n\n\n\n<li>\u00datil como referencia inicial.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Rentabilidad neta<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Incluye todos los costes reales.<\/li>\n\n\n\n<li>Refleja el beneficio real del inversor.<\/li>\n\n\n\n<li>Es la m\u00e9trica clave para tomar decisiones.<\/li>\n<\/ul>\n\n\n\n<p>Una buena calculadora debe permitir analizar ambos indicadores.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\"><strong>Inversi\u00f3n inmobiliaria con criterio profesional<\/strong><\/h2>\n\n\n\n<p>Calcular la rentabilidad es solo el primer paso. Identificar oportunidades reales en el mercado requiere experiencia, an\u00e1lisis y acceso a activos bien posicionados.<\/p>\n\n\n\n<p>Si est\u00e1s valorando invertir, puedes explorar oportunidades en<a href=\"https:\/\/luxusrealestates.com\/\"> <strong>inversiones inmobiliarias<\/strong><\/a> con Luxus Real Estates. Nuestro enfoque combina asesoramiento experto, an\u00e1lisis de mercado y una visi\u00f3n estrat\u00e9gica orientada a maximizar la rentabilidad en el segmento inmobiliario premium.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La calculadora de rentabilidad del alquiler es una herramienta esencial para cualquier inversor que busque tomar decisiones basadas en datos y no en estimaciones superficiales. En un mercado inmobiliario cada vez m\u00e1s competitivo en 2026, calcular correctamente la rentabilidad de un inmueble en alquiler es lo que diferencia una inversi\u00f3n s\u00f3lida de una operaci\u00f3n poco [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":13971,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-13960","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Calcula la rentabilidad de tu alquiler f\u00e1cil<\/title>\n<meta name=\"description\" content=\"Utiliza nuestra calculadora de rentabilidad de un alquiler, y descubre ingresos, gastos y beneficio neto para invertir con m\u00e1s criterio.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/luxusrealestates.com\/nb\/calculadora-de-rentabilidad\/\" \/>\n<meta property=\"og:locale\" content=\"nb_NO\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Calcula la rentabilidad de tu alquiler f\u00e1cil\" \/>\n<meta property=\"og:description\" content=\"Utiliza nuestra calculadora de rentabilidad de un alquiler, y descubre ingresos, gastos y beneficio neto para invertir con m\u00e1s criterio.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/luxusrealestates.com\/nb\/calculadora-de-rentabilidad\/\" \/>\n<meta property=\"og:site_name\" content=\"Luxus\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-20T12:40:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/luxusrealestates.com\/wp-content\/uploads\/2026\/04\/calculadora-rentabilidad-alquiler.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"700\" \/>\n\t<meta property=\"og:image:height\" content=\"467\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Lisa Milonas\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Skrevet av\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lisa Milonas\" \/>\n\t<meta name=\"twitter:label2\" content=\"Ansl. lesetid\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/\"},\"author\":{\"name\":\"Lisa Milonas\",\"@id\":\"https:\/\/luxusrealestates.com\/ar\/#\/schema\/person\/c3e72201129d11c3047fff4304b593d5\"},\"headline\":\"Calculadora de rentabilidad de alquiler: c\u00f3mo evaluar una inversi\u00f3n inmobiliaria\",\"datePublished\":\"2026-04-20T12:40:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/\"},\"wordCount\":906,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/luxusrealestates.com\/ar\/#organization\"},\"image\":{\"@id\":\"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/luxusrealestates.com\/wp-content\/uploads\/2026\/04\/calculadora-rentabilidad-alquiler.webp\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"nb-NO\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/\",\"url\":\"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/\",\"name\":\"Calcula la rentabilidad de tu alquiler f\u00e1cil\",\"isPartOf\":{\"@id\":\"https:\/\/luxusrealestates.com\/ar\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/luxusrealestates.com\/wp-content\/uploads\/2026\/04\/calculadora-rentabilidad-alquiler.webp\",\"datePublished\":\"2026-04-20T12:40:49+00:00\",\"description\":\"Utiliza nuestra calculadora de rentabilidad de un alquiler, y descubre ingresos, gastos y beneficio neto para invertir con m\u00e1s criterio.\",\"breadcrumb\":{\"@id\":\"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/#breadcrumb\"},\"inLanguage\":\"nb-NO\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nb-NO\",\"@id\":\"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/#primaryimage\",\"url\":\"https:\/\/luxusrealestates.com\/wp-content\/uploads\/2026\/04\/calculadora-rentabilidad-alquiler.webp\",\"contentUrl\":\"https:\/\/luxusrealestates.com\/wp-content\/uploads\/2026\/04\/calculadora-rentabilidad-alquiler.webp\",\"width\":700,\"height\":467,\"caption\":\"calculadora rentabilidad alquiler\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/luxusrealestates.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculadora de rentabilidad de alquiler: c\u00f3mo evaluar una inversi\u00f3n inmobiliaria\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/luxusrealestates.com\/ar\/#website\",\"url\":\"https:\/\/luxusrealestates.com\/ar\/\",\"name\":\"Luxus\",\"description\":\"Real States\",\"publisher\":{\"@id\":\"https:\/\/luxusrealestates.com\/ar\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/luxusrealestates.com\/ar\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nb-NO\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/luxusrealestates.com\/ar\/#organization\",\"name\":\"Luxus\",\"url\":\"https:\/\/luxusrealestates.com\/ar\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nb-NO\",\"@id\":\"https:\/\/luxusrealestates.com\/ar\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/luxusrealestates.com\/wp-content\/uploads\/2024\/05\/Group-39537.svg\",\"contentUrl\":\"https:\/\/luxusrealestates.com\/wp-content\/uploads\/2024\/05\/Group-39537.svg\",\"width\":201,\"height\":81,\"caption\":\"Luxus\"},\"image\":{\"@id\":\"https:\/\/luxusrealestates.com\/ar\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/luxusrealestates.com\/ar\/#\/schema\/person\/c3e72201129d11c3047fff4304b593d5\",\"name\":\"Lisa Milonas\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nb-NO\",\"@id\":\"https:\/\/luxusrealestates.com\/ar\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a0912a75d181fe45fb04793f8e071e9dffd6955b5dd81061c9ebe7debe632f09?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a0912a75d181fe45fb04793f8e071e9dffd6955b5dd81061c9ebe7debe632f09?s=96&d=mm&r=g\",\"caption\":\"Lisa Milonas\"},\"url\":\"https:\/\/luxusrealestates.com\/nb\/author\/lisa-milonas\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Calcula la rentabilidad de tu alquiler f\u00e1cil","description":"Utiliza nuestra calculadora de rentabilidad de un alquiler, y descubre ingresos, gastos y beneficio neto para invertir con m\u00e1s criterio.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/luxusrealestates.com\/nb\/calculadora-de-rentabilidad\/","og_locale":"nb_NO","og_type":"article","og_title":"Calcula la rentabilidad de tu alquiler f\u00e1cil","og_description":"Utiliza nuestra calculadora de rentabilidad de un alquiler, y descubre ingresos, gastos y beneficio neto para invertir con m\u00e1s criterio.","og_url":"https:\/\/luxusrealestates.com\/nb\/calculadora-de-rentabilidad\/","og_site_name":"Luxus","article_published_time":"2026-04-20T12:40:49+00:00","og_image":[{"width":700,"height":467,"url":"https:\/\/luxusrealestates.com\/wp-content\/uploads\/2026\/04\/calculadora-rentabilidad-alquiler.webp","type":"image\/webp"}],"author":"Lisa Milonas","twitter_card":"summary_large_image","twitter_misc":{"Skrevet av":"Lisa Milonas","Ansl. lesetid":"5 minutter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/#article","isPartOf":{"@id":"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/"},"author":{"name":"Lisa Milonas","@id":"https:\/\/luxusrealestates.com\/ar\/#\/schema\/person\/c3e72201129d11c3047fff4304b593d5"},"headline":"Calculadora de rentabilidad de alquiler: c\u00f3mo evaluar una inversi\u00f3n inmobiliaria","datePublished":"2026-04-20T12:40:49+00:00","mainEntityOfPage":{"@id":"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/"},"wordCount":906,"commentCount":0,"publisher":{"@id":"https:\/\/luxusrealestates.com\/ar\/#organization"},"image":{"@id":"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/#primaryimage"},"thumbnailUrl":"https:\/\/luxusrealestates.com\/wp-content\/uploads\/2026\/04\/calculadora-rentabilidad-alquiler.webp","articleSection":["Blog"],"inLanguage":"nb-NO","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/","url":"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/","name":"Calcula la rentabilidad de tu alquiler f\u00e1cil","isPartOf":{"@id":"https:\/\/luxusrealestates.com\/ar\/#website"},"primaryImageOfPage":{"@id":"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/#primaryimage"},"image":{"@id":"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/#primaryimage"},"thumbnailUrl":"https:\/\/luxusrealestates.com\/wp-content\/uploads\/2026\/04\/calculadora-rentabilidad-alquiler.webp","datePublished":"2026-04-20T12:40:49+00:00","description":"Utiliza nuestra calculadora de rentabilidad de un alquiler, y descubre ingresos, gastos y beneficio neto para invertir con m\u00e1s criterio.","breadcrumb":{"@id":"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/#breadcrumb"},"inLanguage":"nb-NO","potentialAction":[{"@type":"ReadAction","target":["https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/"]}]},{"@type":"ImageObject","inLanguage":"nb-NO","@id":"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/#primaryimage","url":"https:\/\/luxusrealestates.com\/wp-content\/uploads\/2026\/04\/calculadora-rentabilidad-alquiler.webp","contentUrl":"https:\/\/luxusrealestates.com\/wp-content\/uploads\/2026\/04\/calculadora-rentabilidad-alquiler.webp","width":700,"height":467,"caption":"calculadora rentabilidad alquiler"},{"@type":"BreadcrumbList","@id":"https:\/\/luxusrealestates.com\/calculadora-de-rentabilidad\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/luxusrealestates.com\/"},{"@type":"ListItem","position":2,"name":"Calculadora de rentabilidad de alquiler: c\u00f3mo evaluar una inversi\u00f3n inmobiliaria"}]},{"@type":"WebSite","@id":"https:\/\/luxusrealestates.com\/ar\/#website","url":"https:\/\/luxusrealestates.com\/ar\/","name":"Luksus","description":"Ekte stater","publisher":{"@id":"https:\/\/luxusrealestates.com\/ar\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/luxusrealestates.com\/ar\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nb-NO"},{"@type":"Organization","@id":"https:\/\/luxusrealestates.com\/ar\/#organization","name":"Luksus","url":"https:\/\/luxusrealestates.com\/ar\/","logo":{"@type":"ImageObject","inLanguage":"nb-NO","@id":"https:\/\/luxusrealestates.com\/ar\/#\/schema\/logo\/image\/","url":"https:\/\/luxusrealestates.com\/wp-content\/uploads\/2024\/05\/Group-39537.svg","contentUrl":"https:\/\/luxusrealestates.com\/wp-content\/uploads\/2024\/05\/Group-39537.svg","width":201,"height":81,"caption":"Luxus"},"image":{"@id":"https:\/\/luxusrealestates.com\/ar\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/luxusrealestates.com\/ar\/#\/schema\/person\/c3e72201129d11c3047fff4304b593d5","name":"Lisa Milonas","image":{"@type":"ImageObject","inLanguage":"nb-NO","@id":"https:\/\/luxusrealestates.com\/ar\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a0912a75d181fe45fb04793f8e071e9dffd6955b5dd81061c9ebe7debe632f09?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a0912a75d181fe45fb04793f8e071e9dffd6955b5dd81061c9ebe7debe632f09?s=96&d=mm&r=g","caption":"Lisa Milonas"},"url":"https:\/\/luxusrealestates.com\/nb\/author\/lisa-milonas\/"}]}},"_links":{"self":[{"href":"https:\/\/luxusrealestates.com\/nb\/wp-json\/wp\/v2\/posts\/13960","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/luxusrealestates.com\/nb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/luxusrealestates.com\/nb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/luxusrealestates.com\/nb\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/luxusrealestates.com\/nb\/wp-json\/wp\/v2\/comments?post=13960"}],"version-history":[{"count":9,"href":"https:\/\/luxusrealestates.com\/nb\/wp-json\/wp\/v2\/posts\/13960\/revisions"}],"predecessor-version":[{"id":13969,"href":"https:\/\/luxusrealestates.com\/nb\/wp-json\/wp\/v2\/posts\/13960\/revisions\/13969"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/luxusrealestates.com\/nb\/wp-json\/wp\/v2\/media\/13971"}],"wp:attachment":[{"href":"https:\/\/luxusrealestates.com\/nb\/wp-json\/wp\/v2\/media?parent=13960"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/luxusrealestates.com\/nb\/wp-json\/wp\/v2\/categories?post=13960"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/luxusrealestates.com\/nb\/wp-json\/wp\/v2\/tags?post=13960"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}