Kate D

9.5K posts

Kate D banner
Kate D

Kate D

@katedaz

“Suéltalo a ver qué pasa”

Comunidad de Madrid, España Katılım Haziran 2009
1.2K Takip Edilen353 Takipçiler
Kate D retweetledi
Jon González
Jon González@Jongonzlz·
La sostenibilidad de las pensiones pasa por alinear la rentabilidad implícita entre lo aportado y lo recibido con la capacidad real de crecimiento de la economía. Todo lo demás son cuentos.
Jon González tweet media
Español
45
323
1.4K
49.7K
Kate D retweetledi
Jon González
Jon González@Jongonzlz·
¿Por qué cuando reclamo una deflactación de los parámetros del IRPF me dirijo principalmente al Gobierno Central y no a las CCAA? Lo siento. Me voy a poner técnico. Pero te recomiendo que lo leas antes de opinar. No es por una preferencia política (insisto, me dan igual PSOE, PP o popó), sino porque la arquitectura del tributo condena a cualquier acción autonómica solitaria a ser una medida parcial y, financieramente, una anomalía. PRIMERO. Y esto lo he explicado ya hasta la saciedad, las Comunidades Autónomas solamente pueden actuar sobre los tramos (sobre la cuota), pero la inflación ya erosiona las rentas de los contribuyentes mucho antes, en la fase de la determinación de la BASE IMPONIBLE. Tres puntos donde las CCAA no pueden actuar: 1) La Reducción por Rendimientos del Trabajo (Art. 20 LIRPF): Hemos visto estos días que este es, probablemente, el mecanismo más sensible para que las rentas bajas tributen menos. Si un trabajador recibe una subida salarial del 5% para compensar el IPC, su capacidad de compra es la misma, pero su salario nominal es mayor. Al superar los umbrales del Art. 20, la reducción estatal se aplica en menor medida o desaparece. El contribuyente termina pagando más impuestos sobre una base mayor. La CCAA es legalmente incapaz de actualizar estos umbrales para que el trabajador mantenga su beneficio fiscal. 2) El gasto deducible de 2.000 € (Art. 19.2.f LIRPF): Todos los trabajadores por cuenta ajena restan esta cuantía fija de sus ingresos íntegros. Al ser una cifra nominal estática, la inflación reduce su valor real año tras año. Si el Estado no actualiza esta cifra, el contribuyente está tributando por una "renta neta" que es artificialmente alta. Las CCAA tampoco pueden actualizar este parámetro 3) El límite del 10% en el Mínimo Personal y Familiar: Aunque la Ley 22/2009 permite a las CCAA modificar el mínimo personal (la renta básica exenta en el primer tramo), les impone un corsé: no pueden desviarse más de un 10% de la cuantía Estatal. Si la inflación acumulada desde la última revisión estatal supera ese dígito (como ha ocurrido en el ciclo actual), la CCAA queda bloqueada. No puede proteger legalmente el mínimo de subsistencia de sus ciudadanos porque el Estado ha decidido congelar su parámetro de referencia. SEGUNDO. La "doble penalización" del Sistema de Financiación Autonómica El Sistema de Financiación Autonómica y su concepto de 'Capacidad Tributaria Normativa' le genera a las CCAA que deciden bajar impuestos por su cuenta una "doble penalización" (legítima, pero que no se puede ignorar). Lo explico mejor con un ejemplo simplificado: Imagínate una CCAA con una capacidad tributaria normativa de 10.000M€. En el escenario base, su aportación al Fondo de Garantía (FGSPF) es de 7.500M€ (el 75%), disponiendo de 2.500M€ para financiación de servicios. La CCAA deflacta unilateralmente su tramo en un 5%. Su recaudación real desciende a 9.500M€. Si el Estado no la acompaña en la deflactación, la capacidad normativa de la CCAA para el SFA sigue computándose en 10.000M€. Cuando se realiza la liquidación definitiva el sistema detrae los 7.500M€ de aportación obligatoria. Resultado: La disponibilidad presupuestaria neta de la CCAA cae a 2.000M€. Es decir, una reducción del 5% en la recaudación bruta se traduce en una pérdida del 20% de los recursos de libre disposición de la comunidad. Esta asimetría convierte la deflactación en un acto de riesgo presupuestario extremo que pocas administraciones pueden sostener sin recortar servicios públicos, a menos que el Estado "acompase" la medida actualizando la norma general del IRPF. Dicho esto, en los últimos años, a pesar de los desincentivos que he comentado, varias CCAA han aplicado deflactores (parciales) en su tramo autonómico para mitigar el impacto de la inflación: La Comunidad de Madrid (todos los tramos y mínimos personales), Andalucía y Murcia (tres primeros tramos y mínimos del contribuyente), Comunidad Valenciana (parcial, focalizada en rentas bajas, tocando también tipos), País Vasco y Navarra (prácticamente todos los años desde 2021, tramos, base y deducciones), Galicia (en 2022 y 2023, deflactación de 3 primeros tramos y reducción de tipo del primer tramo), La Rioja (deflactación parcial progresiva hasta 40.000€) y Aragón (reestructuración de la escala en 2023 elevando umbrales hasta 50.000€). Mientras el Estado no actúe, cualquier medida autonómica será un parche parcial que no solo es insuficiente para el contribuyente, sino que socava la suficiencia financiera de la propia región que intenta aplicarlo. La deflactación, para ser real, debe empezar por el Estado Central.
Carlos Sánchez Mato🔻✳️@carlossmato

