Particle velocities not working as expected
Feeding the velocity into a Math or a Color Ramp node will be averaging the X,Y,Z values of the vector and this can produce unexpected results - especially where you have a mix of positive and negative values. 

Instead, you can use a Vector math Dot Product node to determine the magnitude of the Velocity by passing the Velocity into both inputs of the Dot Product (which will give the magnitude of the velocity, squared) and raising to the power of 0.5 (to square root it - to get the speed) and using this Value output as a scalar representing speed. This can then be passed through a Math node to scale it and on to a Color Ramp to generate a colour based on the speed.