Fran Cabanillas

7.9K posts

Fran Cabanillas banner
Fran Cabanillas

Fran Cabanillas

@FrankneSS23

Orientación genética: Trequartista, Playmaker, Enganche... (Controlador/Fantasía). #CCAFYDE #EFD Col. 55965

Palacio de Kamisama. Katılım Ocak 2010
568 Takip Edilen330 Takipçiler
Fran Cabanillas retweetledi
Fissac
Fissac@Fissac_es·
La bacteria intestinal que aumenta la fuerza muscular en ausencia de ejercicio Durante décadas hemos tenido bastante claro quién manda en el músculo: el ejercicio físico. Si no entrenas, pierdes fuerza. Si entrenas, mejoras. Una ecuación sencilla, casi incuestionable. Sin embargo, en los últimos años hemos empezado a entender que el músculo no vive aislado, sino que responde a señales que llegan desde muchos otros órganos… incluido uno de los grandes olvidados: el intestino. El intestino alberga billones de microorganismos que forman lo que conocemos como microbiota intestinal. Sabemos desde hace tiempo que estas bacterias influyen en el metabolismo, la inflamación o incluso en el cerebro. Pero, ¿pueden influir también en la fuerza muscular? ¿Puede una bacteria hacer que un músculo sea más fuerte incluso sin entrenar? En un estudio publicado en una de las mejores revistas sobre microbiota, se demostró que los ratones que recibieron Roseburia inulinivorans incrementaron su fuerza de agarre en torno a un 30%. Lo llamativo fue que estos ratones no habían entrenado más, ni comieron en mayores cantidades. La suplementación con esta bacteria les hizo más fuertes. Ni otras especies del mismo género ni grandes cambios en la masa muscular total explicaban este efecto. Era un fenómeno específico, reproducible y funcional. ✍️ En este artículo, el Dr. Borja Martínez Téllez (@borjammt) nos cuenta de primera mano los resultados de una investigación que acaba de publicar y que promete revolucionar el campo de la salud. Esperamos que os guste. Es de libre acceso. Ciencia para mejorar la salud. Puedes leerlo o escucharlo pinchando en el link 👇 fissac.com/la-bacteria-in…
Fissac tweet media
Español
1
11
62
2K
Fran Cabanillas
Fran Cabanillas@FrankneSS23·
Seguramente el partido más representativo de la evolución actual del fútbol ⚽️. Todo equipo que no confeccione plantillas para exigir esta intensidad físico/mental a sus jugadores, no tendrá opciones de competir en #ChampionsLeague PSG vs BAY
Español
0
0
0
60
Fran Cabanillas retweetledi
Jon González
Jon González@Jongonzlz·
¡Hola Antón! Los cálculos son discutibles, por supuesto, siempre que se presenten cálculos alternativos con la misma transparencia que yo lo hago. Por ahora no he visto nada. Sobre los casos extremos: TODOS los salarios por encima del SMI pagan más IRPF que en 2019 y son especialmente los tramos de salarios bajos entre los 17.500 y los 22.000 los que mayor impacto han sufrido, con incrementos del tipo efectivo promedio del 3,25pp, por encima de la media de 2,5pp. Estos salarios son, lamentablemente, donde se concentran gran parte de los trabajadores actuales; no son una anomalía o excepción. Sobre las fechas utilizadas, la comunidad está desarrollando apps (a partir de los cálculos que he puesto a disposición de todo el mundo) donde podemos observar la evolución desde 2012 hasta 2026. La selección en el caso de 2019 no es casual, es cuando la normativa del IRPF que hereda el gobierno entra plenamente en vigor. Y, por supuesto, totalmente de acuerdo contigo en que lo que sí es debatible y sujeto a las sensibilidades en política económica de cada uno, es defender un aumento general de la imposición sobre el trabajo para financiar principalmente un mayor gasto en pensiones, pero ese planteamiento debe partir del reconocimiento de los hechos y de las implicaciones que enfrentan. ¡Saludos!
Jon González tweet mediaJon González tweet media
Español
35
226
1.3K
25.3K
Fran Cabanillas retweetledi
Jon González
Jon González@Jongonzlz·
Ha llegado el momento. Hoy, a igualdad de salario real, todos los trabajadores pagan más IRPF que en 2019. No es una opinión: son los datos. La inflación ha empujado a millones de personas en España a pagar más sin ganar más en términos reales. Deflactar el IRPF no es una cuestión ideológica; es justicia fiscal, especialmente con las rentas medias-bajas. Partidos del @ppopular @vox_es @JuntsXCat @eajpnv_eu @coalicion @upn_navarra. Es la hora de olvidarse de las diferencias y unirse por un objetivo común para mejorar la vida de los españoles. Asociaciones @atenea_esp @UnivHesperides @juandemariana @InstitutOstrom @voceslibres_esp @CivismoF. Es el momento de empujar esta medida. Hay que pasar de la 'Proposición no de ley' a una 'Proposición de ley' en el Congreso que deflacte los parámetros del IRPF de forma razonable pero suficiente. Si el Gobierno se escuda en el artículo 134.6 CE para no negociarla, amenazar con una moción de censura. Tenéis los números.
Jon González tweet media
Español
122
3K
6.8K
526.9K
Fran Cabanillas retweetledi
Liège-Bastogne-Liège
Liège-Bastogne-Liège@LiegeBastogneL·
🏆🏆 𝐓𝟒𝐃𝐄𝐉 🏆🏆 #LBL
Liège-Bastogne-Liège tweet media
Français
9
254
2.1K
42.2K
Fran Cabanillas 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.6K
Fran Cabanillas retweetledi
Jon González
Jon González@Jongonzlz·
Ayer en @laSextaXplica varios de los 'expertos' como @JulenBollain, @AlbertoSotillos, @AfraBlanco, @jdiazgimenez, incluso el presentador @jjyelamo acusaron a @Jon_Echeverria_ de ofrecer datos 'inventados', 'bulos de la ultraderecha' cuando explicó que el salario medio neto real se ha reducido un 3,4%, que 18.000€ pagan más impuestos que su equivalente ajustado a la inflación en 2019, o que todas las rentas que hoy pagan IRPF, pagan más IRPF, ajustado a la inflación que con el último cambio en los cálculos que entró en vigor completamente en 2019. Como el autor de los cálculos soy yo y, por tanto, al que indirectamente han desacreditado es a mí, vuelvo a presentar los datos indicando todas las fuentes para que tomen una de las dos opciones: o rebaten los cálculos o rectifican, idealmente en el mismo medio, o al menos aquí en X. Los cálculos. 1⃣ Vamos a la Encuesta Trimestral de Coste Laboral en el INE (ine.es/jaxiT3/Datos.h…). A la serie desestacionalizada y ajustada por calendario. Tomamos el 'coste salarial total por trabajador' de los periodos 4T2018 y 4T2025 (últimos 7 años). 2⃣ Vamos al IPC General en el INE (ine.es/jaxiT3/Datos.h…). Comparamos el dato de 2018M12 y 2025M12. IPC acumulado del 23,2%. Lo utilizaremos para deflactar los importes nominales del salario. 3⃣ Calcular el salario neto en 2018 y 2025. Es muy sencillo, porque para 28.886€ y 23.157€ anuales, el cálculo es el mismo; no hay deflactación, no hay nuevas deducciones, no hay nada. Lo único que cambia es que el tipo de la cotización a la Seguridad Social ha pasado del 6,35% al 6,48%. Partimos del salario bruto, deducimos las cotizaciones sociales y la deducción general de 2.000€ (que son los mismos 2.000€ en 2018 y 2025) y tenemos nuestra base imponible. Aquí no aplican reducciones por rendimientos del trabajo ni en 2018 ni en 2025, así que es muy fácil. Aplicamos los tramos del IRPF teniendo en cuenta el mínimo personal y familiar de 5.550€ que es el mismo en 2018 y 2025. Así obtenemos el salario neto. Un 2,55% inferior ajustado a la inflación en 4T2025 que en 4T2018. No tiene más. Entre el 1T2018 y el 4T2025 supone el 3,4% que presenta Jon. Estoy abierto a cualquier consulta o aclaración de los detalles. En los siguientes tuits iré enlazando tuits donde se explican el resto de datos. Todos correctos. Por cierto, el gráfico que presenta Jon en la captura del vídeo se ha mostrado en el Congreso de los Diputados, así que no solo estáis acusándole a él de presentar datos falsos sin contrastar en un medio de televisión, sino a un diputado de mentir en el Congreso.
Jon González tweet media
Español
191
2.7K
6.8K
575.7K
Fran Cabanillas
Fran Cabanillas@FrankneSS23·
Doy al vídeo Isabel. Si, nos seguís tomando por tontos/as. No puedes revolucionar nada con ese plan, se queda muy alejado de lo que España necesita para comenzar a solucionar el enorme problema de acceso a la vivienda.
Isabel Rodríguez García@isabelrguez

