The issue with mining contracts is you can't resell the GH/s, so you're stuck whether or not it is profitable.
At least with CEX you can sell back the GH/s. There are even some trade bots that will automatically buy and sell based on the price swings. There's definitely opportunity there, but with contracts your BTC is gone.
If you're holding mining contracts for that length of time you're doing it wrong. Mining contracts can make you a lot of money if you use them correctly - targeting pump and dump new coins.