[R] adding overall constraint in optim()

Eric Berger er|cjberger @end|ng |rom gm@||@com
Sun May 6 09:51:58 CEST 2018


Hi Michael,
A few comments
1. To add the constraint sum(wgt.vect=1) you would use the method of
Lagrange multipliers.
    What this means is that in addition to the w_i (the components of the
weight variables) you would add an additional variable, call it lambda.
    Then you would modify your optim.fun() function to add the term
 lambda * (sum(wgt.vect - 1)
2. Are you sure that you have defined Mo.vect correctly? It is a scalar the
way you have written it.
3. Similarly your definition of wgt.vect creates a scalar.

HTH,
Eric


On Fri, May 4, 2018 at 5:18 AM, Joshua Ulrich <josh.m.ulrich using gmail.com>
wrote:

> On Thu, May 3, 2018 at 2:03 PM, Michael Ashton
> <m.ashton using enduringinvestments.com> wrote:
> > Thanks Bert. But everyone on that forum wants to use finance tools
> rather than general optimization stuff! And I am not optimizing a
> traditional Markowitz mean-variance problem. Plus, smarter people here. :-)
> >
> I'm very confused by these statements.  Most of the "finance tools"
> use general-purpose global and/or stochastic optimization packages
> (e.g. rugarch uses nloptr and Rsolnp, PortfolioAnalytics uses DEoptim,
> pso, GenSA).  And most (all?) of those optimization packages have ways
> to specify box, equality, and nonlinear inequality constraints.
>
> And I can't recall the last time someone emailed the list about
> optimizing a traditional Markowitz mean-variance problem... maybe 10
> years ago?
>
> >> On May 3, 2018, at 3:01 PM, Bert Gunter <bgunter.4567 using gmail.com> wrote:
> >>
> >> You can't -- at least as I  read the docs for ?optim (but I'm pretty
> >> ignorant about this, so maybe there's a way to tweak it so you can).
> >>
> >> See here:   https://cran.r-project.org/web/views/Optimization.html
> >> for other R optimization capabilities.
> >>
> >> Also,  given your credentials, the r-sig-finance list might be a
> >> better place for you to post your query.
> >>
> >> Cheers,
> >> Bert
> >>
> >>
> >> Bert Gunter
> >>
> >> "The trouble with having an open mind is that people keep coming along
> >> and sticking things into it."
> >> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
> >>
> >>
> >> On Thu, May 3, 2018 at 10:52 AM, Michael Ashton
> >> <m.ashton using enduringinvestments.com> wrote:
> >>> Hi –
> >>>
> >>> This is giving me a headache. I’m trying to do a relatively simple
> optimization – actually trying to approximate the output from the Excel
> Solver function but at roughly 1000x the speed. 😊
> >>>
> >>> The optimization parameters look like this. The only trouble is that I
> want to add a constraint that sum(wgt.vect)=1, and I can’t figure out how
> to do that in optim.
> >>>
> >>>     Mo.vect <- as.vector(tail(head(mo,i),1))
> >>>     wgt.vect <- as.vector(tail(head(moWeightsMax,i),1))
> >>>     cov.mat <- cov(tail(head(morets,i+12),12))
> >>>     opt.fun <- function(wgt.vect) -sum(Mo.vect %*% wgt.vect) /
> (t(wgt.vect) %*% (cov.mat %*% wgt.vect))
> >>>
> >>>     LowerBounds<-c(0.2,0.05,0.1,0,0,0)
> >>>     UpperBounds<-c(0.6,0.3,0.6,0.15,0.1,0.2)
> >>>
> >>>     OptimSolution<-optim(wgt.vect, fn=opt.fun, method="L-BFGS-B",lower=
> LowerBounds,upper=UpperBounds)
> >>>
> >>>
> >>> Any thoughts are appreciated!
> >>>
> >>> Mike
> >>>
> >>> Michael Ashton, CFA
> >>> Managing Principal
> >>>
> >>> Enduring Investments LLC
> >>> W: 973.457.4602
> >>> C: 551.655.8006
> >>>
> >>>
> >>>        [[alternative HTML version deleted]]
> >>>
> >>> ______________________________________________
> >>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> >>> https://stat.ethz.ch/mailman/listinfo/r-help
> >>> PLEASE do read the posting guide http://www.R-project.org/
> posting-guide.html
> >>> and provide commented, minimal, self-contained, reproducible code.
> > ______________________________________________
> > R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide http://www.R-project.org/
> posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
>
>
>
> --
> Joshua Ulrich  |  about.me/joshuaulrich
> FOSS Trading  |  www.fosstrading.com
> R/Finance 2018 | www.rinfinance.com
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/
> posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

	[[alternative HTML version deleted]]




More information about the R-help mailing list