The clock of the Arduino is not perfectly accurate, that's one error.
Your signal is also probably not perfectly accurate, that's another error.
Together they add up indeed - to a whopping 0.15%! Do you really expect even better accuracy than this on anything but carefully calibrated lab equipment?