* Social security model...Including expanded workforce NOTE STEPTMB-->STPTMTR (STEP TIME OF THE TRANSITION) NOTE STEPTMPROL-->STPTMPROL NOTE STEPTM-->STPTMPG NOTE DTLEV-->DTLEVTR NOTE *************DEMOGRAPHICS*************** l youth.k=youth.j+dt*(br.jk-ydr.jk-ymr.jk) note n youth=((bri*(1-ysf)*trm/2))*(1+dt/trm)+br*ysf*trm n youth=((ydr*trm/2))*(1+dt/trm)+br*ysf*trm r br.kl=bri n bri=5E5 r ymr.kl=clip(ymri,dlpipe(pvymr,br.jk*ysf.k,trm),trm,time.k) *Note 1 n ymri=br*ysf *Note 1 t pvymr=68*1 *Note 1 NOTE *****************************NOTE 1************************************* NOTE *****r ymr.kl=clip(ymri,dlpipe(pvymr,br.jk*ysf.k,trm),trm,time.k)******* NOTE NOTE The CLIP function in combination with the pipeline delay (DLPIPE) that NOTE is utilised above enables greater flexibility since it does away with the NOTE usual requirement of pipeline delays viz. that correct numerical values NOTE of the input variable be provided. Even though a table of values which NOTE includes the correct number of entries (viz. DELAY/DT entries) is again NOTE utilized since DYSMAP2 fails to run otherwise, the actual values used NOTE need not be accurate. NOTE __________________________END OF NOTE 1_________________________________ r ydr.kl=cumydrax.k/trm (this corresponds to maydr) *Note 2 l cumydrax.k=cumydrax.j+dt*(ydrax.j-ovydrax18.j) *Note 2 n cumydrax=ydrax*trm *Note 2 a ydrax.k=br.kl*(1-ysf.k) a ovydrax18.k=clip(ydri,dlpipe(pvydr,ydrax.k,trm),trm,time.k) *Note 1,2 t pvydr=68*1 *Note 1,2 n ydri=br*(1-ysf) *Note 1,2 NOTE ******************************NOTE 2************************************ NOTE This is a series of equations that enables the calculation of moving NOTE averages. To calculate a moving average of a particular variable 'X', a NOTE LEVEL equation is used to accumulate 'X' over the specified period. This NOTE LEVEL equation naturally increases by the incoming 'X' variable, while NOTE it depletes by 'old X' viz. the old values of 'X'. 'Old X' is NOTE calculated using a pipeline delay (DLPIPE). The actual duration of the NOTE delay for calculating 'old X' matches the duration upon which we would NOTE like to calculate our moving average. If we want to calculate a moving NOTE average of, say, 18 years as is the case with YDR for example, then the NOTE old value of the YDR that will be getting subtracted will be that of the YDR at NOTE YDR at time [TIME.K-18]. A pipeline delay of 'X' with 18 years delay NOTE time constant will be consequently providing the outgoing rate. NOTE Having accumulated 'X' in a level which we call 'cumX' (cumulative X) NOTE we simply divide it [cumX] by the actual number of years that is required, NOTe viz. by 18 years for our specific example, to get to the ultimate answer. NOTE __________________________END OF NOTE 2_________________________________ a ysf.k=exp(-yfdr*trm) c trm=17 c yfdr=0.0025 l adlt.k=adlt.j+dt*(ymr.jk-adr.jk-amr.jk) note n adlt=((ymr*(1-asf)*trsen/2))*(1+dt/trsen)+ymr*asf*trsen n adlt=((adr*trsen/2))*(1+dt/trsen)+ymr*asf*trsen r amr.kl=clip(amri,dlpipe(pvamr,ymr.jk*asf.k,trsen),trsen,time.k) *Note 1 t pvamr=188*1 n amri=ymr*asf r adr.kl=cumadrax.k/trsen (this corresponds to maadr) *Note 2 l cumadrax.k=cumadrax.j+dt*(adrax.j-ovadrax47.j) *Note 2 n cumadrax=adrax*trsen *Note 2 a adrax.k=ymr.kl*(1-asf.k) *Note 2 a ovadrax47.k=clip(adri,dlpipe(pvadr,adrax.k,trsen),trsen,time.k) *Notes 1, 2 t pvadr=188*1 *Note 2 n adri=ymr*(1-asf) *Note 2 a asf.k=exp(-afdr*trsen) c afdr=0.0075 c trsen=47 l sen.k=sen.j+dt*(amr.jk-sdr.jk) n sen=amr*remlife r sdr.kl=sen.k/remlife.k a remlife.k=15 NOTE POPULATION NOTE s tpop.k=youth.k+adlt.k+sen.k NOTE *******************WORKFORCE******************* NOTE WORKFORCE NOTE n refwfc=wfc a wfc.k=abs(adlt.k) a wdr.k=adr.kl a tret.k=treti c treti=47 NOTE ********PENSIONERS********** NOTE a pser.k=sen.k r wretr.kl=amr.kl r pdr.kl=sdr.kl NOTE **********EMPLOYMENT*********** NOTE a demp.k=max((dqs.k/prod.k),zeroa) l emp.k=emp.j+dt*(hr.jk-fr.jk-eretr.jk-edr.jk) n emp=0.9*wfc If I change 0.9 to smth else, also change pvemprt47 n refemp=emp r hr.kl=min((max((demp.k-emp.k)/taemp,zerob)+averetr.k+avedr.k)*unemptight.k, x wfc.k/dt) r fr.kl=abs(min((demp.k-emp.k)/taemp,zerob)) r edr.kl=(emp.k/wfc.k)*wdr.k r eretr.kl=(emp.k/wfc.k)*wretr.kl a avedr.k=smooth(edr.jk,tavedr) a averetr.k=smooth(eretr.jk,taveretr) NOTE DESIRED QUANTITIES SUPPLIED NOTE a dqs.k=max(avqd.k+obadj.k,zeroc) a obadj.k=smooth((ob.k-dob)/taob,taqd) c taob=3 c tavedr=1 c taveretr=1 c taemp=3 NOTE TIGHT UNEMPLOYMENT CONDITIONS NOTE a unemptight.k=tabhl(unemptightt,emp.k/wfc.k,0.9,1,0.01) t unemptightt=1/0.99/0.95/.87/.75/.58/.35/.2/.09/.04/0 NOTE UNEMPLOYMENT NOTE a unemp.k=wfc.k-emp.k s unempr.k=unemp.k/wfc.k NOTE MOVING AVERAGE OF EMPLOYMENT RATE NOTE a maemprt.k=cumemprt.k/tret.k *Note 2 l cumemprt.k=cumemprt.j+dt*(emprt.j-ovemprt47.j) *Note 2 n cumemprt=tret*(emp/wfc) *Note 2 a emprt.k=emp.k/wfc.k *Note 2 a ovemprt47.k=dlpipe(pvemprt47,emprt.k,treti) *Note 2 t pvemprt47=188*0.9 Change 0.9 according to the value of 'n emp' *Note 2 NOTE ORDER BACKLOG NOTE l ob.k=ob.j+dt*(qd.j-qs.j) n ob=emp*prod*avdel n dob=ob c avdel=1 NOTE PRODUCTIVITY NOTE a prod.k=refprod n refprod=(tdcs/avp)/emp NOTE QUANTITIES SUPPLIED NOTE a qs.k=emp.k*prod.k a avqs.k=smooth(qs.k,tavqs) c tavqs=3 NOTE QUANTITIES DEMANDED NOTE a qd.k=tdcs.k/avp.k a avqd.k=smooth(qd.k,taqd) c taqd=3 NOTE ***************MONEY FLOWS******************* NOTE TOTAL DOMESTIC CONSUMPTION NOTE a tdcs.k=csempd.kl+csunempd.kl+cspserd.kl+export.kl NOTE FIRMS' MONEY BALANCES -DIVIDEND PAYOUTS NOTE l fmn.k=fmn.j+dt*(inc.jk+intfmn.jk-wgs.jk-irt.jk-div.jk) n fmn=reffmn n reffmn=netintfmni+fmninti c netintfmni=100e9 n fmninti=netintfmni*intrtsav*tddiv r intfmn.kl=max(intrtsav.k*(fmn.k-fmninti),zerod) r inc.kl=qs.k*avp.k r div.kl=max(fmn.k/tddiv,zerod) NOTE EMPLOYEES' MONEY BALANCES (mn) /SPENDING NOTE l empmn.k=empmn.j+dt*(wgs.jk+div.jk+intempmn.jk-csempd.jk-csempz.jk x -svrret.jk-pgtx.jk-inctxpg.jk) n empmn=netintempmni+empmninti n netintempmni=(wgs+div-svrret-pgtx)*spd n empmninti=netintempmni*intrtsav*spd r intempmn.kl=max(intrtsav.k*(empmn.k-empmninti),zerod) r wgs.kl=emp.k*wr.k r csempd.kl=max((empmn.k/spd)*(1-pz.k),zerod) r csempz.kl=max((empmn.k/spd)*pz.k,zerod) r svrret.kl=(1-pc.k)*(wgs.kl+div.kl) r pgtx.kl=(contr.k*wr.k)*emp.k a pc.k=1 r inctxpg.kl=abs(min((gmnpg.k/dt)+pgtx.kl+intgmnpg.kl-penspg.kl,zerod)) a pz.k=tabhl(pzt,(avp.k/refavp)/att.k,0,4,0.5) t pzt=0.05/0.1/0.3/0.6/0.83/0.95/0.99/1/1 NOTE EMPLOYEES' SAVINGS FOR FUNDING RETIREMENT/ WITHDRAWL RATE NOTE l wsvret.k=wsvret.j+dt*(svrret.jk+intsav.jk-wdlr.jk) n wsvret=netintsvi+wsvretinti n netintsvi=svrret*tret/2 n wsvretinti=netintsvi*intrtsav*tret r intsav.kl=max(intrtsav.k*(wsvret.k-wsvretinti),zerod) n intsavi=intsav NOTE Pensioners' money balances due to SAVINGS/CONSUMPTION NOTE l psermn.k=psermn.j+dt*(wdlr.jk+intpsermn.jk+penspg.jk-cspserd.jk x -cspserz.jk) n psermn=netintpsermni+psermninti n netintpsermni=penspg*spdp+wdlr*remlife n psermninti=netintpsermni*intrtsav*remlife r wdlr.kl=clip(wsvret.k/dt,wdlrax.k,wdlrax.k,wsvret.k/dt) a wdlrax.k=ratio(masvrret.k*(tret.k*wretr.kl+(adr.kl*trsen/2)*(1+dt/trsen)) x ,wfc.k) NOTE Here we are assuming that bequests are made intragenerationally. NOTE When a particular cohort retires thus they will be withdrawing not only NOTE the funds they themeselves have been accumulating whilst in the labour NOTE force, but also the funds of the people belonging to the same cohort but NOTE who have not made it to retirement. r intpsermn.kl=max(intrtsav.k*(psermn.k-psermninti),zerod) r penspg.kl=reprt.k*wrpens.k*pser.k r cspserd.kl=(delay1(wdlr.jk,remlife.k)+delay1(intpsermn.jk,spdp) x +delay1(penspg.jk,spdp))*(1-pz.k) r cspserz.kl=(delay1(wdlr.jk,remlife.k)+delay1(intpsermn.jk,spdp) x +delay1(penspg.jk,spdp))*pz.k NOTE REPLACEMENT RATE NOTE a reprt.k=flreprt*emprtmlt.k n flreprt=contr*emp/(pser*emprtmlt) NOTE EMPLOYMENT RATE MULTIPLIER NOTE a emprtmlt.k=min(table(emprtmltt,maemprt.k,0,1,0.1),1) t emprtmltt=0/.01/.03/.07/.12/.2/.33/.5/.72/.94/1.06 NOTE UNEMPLOYEDS' MONEY BALANCES/SPENDING NOTE NOTE FOR simplicity, I'm assuming no savings from the unemployed which can note be granted interest rates l unempmn.k=unempmn.j+dt*(unempincrt.jk-csunempd.jk-csunempz.jk) n unempmn=unemp*unempbf*spdu r unempincrt.kl=unemp.k*unempbf c unempbf=6300 c spdu=1 r csunempd.kl=clip((unempmn.k/spdu)*(1-pz.k),unempmn.k/spdu x ,avp.k/refavp,two) somewhat crude, but it's used only in extreme conditions tests c two=2 r csunempz.kl=unempmn.k/spdu-csunempd.kl NOTE EXOGENOUS SPENDING NOTE r export.kl=excsi*(1-pz.k) n excsi=(csempz+cspserz+irt-csunempd-intfmn-intempmn x -intpsermn-intsav)/(1-pz) NOTE MOVING AVERAGE OF TOTAL SAVINGS RATE a masvrret.k=cumtsvrret.k/tret.k *NOTE 2 l cumtsvrret.k=cumtsvrret.j+dt*(tsvrret.jk-ovtsvrret47.jk) *NOTE 2 n cumtsvrret=(svrret+intsav)*tret *NOTE 2 r tsvrret.kl=svrret.kl+intsav.kl *NOTE 2 n tsvrreti=tsvrret r ovtsvrret47.kl=clip(tsvrreti,dlpipe(pvsvr47,tsvrret.kl,treti), x treti,time.k) *NOTE 1,2 t pvsvr47=188*1 *NOTE 1 NOTE TOTAL SAVINGS IN THE ECONOMY NOTE a tsave.k=fmn.k+empmn.k+wsvret.k+psermn.k+gmnpg.k NOTE COMMON CONSTANTS NOTE c spd=3 c spdp=1 a intrtsav.k=intrt.k NOTE INTEREST RATE NOTE a intrt.k=0 NOTE ********SELLING PRICE********** NOTE l avp.k=avp.j+dt*pcr.jk n avp=refavp a davp.k=refavp*(dqs.k/avqs.k) r pcr.kl=(davp.k-avp.k)/tap c tap=3 c refavp=10 NOTE WAGE RATE NOTE INC PRODUCTIVITY l wr.k=wr.j+dt*(wrincr.jk-wrdcr.jk) n wr=refwr r wrincr.kl=max((dwr.k-wr.k)/tincwr,zeroe) r wrdcr.kl=abs(min((dwr.k-wr.k)/tdcwr,zeroe)) a dwr.k=refwr*demprtps.k*demprtps2.k a demprtps.k=exp(0.1*max((demp.k/wfc.k-refemp/refwfc),zerof)) a demprtps2.k=exp(0.8*min((demp.k/wfc.k-refemp/refwfc),zerof)) c tincwr=2 c tdcwr=16 c refwr=17e3 NOTE **************CAPITAL EQUIPMENT SECTOR***************** NOTE l capeq.k=capeq.j+dt*(drt.jk-dn.jk) n capeq=refcapeq n refcapeq=dcapeq r drt.kl=delay1(irt.jk/c_avp,deldl) delivery rate r dn.kl=capeq.k/avlife a dcapeq.k=max(((fmn.k/tddiv)/c_avp)*avlife,zerog) a avdn.k=smooth(dn.k,tavdn) c tavdn=3 c deldl=3 c avlife=15 c c_avp=5e3 NOTE INVESTMENT NOTE r irt.kl=max((dcapeq.k-capeq.k)*c_avp/tacap+avdn.k*c_avp,zerod) n irt=avdn*c_avp n refirt=irt c tacap=4 c tddiv=5 NOTE ATTRACTIVENESS OF GOODS/SERVICES NOTE a att.k=tabxt(attt,capeq.k/refcapeq,0,2,0.2) t attt=1/1/1/1/1/1/1/1/1/1/1 constant in base run note t attt=0.5/0.52/0.6/0.72/0.85/1/1.13/1.23/1.29/1.33/1.35 NOTE ****************PAYG SYSTEM******************** NOTE l gmnpg.k=gmnpg.j+dt*(pgtx.jk+intgmnpg.jk+inctxpg.jk-penspg.jk) n gmnpg=0 r intgmnpg.kl=max(intrtsav.k*gmnpg.k,zerod) a contr.k=refcontr c refcontr=0.2 NOTE PENSIONS AS DETERMINED FROM THE WAGE RATE NOTE a wrpens.k=avtwrpens.k/pser.k l avtwrpens.k=avtwrpens.j+dt*(itavwrpens.jk-dtavwrpens.jk) n avtwrpens=pser*avwr r itavwrpens.kl=avwr.k*wretr.kl r dtavwrpens.kl=wrpens.k*pdr.kl a avwr.k=smooth(wr.k,tswr) c tswr=15 NOTE Pensions depend on the average wage rates that the pensioners used to NOTE get paid while still in the workforce. If wage rates suddenly changed NOTE but no-one retired no alterations in pensions is allowed. For that matter NOTE pension payments are dependent upon workforce retirement and pensioners' NOTE death rates NOTE COMMON CONSTANTS NOTE c stptmpg=10 c one=1 c zeroa=0 c zerob=0 c zeroc=0 c zerod=0 c zeroe=0 c zerof=0 c zerog=0 NOTE DIRECTORY OF VARIABLE NAMES AND DIMENSIONAL ANALYSIS NOTE NOTE GBP stand for Great Britain Pounds NOTE d adr=(persons/years) Adult death rate d adrax=(persons/years) Adult death rate -Auxiliary d adri=(persons/years) Adult death rate initially d adlt=(persons) Adults d afdr=(1/years) Adult fractional death rate d amr=(persons/years) Adult maturity rate d amri=(persons/years) Adult maturity rate initially d asf=(1) Adult survival fraction d att=(1) Attractiveness multiplier d attt=(1) Attractiveness multiplier -Table values d avdel=(years) Average delay to adjust backlog ???? d avdn=(c_units/years) Average depreciation d avedr=(persons/years) Average employment death rate d averetr=(persons/years) Average employment retirement rate d avlife=(years) Average life of capital equipment d avp=(GBP/units) Average selling prices d avqd=(units/years) Average quantities demanded d avqs=(units/years) Average quantities supplied d avtwrpens=(GBP/years) Total wage rate pensions d avwr=(GBP/(persons*years)) Average wage rates d br=(persons/years) Birth rate d bri=(persons/years) Birth rate initially d c_avp=(GBP/c_units) Average price for cpaital equipment d capeq=(c_units) Capital equipment d contr=(1) Contribution rate d csempd=(GBP/years) Domestic consumption from the employed d csempz=(GBP/years) Consumption from the employed directed to imports d cspserd=(GBP/years) Domestic consumption from pensioners d cspserz=(GBP/years) Consumption from pensioners directed to imports d csunempd=(GBP/years) Consumption from the unemployed directed to note the domestic economy d csunempz=(GBP/years) Consumption from the unemployed directed to imports d cumadrax=(persons) Cumulative adult death rate auxiliary d cumemprt=(years) Cumulative employment rate d cumtsvrret=(GBP) Cumulative total savings rate for retirement d cumydrax=(persons) Cumulative youth death rate auxiliary d davp=(GBP/units) Desired average selling prices d dcapeq=(c_units) Desired capital equipment levels d deldl=(years) Delivery delay of capital equipment d demp=(persons) Desired employment d demprtps=(1) Upwards pressure on wages dependent upon desired employment d demprtps2=(1) Downwards pressure on wages dependent upon desired employment d depratio=(1) Dependency ratio d div=(GBP/years) Dividend payments d dn=(c_units/years) Depreciation d dob=(units) Desired order backlog d dqs=(units/years) Desired quantities supplied d drt=(c_units/years) Delivery rate of capital equipment d dt=(years) Delta time, time step d dtavwrpens=(GBP/(years**2)) Decrease in total average wage rate pension d dwr=(GBP/(persons*years)) Desired wage rate d edr=(persons/years) Employment death rate d emp=(persons) Employment levels d empmn=(GBP) Employees' money balances d empmninti=(GBP) Employees money balances due to accumulated interest initially d emprt=(1) Employment rate d emprtmlt=(1) Employment rate multiplier d emprtmltt=(1) Employment rate multiplier -Table values d eretr=(persons/years) Employment retirement rate d excsi=(GBP/years) Exogenous consumption initially d export=(GBP/years) Exports d flreprt=(1) Full replacement rate d fmn=(GBP) Firms' money balances d fmninti=(GBP) Firms' money balances due to accumulated interest initially d fr=(persons/years) Fire rate d gmnpg=(GBP) Government's money balances as they arise from the PAYG scheme d hr=(persons/years) Hire rate d inc=(GBP/years) Income from sales d inctxpg=(GBP/years) Additional income taxes raised to sustain the PAYG scheme d intempmn=(GBP/years) Interest payments augmenting employees' money balances d intfmn=(GBP/years) Interest paid in firms' money balances d intgmnpg=(GBP/years) Interest paid in on government's money as they arise NOTE from the PAYG scheme d intpsermn=(GBP/years) Interest rate paid in according to pensioners' money note money balances d intrtsav=(1/years) Interest rate paid in on savings d intrt=(1/years) Interest rate d intsav=(GBP/years) Interest paid on workforce's savings d intsavi=(GBP/years) Interest paid on workforce's savings initially d irt=(GBP/years) Investment rate d itavwrpens=(GBP/(years**2)) Increase in total average wage rate pension d length=(years) Length of the simulation d maemprt=(1) Moving average of employment rate d masvrret=(GBP/years) Moving average of saving rate for retirement d netintfmni=(GBP) Net of interest firms' money balances initially d netintempmni=(GBP) Net of interest employees' money balances initially d netintpsermni=(GBP) Net of interest pensioners' money balances initially d netintsvi=(GBP) Net of interest savings initially d ob=(units) Order backlog d obadj=(units/years) Order backlog adjustment d ovadrax47=(persons/years) Old value (47 years ago) of adult death d ovemprt47=(1) Old value of employment rate 47 years ago d ovtsvrret47=(GBP/years) Old value (47 years ago) of total savings rate NOTE for retirement d ovydrax18=(persons/years) Old value (18 years ago) of youth death d one=(1) d pc=(1) Propensity to consume d pcr=(GBP/(units*years)) Price change rate d pdr=(persons/years) Pensioners death rate d penspg=(GBP/years) Pensions paid out due to the PAYG scheme d pgtx=(GBP/years) Taxes imposed due to the PAYG scheme d prod=(units/(persons*years)) Productivity d prtper=(years) Printing interval d pser=(persons) Pensioners d psermn=(GBP) Pensioners' money balances d psermninti=(GBP) Pensioners' money balances due to accumulated interest NOTE initially d psupratio=(1) Potential support ratio d pvadr=(persons/years) Previous adult death rates d pvamr=(persons/years) Previous values for adult maturity rate d pvemprt47=(1) Previous values of employment rate 47 years ago d pvsvr47=(GBP/years) Previous values of total savings rate for 47 years d pvswretr=(persons/years) Previous values for the workforce retirement rate note of senior citizens d pvydr=(persons/years) previous youth death rates d pvymr=(persons/years) Previous youth maturity rates d pz=(1) Propensity to import d pzt=(1) Propensity to import -table values d qd=(units/years) Quantities demanded d qs=(units/years) Quantities supplied d refavp=(GBP/units) Average selling prices -Reference values d refcapeq=(c_units) Capital equipment levels -Reference values d refcontr=(1) Contribution rate -Reference values d refemp=(persons) Employment levels -Reference values d reffmn=(GBP) Firms' money balances -Reference values d refirt=(GBP/years) Investment rate -Reference values d refprod=(units/(persons*years)) Productivity -Reference values d refwfc=(persons) workforce levels -Reference values d refwr=(GBP/(persons*years)) Wage rate -Reference values d remlife=(years) Remaining life of senior citizens d reprt.k=(1) Replacement rate d sdr=(persons/years) Seniors' death rate d sen=(persons) Senior citizens d spd=(years) Spending delay d spdp=(years) Spending delay for pensioners d spdu=(years) Spending delay for the unemployed d stptmpg=(years) Step time that PAYG is introduced d supratio=(1) Support ratio d svrret=(GBP/years) Savings rate for retirement d tacap=(years) Time required to adjust capacity d taemp=(years) Time required to adjust employment d tavdn=(years) Time required to average depreciation d taob=(years) Time required to adjust order backlog d tap=(years) Time required to adjust prices d taqd=(years) Time required to average quantities demanded d tavedr=(years) Time required to average employment death rates d taveretr=(years) Time required to average employment retirement rates d tavqs=(years) Time required to average average quantities supplied d tdcs=(GBP/years) Total domestic consumption d tdcwr=(years) Time required to decrease pressure d tddiv=(years) Time required to distribute dividends d time=(years) The ongoing time of the simulation d tincwr=(years) Time required to increase wages d tpop=(persons) Total population d tret=(years) Time required to stay in the workforce before retiring d treti=(years) Time required to to stay in the workforce before note retiring -initially d trm=(years) Time required to reach maturity d trsen=(years) Time required to reach seniority d tsave=(GBP) Total savings d tsvrret=(GBP/years) Total savings rate for retirement d tsvrreti=(GBP/years) Total savings rate for retirement initially d tswr=(years) Time required to smooth wage rates d two=(1) two d unemp=(persons) Unemployment d unempbf=(GBP/(persons*years)) Unemployment benefit d unempincrt=(GBP/years) Unemployed's income rate d unempmn=(GBP) Unemployed's money balances d unempr=(1) Unemployment rate d unemptight=(1) Tight unemployment conditions d unemptightt=(1) Tight unemployment conditions -Table values d wdlr=(GBP/years) Withdrawal rate d wdlrax=(GBP/years) Withdrawal rate -auxiliary d wdr=(persons/years) Workforce death rate d wfc=(persons) Workforce d wgs=(GBP/years) Wages d wr=(GBP/(persons*years)) Wage rate d wrdcr=(GBP/(persons*years**2)) Wage rate decrease rate d wretr=(persons/years) Workforce retire rate d wrincr=(GBP/(persons*years**2)) Wage rate increase rate d wrpens=(GBP/(persons*years)) Wage rates calculated for pensions d wsvret=(GBP) Workforce's savings for retirement d wsvretinti=(GBP) Cumulative interest funds of workforce's savings NOTE for retirement initially d ydr=(persons/years) Youth death rate d ydrax=(persons/years) Youth death rate -Auxiliary NOTE rate auxiliary d ydri=(persons/years) Youth death rates initially d yfdr=(1/years) Youth fractional death rate d ymr=(persons/years) Youth maturity rate d ymri=(persons/years) Youth maturity rates initially d youth=(persons) Number of youths d ysf=(1) Youth survival fraction d zeroa=(persons) Zero used with 'persons' units d zerob=(persons/years) Zero used with (persons/years) units d zeroc=(units/years) Zero used with 'units/years' units d zerod=(GBP/years) Zero, used with (GBP/years) units d zeroe=(GBP/(persons*years**2)) Zero used with (GBP/(persons*years**2)) units d zerof=(1) Zero used with (1) units d zerog=(c_units) Zero used with (c_units) NOTE OUTPUT STATEMENTS NOTE c dt=0.25 If I change, also change all dlpipe 'previous' table values c length=9.75 note c length=150 NOTE SUPPLEMENTARIES NOTE s supratio.k=ratio(wfc.k,pser.k) NOTE **********MASS BALANCE CHECKS******* NOTE NOTE **********FLOW OF PEOPLE************ NOTE IN RATE NOTE l inrtp.k=inrtp.j+dt*(br.jk+ymr.jk+amr.jk) n inrtp=0 NOTE OUT RATE NOTE l outrtp.k=outrtp.j+dt*(ydr.jk+ymr.jk x +adr.jk+amr.jk x +sdr.jk) n outrtp=0 NOTE INITIAL LEVELS NOTE n levip=youth+adlt+sen NOTE ACTUAL LEVELS NOTE a levp.k=youth.k+adlt.k+sen.k NOTE MBC NOTE Should be and is indeed zero NOTE a mbcp.k=inrtp.k+levip-outrtp.k-levp.k NOTE **********FLOW OF MONEY************* NOTE IN RATE NOTE l inrtm.k=inrtm.j+dt*(inc.jk+intfmn.jk fmn x +wgs.jk+div.jk+intempmn.jk empmn x +svrret.jk+intsav.jk wsvret x +wdlr.jk+intpsermn.jk+penspg.jk psermn x +unempincrt.jk unempmn x +pgtx.jk+intgmnpg.jk) gmnpg n inrtm=0 NOTE OUT RATE NOTE l outrtm.k=outrtm.j+dt*(wgs.jk+irt.jk+div.jk x +csempd.jk+csempz.jk+svrret.jk+pgtx.jk x +wdlr.jk x +cspserd.jk+cspserz.jk x +csunempd.jk+csunempz.jk x +penspg.jk) n outrtm=0 NOTE INITIAL LEVLES NOTE n levim=fmn+empmn+wsvret+psermn+unempmn+gmnpg NOTE ACTUAL LEVLES NOTE a levm.k=fmn.k+empmn.k+wsvret.k+psermn.k+unempmn.k+gmnpg.k NOTE MASS BALANCE CHECK NOTE Should be and is indeed zero NOTE a mbcm.k=inrtm.k+levim-outrtm.k-levm.k NOTE MBC FOR PEOPLE NOTE d inrtp=(persons) d outrtp=(persons) d levip=(persons) d levp=(persons) d mbcp=(persons) NOTE MBC FOR MONEY NOTE d inrtm=(GBP) d outrtm=(GBP) d levim=(GBP) d levm=(GBP) d mbcm=(GBP) run 1 No dynamics note ********************* NOTE DEMOGRAPHICS RUNS (Figs 14-18) NOTE ************************************** note r br.kl=bri*(1+pulse(1,20,length)) note run 2 pulse note ****** note r br.kl=bri*(1+step(1,20)-step(1,45)) note run 3 doubling BR of one generation note ****************************** note a remlife.k=15 note r br.kl=bri*(1-step(1,20)) note run 5 Birth rate going to zero note ******** NOTE FIGS 29-32 NOTE ******************************************* note n gmnpg=10e6 note t emprtmltt=0/.1/.2/.3/.4/.5/.6/.7/.8/.9/1 note r br.kl=bri*(1-step(0.2,20)) note run 2 reducing br to 80% what it used to be note ******** note r br.kl=bri note a remlife.k=15+ramp(slope.k,ramptm)+step(addyrs,stptm) note c ramptm=20 note c yrsctr=40 years to complete the transition note c addyrs=3 added years note a slope.k=(addyrs/yrsctr)-step(addyrs/yrsctr,stptm) note n stptm=ramptm+yrsctr NOTE DIRECTORY OF ADDITIONAL VARIABLES AND DIMENSIONAL ANALYSIS NOTE note d addyrs=(years) Years to be added note d ramptm=(years) note d slope=(1) The slope of the ramp note d stptm=(years) note d yrsctr=(years) Years required to complete the transition note run 3 increasing remlife at year 20 addyrs=3 note note *************** note n gmnpg=10e6 note t emprtmltt=0/.1/.2/.3/.4/.5/.6/.7/.8/.9/1 note r br.kl=bri*(1-step(0.2,20)) note run 2 reducing br to 80% what it used to be note ******** NOTE EXPANDING THE TIME ONE MUST SPEND IN THE WORKFORCE BY 3 YEARS NOTE PROCESS INITIATED AT YEAR 60 NOTE REQUIRED ALTERATIONS NOTE note a wfc.k=abs(adwfc.k+swfc.k) note a adwfc.k=adlt.k NOTE SENIOR WORKFORCE NOTE note l swfc.k=swfc.j+dt*((amr.jk-wretr.jk)*swwretr.j-swdr.jk) note workforce that consists of senior citizens note n swfc=0 note r wretr.kl=amr.kl*(one-swwretr.k)+ note x dlpipe(pvswretr,amr.jk*swsf.j*swwretr.j,addyrsret) note t pvswretr=12*0 note note previous senior workforce retirement rate note r swdr.kl=(swfc.k/sen.k)*sdr.kl senior workforce death rate note a swsf.k=exp(-addyrsret/remlife.k) senior workforce survival fraction -Not precise**! note c addyrsret=3 Additional years that must be spent in employment before note note retiring note a swwretr.k=zerof+step(one,stptmprol) note a wdr.k=adr.kl+swdr.kl note a tret.k=treti+addyrsret*swwretr.k note c tretex=50 note c stptmprol=20 Step time for prolonging employment NOTE ********PENSIONERS********** NOTE note a pser.k=pserex.k note l pserex.k=pserex.j+dt*(wretr.jk-pdr.jk) note n pserex=sen note r pdr.kl=(pserex.k/sen.k)*sdr.kl NOTE MOVING AVERAGE OF EMPLOYMENT RATE NOTE note a maemprt.k=cumemprt.k/(treti+dtlevex.k) note l cumemprt.k=cumemprt.j+dt*(emprt.j-ovemprt47.j-ovemprt50.j) note ovemprt47.k=dlpipe(pvemprt47,emprt.k,treti)*(one-swwretr.k) note a ovemprt50.k=clip(dlpipe(pvemprt50,emprt.k,tretex),zerof, note x time.k,stptmprol+addyrsret) note t pvemprt50=200*0.9 Change 0.9 according to the value of 'n emp' NOTE MOVING AVERAGE OF TOTAL SAVINGS RATE NOTE These eqs are needed only when PC<1 since no savings accumulate NOTE otherwise. NOTE However, if PC<1, wdlrax needs to change as well. In particular, NOTE the mean deaths of the senior workforce must also be taken into account NOTE This I haven't included as can be seen note a masvrret.k=cumtsvrret.k/(treti+dtlevex.k) note l cumtsvrret.k=cumtsvrret.j+dt*(tsvrret.jk-ovtsvrret47.jk-ovtsvrret50.jk) note r ovtsvrret47.kl=clip(tsvrreti,dlpipe(pvsvr47,tsvrret.kl,treti),treti,time.k) note x *(one-swwretr.k) note r ovtsvrret50.kl=clip(clip(tsvrreti,dlpipe(pvsvr50,tsvrret.kl,tretex), note x tretex,time.k),zerod,time.k,stptmprol+addyrsret) NOTE IF TIME >= (stptmprol+addyrsret) then ovtsvrret50 gets energized, NOTE otherwise it remains 0 (zero) note t pvsvr50=200*1 note NOTE DTLEVEX note NOTE note l dtlevex.k=dtlevex.j+dt*b.j note n dtlevex=0 note a b.k=step(one,stptmprol)-step(one,stptmprol+addyrsret) note NOTE DIRECTORY OF ADDITIONAL VARIABLE NAMES AND DIMENSIONAL ANALYSIS note NOTE note d addyrsret=(years) Additional years that must be spent in employment note note before retiring note d adwfc=(persons) Adult workforce --Workforce consisting of adults note note (contrast with swfc) note d b=(1) dummy variable that initiates and stops counting in dtlevex note d dtlevex=(years) Measures time (beginning from 0 (zero)) from the time note note that the expansion in the workforce is initiated until it is completed. note note DTLEVEX allows for the proper calculation of moving average equations note note when an expansion in the workforce takes place note d ovemprt50=(1) Old value of employment rate 50 years ago note d ovtsvrret50=(GBP/years) Old value (50 years ago) of total savings rate note note for retirement note d pserex=(persons) Number of pensioners after the expansion of the workforce note d pvemprt50=(1) Previous values of employment rate 50 years ago note d pvsvr50=(GBP/years) Previous values of total savings rate for 50 years note d stptmprol=(years) Step time for prolonging employment note d swdr=(persons/years) Senior workforce's death rate note d swfc=(persons) Senior workforce --Workforce consisting of senior citizens, note note viz. of citizens who are over 65 years old note d swsf=(1) Senior workforce survival fraction note d swwretr=(1) Switch --Activated when workforce expands thereby delaying note note retirement note d tretex=(years) Time required to retire expanded note NOTE **********MASS BALANCE CHECKS******* note NOTE note NOTE **********FLOW OF PEOPLE************ note NOTE IN RATE note NOTE note l inrtp.k=inrtp.j+dt*(br.jk+ymr.jk+amr.jk note x +amr.jk*swwretr.j swfc note x +wretr.jk) pserex note n inrtp=0 note NOTE OUT RATE note NOTE note l outrtp.k=outrtp.j+dt*(ydr.jk+ymr.jk note x +adr.jk+amr.jk note x +sdr.jk note x +wretr.jk*swwretr.j+swdr.jk swfc note x +pdr.jk) pserex note n outrtp=0 note NOTE INITIAL LEVELS note NOTE note n levip=youth+adlt+sen+swfc+pserex note NOTE ACTUAL LEVELS note NOTE note a levp.k=youth.k+adlt.k+sen.k+swfc.k+pserex.k note NOTE 'FF...' files refer to figures that have been added after the first draft note NOTE was sent off note file 'ff33a',time,tret,wfc,swfc (length 0-100) note file 'ff33b',time,pser,supratio note file 'ff34',time,gmnpg,pgtx,penspg (length 0-100) note file 'ff35',time,unemp,wr,fmn (length 0-250) note run 4 Prolongation of employment. 3 yrs plus at yr 20 note note ********************************************************* note c yrsctr=3 years to complete the transition note file 'ff36a',time,remlife,wfc,pser (length 0-150) note file 'ff36b',time,supratio,gmnpg note run 5 remlife up by 3, yrsctr=3 note Must run in combination with runs 3, 4 note *********************************** NOTE FIGS 33-43 NOTE ************** note a pc.k=0.8+step(0.2,stptmpg) note r pgtx.kl=(contr.k*wr.k)*emp.k*step(one,stptmpg) note r penspg.kl=reprt.k*wrpens.k*pser.k*step(one,stptmpg) note t emprtmltt=0/.01/.03/.07/.12/.2/.33/.5/.72/.94/1.06 note s pgintro.k=step(one,stptmpg) note d pgintro=(1) note run 2 PAYG introduction -constant att note ********************* note t attt=0.5/0.52/0.6/0.72/0.85/1/1.13/1.23/1.29/1.33/1.35 note run 3 variable att note note ************ note t emprtmltt=0/.01/.03/.07/.12/.2/.33/.5/.72/.9/1 note run 4 diff emprtmlt note note ************** note reestablishing emprtmlt note t emprtmltt=0/.1/.2/.3/.4/.5/.6/.7/.8/.9/1 note t attt=1/1/1/1/1/1/1/1/1/1/1 constant in base run note a intrt.k=0.02 note run 5 emprtmlt straight line, intrt=0.02 note note *********************************** note a pc.k=0.8+step(0.2,stptmpg) note r pgtx.kl=(contr.k*wr.k)*emp.k*step(one,stptmpg) note r penspg.kl=reprt.k*wrpens.k*pser.k*step(one,stptmpg) note t emprtmltt=0/.01/.03/.07/.12/.2/.33/.5/.72/.94/1.06 note s pgintro.k=step(one,stptmpg) note d pgintro=(1) note run 2 PAYG introduction -constant att note ********************* note t attt=0.5/0.52/0.6/0.72/0.85/1/1.13/1.23/1.29/1.33/1.35 note run 3 variable att note ************ note t emprtmltt=0/.01/.03/.07/.12/.2/.33/.5/.72/.9/1 note run 4 diff emprtmlt note note ************** note reestablishing emprtmlt note t emprtmltt=0/.1/.2/.3/.4/.5/.6/.7/.8/.9/1 note t attt=1/1/1/1/1/1/1/1/1/1/1 constant in base run note a intrt.k=0.02 note run 5 emprtmlt straight line, intrt=0.02 note note *********************************** NOTE *******TRANSITION FROM PAYG TO FF********* NOTE FIGURES 46-52 NOTE NOTE GOVERNMENT DEBT NOTE note l gdebt.k=gdebt.j+dt*(gborrt.jk+surgd.jk-gdrp.jk) note n gdebt=0 note r surgd.kl=intgdebtrp.k*gborrt.kl*trpdt note c trpdt=100 Time required to repay debt note a intgdebtrp.k=intrt.k+0.02 note r gdrp.kl=axgdrp.k/trpdt note l axgdrp.k=axgdrp.j+dt*(gborrt.jk+surgd.jk note x -dlpipe(tabv,gborrt.kl+surgd.kl,trpdt)) note n axgdrp=0 note t tabv=400*0 NOTE GOVERNMENT'S MONEY DUE TO THE TRANSITION NOTE note l gmntr.k=gmntr.j+dt*(trfnd.jk+gborrt.jk+inctxtr.jk-gpenstr.jk-gdrp.jk) note n gmntr=0 note r trfnd.kl=(gmnpg.k+intgmnpg.kl*dt)*pulse(1/dt,stptmtr,length) note r gborrt.kl=clip(zerod,(gpenstr.kl-gmntr.k/dt),gmntr.k/dt,gpenstr.kl) note r gpenstr.kl=gpenstrnew.kl+gpenstrold.kl note r gpenstrnew.kl=wretr.kl*fzwrpens.k*fzreprt.k*remlife.k*((tret.k-dtlevtr.k)/tret.k) ***** note r gpenstrold.kl=fzreprt.k*fzwrpens.k*opser.k NOTE 'FROZEN' EQUATIONS NOTE FROZEN WAGE RATE FOR (FUTURE) PENSIONS NOTE (INSTEAD OF USING THE PROBLEMATIC 'SAMPLE' FUNCT.) note l fzwrpensax.k=fzwrpensax.j+(dt/dt)*fzwrpensrtax.jk note n fzwrpensax=0 note r fzwrpensrtax.kl=pulse(wrpens.k,stptmtr,length) note a fzwrpens.k=clip(fzwrpensrtax.kl,fzwrpensax.k,stptmtr,time.k) NOTE 'OLD' PENSIONERS NOTE (INSTEAD OF USING THE PROBLEMATIC 'SAMPLE' FUNCT.) note l opserax.k=opserax.j+dt*(opserrtax.jk-opdr.jk-instdr.jk) note n opserax=0 note r opserrtax.kl=pulse(pser.k/dt,stptmtr,length) note a opser.k=clip(opserrtax.kl*dt,opserax.k,stptmtr,time.k) note r opdr.kl=opserax.k/(remlife.k/2) note r instdr.kl=pulse(pdr.kl,stptmtr,length) NOTE FROZEN REPRT NOTE (INSTEAD OF USING THE PROBLEMATIC 'SAMPLE' FUNCT.) note l fzreprtax.k=fzreprtax.j+(dt/dt)*fzreprtrax.jk note n fzreprtax=0 note r fzreprtrax.kl=pulse(reprt.k,stptmtr,length) note a fzreprt.k=clip(fzreprtrax.kl,fzreprtax.k,stptmtr,time.k) NOTE ********** END OF FROZEN EQUATIONS ************ NOTE NOTE DTLEVTR --MEASURES TIME (BEGINNING FROM 0 (ZERO)) FROM THE TIME THAT THE NOTE TRANSITION IS FIRST INITIATED AND FOR 'TRET' YEARS NOTE note l dtlevtr.k=dtlevtr.j+dt*a.j note n dtlevtr=0 note a a.k=step(one,stptmtr)-step(one,stptmtr+tret.k) NOTE ALTERATION REQUIRED NOTE note l empmn.k=empmn.j+dt*(wgs.jk+div.jk+intempmn.jk-csempd.jk-csempz.jk note x -svrret.jk-pgtx.jk-inctxpg.jk-inctxtr.jk) note l psermn.k=psermn.j+dt*(wdlr.jk+intpsermn.jk+penspg.jk+gpenstr.jk-cspserd.jk note x -cspserz.jk) note r inctxtr.kl=gdrp.kl note r cspserd.kl=(delay1(wdlr.jk,remlife.k)+delay1(intpsermn.jk,spdp) note x +delay1(penspg.jk,spdp)+delay1(gpenstrnew.jk,remlife.k) note x +delay1(gpenstrold.jk,spdp))*(1-pz.k) note r cspserz.kl=(delay1(wdlr.jk,remlife.k)+delay1(intpsermn.jk,spdp) note x +delay1(penspg.jk,spdp)+delay1(gpenstrnew.jk,remlife.k) note x +delay1(gpenstrold.jk,spdp))*pz.k note l gmnpg.k=gmnpg.j+dt*(pgtx.jk+intgmnpg.jk+inctxpg.jk-penspg.jk-trfnd.jk) note r pgtx.kl=(contr.k*wr.k)*emp.k*(one-step(one,stptmtr)) note r penspg.kl=reprt.k*wrpens.k*pser.k*(one-step(one,stptmtr)) note a tdcs.k=csempd.kl+csunempd.kl+cspserd.kl+export.kl note a tsave.k=fmn.k+empmn.k+psermn.k+wsvret.k+gmnpg.k+gmntr.k -gdebt.k note a pc.k=1-step(0.2,stptmtr) NOTE ALTERATIONS REQUIRED IN MBC EQS NOTE MONEY FLOWS NOTE IN RATE NOTE note l inrtm.k=inrtm.j+dt*(inc.jk+intfmn.jk fmn note x +wgs.jk+div.jk+intempmn.jk empmn note x +svrret.jk+intsav.jk wsvret note x +wdlr.jk+intpsermn.jk+penspg.jk+gpenstr.jk psermn note x +unempincrt.jk unempmn note x +pgtx.jk+intgmnpg.jk+inctxpg.jk gmnpg note x +gborrt.jk+surgd.jk gdebt note x +trfnd.jk+gborrt.jk+inctxtr.jk) gmntr note n inrtm=0 NOTE OUT RATE NOTE note l outrtm.k=outrtm.j+dt*(wgs.jk+irt.jk+div.jk fmn note x +csempd.jk+csempz.jk+svrret.jk+pgtx.jk+inctxpg.jk+inctxtr.jk empmn note x +wdlr.jk wsvret note x +cspserd.jk+cspserz.jk psermn note x +csunempd.jk+csunempz.jk unempmn note x +penspg.jk+trfnd.jk gmnpg note x +gdrp.jk gdebt note x +gpenstr.jk+gdrp.jk) gmntr note n outrtm=0 NOTE INITIAL LEVELS NOTE note n levim=fmn+empmn+wsvret+psermn+unempmn+gmnpg+gdebt+gmntr NOTE ACTUAL LEVLES NOTE note a levm.k=fmn.k+empmn.k+wsvret.k+psermn.k+unempmn.k+gmnpg.k+gdebt.k+gmntr.k note c stptmtr=10 NOTE DIRECTORY OF ADDITIONAL VARIABLE NAMES AND DIMENSIONAL ANALYSIS NOTE FOR THE TRANSITION RUN NOTE note d a=(1) dummy variable that initiates and stops counting in dtlevtr note d axgdrp=(GBP) Auxiliary for calculating gdrp with equal installments note d dtlevtr=(years) Counts the time that goes past beginning from note NOTE the time of the transition and for TRET years note d fzreprt=(1) The actual frozen replacement rate used note d fzreprtax=(1) Frozen replacement rate -auxiliary note d fzreprtrax=(1) Rate to aid in the calculation of the frozen note NOTE replacement rate note d fzwrpens=(GBP/(persons*years)) Frozen wage rates pensions note d fzwrpensax=(GBP/(persons*years)) Frozen wage rates calculated for note NOTE pensions -Auxiliary note d fzwrpensrtax=(GBP/(persons*years)) Frozen wage rates calculated note NOTE for pensions rate -auxiliary note d gborrt=(GBP/years) Government borrowing rate note d gdebt=(GBP) Government debt note d gdrp=(GBP/years) Government debt repayment note d gmntr=(GBP) Government money balances due to the transition note d gpenstr=(GBP/years) Government pensions due to the transition note d gpenstrnew=(GBP/years) Government pensions due to the transition note NOTE paid to the 'new pensioners' note d gpenstrold=(GBP/years) Government pensions due to the transition note NOTE paid to the 'old pensioners' note d inctxtr=(GBP/years) Income taxes raised due to the transition note d instdr=(persons/years) Instantaneous death rate note d intgdebtrp=(1/years) Interest charged for the repayment of note note governments' debts note d opdr=(persons/years) Old pensioners death rate note d opser=(persons) Old pensioners note d opserax=(persons) Old pensioners -auxiliary note d opserrtax=(persons/years) Old pensioners rate -auxiliary note d stptmtr=(years) Step time of the initiation of the transition note d surgd=(GBP/years) Interest surcharges on government debt note d tabv=(GBP/years) Table values for previous gborrt plus surgd values note d trfnd=(GBP/years) Transfered funds due to the transition note d trpdt=(years) Time required to repay debt note run 2 transition run note **************************************** note a dwr.k=refwr note run 3 Constant wage rates note t attt=0.5/0.52/0.6/0.72/0.85/1/1.13/1.23/1.29/1.33/1.35 used in paper note run 4 varying attt constant wages note a dwr.k=refwr*demprtps.k*demprtps2.k note run 5 varying att, variable wages