Es curioso que no os refirais a las comunidades autónomas, la mayoría gobernadas por el PP, que tienen competencia para deflactar tarifa del IRPF y no lo han hecho. Se han beneficiado de 1.157 millones en 2025, algo más del 50% del ingreso adicional. ¿Infierno fiscal? Ya...

Español
22
354
1K
69.1K
Kate D retweetledi
Jon González
Jon González@Jongonzlz·
Choque sin precedentes en el Tribunal de Cuentas tras detectar que el Gobierno desvía fondos europeos al pago de pensiones La cúpula del órgano fiscalizador da 'luz verde' a la Cuenta General del Estado, su informe clave, con fuerte tensión interna elmundo.es/economia/2026/…
Español
42
493
1.2K
124.1K
Kate D retweetledi
Jon González
Jon González@Jongonzlz·
Para los que pensabais que las herencias eran la solución de nada, volumen II. El Estado se quedará su parte. Este informe de la Comisión Europea sobre impuestos a la riqueza y herencias se está viralizando en X anglo, no veo que haya llegado a la prensa española.
Jon González tweet media
Español
38
307
882
75.5K
Kate D retweetledi
Kate D retweetledi
Jorge Galindo
Jorge Galindo@JorgeGalindo·
Hay que inundar, literalmente llenar, colmar, de evidencia sólida, rigurosa, analíticamente relevante el debate de las cosas que importan. Vivienda, crecimiento, desigualdades, pensiones, pobreza, educación, sanidad, demografía. Hay que hacerlo. Una contraofensiva.
ABC.es@abc_es

#LoMásLeído📰 Jon González: «El debate público está dominado por la narrativa, no por datos y evidencia reales» abc.es/economia/jon-g…

