#!/usr/bin/perl -w # mié 01 sep 2021 03:16:24 CEST -> Esta versión 5 no debe ser publicada hasta revisión de mínima verosimilitud # lun 04 oct 2021 10:31:18 CEST -> Como no hacen comentarios, se publica use strict; # use Memoize; # memoize("rollpob"); my $DEBUG = 1; my $INGRESO_FISCAL_2020 = 164_630; # millones € -> es el más bajo desde 2011 my @pob; my @tmp; open IN, '<', "pob_edad.csv" or die $!; @tmp = ; for (@tmp){ chomp; chop; # windows next if (/^#/); m/^(\d+) \s (.+) \; (\d+)$/x; if (defined $1 && defined $3) { $pob[$1] = $3; print "$1 $3\n" if $DEBUG; }else{ warn "DATO CHUNGO"; } } close IN; my $SUPUESTO_FIN_TRABAJO = 67; # pone rentas de mayores de 65 luego hay duda my $SUPUESTA_COTIZACION = 0.279; # by hand my @renta = (0) x 101; open IN2, '<', "renta_edad.csv" or die $!; # problema: es renta NETA media "estadística" y lo que interesa es INGRESO INTEGRO TRABAJO FISCAL @tmp = ; for (@tmp){ chomp; chop; next if (/^#/); if (/^\+/ && /2020\;/){ m/\;(\d+)$/; my $data = $1; # problema: son muy pocos datos warn "Dato chungo" unless defined $data; $data /= (1 - $SUPUESTA_COTIZACION) ; # así "aumento" la renta neta a la renta bruta print "$data\n" if $DEBUG; if (/enores/){ for (0..15){ $renta[$_] = 0; # $data; la renta neta media de menores de 16 está calculada pero no tiene interpretación porque no COTIZAN. La ESO es obligatoria, etc. } }elsif (/16/ && /29/){ for (16 .. 29){ $renta[$_] = $data; } }elsif (/30/ && /44/){ for (30 .. 44){ $renta[$_] = $data; } }elsif (/45/ && /64/){ for (45 .. 64){ $renta[$_] = $data; } }elsif (/65/){ for (65 .. $SUPUESTO_FIN_TRABAJO){ $renta[$_] = $data; } }else{ warn "DATO CHUNGO"; } } } close IN2; # ya aquí la cosa se ve que está mal de datos, pero seguimos my $ingresos_reales_2020 = 157_562_000_000; my $gastos_reales_2020 = 171_883_286_720; my $SUPUESTA_PENSION_MEDIA = 1566 *14; $SUPUESTA_COTIZACION = 0.279; my ($res1, $res2) = (1566*14, 0.279); my ($res, $resant); $resant = 9e99; my $resant1 = $res1; my $resant2 = $res2; my $sumaingresos; my $sumagastos; # my ($flag1,$flag2) = (1,1); my $kount; my ($SPM, $SC) = ($SUPUESTA_PENSION_MEDIA, $SUPUESTA_COTIZACION); # OJO A LO DE SIEMPRE my ($SPMANT, $SCANT) = ($SPM, $SC); do{ $kount++; $SUPUESTA_PENSION_MEDIA = $SPM + (rand()-0.5) / 10_000; # if $flag2; $SUPUESTA_COTIZACION = $SC + (rand()-0.5) /10_000; # if $flag1; # como mucho, ya que desempleo, contingencias, etc. no cuenta $sumaingresos = $sumagastos = 0; for my $i (0 .. scalar(@pob)-1){ if ($i <= $SUPUESTO_FIN_TRABAJO){ $sumaingresos += $pob[$i] * $renta[$i] * $SUPUESTA_COTIZACION; }else{ $sumagastos += $pob[$i] * $SUPUESTA_PENSION_MEDIA; } } $res1 = abs($sumaingresos-$ingresos_reales_2020); $res2 = abs($sumagastos-$gastos_reales_2020); $res = $res1+$res2; print "Resultado = $res\n" if $DEBUG; # if (($res1+$res2) <= ($resant1+$resant2)){ if ($resant1 >= $res1 || $res <= $resant){ print "Supuesta cotización efectiva = $SUPUESTA_COTIZACION\n"; $resant1 = $res1; $resant = $res; $SC = $SUPUESTA_COTIZACION; $SCANT = $SC; }else{ $SC = $SCANT; } if ($resant2 >= $res2 || $res <= $resant){ print "Supuesta pensión media = $SUPUESTA_PENSION_MEDIA\n"; $resant2 = $res2; $resant = $res; $SPM = $SUPUESTA_PENSION_MEDIA; # OJO CON LA CIFRA QUE VA AL PAN $SPMANT = $SPM; }else{ $SPM = $SPMANT; } }until ($res < 100); print "Error = $res Iteraciones = $kount\n"; print "Primera estimación de ingresos = $sumaingresos\n"; print "Primera estimación de gastos = $sumagastos\n"; print "\tEstimación primera déficit = ", $sumaingresos-$sumagastos, "\n"; print "\tParte del ingreso fiscal = ", ($sumaingresos-$sumagastos)/(1e6*$INGRESO_FISCAL_2020), "\n"; if (0) { my $comment = < 67){ # EDAD CHUNGA $roll[$i] *= (1-0.09); # TASA DE MORTALIDAD 9% (MENOS 2018 y 2020, MÁS QUE 2019) }elsif ($i <= $n-1){ $roll[$i] = $pob[1]; # arbitrary truncation on last data known } } return @roll; } __END__ Esta estimación se puede hacer más precisa, lo cual estaría bien, pero descubre que un método efectivo para contener el desbalanceo de ingresos y gastos es la contención del incremento de las pensiones (la última simulación) y otra manera es seguir el marco del pacto de Toledo, financiando parte de las pensiones con impuestos otros. Esta estimación en concreto 'est5' es tan mala que la única solución satisfactoria es la congelación inversa de todo el resto de partidas presupuestarias para salvar las pensiones y que los incrementos nominales del presupuesto se vayan trasladando a las pensiones. A continuación incluyo un par de ficheros de datos que se usan: -----------------------------------------------pob_edad.csv # Sexo;Edad;Provincias;Periodo;Total # Total;47.394.223 0 aos;338786 1 ao;363341 2 aos;382059 3 aos;408287 4 aos;431472 5 aos;443170 6 aos;450016 7 aos;445284 8 aos;469239 9 aos;486596 10 aos;491380 11 aos;501426 12 aos;527716 13 aos;510018 14 aos;507740 15 aos;498747 16 aos;495260 17 aos;488794 18 aos;475565 19 aos;479813 20 aos;484847 21 aos;479183 22 aos;470774 23 aos;479101 24 aos;478719 25 aos;481718 26 aos;490899 27 aos;509736 28 aos;525781 29 aos;523378 30 aos;531524 31 aos;539644 32 aos;549056 33 aos;555864 34 aos;569230 35 aos;588611 36 aos;611266 37 aos;631276 38 aos;667423 39 aos;697388 40 aos;731529 41 aos;753631 42 aos;787828 43 aos;798467 44 aos;812938 45 aos;806728 46 aos;800884 47 aos;781296 48 aos;777575 49 aos;765164 50 aos;753516 51 aos;745521 52 aos;738061 53 aos;741354 54 aos;721854 55 aos;715168 56 aos;722272 57 aos;686102 58 aos;661337 59 aos;644202 60 aos;644806 61 aos;624692 62 aos;607662 63 aos;590685 64 aos;549081 65 aos;530169 66 aos;503637 67 aos;500877 68 aos;495402 69 aos;460630 70 aos;446989 71 aos;459503 72 aos;475082 73 aos;429268 74 aos;404434 75 aos;416011 76 aos;388845 77 aos;374888 78 aos;317167 79 aos;284752 80 aos;338743 81 aos;217288 82 aos;236104 83 aos;252791 84 aos;262547 85 aos;237765 86 aos;218866 87 aos;204540 88 aos;182691 89 aos;153104 90 aos;134152 91 aos;107330 92 aos;88281 93 aos;66962 94 aos;53675 95 aos;40002 96 aos;29854 97 aos;21407 98 aos;15093 99 aos;9851 100 y ms aos;13043 # 85 y ms aos;1.576.614 --------------------------------------------------renta_edad.csv # Sexo;Edad;Renta anual neta media por persona y por unidad de consumo;Periodo;Total # Total;Renta ;2020;12292 # Total;Renta ;2019;11680 # Total;Renta ;2018;11412 # Total;Renta ;2017;11074 # Total;Renta ;2016;10708 # Total;Renta ;2015;10419 # Total;Renta ;2014;10391 # Total;Renta ;2013;10531 # Total;Renta ;2012;10795 # Total;Renta ;2011;10858 # Total;Renta ;2010;11284 # Total;Renta ;2009;11318 # Total;Renta ;2008;10737 +Menores de 16 aos;Renta ;2020;9025 Menores de 16 aos;Renta ;2019;8899 Menores de 16 aos;Renta ;2018;8919 Menores de 16 aos;Renta ;2017;8354 Menores de 16 aos;Renta ;2016;8078 Menores de 16 aos;Renta ;2015;7841 Menores de 16 aos;Renta ;2014;7726 Menores de 16 aos;Renta ;2013;7741 Menores de 16 aos;Renta ;2012;8151 Menores de 16 aos;Renta ;2011;8259 Menores de 16 aos;Renta ;2010;8355 Menores de 16 aos;Renta ;2009;8444 Menores de 16 aos;Renta ;2008;8005 +De 16 a 29 aos;Renta ;2020;11031 De 16 a 29 aos;Renta ;2019;10345 De 16 a 29 aos;Renta ;2018;10156 De 16 a 29 aos;Renta ;2017;9815 De 16 a 29 aos;Renta ;2016;9373 De 16 a 29 aos;Renta ;2015;8935 De 16 a 29 aos;Renta ;2014;9004 De 16 a 29 aos;Renta ;2013;9438 De 16 a 29 aos;Renta ;2012;9727 De 16 a 29 aos;Renta ;2011;10032 De 16 a 29 aos;Renta ;2010;10651 De 16 a 29 aos;Renta ;2009;10797 De 16 a 29 aos;Renta ;2008;10321 +De 30 a 44 aos;Renta ;2020;12053 De 30 a 44 aos;Renta ;2019;11422 De 30 a 44 aos;Renta ;2018;11397 De 30 a 44 aos;Renta ;2017;11040 De 30 a 44 aos;Renta ;2016;10536 De 30 a 44 aos;Renta ;2015;10353 De 30 a 44 aos;Renta ;2014;10348 De 30 a 44 aos;Renta ;2013;10543 De 30 a 44 aos;Renta ;2012;10912 De 30 a 44 aos;Renta ;2011;11106 De 30 a 44 aos;Renta ;2010;11480 De 30 a 44 aos;Renta ;2009;11687 De 30 a 44 aos;Renta ;2008;11024 +De 45 a 64 aos;Renta ;2020;13626 De 45 a 64 aos;Renta ;2019;12988 De 45 a 64 aos;Renta ;2018;12550 De 45 a 64 aos;Renta ;2017;12311 De 45 a 64 aos;Renta ;2016;11931 De 45 a 64 aos;Renta ;2015;11591 De 45 a 64 aos;Renta ;2014;11626 De 45 a 64 aos;Renta ;2013;11921 De 45 a 64 aos;Renta ;2012;12270 De 45 a 64 aos;Renta ;2011;12374 De 45 a 64 aos;Renta ;2010;13047 De 45 a 64 aos;Renta ;2009;12906 De 45 a 64 aos;Renta ;2008;12413 +65 y ms aos;Renta ;2020;14132 65 y ms aos;Renta ;2019;13315 65 y ms aos;Renta ;2018;12758 65 y ms aos;Renta ;2017;12528 65 y ms aos;Renta ;2016;12416 65 y ms aos;Renta ;2015;12206 65 y ms aos;Renta ;2014;12183 65 y ms aos;Renta ;2013;11960 65 y ms aos;Renta ;2012;11867 65 y ms aos;Renta ;2011;11463 65 y ms aos;Renta ;2010;11783 65 y ms aos;Renta ;2009;11685 65 y ms aos;Renta ;2008;10893 # Menos de 18 aos;Renta ;2020;9110 # Menos de 18 aos;Renta ;2019;8944 # Menos de 18 aos;Renta ;2018;8909 # Menos de 18 aos;Renta ;2017;8479 # Menos de 18 aos;Renta ;2016;8153 # Menos de 18 aos;Renta ;2015;7824 # Menos de 18 aos;Renta ;2014;7702 # Menos de 18 aos;Renta ;2013;7710 # Menos de 18 aos;Renta ;2012;8155 # Menos de 18 aos;Renta ;2011;8259 # Menos de 18 aos;Renta ;2010;8354 # Menos de 18 aos;Renta ;2009;8468 # Menos de 18 aos;Renta ;2008;8024 # De 18 a 64 aos;Renta ;2020;12624 # De 18 a 64 aos;Renta ;2019;11961 # De 18 a 64 aos;Renta ;2018;11727 # De 18 a 64 aos;Renta ;2017;11390 # De 18 a 64 aos;Renta ;2016;10948 # De 18 a 64 aos;Renta ;2015;10650 # De 18 a 64 aos;Renta ;2014;10660 # De 18 a 64 aos;Renta ;2013;10942 # De 18 a 64 aos;Renta ;2012;11252 # De 18 a 64 aos;Renta ;2011;11415 # De 18 a 64 aos;Renta ;2010;11964 # De 18 a 64 aos;Renta ;2009;12002 # De 18 a 64 aos;Renta ;2008;11428