You might want to look into actually an old method known as Evolutionary Programming by L. Fogel. I have used it inside of a network packet switch and have found some really interesting properties when they are controllers. (An Online Evolutionary Programming Method for Parameters of Wireless Networks.)
The basic idea is to have a finite state machine which will the prediction, you then mutate that machine and check the mutants against the previous predictions. If any of those new mutants score higher they become the current good predictor. There is therefore always a predictor to look at the current model, and you run the improvements in the background.
You can also deal with data that is a time series, you give earlier predictions less weight than later.