P.lo126dens <-
function (filename = "lo126dens.png") 
{
	if(length(filename)) {
		png(file=filename, width=512)
		par(mar=c(5,4, 0, 2) + .1)
	}

	plot(density(lo126$fitted * 1e4), col="blue", lwd=2, 
		xlab="Daily expected return (basis points)", main="")
	lines(density(lo126perm * 1e4), col="green", lwd=2)

	if(length(filename)) {
		dev.off()
	}
}

P.lo63dens <-
function (filename = "lo63dens.png") 
{
	if(length(filename)) {
		png(file=filename, width=512)
		par(mar=c(5,4, 0, 2) + .1)
	}

	plot(density(lo63$fitted * 1e4), col="blue", lwd=3, 
		xlab="Daily expected return (basis points)", main="", yaxt="n")
	lines(density(lo63perm * 1e4), col="green", lwd=3)
	axis(2, at=seq(0, .025, length=6), labels=c('0.00', '0.005', '0.010',
		'0.015', '0.020', ' '))

	if(length(filename)) {
		dev.off()
	}
}

P.loessbearcount <-
function (filename = "loessbearcount.png") 
{
	if(length(filename)) {
		png(file=filename, width=512)
		par(mar=c(5,4, 0, 2) + .1)
	}

	 pp.timeplot(cut.lo63.57 + cut.lo126.45 + cut.lo252.28 + cut.lo1000.09 +
		cut.lr63.35 + cut.lr126.20 + cut.lr252.16 + cut.lr1000.05, 
		div='decade',xnam=names(spxret), ylab="Bear count")

	if(length(filename)) {
		dev.off()
	}
}

P.lorandtime126 <-
function (filename = "lorandtime126.png") 
{
	if(length(filename)) {
		png(file=filename, width=512)
		par(mar=c(5,4, 0, 2) + .1)
	}

	 pp.timeplot(lo126perm[,1]*1e4, xnam=names(spxret), div='decade',
		ylab="Daily expected return (basis points)", lwd=1, col="blue")

	if(length(filename)) {
		dev.off()
	}
}

P.losym63dens <-
function (filename = "losym63dens.png") 
{
	if(length(filename)) {
		png(file=filename, width=512)
		par(mar=c(5,4, 0, 2) + .1)
	}

	plot(density(losym63$fitted * 1e4), col="blue", lwd=3, 
		xlab="Daily expected return (basis points)", main="", yaxt="n")
	lines(density(losym63perm * 1e4), col="green", lwd=3)
	axis(2, at=seq(0, .025, length=6), labels=c('0.00', '0.005', '0.010',
		'0.015', '0.020', ' '))

	if(length(filename)) {
		dev.off()
	}
}

P.lotime1000 <-
function (filename = "lotime1000.png") 
{
	if(length(filename)) {
		png(file=filename, width=512)
		par(mar=c(5,4, 0, 2) + .1)
	}

	 pp.timeplot(lo1000$fitted*1e4, xnam=names(spxret), div='decade',
		ylab="Daily expected return (basis points)", lwd=2, col="blue")

	if(length(filename)) {
		dev.off()
	}
}

P.lotime126 <-
function (filename = "lotime126.png") 
{
	if(length(filename)) {
		png(file=filename, width=512)
		par(mar=c(5,4, 0, 2) + .1)
	}

	 pp.timeplot(lo126$fitted*1e4, xnam=names(spxret), div='decade',
		ylab="Daily expected return (basis points)", lwd=1, col="blue")

	if(length(filename)) {
		dev.off()
	}
}

P.lotime63 <-
function (filename = "lotime63.png") 
{
	if(length(filename)) {
		png(file=filename, width=512)
		par(mar=c(5,4, 0, 2) + .1)
	}

	 pp.timeplot(lo63$fitted*1e4, xnam=names(spxret), div='decade',
		ylab="Daily expected return (basis points)", lwd=1, col="blue")

	if(length(filename)) {
		dev.off()
	}
}

P.template <-
function (filename = "xxx.png") 
{
	if(length(filename)) {
		png(file=filename, width=512)
		par(mar=c(5,4, 0, 2) + .1)
	}

	if(length(filename)) {
		dev.off()
	}
}

pp.loess <-
function (nobs, formula=ret ~ time, data=spxdf, subset=NULL, ...) 
{
	if(length(subset)) stop("'subset' argument not allowed")
	loess(formula=formula, data=data, span=nobs/nrow(data), ...)
}

pp.timeplot <-
function (x, div="year", type="l", xlab="", xnam=NULL, ...) 
{
	## simple-minded function to plot time series nicely
	## placed in the public domain by Burns Statistics 2010
	##

	if(is.data.frame(x)) x <- as.matrix(x)
	if(is.matrix(x)) {
		matplot(x, axes=FALSE, type=type, xlab=xlab, ...)
		if(!length(xnam)) {
			xnam <- row.names(x)
		} else if(length(xnam) != nrow(x)) {
			stop("'xnam' is the wrong length")
		}
	} else {
		plot(x, axes=FALSE, type=type, xlab=xlab, ...)
		if(!length(xnam)) {
			xnam <- names(x)
		} else if(length(xnam) != length(x)) {
			stop("'xnam' is the wrong length")
		}
	}
	axis(2)
	switch(div,
	  decade={
		tim <- substring(xnam, 1, 3)
		tlab <- paste(unique(tim), "0's", sep="")
	  },
	  year={
		tim <- substring(xnam, 1, 4)
		tlab <- unique(tim)
	  }
	)
	tcount <- cumsum(table(tim))
	tbrk <- tcount[-length(tcount)] + .5
	axis(1, at=tbrk, labels=rep("", length(tbrk)), tck=1, lty=2, col=2)
	axis(1, at=tbrk, labels=rep("", length(tbrk)), lty=2, col=2)
	maxd <- max(diff(tcount))
	axis(1, at=tcount - maxd/2, labels=tlab, tck=0)
	box()
}

