1. A method of forecasting comprising: designating a last portion of time series data as a base pattern; searching a remaining portion of the time series data that precedes the base pattern for one or more candidate patterns using the base pattern; identifying one or more candidate forecasts corresponding to the one or more candidate patterns; and calculating a set of final forecast values based on the one or more candidate forecasts.