`I attach what I think is a syntactically correct version of the email,`

`which looks like it was pasted from HTML.`

We'll try to take a look.

## Advertising

Regards, Brian On 10/12/2016 04:34 AM, Marco Mastrangeli wrote:

Hi Michael, thanks for your reply, I apologize for the not full clarity of my question. In the following, I try to report a full example. #Library *library(PerformanceAnalytics)* *library(PortfolioAnalytics)* #Returns data present in "PortfolioAnalytics" *data(indexes)* *indexes <- indexes[,1:4]* #New Portfolio Object *Wcons <- portfolio.spec(assets=colnames(indexes))* #Add box constraints *Wcons <- add.constraint(portfolio=Wcons, type='box', min=0, max=1)* #Add the full investment constraint *Wcons <- add.constraint(portfolio=Wcons, type="full_investment")* #Add Objective specification: VaR with default parameter for vector "mu" (EXAMPLE 1) *VaRObjSpec <- add.objective(portfolio=Wcons, type="risk", name="VaR", arguments=list(p=0.95), enabled=TRUE)* #The value of the objective function is: *constrained_objective(w=rep(1/4,4), R=indexes, portfolio=VaRObjSpec) #* VaR *0.0499467* #This is the VaR of the equal-weight portfolio as computed by the function VaR in the PerformanceAnalytics package. *VaRout <- VaR(indexes, weights=rep(1/4,4), p=0.95, portfolio_method="component")* *VaRout$MVaR # *[1,]* 0.0499467* Now, I repet the VaR example with a user-defined vector for the parameter "mu". #User-defined vector "mu" *myMu = rep(0.01, 4)* #Add Objective specification: VaR with user-defined parameter for vector "mu" *myVaRObjSpec <- add.objective(portfolio=Wcons, type="risk", name="VaR", arguments=list(p=0.95, mu=myMu), enabled=TRUE)* #The value of the objective function is: *constrained_objective(w=rep(1/4,4), R=indexes, portfolio=myVaRObjSpec) #* VaR *0.04638622* #This is the VaR of the equal-weight portfolio as computed by the function VaR in the PerformanceAnalytics package with *mu=myMu.* *myVaRout <- VaR(indexes, weights=rep(1/4,4), p=0.95, mu=myMu, portfolio_method="component")* *myVaRout$MVaR # *[1,]* 0.04638622* So, using the default and user-defined parameter for "mu" there is corrispondence between constrained_objective and the function VaR of PerformanceAnalytics package. I repet the example but now adding CVaR as risk objective in Wcons portfolio. #Add Objective specification: CVaR with default parameter for vector "mu" (EXAMPLE 2) *CVaRObjSpec <- add.objective(portfolio=Wcons, type="risk", name="CVaR", arguments=list(p=0.95), enabled=TRUE)* #The value of the objective function is: *constrained_objective(w=rep(1/4,4), R=indexes, portfolio=CVaRObjSpec) #* ES *0.1253199* #This is the CVaR of the equal-weight portfolio as computed by the function ES in the PerformanceAnalytics package. *CVaRout <- ES(indexes, weights=rep(1/4,4), p=0.95, portfolio_method="component")* *CVaRout$MES # *[1,]* 0.1253199* Now, I repet the CVaR example with a user-defined vector for the parameter "mu". #User-defined vector "mu" *myMu = rep(0.01, 4)* #Add Objective specification: CVaR with user-defined parameter for vector "mu" *myCVaRObjSpec <- add.objective(portfolio=Wcons, type="risk", name="CVaR", arguments=list(p=0.95, mu=myMu), enabled=TRUE)* #The value of the objective function is: *constrained_objective(w=rep(1/4,4), R=indexes, portfolio=myCVaRObjSpec) #* ES *0.1217594* #This should be the CVaR of the equal-weight portfolio as computed by the function ES in the PerformanceAnalytics package with *mu=myMu.* *myCVaRout <- ES(indexes, weights=rep(1/4,4), p=0.95, mu=myMu, portfolio_method="component")* *myCVaRout$MES # *[1,]* 0.1235878* In this case, using the user-defined parameter for "mu" there is no corrispondence between the value of constrained_objective (0.1217594*) *and the result of function ES of PerformanceAnalytics package (0.1235878). Why there is no match in this case? This not the case for the matrix parameter (for portfolio) "sigma": if I use a user-defined sigma matrix, there is always corrispondence (without, obviosly, costraints that augment the penalty augmented objective function) between the value of constrained_objective (with VaR/CVaR risk objective) and the result of function VaR/ES of PerformanceAnalytics package. I hope my example is clear enough to illustrate the question. Thanks a lot for your attention. Marco On Wed, Oct 12, 2016 at 1:55 AM, Michael Weylandt < michael.weyla...@gmail.com> wrote:Hi Marco, Can you put together a minimal reproducible example [1,2] so that it's easier for others to answer your question? For this problem, I'd recommend using the edhec data distributed with PerformanceAnalytics. Thanks, Michael [1] http://stackoverflow.com/questions/5963269/how-to-make- a-great-r-reproducible-example [2] http://adv-r.had.co.nz/Reproducibility.html On Tue, Oct 11, 2016 at 11:46 AM, Marco Mastrangeli <marco.mastrang...@gmail.com> wrote:I have a question about the use of the "mu" parameter in the functions StdDev, VaR e CVaR. As reference data we can use data in the paper "Vignette: Portfolio Optimization with CVaR budgets in PortfolioAnalytics". If we use the default parameters for "mu" and "sigma", there is a match betweenconstrained_objective( w = rep(1/4,4) , R = indexes, portfolio = ObjSpec)[,1] ES 0.1253199 andout<-ES(indexes, weights = rep(1/4,4),p=0.95,portfolio_method="component")out$MES[,1] [1,] 0.1253199 as explained by the authors. If I insert a user-defined sigma matrix for the "sigma" parameter, the match is still there between this two exspressions. If I insert a user-defined vector for the "mu" parameter (for example "mu=rep(0.01,4)",the result of the two exspressions is the same only for portafolio with risk objective function StdDev and VaR, not for CVaR. VaR case:ObjSpec = add.objective(portfolio=Wcons, type="risk", name="VaR",arguments=list(p=0.95, mu=rep(0.01,4)), enabled=TRUE)constrained_objective(w=rep(1/4,4), R=indexes, portfolio=ObjSpec)[,1] VaR 0.04638622out<-VaR(indexes, weights=rep(1/4,4), p=0.95, mu=rep(0.01,4),portfolio_method="component")out$MVaR [,1] [1,] 0.04638622 CVaR case:ObjSpec = add.objective(portfolio=Wcons, type="risk", name="CVaR",arguments=list(p=0.95, mu=rep(0.01,4)), enabled=TRUE)constrained_objective(w=rep(1/4,4), R=indexes, portfolio=ObjSpec)[,1] ES 0.1217594out<-ES(indexes, weights=rep(1/4,4), p=0.95, mu=rep(0.01,4),portfolio_method="component")out$MES [,1] [1,] 0.1235878 I can't find the explanation for this thing. Thanks a lot for your attention. Marco [[alternative HTML version deleted]] _______________________________________________ R-SIG-Finance@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 questionsshould go.[[alternative HTML version deleted]] _______________________________________________ R-SIG-Finance@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.

