Successful competition in a commercial enterprise often requires careful monitoring of profit margins, sales, deadlines, and many other types of business information. Businesses rely on their performance information to support strategic planning and decision making. Businesses without a system for providing accurate and timely forecasts of business information have large disadvantages relative to their competitors.
Accordingly, businesses often use computerized data to forecast events and outcomes, such as end-of-quarter revenue, end-of-month inventory, or end-of-year overhead costs. Forecasts are also used to monitor the probability of achieving some goal to support current business decisions. These tasks are quite challenging to model, especially in large commercial enterprises with large numbers of complex and ongoing transactions.
Some traditional methods forecast events using historical data. For example, a traditional method to forecast monthly revenue is to use actual revenue from previous months that are already closed and completed. Models applied to such data have limited accuracy since the forecasts are based on prior static information.
Exemplary embodiments are directed to apparatus, systems, and methods for multi-period-ahead dynamic forecasting. Embodiments provide a dynamic or updatable forecast for dynamic multi-period-ahead forecasts for a given time period. One embodiment provides a forecasting solution that makes not only one-month-ahead dynamic forecasts but also multi-period-ahead dynamic forecasts. Exemplary embodiments are useful for addressing long-range forecasting needs, such as in financial analysis or long lead time supply chain planning.
For illustration purposes, embodiments are discussed using monthly forecasts, but one skilled in the art appreciates that exemplary embodiments are applicable to a wide variety of forecasting time periods, such as minutes, hours, days, weeks, months, years, etc.
By way of example, suppose an enterprise desires to forecast events or outcomes for one or more future months. Further, suppose we are within the month n, with daily observations up to somewhere in the month. Also, suppose we have all the historical data (daily and monthly) up to month n−1 available. Exemplary embodiments provide a forecast into one or more future months. In other words, forecasts are provided for month n+k, where k is any non-negative integer or number (such as 0, 1, 2, 3, etc.). When k=0, the forecast is for the current month n, made with historical data observations up to month n−1, the last month before the current month.
According to block 100, a monthly forecasting algorithm is used on the complete monthly data to forecast into a future month. For illustration, Ai denotes the actual data for month i. When in month n, we have A1, A2, . . . , An−1. Exemplary embodiments use a monthly forecasting algorithm such as Holt-Winters algorithm or an ARIMA (Auto-Regressive Integrated Moving Average) model to make a 1-step-ahead (that is month n), a 2-step-ahead (that is month n+1), or other multi-month-ahead forecast.
The monthly forecasting algorithms used in block 100 are static. In other words, these algorithms will not change or get updated as data for the current month is received. Thus, such algorithms do not utilize daily observations in the current month n.
For illustration, SFn+k denotes the monthly static point forecast for month n+k. With a confidence level specification, exemplary embodiments also get a confidence interval prediction for month n+k. These confidence interval predictions are denoted by SFUn+k, and SFLn+k, respectively for the upper bound and lower bound, both of which are static.
According to block 110, in month n, a dynamic forecast algorithm is used to forecast the total amount in month n. By way of example, one such dynamic forecast algorithm is a Bayesian dynamic forecast algorithm described in U.S. patent application entitled “Method and Systems for Cumulative Attribute Forecasting Using a PDF of a Current-to-Future Value Ratio” having Ser. No. 10/959,861, filed Oct. 6, 2004 and incorporated herein by reference.
With the daily data observed so far in month n, exemplary embodiments calculate a forecast Fn for the month. This forecast is dynamic and gets updated daily. In other words, as new data is received or observed during the month n, this data is used in the forecast. Exemplary embodiments enable updates to be provided and used on different time periods, such as daily, hourly, every minute, continuously, etc. For illustration, denote by DFn the generated dynamic forecast for month n.
According to block 120, exemplary embodiments use a monthly forecasting algorithm model to make a multi-month-ahead forecast, with the input time series data {A1, A2, . . . , An−1, DFn}. Examples of such forecasting algorithms include, but are not limited to ARIMA and Holt-Winter algorithms. For illustration, denote by DFn+k the dynamic point forecast for month n+k generated this way, for k≧1. In one exemplary embodiment, DFn+k is dynamic since the underlying input data contains a dynamic component, which is DFn, which changes every day in month n.
According to block 130, the confidence interval predictions generated with the static monthly model in block 100 are used to constrain the dynamic point prediction obtained in block 120. Specifically, for a future month n+k, if DFn+k is above the upper bound SFUn+k, or below the lower bound SFLn+k, then use the corresponding bound value as the final point prediction. If DFn+k is within the interval (i.e., the bounds), then use DFn+k as the final point prediction. The bounding step insures less variability for the forecasts. Note that when k=0, the original dynamic point forecast DFn+k=DFn, which is produced in above using the daily dynamics in the forecast month n, may not be completely the same as the bounded dynamic forecast DFn+k=DFn, which is produced with the additional bounding step. As mentioned in herein, for the purpose of the reduced forecast variability, we use the bounded dynamic point forecast DFn, which provides an improved methodology.
Exemplary embodiments provide a forecasting solution that generates forecast for a multi-period-ahead period. Further, forecasts are dynamically updatable in real-time as incremental new information in a current period is generated and received. The daily forecast is also contained in a reasonable range obtained from a static monthly model, and hence is not subject to the large variability stemmed from the few observations within the current period in the early stage of dynamic updating.
Exemplary embodiments provide a multi-period-ahead forecasts that include the current time (for example, month) in which the forecast is being performed. Further, such forecasts provide updating beyond the current forecast period (for example, into future months beyond the current month).
Once the forecasting solution is generated, it can be used in a variety of ways. By way of example, forecasts for a multi-period-ahead period are displayed on a computer, transmitted over one or more networks, used in computational analysis or system, and/or delivered to a client through a web service (such as software systems used to support interoperable machine to machine interaction over a network).
In one embodiment, the processor unit includes a processor (such as a central processing unit, CPU, microprocessor, application-specific integrated circuit (ASIC), etc.) for controlling the overall operation of memory 310 (such as random access memory (RAM) for temporary data storage, read only memory (ROM) for permanent data storage, and firmware). The processing unit 340 communicates with memory 310 and forecasting algorithms 320 via one or more buses 350 and performs operations and tasks necessary to provide dynamic multi-period-ahead forecasts for a given time period. The memory 310, for example, stores applications, data, programs, algorithms (including software to implement or assist in implementing embodiments in accordance with the present invention) and other data.
In one exemplary embodiment, one or more blocks or steps discussed herein are automated. In other words, apparatus, systems, and methods occur automatically. As used herein, the terms “automated” or “automatically” (and like variations thereof) mean controlled operation of an apparatus, system, and/or process using computers and/or mechanical/electrical devices without the necessity of human intervention, observation, effort and/or decision.
The methods in accordance with exemplary embodiments of the present invention are provided as examples and should not be construed to limit other embodiments within the scope of the invention. For instance, blocks in diagrams or numbers (such as (1), (2), etc.) should not be construed as steps that must proceed in a particular order. Additional blocks/steps may be added, some blocks/steps removed, or the order of the blocks/steps altered and still be within the scope of the invention. Further, methods or steps discussed within different figures can be added to or exchanged with methods of steps in other figures. Further yet, specific numerical data values (such as specific quantities, numbers, categories, etc.) or other specific information should be interpreted as illustrative for discussing exemplary embodiments. Such specific information is not provided to limit the invention.
In the various embodiments in accordance with the present invention, embodiments are implemented as a method, system, and/or apparatus. As one example, exemplary embodiments and steps associated therewith are implemented as one or more computer software programs to implement the methods described herein. The software is implemented as one or more modules (also referred to as code subroutines, or “objects” in object-oriented programming). The location of the software will differ for the various alternative embodiments. The software programming code, for example, is accessed by a processor or processors of the computer or server from long-term storage media of some type, such as a CD-ROM drive or hard drive. The software programming code is embodied or stored on any of a variety of known media for use with a data processing system or in any memory device such as semiconductor, magnetic and optical devices, including a disk, hard drive, CD-ROM, ROM, etc. The code is distributed on such media, or is distributed to users from the memory or storage of one computer system over a network of some type to other computer systems for use by users of such other systems. Alternatively, the programming code is embodied in the memory and accessed by the processor using the bus. The techniques and methods for embodying software programming code in memory, on physical media, and/or distributing software code via networks are well known and will not be further discussed herein.
The above discussion is meant to be illustrative of the principles and various embodiments of the present invention. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.