[R-SIG-Finance] solnp Problem Inverting Hessian

Michael Ashton m.ashton at enduringinvestments.com
Tue Dec 15 16:45:42 CET 2015


Understood. I was just noting that Ret.vect spans zero, and thus some projected returns will always be pretty close to zero.

> On Dec 15, 2015, at 10:43 AM, Paul Gilbert <pgilbert902 at gmail.com> wrote:
>
> Just to be clear, when I said "difference between the largest and
> smallest elements" I am think of the absolute value. It is the scale not
> the sign that causes problems in optimization. And I cannot commenting
> on whether you have the correct objective function, just pointing out
> what would happen numerically with the one you specified.
>
> Paul
>
>> On 12/15/2015 10:17 AM, Michael Ashton wrote:
>> That is very interesting. Actually some of the projected returns are
>> negative, some are very close to zero. None is exactly zero, which I
>> guess is why it's not singular, but that's why it's ill-conditioned.
>> Very interesting. And hard to solve...if I add 5% to all returns will
>> I still get the same portfolio? Seems to me intuitively I shouldn't
>> since the proportional risk/return tradeoff then is greater for the
>> assets on the low end of the spectrum, but I might be wrong.
>>
>> -----Original Message----- From: Paul Gilbert
>> [mailto:pgilbert902 at gmail.com] Sent: Tuesday, December 15, 2015 9:58
>> AM To: Michael Ashton Cc: Michael Weylandt;
>> r-sig-finance at r-project.org Subject: Re: [R-SIG-Finance] solnp
>> Problem Inverting Hessian
>>
>> I have not been paying close attention and I've missed something in
>> this thread, but ...
>>
>> I think the hessian in the optimization will be the second derivative
>> of this function
>>
>>>>>> opt.fun <- function(wgt.vect)
>>>>>> {-crossprod(wgt.vect,t(Ret.vect))}
>>
>> WRT  wgt.vect. If there are zero elements in Ret.vect then that
>> hessian will be singular. And if there are orders of magnitude
>> difference between the largest and smallest elements in Ret.vect then
>> the hessian will be ill-conditioned.
>>
>> The ill-conditioned case is a numerical problem and you might solve
>> it with a different algorithm, or by better scaling. The zero case is
>> a theoretical problem, there is not a unique optimal point but rather
>> whole continuum of optimal points (your parameters corresponding to
>> the zero elements will not make any difference in the function
>> value).
>>
>> HTH, Paul
>>
>>> On 12/14/2015 11:39 PM, Michael Weylandt wrote:
>>> (+list -- I'm not a numerical linear algebra expert or portfolio
>>> optimization expert, but there are a number on this list who might
>>> chime in)
>>>
>>> That is quite high, and almost certainly problematic.
>>>
>>> I'm not sure what an acceptable bound is (will depend on your
>>> solver), but that's almost certainly above it for any algorithm
>>> which will require inverting cov.mat.
>>>
>>> Two things you could try: - use a different (non-Hessian-using)
>>> optimization algorithm; - use some form of shrinkage/regularization
>>> (Ledoit-Wolf is a common choice) to tame your covariance matrix.
>>>
>>> Michael
>>>
>>> On Mon, Dec 14, 2015 at 10:10 PM, Michael Ashton
>>> <m.ashton at enduringinvestments.com> wrote:
>>>> Well, not sure whether this makes any sense but kappa(cov.mat)
>>>> gives me 11148245007.
>>>>
>>>> That seems large. But I am not sure what it is supposed to be.
>>>>
>>>> -----Original Message----- From: Michael Weylandt
>>>> [mailto:michael.weylandt at gmail.com] Sent: Monday, December 14,
>>>> 2015 9:29 PM To: Michael Ashton Cc: r-sig-finance at r-project.org
>>>> Subject: Re: [R-SIG-Finance] solnp Problem Inverting Hessian
>>>>
>>>> What's the condition number of your correlation/covariance
>>>> matrix? (?kappa)
>>>>
>>>> I think I've used quadprog for portfolio optimization with
>>>> success, but it's been a while.
>>>>
>>>> MW
>>>>
>>>> On Mon, Dec 14, 2015 at 8:06 PM, Michael Ashton
>>>> <m.ashton at enduringinvestments.com> wrote:
>>>>> Do you have a suggestion for such? I have in the past tried
>>>>> fPortfolio, but it would not allow me to specify my own
>>>>> projected return vectors rather than the historical returns of
>>>>> the series (which is exactly backwards).
>>>>>
>>>>> As for whether the matrix is comfortably non-singular...I
>>>>> suppose it depends in a Clintonian way on the meaning of
>>>>> "comfortably," but I can create a Cholesky decomposition
>>>>> without it blowing up, which is usually how I can tell if I
>>>>> have done something stupid. Well, stupider than normal.
>>>>>
>>>>> -----Original Message----- From: Michael Weylandt
>>>>> [mailto:michael.weylandt at gmail.com] Sent: Monday, December 14,
>>>>> 2015 8:32 PM To: Michael Ashton Cc:
>>>>> r-sig-finance at r-project.org Subject: Re: [R-SIG-Finance] solnp
>>>>> Problem Inverting Hessian
>>>>>
>>>>> The Hessian is the matrix of second derivatives
>>>>> (https://en.wikipedia.org/wiki/Hessian_matrix) -- in scalar
>>>>> terms, you're finding a point where the second derivative is
>>>>> zero and then trying to divide by the second derivative to
>>>>> calculate the step size.
>>>>>
>>>>> I haven't gone through your code in any detail, but I'd start
>>>>> by checking the covariance matrix since that's proportional to
>>>>> the Hessian of your objective function. Is it (comfortably)
>>>>> non-singular?
>>>>>
>>>>> Since you're just solving the standard Markowitz problem, you
>>>>> might try a simpler (quadratic/convex) solver instead of a
>>>>> general non-linear solver. Should behave a bit better.
>>>>>
>>>>> Michael
>>>>>
>>>>>
>>>>> On Mon, Dec 14, 2015 at 6:13 PM, Michael Ashton
>>>>> <m.ashton at enduringinvestments.com> wrote:
>>>>>> I must admit to being flummoxed here, mainly because my
>>>>>> linear algebra was 25 years ago and I can't remember what a
>>>>>> Hessian is.
>>>>>>
>>>>>> I have a matrix of 60 securities' weekly returns, along with
>>>>>> 60 projected returns. The returns are in a vector called
>>>>>> Ret.vect and the covariance matrix of weekly returns in
>>>>>> cov.mat . I have the minConstraints and maxConstraints that
>>>>>> the parameters are permitted to take. I cycle through
>>>>>> targeted risks and get the same error for each risk
>>>>>> targeted...below I have removed the loop to focus on the
>>>>>> risk=0.002.
>>>>>>
>>>>>> wgt.vect=c(rep(1/60, 60)) constr.fun <- function(wgt.vect)
>>>>>> {; c1 = sqrt(crossprod(t(wgt.vect %*% cov.mat),wgt.vect)); c2
>>>>>> = sum(wgt.vect); return(c(c1,c2)); } ineqconstr.fun <-
>>>>>> function(wgt.vect) { wgt.vect[1:60]; } opt.fun <-
>>>>>> function(wgt.vect) {-crossprod(wgt.vect,t(Ret.vect))}
>>>>>>
>>>>>> OptimSolution <-
>>>>>> solnp(wgt.vect,opt.fun,constr.fun,eqB=c(0.002,1),ineqconstr.fun,ine
> qL
>>>>>> B =minConstraints,ineqUB=maxConstraints)
>>>>>>
>>>>>> I get the following error: solnp--> Solution not
>>>>>> reliable....Problem Inverting Hessian.
>>>>>>
>>>>>> Well, that doesn't tell me very much! The parameters
>>>>>> (weights) that are output for each run, as I cycle through
>>>>>> the weights, are very scrambled...lots of little allocations,
>>>>>> rather than clumping as you would expect to happen especially
>>>>>> at the risky and riskless ends of the spectrum.
>>>>>>
>>>>>> Can anyone with more math than me give me a helping hand on
>>>>>> the Hessian?
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>>
>>>>>> Mike
>>>>>>
>>>>>> Michael Ashton, CFA Managing Principal
>>>>>>
>>>>>> Enduring Investments LLC W: 973.457.4602 C: 551.655.8006
>>>>>>
>>>>>>
>>>>>> ________________________________ This email and any
>>>>>> attachments are confidential and inte...{{dropped:9}}
>>>>>>
>>>>>> _______________________________________________
>>>>>> 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.
>>>>>
>>>>> This email and any attachments are confidential and intended
>>>>> only for the recipient noted above. You are hereby notified
>>>>> that any use, printing, copying or disclosure is strictly
>>>>> prohibited without the permission of Enduring Investments LLC.
>>>>> For further information please contact:
>>>>> Management at EnduringInvestments.com; (973) 457-4602.
>>>>
>>>> This email and any attachments are confidential and
>>>> in...{{dropped:6}}
>>>
>>> _______________________________________________
>>> 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.
>>
>> This email and any attachments are confidential and intended only for
>> the recipient noted above. You are hereby notified that any use,
>> printing, copying or disclosure is strictly prohibited without the
>> permission of Enduring Investments LLC. For further information
>> please contact: Management at EnduringInvestments.com; (973) 457-4602.
>>

This email and any attachments are confidential and inte...{{dropped:6}}



More information about the R-SIG-Finance mailing list