Español
23
244
774
37.2K
Kate D retweetledi
Kate D retweetledi
Jon González
Jon González@Jongonzlz·
Quiero DEMOCRATIZAR el conocimiento del cálculo del IRPF y del salario neto, y las implicaciones de la progresividad en frío entre 2012 y 2026. Pero necesito fiscalistas y economistas con ojo al detalle y techies. Quiero que los que sabéis de fiscalidad auditéis los resultados de mi código para cada año atendiendo al más mínimo detalle (yo he tratado de hacerlo), Que los techies me propongáis mejoras en el código y optimizaciones en las salidas, y quiero que, finalmente, los que tenéis capacidad de montar una web con ello, os coordinéis y lo hagáis. También quiero que extraigáis un manual sencillo para que la gente lo entienda a partir de los cálculos que se hacen en el código. Y que se expliquen las distintas normativas y cómo impactaron. A TRABAJAR. GO GO GO! @Gsnchez @XMihura @Inspectores_IHE @frdelatorre @Jaume_Vinas @SantiCalvo_Eco Ahí va el código! import pandas as pd import numpy as np # ============================================================================= # 1. MÓDULO MACROECONÓMICO: INFLACIÓN ACUMULADA (DICIEMBRE A DICIEMBRE) # ============================================================================= IPC_ANUAL_DIC = { 2013: 0.003, 2014: -0.010, 2015: 0.000, 2016: 0.016, 2017: 0.011, 2018: 0.012, 2019: 0.008, 2020: -0.005, 2021: 0.065, 2022: 0.057, 2023: 0.031, 2024: 0.028, 2025: 0.029, 2026: 0.030 } def obtener_inflacion_acumulada(anio_base, anio_destino=2026): if anio_base == anio_destino: return 1.0 multiplicador = 1.0 for anio in range(anio_base + 1, anio_destino + 1): multiplicador *= (1 + IPC_ANUAL_DIC[anio]) return multiplicador INFLACION_A_2026 = {anio: obtener_inflacion_acumulada(anio, 2026) for anio in range(2012, 2027)} # ============================================================================= # 2. NORMATIVA FISCAL Y LABORAL (IRPF Y SS) # ============================================================================= def obtener_parametros(anio): p = {} # Bases y Tipos Generales SS p['base_max'] = { 2012: 39150.0, 2013: 41108.4, 2014: 43164.0, 2015: 43272.0, 2016: 43704.0, 2017: 45014.4, 2018: 45014.4, 2019: 48841.2, 2020: 48841.2, 2021: 48841.2, 2022: 49672.8, 2023: 53946.0, 2024: 56646.0, 2025: 58914.0, 2026: 61214.4 }[anio] p['ss_tipos'] = { 'comunes': [0.236, 0.047], 'desempleo': [0.055, 0.0155], 'fogasa': [0.002, 0.0], 'fp': [0.006, 0.001], 'atep': [0.015, 0.0] } # MEI y Solidaridad if anio == 2023: p['mei'] = [0.005, 0.001] elif anio == 2024: p['mei'] = [0.0058, 0.0012] elif anio == 2025: p['mei'] = [0.0067, 0.0013] elif anio >= 2026: p['mei'] = [0.0075, 0.0015] else: p['mei'] = [0.0, 0.0] if anio == 2025: p['solidaridad'] = [(1.10, 0.0092), (1.50, 0.0100), (float('inf'), 0.0117)] elif anio >= 2026: p['solidaridad'] = [(1.10, 0.0115), (1.50, 0.0125), (float('inf'), 0.0146)] else: p['solidaridad'] = [] # Mínimos y Gastos p['irpf_minimo'] = 5151 if anio <= 2014 else 5550 p['minimo_exento'] = { 2012: 11162, 2013: 11162, 2014: 11162, 2015: 12000, 2016: 12000, 2017: 12000, 2018: 12643, 2019: 14000, 2020: 14000, 2021: 14000, 2022: 14000, 2023: 15000, 2024: 15876, 2025: 15876, 2026: 15876 }[anio] p['gastos_fijos'] = 0 if anio <= 2014 else 2000 # Reducción Art 20 (y Metadatos para control) def get_art20_params(a): if a <= 2014: return {"U_Inf": 9180, "R_Max": 4080, "U_Sup": 13260, "R_Min": 2652} elif 2015 <= a <= 2017: return {"U_Inf": 11250, "R_Max": 3700, "U_Sup": 14450, "R_Min": 0} elif a == 2018: return {"U_Inf": "Transitorio", "R_Max": "Transitorio", "U_Sup": "Transitorio", "R_Min": "Transitorio"} elif 2019 <= a <= 2022: return {"U_Inf": 13115, "R_Max": 5565, "U_Sup": 16825, "R_Min": 0} elif a == 2023: return {"U_Inf": 14047.5, "R_Max": 6498, "U_Sup": 19747.5, "R_Min": 0} else: return {"U_Inf": 14852, "R_Max": 7302, "U_Sup": 19747.5, "R_Min": 0} p['art20_meta'] = get_art20_params(anio) def reduccion_trabajo(rn_previo): if anio <= 2014: if rn_previo <= 9180: return 4080.0 elif rn_previo <= 13260: return 4080.0 - 0.35 * (rn_previo - 9180.0) else: return 2652.0 elif 2015 <= anio <= 2017: if rn_previo <= 11250: return 3700.0 elif rn_previo <= 14450: return 3700.0 - 1.15625 * (rn_previo - 11250.0) else: return 0.0 elif anio == 2018: # Régimen Transitorio pre = 3700.0 if rn_previo <= 11250 else (3700.0 - 1.15625 * (rn_previo - 11250.0) if rn_previo <= 14450 else 0.0) post = 5565.0 if rn_previo <= 13115 else (max(0.0, 5565.0 - 1.5 * (rn_previo - 13115.0)) if rn_previo <= 16825 else 0.0) return (pre / 2.0) + (post / 2.0) elif 2019 <= anio <= 2022: if rn_previo <= 13115: return 5565.0 elif rn_previo <= 16825: return max(0.0, 5565.0 - 1.5 * (rn_previo - 13115.0)) else: return 0.0 elif anio == 2023: if rn_previo <= 14047.50: return 6498.0 elif rn_previo <= 19747.50: return max(0.0, 6498.0 - 1.14 * (rn_previo - 14047.50)) else: return 0.0 elif anio >= 2024: if rn_previo <= 14852: return 7302.0 elif rn_previo <= 17673.52: return 7302.0 - 1.75 * (rn_previo - 14852.0) elif rn_previo <= 19747.50: return 2364.34 - 1.14 * (rn_previo - 17673.52) else: return 0.0 return 0.0 p['reduccion_trabajo'] = reduccion_trabajo # Escalas IRPF if anio <= 2014: p['tramos_irpf'] = [(17707, 0.2475), (33007, 0.30), (53407, 0.40), (120000, 0.47), (175000, 0.49), (300000, 0.51), (float('inf'), 0.52)] elif anio == 2015: p['tramos_irpf'] = [(12450, 0.195), (20200, 0.245), (34000, 0.305), (60000, 0.38), (float('inf'), 0.46)] elif 2016 <= anio <= 2020: p['tramos_irpf'] = [(12450, 0.19), (20200, 0.24), (35200, 0.30), (60000, 0.37), (float('inf'), 0.45)] else: p['tramos_irpf'] = [(12450, 0.19), (20200, 0.24), (35200, 0.30), (60000, 0.37), (300000, 0.45), (float('inf'), 0.47)] # Deducción SMI def deduccion_smi(bruto): if anio == 2026: if bruto <= 17094: return 590.89 else: return max(0.0, 590.89 - 0.20 * (bruto - 17094.0)) elif anio == 2025: if bruto <= 16576: return 340.0 elif bruto <= 18276: return max(0, 340.0 - 0.20 * (bruto - 16576.0)) return 0.0 p['deduccion_smi'] = deduccion_smi return p # ============================================================================= # 3. GENERACIÓN DE HOJAS DE CONTROL DE PARÁMETROS # ============================================================================= def generar_hojas_control(): general = [] tramos_lista = [] for anio in range(2012, 2027): p = obtener_parametros(anio) tipo_emp = sum(x[0] for x in p['ss_tipos'].values()) tipo_tra = sum(x[1] for x in p['ss_tipos'].values()) general.append({ "Año": anio, "Base Máx. Anual": p['base_max'], "SS Empleador %": round(tipo_emp * 100, 2), "SS Empleado %": round(tipo_tra * 100, 2), "MEI Empleador %": round(p['mei'][0] * 100, 3), "MEI Empleado %": round(p['mei'][1] * 100, 3), "Gastos Fijos Art.19": p['gastos_fijos'], "Mín. Contribuyente": p['irpf_minimo'], "Mín. Exento Retención": p['minimo_exento'], "Art.20 Umbral Inf": p['art20_meta']['U_Inf'], "Art.20 Red. Máxima": p['art20_meta']['R_Max'], "Art.20 Umbral Sup": p['art20_meta']['U_Sup'], "Art.20 Red. Mínima": p['art20_meta']['R_Min'] }) for i, (lim, tip) in enumerate(p['tramos_irpf']): tramos_lista.append({ "Año": anio, "Nº Tramo": i + 1, "Hasta Base": lim if lim != float('inf') else "En adelante", "Tipo %": round(tip * 100, 2) }) return pd.DataFrame(general), pd.DataFrame(tramos_lista) # ============================================================================= # 4. MOTOR DETALLADO (PARA PESTAÑAS ANUALES DAT_YYYY) # ============================================================================= def calcular_cuotas_por_tramo(base_liq, tramos): cuotas_tramos = {f"T{i+1} ({round(tipo*100, 1)}%)": 0.0 for i, (_, tipo) in enumerate(tramos)} cuota_total = 0.0 if base_liq <= 0: return cuotas_tramos, cuota_total lim_ant = 0.0 for i, (lim, tipo) in enumerate(tramos): nombre = f"T{i+1} ({round(tipo*100, 1)}%)" if base_liq > lim: cuota = (lim - lim_ant) * tipo cuotas_tramos[nombre] = cuota cuota_total += cuota lim_ant = lim else: cuota = (base_liq - lim_ant) * tipo cuotas_tramos[nombre] = cuota cuota_total += cuota break return cuotas_tramos, cuota_total def procesar_ano(anio): p = obtener_parametros(anio) # Rango exhaustivo: 0 a 100.000€ de 1€ en 1€ salarios_brutos = np.arange(0, 100001, 1) resultados = [] for bruto in salarios_brutos: base_cotizacion = min(bruto, p['base_max']) exceso_base = max(0, bruto - p['base_max']) tipo_empresa = sum(x[0] for x in p['ss_tipos'].values()) + p['mei'][0] tipo_trabajador = sum(x[1] for x in p['ss_tipos'].values()) + p['mei'][1] cot_empresa = base_cotizacion * tipo_empresa cot_trabajador = base_cotizacion * tipo_trabajador if p['solidaridad'] and exceso_base > 0: tramo1_limite = p['base_max'] * 0.10 tramo2_limite = p['base_max'] * 0.50 exceso1 = min(exceso_base, tramo1_limite) exceso2 = min(max(0, exceso_base - tramo1_limite), tramo2_limite - tramo1_limite) exceso3 = max(0, exceso_base - tramo2_limite) cuota_sol_total = (exceso1 * p['solidaridad'][0][1]) + (exceso2 * p['solidaridad'][1][1]) + (exceso3 * p['solidaridad'][2][1]) cot_empresa += cuota_sol_total * (5/6) cot_trabajador += cuota_sol_total * (1/6) coste_laboral = bruto + cot_empresa rendimiento_previo_sin_fijos = bruto - cot_trabajador red_trabajo = p['reduccion_trabajo'](rendimiento_previo_sin_fijos) rendimiento_neto = max(0, rendimiento_previo_sin_fijos - p['gastos_fijos']) base_imponible = max(0, rendimiento_neto - red_trabajo) cuotas_tramos, cuota_integra = calcular_cuotas_por_tramo(base_imponible, p['tramos_irpf']) cuota_minimo = p['irpf_minimo'] * p['tramos_irpf'][0][1] cuota_teorica = max(0, cuota_integra - cuota_minimo) deduccion = p['deduccion_smi'](bruto) cuota_con_deduccion = max(0, cuota_teorica - deduccion) limite_retencion = max(0, (bruto - p['minimo_exento']) * 0.43) irpf_final = min(cuota_con_deduccion, limite_retencion) salario_neto = bruto - cot_trabajador - irpf_final fila = { "Salario Bruto": bruto, "Cot. Soc. Empresa": round(cot_empresa, 2), "Coste Laboral": round(coste_laboral, 2), "Cot. Soc. Trab.": round(cot_trabajador, 2), "Ren. Previo": round(rendimiento_previo_sin_fijos, 2), "Gastos Fijos": p['gastos_fijos'], "Red. Ren. Trab.": round(red_trabajo, 2), "Base Imponible": round(base_imponible, 2) } for k, v in cuotas_tramos.items(): fila[k] = round(v, 2) fila.update({ "Cuota Íntegra": round(cuota_integra, 2), "Cuota Mínimo Personal": round(cuota_minimo, 2), "Cuota Teórica": round(cuota_teorica, 2), "Deducción SMI": round(deduccion, 2), "Cuota tras SMI": round(cuota_con_deduccion, 2), "Límite 43% (Art 85.3)": round(limite_retencion, 2), "IRPF Final": round(irpf_final, 2), "Salario Neto": round(salario_neto, 2) }) resultados.append(fila) return pd.DataFrame(resultados) # ============================================================================= # 5. MOTOR RÁPIDO PARA COMPARATIVA INFLACIÓN # ============================================================================= def calcular_nomina_agregada(bruto, anio, p): base_cot = min(bruto, p['base_max']) exc_base = max(0, bruto - p['base_max']) t_emp = sum(x[0] for x in p['ss_tipos'].values()) + p['mei'][0] t_tra = sum(x[1] for x in p['ss_tipos'].values()) + p['mei'][1] cot_emp = base_cot * t_emp cot_tra = base_cot * t_tra if p['solidaridad'] and exc_base > 0: l1, l2 = p['base_max']*0.1, p['base_max']*0.5 e1, e2, e3 = min(exc_base, l1), min(max(0, exc_base-l1), l2-l1), max(0, exc_base-l2) q_sol = (e1*p['solidaridad'][0][1]) + (e2*p['solidaridad'][1][1]) + (e3*p['solidaridad'][2][1]) cot_emp += q_sol * (5/6); cot_tra += q_sol * (1/6) coste_lab = bruto + cot_emp rn_previo = bruto - cot_tra red20 = p['reduccion_trabajo'](rn_previo) base_imp = max(0, rn_previo - p['gastos_fijos'] - red20) q_integra = 0.0 lim_ant = 0.0 for lim, tipo in p['tramos_irpf']: if base_imp > lim: q_integra += (lim - lim_ant) * tipo lim_ant = lim else: q_integra += (base_imp - lim_ant) * tipo break q_min = p['irpf_minimo'] * p['tramos_irpf'][0][1] q_teorica = max(0, q_integra - q_min) q_smi = max(0, q_teorica - p['deduccion_smi'](bruto)) lim_ret = max(0, (bruto - p['minimo_exento']) * 0.43) irpf_final = min(q_smi, lim_ret) return coste_lab, cot_emp, cot_tra, irpf_final, bruto - cot_tra - irpf_final def generar_comparativa_inflacion(): # Análisis comparativo en saltos de 1.000€ salarios_2026 = np.arange(15000, 100001, 1000) p_2026 = obtener_parametros(2026) ref_2026 = {b: calcular_nomina_agregada(b, 2026, p_2026) for b in salarios_2026} resultados = [] for anio in range(2012, 2027): p_anio = obtener_parametros(anio) inf_acum = INFLACION_A_2026[anio] for bruto_26 in salarios_2026: bruto_nom = bruto_26 / inf_acum c_lab_n, c_emp_n, c_tra_n, irpf_n, neto_n = calcular_nomina_agregada(bruto_nom, anio, p_anio) c_lab_aj = c_lab_n * inf_acum c_emp_aj = c_emp_n * inf_acum c_tra_aj = c_tra_n * inf_acum irpf_aj = irpf_n * inf_acum neto_aj = neto_n * inf_acum neto_2026_real = ref_2026[bruto_26][4] dif_poder_adq = neto_aj - neto_2026_real resultados.append({ "Año a Comparar": anio, "Salario Equivalente (2026)": bruto_26, "Multiplicador IPC Acum.": round(inf_acum, 4), "IPC Acumulado (%)": f"{round((inf_acum - 1)*100, 2)}%", "Salario Bruto Nominal": round(bruto_nom, 2), "Coste Lab. (Euros 2026)": round(c_lab_aj, 2), "SS Emp. (Euros 2026)": round(c_emp_aj, 2), "SS Tra. (Euros 2026)": round(c_tra_aj, 2), "IRPF (Euros 2026)": round(irpf_aj, 2), "Neto Real en su Año": round(neto_aj, 2), "Neto Real en 2026": round(neto_2026_real, 2), "Variación Poder Adquisitivo Mensual vs 2026 (12 pagas)": round(dif_poder_adq / 12, 2), "Pérdida/Ganancia Anual Poder Adq.": round(dif_poder_adq, 2) }) return pd.DataFrame(resultados) # ============================================================================= # 6. EJECUCIÓN MAESTRA Y GENERACIÓN DEL EXCEL COMPLETO # ============================================================================= nombre_fichero = 'Auditoria_Integral_Nominas_e_Inflacion_2012_2026.xlsx' print("Iniciando la creación del mega-archivo Excel. ¡Paciencia, puede tardar un par de minutos!...") with pd.ExcelWriter(nombre_fichero, engine='openpyxl') as writer: # 1. Pestañas de Parámetros de Control print("Generando hojas de control normativo...") df_gen, df_tra = generar_hojas_control() df_gen.to_excel(writer, sheet_name='CONTROL_GENERAL', index=False) df_tra.to_excel(writer, sheet_name='CONTROL_TRAMOS_IRPF', index=False) # 2. Pestaña Comparativa Inflación print("Calculando y generando comparativa ajustada por IPC...") df_comparativa = generar_comparativa_inflacion() df_comparativa.to_excel(writer, sheet_name='COMPARATIVA_INFLACION', index=False) # 3. Pestañas Anuales Detalladas (de 1€ en 1€) for anio in range(2012, 2027): print(f"Calculando nóminas detalladas para el año {anio} (100.001 registros)...") df_ano = procesar_ano(anio) df_ano.to_excel(writer, sheet_name=f'DAT_{anio}', index=False) print(f"\n¡Éxito total! Archivo '{nombre_fichero}' creado correctamente con todas las auditorías solicitadas.")
Español
74
446
1.9K
237.8K
Kate D retweetledi
Jon González
Jon González@Jongonzlz·
El incremento intenso de la población en un corto periodo de tiempo a un ritmo tal que no es posible adecuar ni los servicios públicos ni el ritmo de aumento de la oferta de la vivienda es el principal causante del deterioro de los servicios públicos y la crisis de vivienda. Este razonamiento no depende del origen o la nacionalidad de las personas, sino de una cuestión básica de oferta y demanda en un periodo corto de tiempo. El mismo efecto se produciría ante cualquier aumento rápido de la población adulta: por ejemplo, si hubiera un retorno masivo de emigrantes españoles, un fuerte desplazamiento interno hacia una zona concreta, la aparición de un gran polo de empleo que atraiga población, o incluso, puestos a imaginar, por la llegada de extraterrestres o una duplicación súbita de adultos jóvenes. En todos los casos, el problema es el mismo: cuando la demanda crece más rápido de lo que pueden adaptarse los servicios públicos y la vivienda, aparecen tensiones.
Juanma Lamet@juanmalamet

