/* redodat.gpg this file loads data from .fmt files created by newfmt.prg; a. transforms index returns to real quart. avg. 47-90 and saves to .fmt files. b. transforms indiv. returns to real quart. avg. 44-90 and saves to .fmt files. The result is the data files avdecret,avvwret,avewret,avustret; used by gmm.gpg modified to update to 93:4 ----------------------------------------------------------------------------- */ @library gmm;@ proc(1) = mtoqret(ret,start,end);retp(0); endp; load path = c:\j\newprod\data; save path = c:\j\newprod\data; /* ------------- */ /* load raw data */ /* ------------- */ /* load returns */ load @mcaldt,@mvwretd,mvwretx,mewretd,mewretx,msptrn,mdecrets; load mustret; /* load indstret; load mew20,mvw20y,mvw20m,mew10,mvw10y,mvw10m; */ /* load sbbi returns and inflation */ load mgbtret,mcbtret,mustret,mcpiret; /* SBBI data */ load mcpiret; /* units 1+r */ load mpunew ; /* NIPA SA cpi 568 long 47:1-94:4*/ /* units: level */ mpunew = mpunew[2:rows(mpunew)]./mpunew[1:rows(mpunew)-1]; mpunew = mcpiret[1:253]|mpunew; /* use sbbi nsa for 46 */ /* mpunew is now m infl rate */ mpunew = mpunew[1:rows(mpunew)-4]; /* chop to 93:12 */ load ip; /* 47:1 - 93:12 monthly 564 */ /* load citibase yields */ load fybaac,fyaaac,fygm3,fygl; /* ----------------------------------------------------------- */ /* change returns to real quarterly average, 4702-93:04 */ /* form quarterly 47 - 93 returns from monthly 26-93 */ /* by averaging monthly returns */ /* 253 = 470131; 780=901231 q data has 176 observations */ /* 816=931231 188 */ /* ----------------------------------------------------------- */ avdecret = mtoqret(mdecrets./mpunew,250,816); /* NBER paper has real */ avvwret = mtoqret(mvwretd./mpunew,250,816); avewret = mtoqret(mewretd./mpunew,250,816); avustret = mtoqret(mustret./mpunew,250,816); avdecret = avdecret[2:188,.]; avvwret = avvwret[2:188,.]; avewret = avewret[2:188,.]; avustret = avustret[2:188,.]; /* ----------------------------------------------------------- */ /* change indiv. returns to real quart. avg., 4702-9004 */ /* form quarterly 47 - 90 returns from monthly 26-90 */ /* by averaging monthly returns */ /* 26 = 470131; 553=901231 q data has 176 observations */ /* 589=931231 188 */ /* ----------------------------------------------------------- */ /* aindstrt = mtoqret(indstret./mpunew[228:816],23,553); aindstrt = aindstrt[2:176,.]; save aindstrt; */ save avdecret,avvwret,avewret,avustret@,aindstrt@; /* make sampled monthly div yield yield spreads for use as instruments */ /* these are all 47:01 - 94:04, last month equals t */ qterm = fygl-fygm3; qdef = fybaac-fyaaac; qterm = chgfreq(qterm,1,3,0); qdef = chgfreq(qdef,1,3,0); qterm = qterm[1:188]; qdef = qdef[1:188]; save qterm,qdef; /* quarterly 47-93 */ qvwr = exp(chgfreq(ln(mvwretd[241:816]),12,3,0)); qvwrx = exp(chgfreq(ln(mvwretx[241:816]),12,3,0)); qvwr = qvwr[5:rows(qvwr)]; qvwrx = qvwrx[5:rows(qvwrx)]; qvwdp = qvwr./qvwrx - 1; qewr = exp(chgfreq(ln(mewretd[241:816]),12,3,0)); qewrx = exp(chgfreq(ln(mewretx[241:816]),12,3,0)); qewr = qewr[5:rows(qewr)]; qewrx = qewrx[5:rows(qewrx)]; qewdp = qewr./qewrx - 1; save qvwdp,qewdp; /* ----------------------------------------------------------- */ /* change vintile returns to real quart. avg., 4702-9004 */ /* form quarterly 47 - 90 returns from monthly 46-90 */ /* by averaging monthly returns */ /* 12 = 470131; 539=901231 q data has 176 observations */ /* */ /* ----------------------------------------------------------- */ /* avew20 = mtoqret(mew20[1:539,.]./mpunew[242:780],9,539); avvw20y = mtoqret(mvw20y[1:539,.]./mpunew[242:780],9,539); avvw20m = mtoqret(mvw20m[1:539,.]./mpunew[242:780],9,539); avew20 = avew20[2:176,.]; avvw20y = avvw20y[2:176,.]; avvw20m = avvw20m[2:176,.]; save avew20,avvw20y,avvw20m; */ /* ----------------------------------------------------------- */ /* change ew-decile returns to real quart. avg., 4702-9004 */ /* form quarterly 47 - 90 returns from monthly 46-90 */ /* by averaging monthly returns */ /* 12 = 470131; 539=901231 q data has 176 observations */ /* 575=931231 188 */ /* ----------------------------------------------------------- */ /* avew10 = mtoqret(mew10[1:575,.]./mpunew[242:816],9,575); avvw10y = mtoqret(mvw10y[1:575,.]./mpunew[242:816],9,575); avvw10m = mtoqret(mvw10m[1:575,.]./mpunew[242:816],9,575); avew10 = avew10[2:188,.]; avvw10y = avvw10y[2:188,.]; avvw10m = avvw10m[2:188,.]; save avew10,avvw10y,avvw10m; */ /* ----------------------------------------- */ /* make chen roll ross factors MP = growth in industrial production, averaged as returns UI = unexpected inflation DEI = change in expected inflation UPR = low grade - long gov't return UTS = long gov't - t bill return all series are q, 47:2 - 90:4; IP4 IP5 IP6 MP: q2 ip growth is ln ( ----------- ) , IP1 IP2 IP3 */ /* ----------------------------------------- */ lip = ln(ip); /* chop to 47:1-90:12 */ qlip = chgfreq(lip,,3,3,0); MP = qlip[2:rows(qlip)]-qlip[1:rows(qlip)-1]; exprr = mustret - mpunew; T = rows(exprr); u = recserar(0|(exprr[2:T]-exprr[1:T-1]),0,0.9223); Einf = mustret[2:T]-exprr[1:T-1]-u[1:T-1]; /* ust is return, lag to be yield */ Einf = Einf[253:rows(einf)]|einf[rows(einf)]; /* cheat: repeat last to get to 90:12 */ DEI = einf[2:rows(einf)]-einf[1:rows(einf)-1]; /* 47:2-90:12 */ UI = mustret[254:rows(mustret)] - einf[1:rows(einf)-1]; DEI = chgfreq(0|dei,3,3,0); /* average to quarterly*/ UI = chgfreq(0|ui,3,3,0); DEI = DEI[2:rows(DEI)]; UI = UI[2:rows(UI)]; mgbtret = mgbtret[253:rows(mgbtret)]; mcbtret = mcbtret[253:rows(mcbtret)]; mustret = mustret[253:rows(mustret)]; avgb = mtoqret(mgbtret,1,rows(mgbtret)); avcb = mtoqret(mcbtret,1,rows(mcbtret)); avus = mtoqret(mustret,1,rows(mustret)); UPR = avcb-avgb; UTS = avgb-avus; save MP,DEI,UI,UPR,UTS; /* -------------------------------------------------------------------------*/ /* proc mtoqret */ /* form quarterly returns from monthlies oct31 nov31 dec31 jan31 feb31 \ ----------- / + \ ---------- / + \ -------- / = Q1 return compare to Q1/Q4 growth rate ---------------------------------------------------------------------------*/ proc(1) = mtoqret(ret,start,endx); local mr1, mr2, mr3, mr, nobs; mr1 = chgfreq(ln(ret[start:endx,.]), 3 , 3, 0); mr2 = chgfreq(ln(ret[start:endx,.]), 3 , 3, -1); mr3 = chgfreq(ln(ret[start:endx,.]), 3 , 3, -2); nobs = floor((endx-start)/3); mr = exp((mr1[1:nobs,.]+mr2+mr3)/3); /*last obs of last two is missing*/ retp(mr); endp;