There are 2 options for how to test this model:
The first option is to split the data into 2 pieces: "training" and "testing".
The training data will contain all the data except some last years (1-3). The test data will contain the remaining piece of data. You train the ML model using the "training" piece and evaluate the performance using the "testing" piece (you can use the backtester for this). It will give you a rough estimate of how your model will perform in the contest. Before submitting, you can train your model using all available data.
The second approach is more tricky. You can slice the data into multiple training and testing pieces.
For example, if you want to evaluate a model for futures, you need the output which contains 16 years of data. Obviously, the rare model will work for so long time without retraining. So you can decide, that your model can work properly for 4 years. In that case, you need to train and evaluate your model 4 times (min). Suppose, your model needs 10 years for training, then you have to perform these passes:
training piece: 1995-04-18 - 2005-04-18
testing piece: 2005-04-19 - 2009-04-19
training piece: 1999-04-18 - 2009-04-18
testing piece: 2009-04-19 - 2013-04-19
training piece: 2003-04-18 - 2013-04-18
testing piece: 2013-04-19 - 2017-04-19
training piece: 2007-04-18 - 2017-04-18
testing piece: 2017-04-19 - 2021-04-19
When you finish these passes, you will get 4 outputs. You can join these outputs and estimate the performance of your model.
Before sending your model, you can train your model using 10 last years of data.
I guess you need the second approach. I am working on the ML example right now. I will add the necessary code for this option.
I notify you when I finish and publish this example.