[R-SIG-Finance] FPortfolio / MAxReturnPortfolio

alexios ghalanos alexios at 4dscape.com
Mon Jul 7 16:55:12 CEST 2014


I'm not too familiar with how fPortfolio works, but since you asked for
"alternative code" here is how you can do this with parma:

###############
library(parma)
spec = parmaspec(S = cov(datamatrix), riskB=0.1,
risk="EV",riskType="maxreward", LB = rep(0,8), UB = rep(1,8), budget=1,
forecast=colMeans(datamatrix))
weights(parmasolve(spec, solver="SOCP"))
#############

Note the following:
1. The risk (riskB) is an upper bound since this is an inequality
constraint (less than or equal to), and is available to solve for
covariance inputs using an SOCP solver (you can also solve QCQP problems
as well).
2. The solution can be completely dominated by one asset (as in the
case above) unless you change risk bound or constraints (UB, LB or some
other linear combinations ... see documentation)
3. You MUST provide a forecast vector (which is not all zeros).

Regards,

Alexios

On 07/07/2014 12:04, Pierre Org wrote:
>  
> 
> I am working on a small allocation project and have tried to used the
> maxreturnPortfolio function in the fPortfolio package to find the portfolio
> that maximise return for a specified level of risk, However the function
> does not seem to work. It returns zero weights independently of the  level
> of risk provided as the target. Has anyone had experience of working with
> that function or could provide an alternative code ?
> 
>  
> 
>  
> 
> require(timeseries)
> 
> require(fPortfolio)
> 
> require(quantmod)
> 
>  
> 
> ETF <-  c('VGSIX','VUSTX','VGTSX','VFISX','VTSMX','VFITX','VEIEX','VIPSX')
> 
> getSymbols(ETF,source = 'yahoo')
> 
> datamat <-
> as.xts(cbind(get("VGTSX")[,4],get("VTSMX")[,4],get("VEIEX")[,4],get("VGSIX")
> [,4],get("VUSTX")[,4],get("VFITX")[,4],get("VFISX")[,4],get("VIPSX")[,4]))
> 
> datamatrix <-  as.xts(apply(datamat,2,function(x) diff(log(x))))
> 
> colnames(datamatrix) <-  c('Global Equities Ex US','US Equities','Emerging
> Markets Stocks',"REITs",'Treasuries 15 - 30Y','Treasuries 5-10Y','Treasuries
> 1-4Y','US Inflation Linked 7 - 20Y')
> 
>  
> 
> x <- timeSeries(datamatrix, charvec=as.Date(index(datamatrix)))
> 
> Constraints <-  "LongOnly"
> 
> Spec  <- portfolioSpec()
> 
> setTargetRisk(Spec) <- 0.1
> 
> getWeights(maxreturnPortfolio(x, Spec, Constraints)@portfolio)
> 
>  
> 
>  
> 
>  
> 
> VGTSX.Close VTSMX.Close VEIEX.Close VGSIX.Close VUSTX.Close VFITX.Close
> VFISX.Close VIPSX.Close 
> 
>           0           0           0           0           0           0
> 0           0 
> 
>  
> 
>  
> 
>  
> 
> Any help appreciated
> 
> 
> 	[[alternative HTML version deleted]]
> 
> _______________________________________________
> R-SIG-Finance at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> -- Subscriber-posting only. If you want to post, subscribe first.
> -- Also note that this is not the r-help list where general R questions should go.
> 
>



More information about the R-SIG-Finance mailing list