I'm trying to use the function FindMinimum for portfolio optimization in stead of NMinimize, since the latter is a lot slower. Also because the variance function of my portfolio is convex, locally minimizing should return the global optimum anyways. When I use the function FindMinimum however I run into a couple of different issues and difficulties. Unfortunately the specific cases where these issues occur are to elaborate to share, but I'm hoping to get a better general understanding of how I can make FindMinimum work properly. The most pressing issues are the following:

1) The function FindMinimum using the method "QuadraticProgramming" in some rare cases doesn't seem to result in the global (or even local) optimum. Even when I manually provide the optimal arguments with: "InitialPoints".

2) In some cases FindMinimum using Method->Automatic results in the error FindMinimum::baddof: Not enough degrees of freedom. Fortunately when I specify that I want to use the method "QuadraticProgramming" I do get a result. When I then try to find which of the possible methods for FindMinimum is causing this error I find that actually none of the methods when called explicitly causes this error. What is the method Automatic doing such that it can return an error that none of its sub methods returns?

3) Since issue 1 and 2 might be very hard to answer without me providing an example, helping me with this following issue might enable me to solve issue 1 and 2 by myself. I'm trying to find out what FindMinimum is doing in the background. I found that for NMinimize you can use Optimization`NMinimizeDump`$DiagnosticLevel = 3; to see what's happening in the background. Naively setting Optimization`FindMinimumDump`$DiagnosticLevel = 3; unfortunately doens't work. Is there a way to see what FindMinimum is doing?

  • 1
    $\begingroup$ A good amount of FindMinimum[] is implemented in low-level code (in contrast to NMinimize[]) so it seems unlikely to me that you can easily squeeze out diagnostics from it. Note that "QuadraticProgramming" is not exactly documented or supported, and is known to be brittle in some situations. $\endgroup$ – J. M. is away Jul 13 '16 at 14:13
  • $\begingroup$ I see. That is a bit disappointing but very good to know. I will consider trying to implement an exact quadratic program instead of this numeric one. $\endgroup$ – Karel de Wit Jul 13 '16 at 14:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.