My first problem when tackling this question was thinking of this in a standard 3d game context. I’m not sure what you plan on doing with this information but what you want to do is unrotate your forward vector based on the unit vector of your current relative velocity.
There is a handy tool for visualizing this: Dot Product
Which can help you wrap your head around dot product and vector math while acting as a useful accuracy checker.
Looking through your math, It looks like you are doing everything correctly. It is possible to get up to 180 degree difference between the two vectors, does your debug string stop at 180? The only other variable at play is the DeltaTime. Is your delta time being referenced correctly? Hold angle is not declared in your snippet, is it being assigned or changed elsewhere? Is the forward vector pointing where you think it is?