Hello hsjaaa,
You could do it with signals yes.
To accomplish this, you should only ever modify the node's stats (among which, speed) with a dedicated method like "set_speed(value)". You could emit the signal from there.
So something like that :
func set_speed(newSpeed : float) -> void:
speed = newSpeed
emit_signal("speed_changed", newSpeed)
Something like that should work. Of course you should do a line like that somewhere earlier in the code :
nodeThatContainsTheStats.connect("speed_changed", theKinematic2Dnode, "methodThatGetsCalledByTheSignal")
Hope this helps