Keyword rankings on search engines are determined by computer algorithms that are safely guarded trade secrets. Furthermore, they are really complex, with many inputs. They are constantly evolving. It's impossible to know with precision.
With that said, it's commonly known that the biggest predictor is the number of high quality backlinks. So the main reason why you are being outranked is probably that your competition has higher quality backlinks than you.
If you'd like to outrank them, them here is a guide on how you can do that: