Others have had difficulties with getting a sensible fit.

http://mathematica.stackexchange.com/questions/2309/problem-with-nonlinearmodelfit/2327#2327

Perhaps some of the responses to that will help.

If I slice away most of the detail of that and restrict the number of parameters just to show a tiny example

In[1]:= v = Table[4*Sin[2 Pi x] + RandomReal[{-.5, .5}], {x, 0, 2 Pi, .05}];

Normal[NonlinearModelFit[v, y0 + A*Sin[x w], {y0, A, w}, x, Method -> NMinimize]]

Out[2]= 0.00385365 + 3.95021 Sin[0.313225 x]

In[3]:= Show[ListPlot[v], Plot[%, {x, 0, 2 Pi*20}]]

Out[3]= ...PlotSnipped...

You should definitely repeat all this, perhaps with fewer cycles and more noise and more parameters to see if you are confident you have captured the idea.

Then try it on your real data and see if the fit has looked past the noise in your data and done a good job at estimating the actual positions.

Then take a look at the second derivative and see if it is reasonable.