How are you measuring filesize? Looking at compression_test.py, it looks like you encode a color image and use that filesize. But chroma takes bits to encode, and if you're only measuring greyscale (which is basically luma depending on what formula rgb2gray uses) then you're penalizing better chroma quality.
If you use a greyscale/luma-only metric, you have to encode greyscale from the start, not convert a color image after encoding. Otherwise you're measuring chroma bit cost, but not chroma distortion. Thus, invalid.
Actually, is PSNR-HVS-M greyscale-only as well? In that case, only the RGB-SSIM results would be valid...
And actually, thinking about it even more, converting to greyscale at the tail end just for Y-SSIM and IW-SSIM is fundamentally flawed (if it doesn't result in exactly the same bits as the luma plane), as now you're measuring distortion from an image that the codec was never asked to encode!