* * Example 7.5.3 from pp 307-311 * open data d-ibmln98.dat data(format=free,org=columns) 1 9190 ibmlog * mvstats(min=mins,max=maxs,span=21) ibmlog sample(smpl=%clock(t,21)==21) mins / mincomp sample(smpl=%clock(t,21)==21) maxs / maxcomp spgraph(footer="Figure 7.3 Maximum and minimum daily log returns (subperiod=21 days)",vfields=2) graph(header="(a) Monthly maximum log returns") # maxcomp graph(header="(b) Monthly minimum log returns") # mincomp spgraph(done) * * Create a sorted version of ibmlog. (Most of the time computing Hill's estimate * is spent sorting the data set). * set sorted = ibmlog order sorted * report(action=define) report(atrow=1,atcol=1,fillby=cols) "q" "Maximum" "Minimum" report(atrow=1,atcol=2,tocol=3,span,align=center) "190" @HillGEV(span=190,tail=right) sorted report(atrow=2,atcol=2) %%hill %%hillse @HillGEV(span=190,tail=left) sorted report(atrow=3,atcol=2) %%hill %%hillse * report(atrow=1,atcol=4,tocol=5,span,align=center) "200" @HillGEV(span=200,tail=right) sorted report(atrow=2,atcol=4) %%hill %%hillse @HillGEV(span=200,tail=left) sorted report(atrow=3,atcol=4) %%hill %%hillse * report(atrow=1,atcol=6,tocol=7,span,align=center) "210" @HillGEV(span=210,tail=right) sorted report(atrow=2,atcol=6) %%hill %%hillse @HillGEV(span=210,tail=left) sorted report(atrow=3,atcol=6) %%hill %%hillse * report(action=format,picture="*.###") report(action=show) * set q 2 500 = t do ix=2,500 @HillGEV(span=fix(q(ix)),tail=right) sorted set right ix ix = %%hill @HillGEV(span=fix(q(ix)),tail=left) sorted set left ix ix = %%hill end do ix * spgraph(vfields=2,footer="Figure 7.4 Scatterplots of Hill estimator for daily log returns of IBM stock") scatter(header="(a) Upper (or right) tail") # q right scatter(header="(b) Lower (or left) tail") # q left spgraph(done) * nonlin alpha beta k dec series r * frml gevmin = %loggevdensity(-r,k,-beta,alpha) frml gevmax = %loggevdensity( r,k, beta,alpha) * dofor n = 21 63 126 252 mvstats(min=mins,max=maxs,span=n) ibmlog sample(smpl=%clock(t,n)==n) mins / r 1 compute gend = %nobs compute alpha=.8,beta=-2.0,k=-.2 maximize gevmin 1 gend sample(smpl=%clock(t,n)==n) maxs / r 1 compute alpha=.8,beta=2.0,k=-.2 maximize gevmax 1 gend end dofor