Editorial: La "prioridad nacional" es un error El PP ha entregado a Vox un marco de cariz identitario que señala al inmigrante como el principal causante del deterioro de los servicios públicos y de la crisis de la vivienda. Ambas premisas son falsas elmundo.es/opinion/editor…

Español
51
632
1.9K
88K
Kate D retweetledi
Estefania Molina
Estefania Molina@EstefMolina_·
🏠 ¿Por qué no se soluciona realmente el problema de la vivienda en España? Para empezar, porque el debate público está tomado por discursos y mitos, no sustentados en ningún dato, pero que algunos gurús —y políticos— repiten a diario. Desmonto a continuación (y en el vídeo): ❌ “Construir es especulador (y facha)”. ✅ La realidad: la escasez de vivienda está provocando chabolismo en la gente humilde por encarecimiento brutal de la vivienda. ❌“No hay que construir más”. ✅ La realidad: a 2026 teníamos un déficit de 700.000 pisos, llegan 500.000 personas al año, se crean 200.000 familias al año. No salen los números. ❌ Los pisos ya existen en algún lugar.” ✅ La realidad: el INE calculó esas supuestas 3,8 millones de viviendas a partir del censo de la luz, pero varios estudios lo desmontan (la propia Colau lo reconoció en el caso de Barcelona, que no había ni el 1% de las viviendas esperadas). ❌ “En la crisis inmobiliaria se construía mucho y no bajaban los precios.” ✅ La realidad: la burbuja no vino por la oferta en sí, sino por la burbuja de crédito. ❌ “Hay pueblos que pierden población y no bajan los precios.” ✅ La realidad: obvio, población no es demanda directamente. Puede bajar lo primero y subir lo segundo (gente se emancipa, nuevos hogares, etc). ❌ “El problema son los pisos turísticos.” ✅ La realidad: son el 1,3% del parque de alquiler en Barcelona. Poco relevante. ❌ “El problema son los fondos buitre.” ✅ La realidad: España es un país de pequeños propietarios y la propiedad no está concentrada. Los fondos buitre solo poseen el 8% del parque de alquiler. ¿Por qué no se construye? ⚫️ Los baby-boomers tienen casa en propiedad en más de un 90%, por tanto, al bipartidismo no le hace perder esos votos, los que realmente le importan. ⚫️ La gente ha invertido en España mayoritariamente sus ahorros en la vivienda, nadie quiere que bajen los precios. ⚫️ Muchas familias no están empobrecidas gracias a la segunda residencia que ponen en alquiler. Es un complemento para la clase media hundida. ⚫️ Líos del sector y la regulación. ⚫️ Es caro para el Estado y las CCAA, y a muchas empresas no les sale rentable. ⚫️ Discursos anuméricos solo orientados a batallas culturales para distraer la atención. Gracias al podcast Educa tu dinero por dejarme expresarlo.
Español
144
767
1.8K
183.9K
Kate D retweetledi
Jon González
Jon González@Jongonzlz·
Va terminando el tercer día tras la infamia. Hemos conseguido que quede meridianamente claro el impacto de la inflación en el incremento del IPRF que sufren las rentas bajas y devolverlo al debate. No, lo que pasa en X no se queda en X, eso cada vez lo tengo más claro. Tenemos dos rectificaciones (de aquella manera) de tertulianos, la corrección del titular y la pieza de un medio que apretó el botón demasiado rápido, muchas Notas de la Comunidad y la esperanza de que @laSextaXplica, @jjyelamo y los tertulianos rectifiquen y, si lo consideran pidan disculpas en directo en el próximo programa. Con el diputado @Santi__Rivero, que una vez se conocía la verdad no solo no ha rectificado sino que se jacta de que puede seguir saliéndose con la suya porque no le penaliza, solo nos queda seguir solicitándoselo a él, a su partido político, el @psoe_m, y a sus votantes. Estos últimos son los primeros afectados y los que deberían reclamar a su partido candidatos más válidos y honorables. Mañana seguimos. Vosotros tenéis el poder de pedirle más a la política y a los medios.
Español
57
817
3.4K
70K
Kate D retweetledi
Jacques O
Jacques O@Dr_Destouches·
Me flipa cómo @Jongonzlz crea polémicas en España recordando obviedades, como que si se congelan los baremos del impuesto sobre la renta, en un contexto inflacionario el contribuyente pierde poder adquisitivo al aumentar su ganancia en bruto. Congelar esos baremos es una decisión política nada inocente. Aquí en Francia ya hubo una fuerte polémica por esa cuestión el año pasado pero el gobierno español cree que sus administrados son idiotas y se lo tragan todo. Sale uno a denunciarlo y se le echa encima la clique de eunucos de los medios de comunicación que en el fondo ni siquiera entiende lo que dice.
Español
14
295
1.1K
29.7K
Kate D retweetledi
Jon González
Jon González@Jongonzlz·
Hasta aquí llega el conocimiento sobre el cálculo del IRPF de un diputado del Congreso en España. "Los tramos de renta". ¿Lo veis? No entiende que, ni en 2026 ni en 2018 un salario bruto de 18.000 pasa directamente a los tramos de renta para calcular su IRPF. Antes se deducen cotizaciones, deducción general, y, para estos tramos tan bajos, lo más importante: la reducción por rendimientos del trabajo. Y, por lo visto, tampoco entiende lo que es ajustar por la inflación y compara ambos salarios en términos nominales. Insisto, debéis, especialmente quienes sois sus votantes, exigir más nivel en la selección de cuadros a vuestros partidos políticos.
Jon González tweet media
Guillermo Hita Téllez@GuillermoHita

