[R-SIG-Finance] CVaR and Penalty Augmented objective function

Brian G. Peterson brian at braverock.com
Wed Oct 12 12:21:23 CEST 2016


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.

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.weylandt at 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.mastrangeli at 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 between
>>>
>>>> constrained_objective( w = rep(1/4,4) , R = indexes, portfolio = ObjSpec)
>>>                 [,1]
>>> ES 0.1253199
>>>
>>> and
>>>
>>>> out<-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.04638622
>>>
>>>> out<-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.1217594
>>>
>>>> out<-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 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.
>>
>
> 	[[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.
>


-- 
Brian G. Peterson
http://braverock.com/brian/
Ph: 773-459-4973
IM: bgpbraverock
-------------- next part --------------
A non-text attachment was scrubbed...
Name: constrained_obj_issue.R
Type: text/x-r-source
Size: 4524 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-sig-finance/attachments/20161012/b6831678/attachment.bin>


More information about the R-SIG-Finance mailing list