El Plan Estatal de Vivienda 2026-2030 tiene dos nombres propios: jóvenes y cohesión territorial Van a ser grandes protagonistas (no los únicos) de un Plan que viene a revolucionar la forma de entender la vivienda en España ¿Cómo? ¡Dale al vídeo!

Español
0
0
0
64
Fran Cabanillas retweetledi
Jon González
Jon González@Jongonzlz·
Hoy se ha presentado en la @UnivHesperides un informe fundamental sobre la necesaria reforma de nuestro sistema de pensiones. Su diagnóstico es claro: el problema central no es exclusivamente demográfico ni coyuntural, sino actuarial. El sistema promete unas prestaciones imposibles de financiar a largo plazo de forma intertemporal. Vamos a verlo 🧵
Jon González tweet media
Español
9
202
632
27.8K
Fran Cabanillas retweetledi
Amantes del Ciclismo
Amantes del Ciclismo@amantes_cycling·
La crono del Tour 2019 contra una valla, el pinchazo en Roubaix cuando iba en cabeza, la derrota en Flandes por un tubular, la espeluznante caída en A Través de Flandes o la grave lesión en la Vuelta. La carrera de Van Aert, marcada por la desgracia. Pero hoy todo mereció la pena
Español
12
182
1.5K
42.3K
Fran Cabanillas
Fran Cabanillas@FrankneSS23·
Que pasada #ParisRoubeix 🪨 ! Merecida victoria de Van Aert! Es increíble la cantidad de aspectos que interfieren en una prueba así. Viva el #Ciclismo .
Español
0
0
0
64