Los datos están falseados. En 2019, para una renta de 18.000 euros, el tipo marginal del IRPF era el del tramo que te afectaba por encima de 12.450 euros: 24%. Los tramos aplicables eran 19% hasta 12.450 euros, 24% de 12.450 a 20.200. Te inventas directamente que en 2019 el IRPF para 18.000 eran 160,10€. La diferencia importante es que en 2025 la Agencia Tributaria ha incorporado una deducción específica para contribuyentes con rendimientos del trabajo inferiores a 18.276 €, con un máximo de 340 €. Aun así, para un salario de 18.000 € y sin otras circunstancias, la diferencia práctica suele ser que 2025 te deja pagar menos o te devuelve más que 2018 por la nueva deducción y por la actualización del entorno fiscal.

Español
28
627
2K
94.2K
Kate D retweetledi
Jon González
Jon González@Jongonzlz·
A un joven español le puedes decir que el PIB crece a buen ritmo. Y es verdad, y es deseable. Pero de eso no le llega mucho. Lo que ve es que su salario, ajustado a inflación, está estancado. Que cada vez paga más impuestos por ese mismo salario. Que, aunque consiga ahorrar algo compartiendo piso con tres o cuatro desconocidos en vez de formar un hogar con su pareja, el precio de la vivienda sube más rápido que su ahorro. No es que no llegue, es que cada año está más lejos de poder pagar la entrada. Y además, está viendo que esos impuestos que paga no se traducen en mejores servicios o infraestructuras. Tampoco ve que sirvan para reducir la desigualdad: el sistema no redistribuye en función de la renta y la riqueza, sino de manera sistemática hacia generaciones más ricas, con mayor renta y menos vulnerables. Hace lo que se le pide: trabaja, ahorra, cumple. Y aun así, llega siempre tarde. ¿Y aun así quieres que te compre el sistema?
Jon González tweet media
Jon González@Jongonzlz

Todo es cierto. Y aun así, la productividad por ocupado está estancada, el salario neto promedio en términos reales ha disminuido, la tasa de emancipación entre jóvenes no hace más que bajar, el % de hogares propietarios de vivienda está en mínimos y la presión fiscal en máximos

Español
31
391
1.1K
42.4K