How to find the best Q format representation?
You need to calculate the transfer function from your input to each individual state variable.

This depends A LOT on how you implement your filter: I strongly recommend splitting it in second order sections and using either Direct Form I or transposed Form II for each section. Section order and pole/zero pairing can also make a big differences. Unless you have a REALLY good reason not to, follow this recipe: https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.zpk2sos.html

Once you have your filter topology sorted out you need to calculate all the transfer functions from the input to the state variables and look at the  frequency responses. At this point you can also play around with the individual section gains to make this as smooth as possible and manage outliers and peak frequencies.

Then you can pick the Q based on the maximum gain over all frequencies in each transfer function. Add another 3 dB of headroom for transients (sine waves are NOT the worst case signal).