




Hello everyone,

I would like assistance with a snippet I have written to do a recursive portfolio optimization given time-varying return forecasts. 

In my case, I have forecast the monthly returns for nearly 55 years out on 8 asset classes.
I need to calculate the weights for the optimal (tangency) portfolio based on my monthly forecasts and an arbitrary covariance matrix 
Getting these weights have proven difficult.

# these are forecast (out of sample) returns; each is a 648x1 matrix
cash_forecast2=as.ts(cash_forecast)

larg_forecast2=as.ts(larg_forecast)

valu_forecast2=as.ts(valu_forecast)

grow_forecast2=as.ts(grow_forecast)

smal_forecast2=as.ts(smal_forecast)

tres_forecast2=as.ts(tres_forecast)

cred_forecast2=as.ts(cred_forecast)

comm_forecast2=as.ts(comm_forecast)



# make a matrix of all expected returns
# each line corresponds to forecast monthly returns for each asset class; this is a 648x8 matrix

asset_forecast=ts.intersect(cash_forecast2, larg_forecast2,valu_forecast2, 

grow_forecast2, smal_forecast2, tres_forecast2, cred_forecast2, comm_forecast2)



# make a covariance matrix based on the entire data

actual_ret=cbind(cash_ret, larg_ret,valu_ret,grow_ret,smal_ret,tres_ret,cred_ret,comm_ret)


cov_matrix=cov(actual_ret)



opt_port = ts(matrix(,nrow=648,ncol=8))


for (i in 1:648) opt_port[i,]= portfolio.optim(asset_forecast[i,], 

riskless=FALSE, shorts=TRUE, covmat = "cov_matrix",

by.column = FALSE, by=1, align="right")


I get the following error message; "Error in portfolio.optim.default(asset_forecast[i, ], shorts = TRUE, covmat = "cov_matrix",  :  x is not a matrix"

So clearly, asset_forecast[i,] is not a matrix. So I need another method to do this. Can anyone suggest a solution that would allow my to set sail in the right direction?

Many thanks,
Bond, Jamesss....sorry that's my screen name... Darius :)

 		 	   		   		 	   		   		 	   		  
	[[alternative HTML version deleted]]

