Yeah 18Hz is the ceiling under basically ideal conditions - open sky, low satellite constellation load, and you need to make sure you're not bottlenecked on the UART baud rate (a lot of people leave it at 9600 and wonder why they're dropping frames). Bump it to 115200 and double-check your NMEA sentence output isn't cluttered with sentences you don't need, trimming that down freed up a solid 3-4Hz for me on a similar setup.