It's part of a bigger project I can't share right now, so I'll have to isolate the section that's showing this behavior and post it -- which I think will be worth it. Thank you a ton for the help. That said, I'll mention that I checked the derivatives by hand and they're all correct. Who coulda guessed. I'll attach a run with the intermediate params dumped out.
If I generate data using the parameters amplitude=0.102, frequency=0.404, phase=0.203, offset=0.304, the solver will proceed as follows
Iteration: 0 cost: 0.441371 Amplitude: 0.0857004, Frequency: 0.481405, Phase: 0.235273, Offset: 0.298447
Iteration: 1 cost: 0.240721 Amplitude: 0.00438387, Frequency: 0.480992, Phase: -0.476709, Offset: 0.310304
Iteration: 2 cost: 0.485988 Amplitude: 0.00438387, Frequency: 0.480992, Phase: -0.476709, Offset: 0.310304
Iteration: 3 cost: 0.48616 Amplitude: 0.00438387, Frequency: 0.480992, Phase: -0.476709, Offset: 0.310304
Iteration: 4 cost: 0.487111 Amplitude: 0.00438387, Frequency: 0.480992, Phase: -0.476709, Offset: 0.310304
Iteration: 5 cost: 0.489607 Amplitude: 0.00438387, Frequency: 0.480992, Phase: -0.476709, Offset: 0.310304
Iteration: 6 cost: 0.231591 Amplitude: 0.0389326, Frequency: -0.155596, Phase: 1.45354, Offset: 0.309244
Iteration: 7 cost: 0.226107 Amplitude: 0.0328169, Frequency: -0.136398, Phase: 1.08505, Offset: 0.312284
Iteration: 8 cost: 0.224782 Amplitude: 0.0365051, Frequency: -0.123301, Phase: 0.841453, Offset: 0.314294
Iteration: 9 cost: 0.22387 Amplitude: 0.0416112, Frequency: -0.113275, Phase: 0.655842, Offset: 0.316804
Iteration: 10 cost: 0.223103 Amplitude: 0.048511, Frequency: -0.1018, Phase: 0.43861, Offset: 0.32036
Iteration: 11 cost: 0.222588 Amplitude: 0.0559479, Frequency: -0.0937488, Phase: 0.287256, Offset: 0.324101
Iteration: 12 cost: 0.222188 Amplitude: 0.065573, Frequency: -0.0847778, Phase: 0.113814, Offset: 0.329006
Iteration: 13 cost: 0.221906 Amplitude: 0.0748036, Frequency: -0.0790416, Phase: 0.0038673, Offset: 0.333645
Iteration: 14 cost: 0.221687 Amplitude: 0.0874053, Frequency: -0.0719109, Phase: -0.136117, Offset: 0.340015
Iteration: 15 cost: 0.221519 Amplitude: 0.098203, Frequency: -0.0678837, Phase: -0.214161, Offset: 0.345421
Iteration: 16 cost: 0.22139 Amplitude: 0.115207, Frequency: -0.0616707, Phase: -0.337335, Offset: 0.35398
....
So it seems to drop, come back up, go down, and stagnate. Again what's most curious is scipy.optimize.curve_fit seems to have no problem with this set of initial conditions. If this isn't enough more information to be helpful, I'll write a minimal test case and post it on github, with sincerest appreciation for your help.
Best wishes,
Evan