[R] adding overall constraint in optim()

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


typo:  lambda * (sum(wgt.wect) - 1)

On Sun, May 6, 2018 at 10:51 AM, Eric Berger <ericjberger using gmail.com> wrote:

> 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/posti
>> ng-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/posti
>> ng-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/posti
>> ng-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
>

	[[alternative HTML version deleted]]




More information about the R-help mailing list