The following is the basic code used to run the simulations for the Sydney paper. The program defines some identities, runs some regressions to define other equations, and the runs the simulations. Because of the various taylor rules that were used, sometimes the simulations are done piecewise. Lags aren't a problem because when RATS gets the simulated values for variables it just saves them over the old values. What this means is that the program will have to be adjusted depending on what simulation exactly is being run. The line below the phillips curve regression sets a bunch of coefficients to zero, which is the same as setting all the supply shocks to zero. *BMA GLOBAL 660 DATA 600 COMPILE 2000 LOCAL 80 CAL 1947 2 4 ALLOCATE 2004:4 open data taylor-data.xls data(org=col, format=xls) / int imp fae med inf nixon nixoff u pdevext qdev rgdp $ xint xcycle qdevlev natgdp nomgdp govtshr nx pce d1qdev udev close data set pmac = .25*(inf+inf{1}+inf{2}+inf{3}) set d1int = int - int{1} set d1govt = govtshr-govtshr{1} set d1nx = nx - nx{1} set d1inf = inf - inf{1} set d1qdev = qdevlev-qdevlev{1} set pmacadj = pmac - 2.0 com strtreg = (1962:1) com enddata = (2004:4) com endregr = (2004:4) equation interest d1int # int int{1} associate interest # 1.0 -1.0 equation inflation pmac # inf{0 to 3} associate inflation # .25 .25 .25 .25 equation inftrans d1inf # inf{0 to 1} associate inftrans # 1.0 -1.0 equation outputdev qdevlev # qdevlev{1} d1qdev xcycle associate outputdev # 1.0 1.0 1.0 equation infadjustment pmacadj # pmac constant associate infadjustment # 1.0 -2.0 linreg(define=okun) udev strtreg endregr # qdevlev{0 to 2} summarize # qdevlev{0 to 2} linreg inf strtreg endregr # udev{0 to 4} pmac{1} pmac{5} pmac{9} pmac{13} pmac{17} pmac{21} fae{0 to 4} $ imp{1 to 4} nixon nixoff pdevext med{1 to 4} restrict(print,create,define=phillips) 1 resids # 6 7 8 9 10 11 # 1.0 1.0 1.0 1.0 1.0 1.0 1.0 *associate phillips *# -.51 -.27 .49 .26 -.62 .26 .34 .16 .2 -.09 .13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 prj inf 62:1 64:4 set intadj = int - 5.0 ar1 intadj 60:1 79:2 # pmacadj{0 to 1} qdevlev{0 to 1} prj int1 60:1 79:2 ar1 intadj 79:3 90:2 # pmacadj{0 to 1} qdevlev{0 to 1} prj int1 79:3 90:2 ar1 intadj 90:3 2004:4 # pmacadj{0 to 1} qdevlev{0 to 1} prj int1 90:3 2004:4 set xint = intadj - int1 equation adjustment int # intadj constant associate adjustment # 1.0 5.0 ar1(define=taylor) intadj 60:1 79:2 # pmacadj{0 to 1} qdevlev{0 to 1} linreg(define=is) d1qdev strtreg endregr # d1inf{0 to 4} d1int{2 to 10} prj d1qdev 62:1 64:4 forecast 10 (79:2-64:4) 65:1 # phillips inf # taylor intadj # is d1qdev # okun udev # inftrans d1inf # interest d1int # inflation pmac # outputdev qdevlev # infadjustment pmacadj # adjustment int set pmac = .25*(inf+inf{1}+inf{2}+inf{3}) set d1inf = inf - inf{1} set d1qdev = qdevlev-qdevlev{1} set d1int = int - int{1} set pmacadj = pmac - 2.0 set intadj = int - 5.0 ar1(define=taylor) intadj 79:3 90:2 # pmacadj{0 to 1} qdevlev{0 to 1} forecast 10 (90:2-79:2) 79:3 # phillips inf # taylor intadj # is d1qdev # okun udev # inftrans d1inf # interest d1int # inflation pmac # outputdev qdevlev # infadjustment pmacadj # adjustment int set pmac = .25*(inf+inf{1}+inf{2}+inf{3}) set d1inf = inf - inf{1} set d1qdev = qdevlev-qdevlev{1} set d1int = int - int{1} set pmacadj = pmac - 2.0 set intadj = int - 5.0 ar1(define=taylor) intadj 90:3 2004:4 # pmacadj{0 to 1} qdevlev{0 to 1} forecast 10 (2004:4-90:2) 90:3 # phillips inf # taylor intadj # is d1qdev # okun udev # inftrans d1inf # interest d1int # inflation pmac # outputdev qdevlev # infadjustment pmacadj # adjustment int set d1qdev = qdevlev-qdevlev{1} print 62:1 2004:4 inf int d1qdev qdevlev