Every futures contract expires, so a 20-year ES history is really about 80 separate instruments glued end to end. Where you glue and how you treat the price gap at the join determine what the series actually represents.
Roll timing choices include a fixed number of days before expiry, the day volume shifts to the next month, or first-notice-day. Each produces a different series, and a strategy that only works with one particular roll convention is fitted to the convention rather than to the market.
Always test with the roll rule you will actually use live, and include the roll cost. A backtest rolling at the theoretical mid while you roll at market is quietly adding a few ticks of free money at every expiry, eight times a year.
Related: roll-adjustment, roll, contango, data-quality-check