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?