Follow bellow the code of the macro that I am using. It's too long because I need to use many premises, the line that I need to work are in red. %macro calcular ; %do cont=1 %to 115; %let M=&cont; data Proj&M. ; set base_ant ; anobase = year(&dtref)+&M. ; dt_ref = INTNX('year',&dtref,&M.,'S'); tempo = &M. ; *Alteração do cálculo da rentabilidade; rent_fundo = 0; * idade no tempo = n do estudo ; idade = idade_ref + &M. ; * idade +1 ; t = idade + 1 ; ******************************************************************* Comutações - BR EMS Mortalidade Masculina 13/11/2012 *******************************************************************; if idade = 0 then lx = 1000000 ; if idade = 1 then lx = 999608.9 ; if idade = 2 then lx = 999406.47919775 ; if idade = 3 then lx = 999271.559323058 ; if idade = 4 then lx = 999164.837120523 ; if idade = 5 then lx = 999070.116293964 ; if idade = 6 then lx = 998979.600541427 ; if idade = 7 then lx = 998888.793295738 ; if idade = 8 then lx = 998795.097526927 ; if idade = 9 then lx = 998696.516450801 ; if idade = 10 then lx = 998591.45357727 ; if idade = 11 then lx = 998477.514292417 ; if idade = 12 then lx = 998350.008713842 ; if idade = 13 then lx = 998199.357697527 ; if idade = 14 then lx = 998008.601800271 ; if idade = 15 then lx = 997753.411000791 ; if idade = 16 then lx = 997405.594161716 ; if idade = 17 then lx = 996938.608862529 ; if idade = 18 then lx = 996305.35345818 ; if idade = 19 then lx = 995412.364969875 ; if idade = 20 then lx = 994347.074656885 ; if idade = 21 then lx = 993193.035442038 ; if idade = 22 then lx = 992039.541050675 ; if idade = 23 then lx = 990887.386327699 ; if idade = 24 then lx = 989790.374902296 ; if idade = 25 then lx = 988725.360458901 ; if idade = 26 then lx = 987681.563095864 ; if idade = 27 then lx = 986645.386368021 ; if idade = 28 then lx = 985621.939108741 ; if idade = 29 then lx = 984613.352178451 ; if idade = 30 then lx = 983592.209670907 ; if idade = 31 then lx = 982555.405122693 ; if idade = 32 then lx = 981497.880740159 ; if idade = 33 then lx = 980415.386727491 ; if idade = 34 then lx = 979294.968023539 ; if idade = 35 then lx = 978144.492295105 ; if idade = 36 then lx = 976960.64401608 ; if idade = 37 then lx = 975730.064388877 ; if idade = 38 then lx = 974418.390463319 ; if idade = 39 then lx = 973050.501926787 ; if idade = 40 then lx = 971631.794294977 ; if idade = 41 then lx = 970139.173532582 ; if idade = 42 then lx = 968545.234870467 ; if idade = 43 then lx = 966819.771534546 ; if idade = 44 then lx = 964984.747608173 ; if idade = 45 then lx = 963023.705604084 ; if idade = 46 then lx = 960929.321649136 ; if idade = 47 then lx = 958674.404902954 ; if idade = 48 then lx = 956236.591758726 ; if idade = 49 then lx = 953562.380506214 ; if idade = 50 then lx = 950670.511874853 ; if idade = 51 then lx = 947447.358571392 ; if idade = 52 then lx = 943872.92392171 ; if idade = 53 then lx = 939903.843889327 ; if idade = 54 then lx = 935526.241736412 ; if idade = 55 then lx = 930830.461318641 ; if idade = 56 then lx = 925696.745158376 ; if idade = 57 then lx = 920161.448901027 ; if idade = 58 then lx = 914139.268266404 ; if idade = 59 then lx = 907728.135336272 ; if idade = 60 then lx = 900702.591887209 ; if idade = 61 then lx = 893103.183978939 ; if idade = 62 then lx = 884875.917448125 ; if idade = 63 then lx = 876148.474761926 ; if idade = 64 then lx = 866782.447566721 ; if idade = 65 then lx = 856687.985860603 ; if idade = 66 then lx = 845937.408326039 ; if idade = 67 then lx = 834506.34072107 ; if idade = 68 then lx = 822506.556794671 ; if idade = 69 then lx = 809648.640794923 ; if idade = 70 then lx = 796051.158626821 ; if idade = 71 then lx = 781420.613987534 ; if idade = 72 then lx = 765565.667871788 ; if idade = 73 then lx = 748189.164568702 ; if idade = 74 then lx = 729176.256337598 ; if idade = 75 then lx = 708711.268444853 ; if idade = 76 then lx = 687525.833368358 ; if idade = 77 then lx = 665046.901236046 ; if idade = 78 then lx = 641186.082494739 ; if idade = 79 then lx = 615611.926764178 ; if idade = 80 then lx = 589161.790963599 ; if idade = 81 then lx = 560930.68976128 ; if idade = 82 then lx = 531290.046345984 ; if idade = 83 then lx = 500127.653709597 ; if idade = 84 then lx = 468208.156505185 ; if idade = 85 then lx = 435668.017373785 ; if idade = 86 then lx = 401950.928873598 ; if idade = 87 then lx = 367868.102786154 ; if idade = 88 then lx = 333170.1947424 ; if idade = 89 then lx = 299215.487515423 ; if idade = 90 then lx = 265375.711954866 ; if idade = 91 then lx = 233341.997464225 ; if idade = 92 then lx = 203360.980917435 ; if idade = 93 then lx = 175107.714461006 ; if idade = 94 then lx = 148801.77281913 ; if idade = 95 then lx = 124630.234280263 ; if idade = 96 then lx = 102739.157963356 ; if idade = 97 then lx = 83226.0021566182 ; if idade = 98 then lx = 66133.7948677114 ; if idade = 99 then lx = 51447.5688555105 ; if idade = 100 then lx = 39093.8088449481 ; if idade = 101 then lx = 28943.2499348309 ; if idade = 102 then lx = 20817.2501731526 ; if idade = 103 then lx = 14497.4910772864 ; if idade = 104 then lx = 9738.47071905189 ; if idade = 105 then lx = 6281.75866190033 ; if idade = 106 then lx = 3870.73614007278 ; if idade = 107 then lx = 2264.30825917676 ; if idade = 108 then lx = 1248.17479404951 ; if idade = 109 then lx = 642.501719761367 ; if idade = 110 then lx = 305.381517153782 ; if idade = 111 then lx = 132.120503886626 ; if idade = 112 then lx = 51.0662262584795 ; if idade = 113 then lx = 17.1906177970517 ; if idade = > 114 then lx = 0 ; if t = 0 then lx_1 = 1000000 ; if t = 1 then lx_1 = 999608.9 ; if t = 2 then lx_1 = 999406.47919775 ; if t = 3 then lx_1 = 999271.559323058 ; if t = 4 then lx_1 = 999164.837120523 ; if t = 5 then lx_1 = 999070.116293964 ; if t = 6 then lx_1 = 998979.600541427 ; if t = 7 then lx_1 = 998888.793295738 ; if t = 8 then lx_1 = 998795.097526927 ; if t = 9 then lx_1 = 998696.516450801 ; if t = 10 then lx_1 = 998591.45357727 ; if t = 11 then lx_1 = 998477.514292417 ; if t = 12 then lx_1 = 998350.008713842 ; if t = 13 then lx_1 = 998199.357697527 ; if t = 14 then lx_1 = 998008.601800271 ; if t = 15 then lx_1 = 997753.411000791 ; if t = 16 then lx_1 = 997405.594161716 ; if t = 17 then lx_1 = 996938.608862529 ; if t = 18 then lx_1 = 996305.35345818 ; if t = 19 then lx_1 = 995412.364969875 ; if t = 20 then lx_1 = 994347.074656885 ; if t = 21 then lx_1 = 993193.035442038 ; if t = 22 then lx_1 = 992039.541050675 ; if t = 23 then lx_1 = 990887.386327699 ; if t = 24 then lx_1 = 989790.374902296 ; if t = 25 then lx_1 = 988725.360458901 ; if t = 26 then lx_1 = 987681.563095864 ; if t = 27 then lx_1 = 986645.386368021 ; if t = 28 then lx_1 = 985621.939108741 ; if t = 29 then lx_1 = 984613.352178451 ; if t = 30 then lx_1 = 983592.209670907 ; if t = 31 then lx_1 = 982555.405122693 ; if t = 32 then lx_1 = 981497.880740159 ; if t = 33 then lx_1 = 980415.386727491 ; if t = 34 then lx_1 = 979294.968023539 ; if t = 35 then lx_1 = 978144.492295105 ; if t = 36 then lx_1 = 976960.64401608 ; if t = 37 then lx_1 = 975730.064388877 ; if t = 38 then lx_1 = 974418.390463319 ; if t = 39 then lx_1 = 973050.501926787 ; if t = 40 then lx_1 = 971631.794294977 ; if t = 41 then lx_1 = 970139.173532582 ; if t = 42 then lx_1 = 968545.234870467 ; if t = 43 then lx_1 = 966819.771534546 ; if t = 44 then lx_1 = 964984.747608173 ; if t = 45 then lx_1 = 963023.705604084 ; if t = 46 then lx_1 = 960929.321649136 ; if t = 47 then lx_1 = 958674.404902954 ; if t = 48 then lx_1 = 956236.591758726 ; if t = 49 then lx_1 = 953562.380506214 ; if t = 50 then lx_1 = 950670.511874853 ; if t = 51 then lx_1 = 947447.358571392 ; if t = 52 then lx_1 = 943872.92392171 ; if t = 53 then lx_1 = 939903.843889327 ; if t = 54 then lx_1 = 935526.241736412 ; if t = 55 then lx_1 = 930830.461318641 ; if t = 56 then lx_1 = 925696.745158376 ; if t = 57 then lx_1 = 920161.448901027 ; if t = 58 then lx_1 = 914139.268266404 ; if t = 59 then lx_1 = 907728.135336272 ; if t = 60 then lx_1 = 900702.591887209 ; if t = 61 then lx_1 = 893103.183978939 ; if t = 62 then lx_1 = 884875.917448125 ; if t = 63 then lx_1 = 876148.474761926 ; if t = 64 then lx_1 = 866782.447566721 ; if t = 65 then lx_1 = 856687.985860603 ; if t = 66 then lx_1 = 845937.408326039 ; if t = 67 then lx_1 = 834506.34072107 ; if t = 68 then lx_1 = 822506.556794671 ; if t = 69 then lx_1 = 809648.640794923 ; if t = 70 then lx_1 = 796051.158626821 ; if t = 71 then lx_1 = 781420.613987534 ; if t = 72 then lx_1 = 765565.667871788 ; if t = 73 then lx_1 = 748189.164568702 ; if t = 74 then lx_1 = 729176.256337598 ; if t = 75 then lx_1 = 708711.268444853 ; if t = 76 then lx_1 = 687525.833368358 ; if t = 77 then lx_1 = 665046.901236046 ; if t = 78 then lx_1 = 641186.082494739 ; if t = 79 then lx_1 = 615611.926764178 ; if t = 80 then lx_1 = 589161.790963599 ; if t = 81 then lx_1 = 560930.68976128 ; if t = 82 then lx_1 = 531290.046345984 ; if t = 83 then lx_1 = 500127.653709597 ; if t = 84 then lx_1 = 468208.156505185 ; if t = 85 then lx_1 = 435668.017373785 ; if t = 86 then lx_1 = 401950.928873598 ; if t = 87 then lx_1 = 367868.102786154 ; if t = 88 then lx_1 = 333170.1947424 ; if t = 89 then lx_1 = 299215.487515423 ; if t = 90 then lx_1 = 265375.711954866 ; if t = 91 then lx_1 = 233341.997464225 ; if t = 92 then lx_1 = 203360.980917435 ; if t = 93 then lx_1 = 175107.714461006 ; if t = 94 then lx_1 = 148801.77281913 ; if t = 95 then lx_1 = 124630.234280263 ; if t = 96 then lx_1 = 102739.157963356 ; if t = 97 then lx_1 = 83226.0021566182 ; if t = 98 then lx_1 = 66133.7948677114 ; if t = 99 then lx_1 = 51447.5688555105 ; if t = 100 then lx_1 = 39093.8088449481 ; if t = 101 then lx_1 = 28943.2499348309 ; if t = 102 then lx_1 = 20817.2501731526 ; if t = 103 then lx_1 = 14497.4910772864 ; if t = 104 then lx_1 = 9738.47071905189 ; if t = 105 then lx_1 = 6281.75866190033 ; if t = 106 then lx_1 = 3870.73614007278 ; if t = 107 then lx_1 = 2264.30825917676 ; if t = 108 then lx_1 = 1248.17479404951 ; if t = 109 then lx_1 = 642.501719761367 ; if t = 110 then lx_1 = 305.381517153782 ; if t = 111 then lx_1 = 132.120503886626 ; if t = 112 then lx_1 = 51.0662262584795 ; if t = 113 then lx_1 = 17.1906177970517 ; if t = > 114 then lx_1 = 0 ; prazo_t = prazo1 + tempo; ************************************************************************; if TIPO_PRODUTO = 'PGBL' then do; if prazo_t <= 1 then do; if 0 <= idade <= 20 then perc_resgate = 0.0190155283; if 21 <= idade <= 30 then perc_resgate = 0.0712847902; if 31 <= idade <= 35 then perc_resgate = 0.0676946333; if 36 <= idade <= 40 then perc_resgate = 0.0685077466; if 41 <= idade <= 45 then perc_resgate = 0.0684828745; if 46 <= idade <= 50 then perc_resgate = 0.0605011893; if 51 <= idade <= 55 then perc_resgate = 0.0628739629; if 56 <= idade <= 60 then perc_resgate = 0.0644062518; if 61 <= idade <= 65 then perc_resgate = 0.0572125491; if 66 <= idade <= 70 then perc_resgate = 0.0567482963; if idade => 71 then perc_resgate =0.0593693587; end; if prazo_t = 2 then do; if 0 <= idade <= 20 then perc_resgate = 0.0460049079; if 21 <= idade <= 30 then perc_resgate = 0.0856837306; if 31 <= idade <= 35 then perc_resgate = 0.0797938553; if 36 <= idade <= 40 then perc_resgate = 0.0804787947; if 41 <= idade <= 45 then perc_resgate = 0.0754482982; if 46 <= idade <= 50 then perc_resgate = 0.0698438073; if 51 <= idade <= 55 then perc_resgate = 0.0784374257; if 56 <= idade <= 60 then perc_resgate = 0.067361419; if 61 <= idade <= 65 then perc_resgate = 0.0774361868; if 66 <= idade <= 70 then perc_resgate = 0.0849656128; if idade => 71 then perc_resgate =0.0608775787; end; if prazo_t = 3 then do; if 0 <= idade <= 20 then perc_resgate = 0.0372711226; if 21 <= idade <= 30 then perc_resgate = 0.0904364281; if 31 <= idade <= 35 then perc_resgate = 0.0920603479; if 36 <= idade <= 40 then perc_resgate = 0.0850675014; if 41 <= idade <= 45 then perc_resgate = 0.0704669127; if 46 <= idade <= 50 then perc_resgate = 0.0805600986; if 51 <= idade <= 55 then perc_resgate = 0.0750272188; if 56 <= idade <= 60 then perc_resgate = 0.0664717179; if 61 <= idade <= 65 then perc_resgate = 0.0641014168; if 66 <= idade <= 70 then perc_resgate = 0.0767582865; if idade => 71 then perc_resgate =0.0643910512; end; if prazo_t = 4 then do; if 0 <= idade <= 20 then perc_resgate = 0.0327808219; if 21 <= idade <= 30 then perc_resgate = 0.0900201904; if 31 <= idade <= 35 then perc_resgate = 0.0900201904; if 36 <= idade <= 40 then perc_resgate = 0.088773671; if 41 <= idade <= 45 then perc_resgate = 0.0817146249; if 46 <= idade <= 50 then perc_resgate = 0.0670171706; if 51 <= idade <= 55 then perc_resgate = 0.0833618708; if 56 <= idade <= 60 then perc_resgate = 0.0804862357; if 61 <= idade <= 65 then perc_resgate = 0.0741136246; if 66 <= idade <= 70 then perc_resgate = 0.0518327786; if idade => 71 then perc_resgate =0.0570641306; end; if prazo_t = 5 then do; if 0 <= idade <= 20 then perc_resgate = 0.0672953628; if 21 <= idade <= 30 then perc_resgate = 0.0970985396; if 31 <= idade <= 35 then perc_resgate = 0.0860174401; if 36 <= idade <= 40 then perc_resgate = 0.0841035802; if 41 <= idade <= 45 then perc_resgate = 0.0868799671; if 46 <= idade <= 50 then perc_resgate = 0.0859142963; if 51 <= idade <= 55 then perc_resgate = 0.0735356775; if 56 <= idade <= 60 then perc_resgate = 0.079856301; if 61 <= idade <= 65 then perc_resgate = 0.0757732464; if 66 <= idade <= 70 then perc_resgate = 0.0689182499; if idade => 71 then perc_resgate =0.0445960911; end; if prazo_t = 6 then do; if 0 <= idade <= 20 then perc_resgate = 0.0576379899; if 21 <= idade <= 30 then perc_resgate = 0.0919044314; if 31 <= idade <= 35 then perc_resgate = 0.0885659499; if 36 <= idade <= 40 then perc_resgate = 0.0849234377; if 41 <= idade <= 45 then perc_resgate = 0.0956214406; if 46 <= idade <= 50 then perc_resgate = 0.0929210888; if 51 <= idade <= 55 then perc_resgate = 0.0779617045; if 56 <= idade <= 60 then perc_resgate = 0.0927592976; if 61 <= idade <= 65 then perc_resgate = 0.0834530924; if 66 <= idade <= 70 then perc_resgate = 0.0488719974; if idade => 71 then perc_resgate =0.0551297661; end; if prazo_t = 7 then do; if 0 <= idade <= 20 then perc_resgate = 0.0341913498; if 21 <= idade <= 30 then perc_resgate = 0.0857518227; if 31 <= idade <= 35 then perc_resgate = 0.0886992814; if 36 <= idade <= 40 then perc_resgate = 0.0856719978; if 41 <= idade <= 45 then perc_resgate = 0.0855958007; if 46 <= idade <= 50 then perc_resgate = 0.0876981057; if 51 <= idade <= 55 then perc_resgate = 0.0782913482; if 56 <= idade <= 60 then perc_resgate = 0.0783934262; if 61 <= idade <= 65 then perc_resgate = 0.0942104545; if 66 <= idade <= 70 then perc_resgate = 0.0865300595; if idade => 71 then perc_resgate =0.0639427067; end; if prazo_t = 8 then do; if 0 <= idade <= 20 then perc_resgate = 0.0500681581; if 21 <= idade <= 30 then perc_resgate = 0.0750561982; if 31 <= idade <= 35 then perc_resgate = 0.0880945747; if 36 <= idade <= 40 then perc_resgate = 0.0856628678; if 41 <= idade <= 45 then perc_resgate = 0.0880153972; if 46 <= idade <= 50 then perc_resgate = 0.0794757717; if 51 <= idade <= 55 then perc_resgate = 0.0785740411; if 56 <= idade <= 60 then perc_resgate = 0.0812560554; if 61 <= idade <= 65 then perc_resgate = 0.0836129204; if 66 <= idade <= 70 then perc_resgate = 0.0963263615; if idade => 71 then perc_resgate =0.0730847819; end; if prazo_t = 9 then do; if 0 <= idade <= 20 then perc_resgate = 0.0588733339; if 21 <= idade <= 30 then perc_resgate = 0.081869508; if 31 <= idade <= 35 then perc_resgate = 0.0883179912; if 36 <= idade <= 40 then perc_resgate = 0.0855431311; if 41 <= idade <= 45 then perc_resgate = 0.0899047446; if 46 <= idade <= 50 then perc_resgate = 0.0797824851; if 51 <= idade <= 55 then perc_resgate = 0.0779276537; if 56 <= idade <= 60 then perc_resgate = 0.0825928944; if 61 <= idade <= 65 then perc_resgate = 0.084291643; if 66 <= idade <= 70 then perc_resgate = 0.0966286909; if idade => 71 then perc_resgate =0.0668822653; end; if prazo_t = 10 then do; if 0 <= idade <= 20 then perc_resgate = 0.0582962182; if 21 <= idade <= 30 then perc_resgate = 0.0828883705; if 31 <= idade <= 35 then perc_resgate = 0.0883058827; if 36 <= idade <= 40 then perc_resgate = 0.0856719879; if 41 <= idade <= 45 then perc_resgate = 0.0890213041; if 46 <= idade <= 50 then perc_resgate = 0.080722418; if 51 <= idade <= 55 then perc_resgate = 0.0776002657; if 56 <= idade <= 60 then perc_resgate = 0.0835986081; if 61 <= idade <= 65 then perc_resgate = 0.0829590482; if 66 <= idade <= 70 then perc_resgate = 0.0953322729; if idade => 71 then perc_resgate =0.0687979492; end; if prazo_t = 11 then do; if 0 <= idade <= 20 then perc_resgate = 0.0563; if 21 <= idade <= 30 then perc_resgate = 0.0862; if 31 <= idade <= 35 then perc_resgate = 0.0862; if 36 <= idade <= 40 then perc_resgate = 0.0833; if 41 <= idade <= 45 then perc_resgate = 0.0892; if 46 <= idade <= 50 then perc_resgate = 0.0761; if 51 <= idade <= 55 then perc_resgate = 0.0767; if 56 <= idade <= 60 then perc_resgate = 0.0771; if 61 <= idade <= 65 then perc_resgate = 0.0789; if 66 <= idade <= 70 then perc_resgate = 0.08745327; if idade => 71 then perc_resgate =0.0645926335; end; if prazo_t = 12 then do; if 0 <= idade <= 20 then perc_resgate = 0.0548; if 21 <= idade <= 30 then perc_resgate = 0.082; if 31 <= idade <= 35 then perc_resgate = 0.082; if 36 <= idade <= 40 then perc_resgate = 0.0799; if 41 <= idade <= 45 then perc_resgate = 0.087; if 46 <= idade <= 50 then perc_resgate = 0.0699; if 51 <= idade <= 55 then perc_resgate = 0.0742; if 56 <= idade <= 60 then perc_resgate = 0.0731; if 61 <= idade <= 65 then perc_resgate = 0.0753; if 66 <= idade <= 70 then perc_resgate = 0.0885583145; if idade => 71 then perc_resgate =0.0648971733; end; if prazo_t = 13 then do; if 0 <= idade <= 20 then perc_resgate = 0.0525; if 21 <= idade <= 30 then perc_resgate = 0.0768; if 31 <= idade <= 35 then perc_resgate = 0.0768; if 36 <= idade <= 40 then perc_resgate = 0.0757; if 41 <= idade <= 45 then perc_resgate = 0.084; if 46 <= idade <= 50 then perc_resgate = 0.0623; if 51 <= idade <= 55 then perc_resgate = 0.0711; if 56 <= idade <= 60 then perc_resgate = 0.0681; if 61 <= idade <= 65 then perc_resgate = 0.0707; if 66 <= idade <= 70 then perc_resgate = 0.0885583145; if idade => 71 then perc_resgate =0.0651773228; end; if prazo_t = 14 then do; if 0 <= idade <= 20 then perc_resgate = 0.0525; if 21 <= idade <= 30 then perc_resgate = 0.0706; if 31 <= idade <= 35 then perc_resgate = 0.0706; if 36 <= idade <= 40 then perc_resgate = 0.0707; if 41 <= idade <= 45 then perc_resgate = 0.0802; if 46 <= idade <= 50 then perc_resgate = 0.0623; if 51 <= idade <= 55 then perc_resgate = 0.0674; if 56 <= idade <= 60 then perc_resgate = 0.0681; if 61 <= idade <= 65 then perc_resgate = 0.0651; if 66 <= idade <= 70 then perc_resgate = 0.0885583145; if idade => 71 then perc_resgate =0.0654367007; end; if prazo_t = 15 then do; if 0 <= idade <= 20 then perc_resgate = 0.0525; if 21 <= idade <= 30 then perc_resgate = 0.0634; if 31 <= idade <= 35 then perc_resgate = 0.0634; if 36 <= idade <= 40 then perc_resgate = 0.0649; if 41 <= idade <= 45 then perc_resgate = 0.0756; if 46 <= idade <= 50 then perc_resgate = 0.0623; if 51 <= idade <= 55 then perc_resgate = 0.0631; if 56 <= idade <= 60 then perc_resgate = 0.0681; if 61 <= idade <= 65 then perc_resgate = 0.0585; if 66 <= idade <= 70 then perc_resgate = 0.0885583145; if idade => 71 then perc_resgate =0.0656781757; end; if prazo_t = 16 then do; if 0 <= idade <= 20 then perc_resgate = 0.0525; if 21 <= idade <= 30 then perc_resgate = 0.0552; if 31 <= idade <= 35 then perc_resgate = 0.0552; if 36 <= idade <= 40 then perc_resgate = 0.0583; if 41 <= idade <= 45 then perc_resgate = 0.0702; if 46 <= idade <= 50 then perc_resgate = 0.0623; if 51 <= idade <= 55 then perc_resgate = 0.0631; if 56 <= idade <= 60 then perc_resgate = 0.0681; if 61 <= idade <= 65 then perc_resgate = 0.0585; if 66 <= idade <= 70 then perc_resgate = 0.0885583145; if idade => 71 then perc_resgate =0.0659040605; end; if prazo_t =>17 then do; if 0 <= idade <= 20 then perc_resgate = 0.0525; if 21 <= idade <= 30 then perc_resgate = 0.046; if 31 <= idade <= 35 then perc_resgate = 0.046; if 36 <= idade <= 40 then perc_resgate = 0.0509; if 41 <= idade <= 45 then perc_resgate = 0.064; if 46 <= idade <= 50 then perc_resgate = 0.0623; if 51 <= idade <= 55 then perc_resgate = 0.0631; if 56 <= idade <= 60 then perc_resgate = 0.0681; if 61 <= idade <= 65 then perc_resgate = 0.0585; if 66 <= idade <= 70 then perc_resgate = 0.0885583145; if idade => 71 then perc_resgate =0.0661162467; end; end; if TIPO_PRODUTO = 'VGBL' then do; if prazo_t <= 1 then do; if 0 <= idade <= 20 then perc_resgate = 0.0964044485; if 21 <= idade <= 30 then perc_resgate = 0.1136656619; if 31 <= idade <= 35 then perc_resgate = 0.113581467; if 36 <= idade <= 40 then perc_resgate = 0.1116534183; if 41 <= idade <= 45 then perc_resgate = 0.111088891; if 46 <= idade <= 50 then perc_resgate = 0.1085795857; if 51 <= idade <= 55 then perc_resgate = 0.1073957312; if 56 <= idade <= 60 then perc_resgate = 0.1061556817; if 61 <= idade <= 65 then perc_resgate = 0.0926342869; if 66 <= idade <= 70 then perc_resgate = 0.0862330475; if idade => 71 then perc_resgate =0.0810662821; end; if prazo_t = 2 then do; if 0 <= idade <= 20 then perc_resgate = 0.1116656086; if 21 <= idade <= 30 then perc_resgate = 0.1203548812; if 31 <= idade <= 35 then perc_resgate = 0.1203548812; if 36 <= idade <= 40 then perc_resgate = 0.1196743779; if 41 <= idade <= 45 then perc_resgate = 0.1181813854; if 46 <= idade <= 50 then perc_resgate = 0.1169540945; if 51 <= idade <= 55 then perc_resgate = 0.1121172922; if 56 <= idade <= 60 then perc_resgate = 0.109371471; if 61 <= idade <= 65 then perc_resgate = 0.1000036454; if 66 <= idade <= 70 then perc_resgate = 0.0938845863; if idade => 71 then perc_resgate =0.0956293341; end; if prazo_t = 3 then do; if 0 <= idade <= 20 then perc_resgate = 0.0962238168; if 21 <= idade <= 30 then perc_resgate = 0.1153373576; if 31 <= idade <= 35 then perc_resgate = 0.1153373576; if 36 <= idade <= 40 then perc_resgate = 0.1153373576; if 41 <= idade <= 45 then perc_resgate = 0.1126951329; if 46 <= idade <= 50 then perc_resgate = 0.1148956033; if 51 <= idade <= 55 then perc_resgate = 0.1143092873; if 56 <= idade <= 60 then perc_resgate = 0.0969757675; if 61 <= idade <= 65 then perc_resgate = 0.0952214687; if 66 <= idade <= 70 then perc_resgate = 0.1033877971; if idade => 71 then perc_resgate =0.0899598358; end; if prazo_t = 4 then do; if 0 <= idade <= 20 then perc_resgate = 0.0933836693; if 21 <= idade <= 30 then perc_resgate = 0.1308167179; if 31 <= idade <= 35 then perc_resgate = 0.1323200766; if 36 <= idade <= 40 then perc_resgate = 0.1276333596; if 41 <= idade <= 45 then perc_resgate = 0.1269720606; if 46 <= idade <= 50 then perc_resgate = 0.1276010317; if 51 <= idade <= 55 then perc_resgate = 0.1257958834; if 56 <= idade <= 60 then perc_resgate = 0.1225347406; if 61 <= idade <= 65 then perc_resgate = 0.1172562986; if 66 <= idade <= 70 then perc_resgate = 0.1240413407; if idade => 71 then perc_resgate =0.0968892547; end; if prazo_t = 5 then do; if 0 <= idade <= 20 then perc_resgate = 0.1019291932; if 21 <= idade <= 30 then perc_resgate = 0.1228947511; if 31 <= idade <= 35 then perc_resgate = 0.1232482019; if 36 <= idade <= 40 then perc_resgate = 0.1203404301; if 41 <= idade <= 45 then perc_resgate = 0.123015238; if 46 <= idade <= 50 then perc_resgate = 0.1127065459; if 51 <= idade <= 55 then perc_resgate = 0.1149985911; if 56 <= idade <= 60 then perc_resgate = 0.1081059344; if 61 <= idade <= 65 then perc_resgate = 0.0993748847; if 66 <= idade <= 70 then perc_resgate = 0.1056344693; if idade => 71 then perc_resgate =0.0992798909; end; if prazo_t = 6 then do; if 0 <= idade <= 20 then perc_resgate = 0.0847233143; if 21 <= idade <= 30 then perc_resgate = 0.1130459001; if 31 <= idade <= 35 then perc_resgate = 0.1196099112; if 36 <= idade <= 40 then perc_resgate = 0.1196099112; if 41 <= idade <= 45 then perc_resgate = 0.1178504226; if 46 <= idade <= 50 then perc_resgate = 0.1162078679; if 51 <= idade <= 55 then perc_resgate = 0.114773282; if 56 <= idade <= 60 then perc_resgate = 0.1124871876; if 61 <= idade <= 65 then perc_resgate = 0.0977603363; if 66 <= idade <= 70 then perc_resgate = 0.0910580546; if idade => 71 then perc_resgate =0.094442619; end; if prazo_t = 7 then do; if 0 <= idade <= 20 then perc_resgate = 0.0673829576; if 21 <= idade <= 30 then perc_resgate = 0.1076980801; if 31 <= idade <= 35 then perc_resgate = 0.1137059079; if 36 <= idade <= 40 then perc_resgate = 0.1135685188; if 41 <= idade <= 45 then perc_resgate = 0.1099915037; if 46 <= idade <= 50 then perc_resgate = 0.1136253324; if 51 <= idade <= 55 then perc_resgate = 0.1034984188; if 56 <= idade <= 60 then perc_resgate = 0.102109848; if 61 <= idade <= 65 then perc_resgate = 0.0936842761; if 66 <= idade <= 70 then perc_resgate = 0.0946490111; if idade => 71 then perc_resgate =0.0936000601; end; if prazo_t = 8 then do; if 0 <= idade <= 20 then perc_resgate = 0.0735727618; if 21 <= idade <= 30 then perc_resgate = 0.1022165152; if 31 <= idade <= 35 then perc_resgate = 0.1052575574; if 36 <= idade <= 40 then perc_resgate = 0.1036631365; if 41 <= idade <= 45 then perc_resgate = 0.0994831336; if 46 <= idade <= 50 then perc_resgate = 0.1052575574; if 51 <= idade <= 55 then perc_resgate = 0.0983803611; if 56 <= idade <= 60 then perc_resgate = 0.1029668338; if 61 <= idade <= 65 then perc_resgate = 0.0879881828; if 66 <= idade <= 70 then perc_resgate = 0.0893549456; if idade => 71 then perc_resgate =0.0789667751; end; if prazo_t = 9 then do; if 0 <= idade <= 20 then perc_resgate = 0.0738141513; if 21 <= idade <= 30 then perc_resgate = 0.0976223472; if 31 <= idade <= 35 then perc_resgate = 0.1028402816; if 36 <= idade <= 40 then perc_resgate = 0.1025550291; if 41 <= idade <= 45 then perc_resgate = 0.0988026969; if 46 <= idade <= 50 then perc_resgate = 0.0979339325; if 51 <= idade <= 55 then perc_resgate = 0.0986498182; if 56 <= idade <= 60 then perc_resgate = 0.087400427; if 61 <= idade <= 65 then perc_resgate = 0.0815342811; if 66 <= idade <= 70 then perc_resgate = 0.081914309; if idade => 71 then perc_resgate =0.064; end; if prazo_t = 10 then do; if 0 <= idade <= 20 then perc_resgate = 0.077986794; if 21 <= idade <= 30 then perc_resgate = 0.0967429545; if 31 <= idade <= 35 then perc_resgate = 0.1009618855; if 36 <= idade <= 40 then perc_resgate = 0.1020911857; if 41 <= idade <= 45 then perc_resgate = 0.0976777582; if 46 <= idade <= 50 then perc_resgate = 0.1002601588; if 51 <= idade <= 55 then perc_resgate = 0.0924751781; if 56 <= idade <= 60 then perc_resgate = 0.0824; if 61 <= idade <= 65 then perc_resgate = 0.0759714746; if 66 <= idade <= 70 then perc_resgate = 0.0736758055; if idade => 71 then perc_resgate =0.0451; end; if prazo_t = 11 then do; if 0 <= idade <= 20 then perc_resgate = 0.0745336756; if 21 <= idade <= 30 then perc_resgate = 0.0990315709; if 31 <= idade <= 35 then perc_resgate = 0.0758; if 36 <= idade <= 40 then perc_resgate = 0.0919; if 41 <= idade <= 45 then perc_resgate = 0.0787; if 46 <= idade <= 50 then perc_resgate = 0.0859; if 51 <= idade <= 55 then perc_resgate = 0.0739; if 56 <= idade <= 60 then perc_resgate = 0.0711; if 61 <= idade <= 65 then perc_resgate = 0.0582; if 66 <= idade <= 70 then perc_resgate = 0.0526; if idade => 71 then perc_resgate =0.0451; end; if prazo_t = 12 then do; if 0 <= idade <= 20 then perc_resgate = 0.0731414936; if 21 <= idade <= 30 then perc_resgate = 0.0977264003; if 31 <= idade <= 35 then perc_resgate = 0.0643; if 36 <= idade <= 40 then perc_resgate = 0.0817; if 41 <= idade <= 45 then perc_resgate = 0.0665; if 46 <= idade <= 50 then perc_resgate = 0.0756; if 51 <= idade <= 55 then perc_resgate = 0.0615; if 56 <= idade <= 60 then perc_resgate = 0.058; if 61 <= idade <= 65 then perc_resgate = 0.0582; if 66 <= idade <= 70 then perc_resgate = 0.0342; if idade => 71 then perc_resgate =0.0451; end; if prazo_t = 13 then do; if 0 <= idade <= 20 then perc_resgate = 0.0718608103; if 21 <= idade <= 30 then perc_resgate = 0.0965257596; if 31 <= idade <= 35 then perc_resgate = 0.0643; if 36 <= idade <= 40 then perc_resgate = 0.0701; if 41 <= idade <= 45 then perc_resgate = 0.0527; if 46 <= idade <= 50 then perc_resgate = 0.0639; if 51 <= idade <= 55 then perc_resgate = 0.0475; if 56 <= idade <= 60 then perc_resgate = 0.058; if 61 <= idade <= 65 then perc_resgate = 0.0582; if 66 <= idade <= 70 then perc_resgate = 0.0342; if idade => 71 then perc_resgate =0.0451; end; if prazo_t = 14 then do; if 0 <= idade <= 20 then perc_resgate = 0.0706750827; if 21 <= idade <= 30 then perc_resgate = 0.0954141401; if 31 <= idade <= 35 then perc_resgate = 0.0643; if 36 <= idade <= 40 then perc_resgate = 0.0701; if 41 <= idade <= 45 then perc_resgate = 0.0527; if 46 <= idade <= 50 then perc_resgate = 0.0639; if 51 <= idade <= 55 then perc_resgate = 0.0475; if 56 <= idade <= 60 then perc_resgate = 0.058; if 61 <= idade <= 65 then perc_resgate = 0.0582; if 66 <= idade <= 70 then perc_resgate = 0.0342; if idade => 71 then perc_resgate =0.0451; end; if prazo_t => 15 then do; if 0 <= idade <= 20 then perc_resgate = 0.0695711968; if 21 <= idade <= 30 then perc_resgate = 0.094379247; if 31 <= idade <= 35 then perc_resgate = 0.0643; if 36 <= idade <= 40 then perc_resgate = 0.0701; if 41 <= idade <= 45 then perc_resgate = 0.0527; if 46 <= idade <= 50 then perc_resgate = 0.0639; if 51 <= idade <= 55 then perc_resgate = 0.0475; if 56 <= idade <= 60 then perc_resgate = 0.058; if 61 <= idade <= 65 then perc_resgate = 0.0582; if 66 <= idade <= 70 then perc_resgate = 0.0342; if idade => 71 then perc_resgate =0.0451; end; end; *****************************************************************; if TIPO_PRODUTO = 'PGBL' then do ; if idade < 45 then conversao_benef = 0 ; if 45 <= idade <=49 then conversao_benef = 0.0002248949 ; if 50 <= idade <=54 then conversao_benef = 0.0016358182 ; if 55 <= idade <=59 then conversao_benef = 0.001590492143609; if 60 <= idade <=64 then conversao_benef = 0.00642865683454636 ; if 65 <= idade <=70 then conversao_benef = 0.00311600788055233 ; if idade > 70 then conversao_benef = 0 ; end; if TIPO_PRODUTO = 'VGBL' then do ; if idade < 45 then conversao_benef = 0 ; if 45 <= idade <=49 then conversao_benef = 0.0000063079 ; if 50 <= idade <=54 then conversao_benef = 0.0000063079 ; if 55 <= idade <=59 then conversao_benef = 0.0000474506 ; if 60 <= idade <=64 then conversao_benef = 0.000201594312207188 ; if 65 <= idade <=70 then conversao_benef = 0.00008890812 ; if idade > 70 then conversao_benef = 0 ; end; npx= lx_1 / lx ; if idade > 115 then npx = 0 ; if lx_1 = . then npx = 0 ; perc_aporte = 0.007495029; * 1) Atualiza contribuição para novo exercicio CONTRIB_NOVO=CONTRIB_ant* npx * (1 - perc_resgate); * 2) Abertura das Demais Variaveis ; * se converteu em aposentadoria não aporta mais; *if marca = 1 then perc_aporte = 0 ; Aporte = SALDO_PROV_ant*npx*perc_aporte; Resgate = (SALDO_PROV_ant*npx*perc_resgate); Resgate_Morte = SALDO_PROV_ant*(1-npx) ; Contrib = CONTRIB_NOVO ; if aporte < 0 then aporte = 0 ; if resgate < 0 then resgate = 0 ; if Contrib < 0 then Contrib = 0 ; if resgate_Morte < 0 then resgate_morte = 0 ; if aporte = . then aporte = 0 ; if resgate = . then resgate = 0 ; if Resgate_Morte = . then Resgate_Morte = 0 ; if contrib = . then contrib = 0 ; total_entradas = (aporte + contrib) ; /*if total_entradas not eq 0 then do ; vl_carregamento = total_entradas * carregamento ; */ /*end; else vl_carregamento = 0 ;*/ * Devemos utilizar a Rentabilidade Nominal e deduzir a TAF para chegar no Saldo PMBaC no final de t; rent_taf = ((1+rent_fundo)/(1+taf_aa))-1; * Qtdade do tempo ; qtde = qtde_ant* npx * (1 - perc_resgate); * PGBL / VGBL ; if TIPO_PRODUTO in ('PGBL' 'VGBL') then SALDO_PROV_novo0 = SALDO_PROV_ant*npx*(1+rent_fundo)+(SALDO_PROV_ant*npx*perc_aporte)*((1+rent_fundo))-(SALDO_PROV_ant*npx*perc_resgate)*((1+ rent_fundo)) + CONTRIB_NOVO*(( 1+ rent_fundo)); * Variavel Saldo Concessão em Benefício Condições: a) só entra em beneficio 1 vez, b) ao entrar em beneficio não contribui mais apenas resgata ou morre; Entrada_benef = 0; if conversao_benef not eq 0 then do ; Entrada_benef = SALDO_PROV_novo0 * conversao_benef ; qtde_benef = qtde * conversao_benef ; marca = 1 ; end; if TIPO_PRODUTO in ('PGBL' 'VGBL') then SALDO_PROV_novo = SALDO_PROV_novo0 - Entrada_benef ; if SALDO_PROV_novo = . then SALDO_PROV_novo = 0 ; * RENTABILIDADE PGBL / VGBL ; if TIPO_PRODUTO in ('PGBL' 'VGBL') THEN DO ; Rentabilidade = SALDO_PROV_novo - SALDO_PROV_ant - aporte + resgate + resgate_morte - contrib_novo + Entrada_benef; end; *Zera movimento negativos; if rentabilidade < 0 then rentabilidade = 0 ; if Entrada_benef < 0 then Entrada_benef = 0 ; if Rentabilidade = . then Rentabilidade = 0 ; if Entrada_benef = . then Entrada_benef = 0 ; if Contrib = . then Contrib = 0 ; * Calculo TAF que Retorna para a Seguradora líquido de impostos; TAF_Banco = (mean(SALDO_PROV_ant)*&DA ); Taf_seguradora = taf_banco * 0.12 ; * >>>> Resultado por plano <<<< ; proc means data=Proj&M. nway noprint; class anobase TIPO_PRODUTO TABUA_ATUARIAL juros EXCEDENTE_FINANCEIRO Indice; var SALDO_PROV_ant Contrib Aporte Resgate Resgate_Morte Entrada_benef Rentabilidade SALDO_PROV_novo TAF_Banco Taf_seguradora qtde qtde_benef; format SALDO_PROV_ant Contrib Aporte Resgate Resgate_Morte Entrada_benef Rentabilidade SALDO_PROV_novo TAF_Banco Taf_seguradora qtde qtde_benef commax15.2; output out=tot&M. sum= ; run; proc append base = Total_Fluxo_acum DATA=tot&M. force ; run; * Cria base de Entradas em Beneficio ; Data proj_benef&M.; set Proj&M. ; if idade => 115 then delete ; if marca = 1 ; anobase = &M. ; if entrada_benef not eq 0 ; format Entrada_benef qtde_benef commax15.8 ; keep anobase TIPO_PRODUTO Processo_SUSEP PLANOS_NOMES TABUA_ATUARIAL juros EXCEDENTE_FINANCEIRO idade Entrada_benef Indice qtde_benef; proc append base = Total_Fluxo_Benef DATA=Proj&M.; run; %end; %mend calcular; %calcular; run;
... View more