-- Brian G. Peterson http://braverock.com/brian/ Ph: 773-459-4973 IM: bgpbraverock

# Reported by Marco Mastrrangeli <marco.mastrang...@gmail.com> # 2016-10-12 # possible issue in constrained_objective #Library library(PerformanceAnalytics) library(PortfolioAnalytics) #Returns data present in "PortfolioAnalytics" data(indexes) indexes <- indexes[, 1:4] #New Portfolio Object Wcons <- portfolio.spec(assets = colnames(indexes)) #Add box constraints Wcons <- add.constraint( portfolio = Wcons, type = 'box', min = 0, max = 1 ) #Add the full investment constraint Wcons <- add.constraint(portfolio = Wcons, type = "full_investment") # Add Objective specification: VaR with default parameter for vector "mu" # (EXAMPLE 1) VaRObjSpec <- add.objective( portfolio = Wcons, type = "risk", name = "VaR", arguments = list(p = 0.95), enabled = TRUE ) #The value of the objective function is: constrained_objective(w = rep(1 / 4, 4), R = indexes, portfolio = VaRObjSpec) # VaR 0.0499467 # This is the VaR of the equal-weight portfolio as computed by the function # VaR in the PerformanceAnalytics package. VaRout <- VaR( indexes, weights = rep(1 / 4, 4), p = 0.95, portfolio_method = "component" ) VaRout$MVaR # [1,] 0.0499467 # Now, I repet the VaR example with a user-defined # vector for the parameter "mu". # User-defined vector "mu" myMu = rep(0.01, 4) # Add Objective specification: VaR with user-defined parameter for vector "mu" myVaRObjSpec <- add.objective( portfolio = Wcons, type = "risk", name = "VaR", arguments = list(p = 0.95, mu = myMu), enabled = TRUE ) # The value of the objective function is: constrained_objective(w = rep(1 / 4, 4), R = indexes, portfolio = myVaRObjSpec) # VaR 0.04638622 # This is the VaR of the equal-weight portfolio as computed by the # function VaR in the PerformanceAnalytics package with mu = myMu. myVaRout <- VaR( indexes, weights = rep(1 / 4, 4), p = 0.95, mu = myMu, portfolio_method = "component" ) myVaRout$MVaR # [1,] 0.04638622 # So, using the default and user - defined parameter for "mu" there is # correspondence between constrained_objective and the function VaR of # PerformanceAnalytics package. # I repeat the example but now adding CVaR as risk objective in Wcons # portfolio. # Add Objective specification: CVaR with default parameter for vector "mu" # (EXAMPLE 2) CVaRObjSpec <- add.objective( portfolio = Wcons, type = "risk", name = "CVaR", arguments = list(p = 0.95), enabled = TRUE ) # The value of the objective function is: constrained_objective(w = rep(1 / 4, 4), R = indexes, portfolio = CVaRObjSpec) # ES 0.1253199 # This is the CVaR of the equal-weight portfolio as computed by the # function ES in the PerformanceAnalytics package. CVaRout <- ES( indexes, weights = rep(1 / 4, 4), p = 0.95, portfolio_method = "component" ) CVaRout$MES # [1,] 0.1253199 # Now, I repet the CVaR example with a user-defined vector # for the parameter "mu". # User-defined vector "mu" myMu = rep(0.01, 4) # Add Objective specification: CVaR with user-defined # parameter for vector "mu" myCVaRObjSpec <- add.objective( portfolio = Wcons, type = "risk", name = "CVaR", arguments = list(p = 0.95, mu = myMu), enabled = TRUE ) # The value of the objective function is: constrained_objective(w = rep(1 / 4, 4), R = indexes, portfolio = myCVaRObjSpec) # ES 0.1217594 #This should be the CVaR of the equal-weight portfolio # as computed by the function ES in the PerformanceAnalytics # package with mu = myMu. myCVaRout <- ES( indexes, weights = rep(1 / 4, 4), p = 0.95, mu = myMu, portfolio_method = "component" ) myCVaRout$MES # [1,] 0.1235878 # In this case, using the user - defined parameter for "mu" there is no # correspondence between the value of constrained_objective (0.1217594) and # the result of function ES of PerformanceAnalytics package (0.1235878). Why # there is no match in this case? # # This not the case for the matrix parameter (for portfolio) "sigma":if I # use a user - defined sigma matrix, there is always correspondence # (without, obviosly, costraints that augment the penalty augmented objective # function) between the value of constrained_objective (with VaR / CVaR risk # objective) and the result of function VaR / ES of PerformanceAnalytics # package.

_______________________________________________ R-SIG-Finance@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.