Skip to content
Prev 2452 / 15274 Next

tseries and efficient frontier

Yesterday I reported that my effort to compute and plot an efficient 
frontier using the fPortfolio package had produced an asymmetric curve 
rather than the anticipated hyperbola. Using the same data, I have now 
tried computing and plotting an efficient frontier using the tseries 
package. The result is again an asymmetric curve.

My code is as follows:
library(fPortfolio)
Data = as.timeSeries(data(smallcap.ts))
Data = Data[, c("BKE", "GG", "GYMB", "KRON")]
Data
x <- as.matrix(Data)
vcvd <- cov(Data)
pmv <- rep(0,100)
psv <- rep(0,100)
minr <- min(mean(Data))
maxr <- max(mean(Data))
vcv <- cov(x)
iv <- 0:99
mrv <- minr*(1-iv/99) + maxr*(iv/99)
pmv[1] <- min(mean(Data))
pmv[100] <-max(mean(Data))
psv[1] <- 0.2226543
psv[100] <- 0.1674082
for (i in 2:99) {
pmv[i] <- portfolio.optim(x, pm = mrv[i], covmat = vcv)$pm
psv[i] <- portfolio.optim(x, pm = mrv[i], covmat = vcv)$ps
}
plot(psv,pmv)

On the resulting curve, risk is minimized at point 62. But the curve is 
not symmetric around this point. (Moving 37 points in either direction 
from this point raises risk by the same amount. In contrast moving 37 
points back lowers the mean return far less than moving 37 points 
forward raises the mean return.)  I wonder whether this asymmetry is a 
bug or an accurate portrayal of a type of efficiency frontier different 
from the hyperbolas that appear in textbooks. I would be most grateful 
for suggestions about how to resolve this puzzle.

Best regards,
John