Hi Axel,
It is a very good question. I think it is neither a bug or incorrect data retrieving. The point here is the idea of “Continuous” Futures.
As we know futures contracts on a specific underlying asset can have different expiring dates, and they are all trading in the markets with different prices. Technically, at any time when a future contract expires in 3 months will have different prices from a future contract that expires in 6 months, in 9 months, in 12 months, etc. If we reference the one with the closest expiring date as the future’s price, at the date it expries, there would be two prices. one for the expiring contract, the other is the one expires at the next expiring date. Their prices are mostly likely different, so we see the price jumps at each expiring date.
The reason is straightforward. Recall the futures’ pricing model F(t,T) = S(t)*(1+r) ^(T-t) https://en.wikipedia.org/wiki/Futures_contract. Here F(t,T) is the future price at time t expires at time T. S(t) is the current underlying price, and r is risk free interest rate. Therefore, we can conclude that for the futures with the same underlying assets one who expires later has a higher price from the academic research purpose. (However, in the reality the one with closet expiration date usually have largest trading volume).
The Quantopian also has a lesson talking about continuous futures and how to set up the parameters(Adjustment styles, roll styles and offset)(https://www.quantopian.com/tutorials/futures-getting-started#lesson4 ) and they have a clear graph to prove the above idea.