Plaque It!
Sponsored by: Flash of Genius |
[0001] This application is related to, and claims the benefit of the earlier filing date under 35 U.S.C. § 119(e) of, U.S. Provisional Patent Application filed Mar. 12, 2003 (Ser. No. 60/454,086; Attorney Docket: 01030-1001), entitled “Financial Modeling and Forecasting System” ; the entirety of which is incorporated herein by reference.
[0002] The present invention relates to data processing, and more particularly to a software system that supports enterprise data collection to build large scale simulation models.
[0003] Spreadsheets have an ubiquitous role in the corporate decision making process. However, despite the fact that an ever increasing amount of information is available in near-real time in an enterprise, business planning involving spreadsheets fails to take advantage of such up to date information, as the use of these spreadsheets is still ad-hoc and labor intensive. For example, aggregation of all the spreadsheets in an organization into a master model of the corporation is not within the contemplation of traditional business practices. Logistically, locating a current version of every spreadsheet is a significant and arduous task. Thus, conventional business modeling lacks coordination and optimal effectiveness.
[0004] In particular, many businesses use spreadsheets for business models, sales forecasts, product profitability estimates, partnership models, Merger and Acquisition (M&A) analysis and a host of other business decisions. Unfortunately, spreadsheet store models in files which are typically scattered on individual hard drives around the enterprise, inaccessible, who-knows-when or by-who updated, and available only if that person is known to have the information, and is physically present in the office to transmit the file (e.g., by e-mail, etc.).
[0005] In other approaches, some organizations use software more sophisticated than spreadsheets for forecasting sales or product profitability. However, these software lack applicability to varying types of organizations and/or products. As a result, the users who create and use spreadsheets in a modern corporation can only create thousands upon thousands of knowledge islands that cannot be integrated into a comprehensive model of corporate activities and opportunities.
[0006] Furthermore, it is noted that spreadsheets are not suitable for truly effective modeling. The traditional spreadsheet paradigm provide a method of calculating the values of cells on a grid using fixed formulas that refer to other cells containing fixed formulas or fixed values. Each cell displays the value of the formula it contains. Formulas cannot alter other cells or insert or delete cells. Cells are the only method of storing values. Formulas can be recomputed automatically when any cell referred to by that formula changes. It is noted that only scalar types are supported. Some spreadsheets support formulas that return arrays. This is a mechanism to save memory, and has no functional difference from using individual cells and formulas to accomplish the same result. For example, once constructed, arrays cannot shrink or grow, a feature of arrays in most computer languages. Another drawback is that the user cannot write iterative algorithms using formulas, because there are no looping constructs and no function definition constructs available in the formula language.
[0007] Certain spreadsheets include so-called “macro” or “scripting” languages, which are essentially traditional procedural programming languages such as BASIC. These languages allow scripts to be written that use iteration to calculate values or modify the spreadsheet. A key drawback is that these features require substantial additional skill and sophistication from the user. These languages introduce variables and formulas that not shown on the spreadsheet grid. Also, traditionally, spreadsheet formulas cannot refer to variables created by scripts. Scripts must output their results by modifying spreadsheet cells or by being called as a function in a formula. Many errors that may occur in a script, such as references to non-existent cells, can only be detected as run-time errors, rather than design-time errors. The primary advanced data structure available to the scripts for manipulation and data storage is the two or three dimensional spreadsheet document itself. Conventionally, there are no specific methods or structure of these scripting languages that are designed specifically to facilitate simulation and aggregation of simulations.
[0008] Largely because of their inherent structure, spreadsheets encounter problems with respect to handling probabilistic inputs, building simulations, handling decision trees and resource dependence, re-using models, aggregating models, and re-using summary models. Building up a scaled up model of a large business with all of the varied contingencies and probabilities has not been feasible under conventional approaches. These problems are so deeply embedded in the design of spreadsheets that a solution to this collection of problems no longer fits the common conception of the term spreadsheet.
[0009] Therefore, there is a need for a system that addresses a number of drawbacks associated with conventional spreadsheets used for business models, sales forecasts, product profitability estimates, partnership models, and mergers and acquisition analysis, as well as other business decisions.
[0010] These and other needs are addressed by the present invention, which provides a software system (i.e., the Forecast and Modeling system) that supports enterprise data collection to build large scale simulation models, which can be linked into a single up-to-date model of planned corporate activity and options. The software system advantageously provides re-usable financial components, and enables auditing and analysis of historical plans and beliefs. A client-server approach is employed to implement the following representative functionalities: (1) accessibility, accountability, and auditability; (2) data collection; (3) financial data publishing; (4) financial modeling (in a multi-user collaborative environment); and (5) reporting. For accountability, a server program provides authentication of users. The client program enables creation (or uploading) of financial models, and controls user access to such models. The server program records material activities of the users, along with a time stamp, user identifier, and associated change. In terms of data collection, the client program can accommodate fuzzy data by allowing the user to enter variables with any number of representations (e.g., a range of values, an optional confidence factor, a curve, etc.). The server program, in support of data publishing, permits the users to name each model component and optionally attach explanatory comments; the users through the client program can access model components when properly parameterized. With respect to financial modeling, the Forecast and Modeling system also incorporates a query language to assist in analysis and reporting of computed results. Additionally, the Forecast and Modeling system supports synchronization of changes by multiple clients operating concurrently, thereby enabling multi-user collaboration of financial models. As regards model validation, a method is implemented to allow the user to submit a test query, which enables highlighting of a summary query. The above approach advantageously provides a robust, flexible, and accurate business forecasting and modeling tool.
[0011] According to one aspect of the present invention, a method for providing forecasting and modeling is disclosed. The method includes collecting data in a multi-user collaborative environment; and generating a financial model with re-usable financial components based upon the collected data, wherein the financial model supports user approval of selected ones of the financial components.
[0012] According to another aspect of the present invention, a system for providing forecasting and modeling is disclosed. The system includes means for collecting data in a multi-user collaborative environment over a data network; and a modeling module configured to generate a financial model with re-usable financial components based upon the collected data, wherein the financial model supports user approval of selected ones of the financial components.
[0013] According to yet another aspect of the present invention, a method for providing collaborative forecasting and modeling is disclosed. The method includes storing a request object submitted by a first user and destined for a second user, wherein the request object requests information relating to a financial model, and the request object includes one of an activator and program to collect the information and to validate a response from the second user. The response object conforms to a class interface specified by the first user. The method also includes routing the request object to a second user, wherein the second user selectively delegates responsibility for responding to the request object to a third user.
[0014] Still other aspects, features, and advantages of the present invention are readily apparent from the following detailed description, simply by illustrating a number of particular embodiments and implementations, including the best mode contemplated for carrying out the present invention. The present invention is also capable of other and different embodiments, and its several details can be modified in various obvious respects, all without departing from the spirit and scope of the present invention. Accordingly, the drawing and description are to be regarded as illustrative in nature, and not as restrictive.
[0015] The present invention is illustrated by way of example, and not way of limitations, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
[0016]
[0017]
[0018]
[0019]
[0020]
[0021] A system, method, and software for forecasting and modeling are described. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It is apparent, however, to one skilled in the art that the present invention may be practiced without these specific details or with an equivalent arrangement. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
[0022]
[0023] Because of the way spreadsheets developed and evolved, they have a number of notable problems when used in the context of corporate decision making. The first set of problems is caused by the fact that spreadsheets are stored as documents. That is, individual files on individual hard drives. Specifically, the document storage method causes problems of accessibility, accountability, and auditability, as well as data collection and data publishing. Accessibility involves the ability of users to retrieve the data if they are authorized to access it. For example, the Chief Financial Officer (CFO) of a corporation is generally authorized to see all spreadsheets at that corporation, but if that spreadsheet is on a hard drive on a computer across the country that is turned off at 5 p.m., or on a laptop at the home of an employee who is on vacation, then that CFO simply cannot access that spreadsheet until a person is available to intervene. Thus, accessibility of spreadsheets is poor.
[0024] In terms of accountability, which relates to data only being viewed or changed by the person authorized to do so, spreadsheets are also lacking. To a certain extent, some organizations have developed ad hoc methods to address this concern. With respect to viewing restrictions, for example, one traditional approach is to only e-mail spreadsheets to users who the sender believes are authorized to view the data. The key weakness of this policy is that the sender has to know the list of users who are authorized to view the spreadsheet. Each additional person who receives a spreadsheet reduces the level of accountability through potential error or malice. Different corporate cultures have varying degrees of secrecy compartmentalization, and employees become acculturated to the rules of their particular environment, but relying on this to secure data is not a terribly rigorous method of accountability.
[0025] Furthermore, in general, spreadsheets are models created by one person who needs data from other users. If the spreadsheet is mailed to another person so that that person can enter data, then it is possible for that person to make alterations to other parts of the spreadsheet, for example, underlying formulas. To guard against potential illegitimate changes to the spreadsheet, the sender would need, for example, to copy the data of interest back into their original copy, rather than simply using the document sent back. Some spreadsheets possess a feature that allows locking cells. By applying a password to the document, only unlocked cells can be modified. However, only one set of cells may be marked unlocked. If several individuals are to contribute to a spreadsheet, there is no way to specify which individuals are allowed to change which cells. Also, password cracking programs for spreadsheets are easily obtainable on the Internet, so this approach is not failsafe against malice. Clearly, accountability of spreadsheet data is poor.
[0026] While accountability relates to restricting access based on authorization, auditability involves determining who made what changes when (and “who knew what when”. Spreadsheets are updated constantly over their lifetimes, with new assumptions and new views and new formulas. By default, spreadsheets just save the changes directly over the previous version. Saving old versions is a purely manual process on the part of the user. When the user deems it important to save an old version, they typically adjust the filename accordingly, by adding a date, or a version number. Therefore, it is difficult to determine which user has made a change to a spreadsheet, and generally, only the date and time of the most recent change can be determined by looking at the time stamp on the file itself; the time stamp can also be readily altered. For instance, if a CFO wants to know the answer to a regulator's query (“What were your business forecasts and models indicating on the last day of the 4
[0027] It is noted that a traditional spreadsheet programs (e.g., Microsoft® Excel) permit concurrent updates by multiple users, but this is done without reasonable controls on accountability and without discovery and notification services. Such programs basically permit multiple users to work on the spreadsheet simultaneously, by effectively connecting each person's keyboard and mouse to the same document. One drawback thus is that the feature is not designed to work asynchronously, like e-mail, wherein each user can respond on his/her own schedule. Another flaw is that each of the users who are granted access can make changes without accountability. The next shortcoming is that there is no central location to discover spreadsheets waiting for update. If a user is to respond to three different individuals requests for information, it is necessary to determine how to access each different computer over the corporate local area network (LAN) using the spreadsheet program, and these individuals would have to leave the document and program open until the user responded. The only way for one person to notify another person of a request for data would be via another channel (i.e., e-mail or a telephone call).
[0028] From the above discussion, it is observed that the document model of spreadsheets possesses many drawbacks with respect to accessibility, accountability, and auditability. Moreover, this document model also has shortcomings in terms of data collection and updating, as explained below.
[0029] As mentioned earlier, the document model is inefficient from the perspective of collecting data and updating the models with the latest information. For example, if a spreadsheet has cells that need to be entered by three different users, the creator of the spreadsheet has typically only two options. The first option is to send the spreadsheet to each of the three users, and have them fill in the result and e-mail it back. Thereafter, the sender has to integrate the three responses. In the second option, each recipient could be asked to route to the following recipient in sequential order; however, this is likely to introduce a bottleneck problem. By way of example, if the first recipient is out of the office, the second and third recipients cannot provide their inputs, thereby collectively delaying the process. Another aspect of this problem is that there is no effective way to indicate a continuing interest in a set of data. Each user that has ever been asked for data could conceivably keep a list of data provided to others, and each time that data changed (for example, raw material costs), volunteer that information to the original requester. However, there is no way of knowing whether the original requestor still seeks the input, or has that responsibility.
[0030] Additionally, reliable and automated data publishing is very difficult with spreadsheets. Assume that a spreadsheet is utilized with the standard overhead factor per employee, the cost of capital, and the loaded cost per square foot of office space that should be shared with all analysts. Despite the presence of inter-document linking as a feature in most spreadsheets, there is no mechanism to link spreadsheets located on different computers effectively. The spreadsheet could be e-mailed to everyone, but if different users are authorized to see different data, multiple mailing lists have to be maintained. Inter-document linking is very fragile, as it depends on the consistent directory structures, which themselves are largely set up as a matter of user's personal preference.
[0031] The Forecast and Modeling system
[0032] The system
[0033] The Forecast and Modeling system
[0034] The Forecast and Modeling system
[0035] In addition, the Forecast and Modeling system
[0036] The Forecast and Modeling system
[0037] Traditionally, OLAP operates by converting data from transactional databases (i.e., point-of-sale and inventory data), and messaging the data in a format that allows for interactive querying of the data; such a format is denoted a “hyper-cube.” Preparing a hyper-cube conventionally requires substantial advance planning. For example, data is transferred to the hyper-cube data structure nightly because the process is very data intensive. Typically, analysts will then study this data for trends or analyze the data profitability by category (e.g., what was our highest margin product in a certain location? What are same store profits compared to one year ago?)
[0038] The general operation of the Forecast and Modeling system
[0039]
[0040]
[0041] It is noted that all object-oriented programming techniques are reducible to procedural programming techniques or in general to any technique which is Turing machine equivalent. For example, the term class can be read as “a data structure and all of the functions that operate directly on it.”
[0042] The Forecast and Modeling system
[0043] To appreciate the modeling features as provided by the Forecast and Modeling system
[0044] For instance, it is recognized that spreadsheets have difficulty with two types of modeling: probabilistic and iterative. Decision trees and resource dependence are also difficult to model. Spreadsheets have no facilities for re-using models, aggregating models, and re-using summary models. Spreadsheets are adequate for building a model that relates input variables to output variables. However, when forecasting, there is often little confidence in the inputs. Each input to a model may need to be a range of numbers. For example, raw material prices may range from $1/lb to $2/lb. There may be a belief about the most likely amount, say $1.52/lb. Transportation costs may range from $0.20/lb (rail) to $3/lb (air). These ranges, under certain scenarios, are considered relatively “accurate” ; while under other conditions, these same ranges are characterized as “fuzzy.” It is noted that both of these terms apply equally well. The “accuracy” in this case may appear to have a counter-intuitive meaning. For example, if it is anticipated that the yield on the 10 Year T-Bond next year will be 5.5%, then that value can be characterized as precise. However, it might be more accurate to say that the yield will be between 4% and 6%, with a confidence level of 95%. The term “fuzzy” data can be intuitively easier to understand in this context. Because the future is unknown, “fuzzy” may often be a more accurate answer than an arbitrarily precise answer.
[0045] Because spreadsheets require tedious duplication of formulas or entire documents to model each alternative scenario, such painstaking approach encourages spreadsheet builders to discard ranges of numbers and just consider the mid-point. Spreadsheet users accordingly would have to perform substantial extra work just to consider the options “low, likely, high” on a single input variable. However, each input variable which has a range of potential values contributes to an exponential increase in the number of outcomes that must be considered; a few as ten input variables that span a range could result in a thousand potential outcomes. Using a non-linear solver to maximize or minimize values of interest (e.g. profit) is one approach to this problem. Another approach is to use a Monte-Carlo simulation to estimate the most probable outcome based on probabilistic inputs.
[0046] Probabilistic inputs expressed as ranges are just one consideration. Probabilities can be characterized by distributions, confidence intervals, triangles, or even discrete values. For example, a variable could have a value of 7.5 with an expected standard deviation of 2.5. The value could be from 5 to 10 with an 80% confidence factor. The value could be 5 to 10, but likely 7. The value could be $9.95, $14.95, or $19.95, but no values in between.
[0047] It is also recognized that a systematic mechanism to collect more accurate estimates is needed to feed into tools that support analysis of probabilistic models. Typically, what happens with current tools is that a person who is asked to provide a cost estimate, will provide an average of recent costs. However, it is extremely valuable for an analyst to actually collect enough recent costs to be able to characterize the statistical distribution of those costs. This will allow the analyst to use more advanced tools to derive more accurate forecasts. For example, a Chief Executive Officer (CEO) might be told that first year manufacturing costs for a new product will be $100 million. But the CEO's decision may be very different if the estimate is $100 million plus or minus $50 million, or $100 million plus or minus $5 million. This is the benefit of collecting and analyzing probabilistic or fuzzy data.
[0048] Another drawback with spreadsheets is that they do have features that allow a model to be evaluated over a range of input values. Some spreadsheets possess “data-tables” and “scenarios,” which could be considered attempts to address this problem. However, data tables are limited to two input variables maximum. Scenarios enable sets of inputs to be saved and retrieved as a group. However, scenarios do not assist in analyzing or creating the permutations that are inherent in multiple independent variables. For example, if the raw material price and shipping price extremes are considered as given above, there are four scenarios. Each additional input variable that extends over a range at least doubles the number of scenarios, so that 20 input variables with ranges result in over a million possible scenarios to consider. There is at least one 3
[0049] The next problem with the way spreadsheets work is the fact that they cannot represent iterative processes. In general, iteration can be defined as the ability to feed the outputs of a calculation back into the inputs, usually, but not always, with finite termination criteria. If one attempts to do this directly in a spreadsheet, the spreadsheet will immediately warn the user, requiring the user to fix the formulas. Some spreadsheets do allow iteration, but an extremely limited form of it. This form of iteration is designed to determine if a set of formulas converge to a stable result. The spreadsheet stops calculating after an arbitrary definition of stability is met, or an arbitrary number of iterations has completed. This very limited form of iteration does not allow all the intervening data to be captured; this is akin to running a business simulation, whereby only the profit figure for Year 10 is provided, because all data for Years 1 through 9 are discarded.
[0050] The way that spreadsheet users handle the need for iteration is termed ‘loop-unrolling.” Programmers only unroll loops by hand in very rare situations. Normally, it is an optimization performed by a compiler. Spreadsheet users, however, always have to unroll loops manually because they must always choose in advance the number of iterations they wish to perform. For example, if they seek to simulate profitability from 0 units to 10,000 units in increments of 100, a spreadsheet user will need to create a series of 100 values, all stored simultaneously in a row or column of cells. The user can feed the results of each iteration into the next step. By using what spreadsheets call “relative cell references”, and a command to make a series, this process is somewhat simplified. However, a copy of the formulas is made for each step of the iteration. This causes two key problems for spreadsheet iteration. The first problem is that termination criteria cannot vary depending on input cells. The second problem is that maintenance is greatly complicated. If the formulas change, they must be re-copied to all of the “unrolled” locations. Also, if the user wishes to change the number of iterations, or the starting and ending numbers, then the “unrolled” loop must be expanded or contracted. It is highly probable that expansion or contraction will break other spreadsheet formulas that relied on the pre-specified length of iteration.
[0051] Moreover, spreadsheet cells have very restricted capabilities compared to traditional programming language variables. A spreadsheet variable can only have a value or formula assigned to it once, when the model is constructed. This is in contrast to procedural programming languages, in which a variable can be altered by statements in different locations. In other words, a spreadsheet formula always fully describes the method of computing the value in a cell, whereas a variable can accumulate changes from different sources. The latter approach is much more powerful, as it allows changing states to be tracked over an arbitrary number of iterations. Such an approach also permits source code to be aligned more closely to the underlying model. For example, many actions can cause a bank balance to decrease. Forcing the formula for bank balance to a priori refer to all actions that could affect it is simply unmaintainable. Using traditional formulas, the bank balance formula must be edited each time a new expense is integrated into the simulation.
[0052] However, it is noted that iteration constructs used in traditional programming languages can be difficult for non-programmers, because data structures for capturing intermediate data values can be confusing and tend to require additional steps to use. Data structures or objects must be created to capture intermediate computations. After computations are performed, these data structures or objects must then be summarized or displayed, requiring additional iteration to be set up.
[0053] Iteration is essential for building simulations. In fact, all business activity is iterative, with each business action building on the resources acquired and expended in the previous time period. When using iteration for simulation, an additional complexity is introduced. Simulations very often involve simulating actions occurring at the same time, or in parallel. If simulations of two factories are occurring in parallel, and Factory B consumes the output of Factory A, then clearly the simulation must in some way alternate between Factory A and B because of that relationship. It is recognized that there is a need for some method to be used for scheduling iteration that is used for simulation.
[0054] Without iteration, it is impossible to build dynamic simulations, and without dynamic simulations, building a realistic model of business activity would be extremely difficult.
[0055] As noted, business organizations are constantly faced with decisions. Modeling a decision means that one or more of several courses of action can be taken—subject to resource constraints. Such decisions can involve determining whether to buy a company, to introduce a new product, to build a new factory, or to launch a new marketing campaign; these decision making processes can be modeled. Each decision can be analyzed independently, to the extent that it does not depend on the others. How does someone analyze all the possible outcomes of all permutations? What if some outcomes cause an increase in debt level and the company has loan covenants regarding indebtedness? If several decisions cause debt increases to all occur at the same time, such an analysis is manageable. However, if the debts and cash flows ebb and flow over a period of years depending on the sequencing and timing of decisions, then examining all the permutations may be quite necessary. In a probabilistic model, each decision can be modeled as a discrete set of choices: 0 for “no,” 1 for “yes.” However, as discussed, spreadsheets do not handle probabilistic models adequately.
[0056] Accordingly, the use of decisions trees is another limitation of spreadsheets. Resource dependence is related to decision trees, in which certain decisions affect the validity of other decisions. For example, building a factory is a precursor to selling products built by that factory. If a business simulation is examining the branch of the decision tree where the factory is not built, then it certainly should not include the branch where the factory is creating revenue generating products. Understanding decision trees and resource dependence are every day occurrences in the business world, but spreadsheets do not provide any assistance in modeling using these types of constraints.
[0057] Once a useful model is built in a spreadsheet, it can be surprisingly difficult to re-use. Re-use of computer software code has been a primary goal for improving productivity of computer programmers for decades, and huge strides have been made in this area. Computer programmers have at their disposal a wide range of resources and techniques that enable them to re-use the efforts of others, rather than re-invent from scratch. Examples include code libraries, object oriented programming languages, and source code repositories. None of the facilities that programmers have available to them are available to spreadsheet analysts. Programming language theorists and working programmers had to invest substantial effort into designing facilities that would enable costly-to-create computer code to be re-used. No similar effort has been made to benefit spreadsheet analysts.
[0058] Spreadsheet re-use is difficult for a number of reasons. The first observation is that spreadsheets simply have never been designed with that goal in mind. One explanation for this is that spreadsheets link to each other in a way analogous to how the original programming languages shared data between modules: ad-hoc variable by variable, with no checking or assurances that modules updated over time are still referring to the same inputs. To be as clear as possible about this glaring deficiency, spreadsheets allow inter-spreadsheet linking to be done by referring to a specific row and column. In computer programming terms, this is analogous to specifying a specific location in memory to hold shared data. It is untenable, because maintenance of a spreadsheet very commonly involves adding and deleting rows and columns. Linking by numeric reference rather than by name is a technique that has been abandoned by computer programmers long ago, but spreadsheets encourage the practice. This is nearly moot since inter-spreadsheet linking is unreliable for other reasons. The inter-spreadsheet linking method depends on local hard drive paths—it completely breaks down inter-machine.
[0059] The second reason that re-use is difficult stems from the fact that there is no separation between the model and its usage without duplicating the entire model. In computer programming terms, there is no way to treat a portion of a spreadsheet model as an instance of a class. Duplication of code is bad because it creates a maintenance problem. Each duplication must be touched when the model requires maintenance. This can be a problem both in sharing models and aggregating models. Each time a function refers to different inputs, that function must be duplicated. Alternatively, the function could be recreated within the macro language; but then intermediate computations are no longer visible. Scenarios are no help, since they cannot be called or created by spreadsheet formulas. As stated earlier, scenarios are severely limited by their ability to only load one alternative at a time.
[0060] For example, it is assumed that a model of how a retail company will roll out stores across the U.S. is created, and that a model which accurately reflects the way a store location is built and launched. The variables are the number of employees per store, the square footage of each store, the rent for each store, the date of ground breaking, and the date of grand opening. Now, it is necessary to define 50 stores and create a cash flow statement for this information, using traditional spreadsheet techniques; the model has to be duplicated 50 times. In addition, it is necessary to determine how to create a cash flow statement that is rolled up from those 50 copies.
[0061] Under another scenario, an analyst builds a single store model, handing the model off to six project managers to create a copy for each store they are in charge of building. The analyst later discovers an error and makes some improvements to the model. There is simply no way to update all the models that were copied from the source model. Project managers who used the model have to be notified of the error and manually fix their copies.
[0062] This leads to the third re-use problem—that of aggregation. Using traditional techniques, each time a store is added or deleted, the cash flow statement model has to be updated. However, there should be no need to so. The cash flow model should not depend on the number of stores that it models, it should just work for however many stores are dumped into it. Changing the number of spreadsheets which feed into a summary model should not require adjustments to the summary model. At least, there is no good reason to do that from a software engineering perspective, as it results in increased maintenance costs and increased potential for errors.
[0063] Generalizing from this, summary models built using traditional spreadsheet formulas cannot be re-used with different inputs without requiring duplication of the spreadsheet for the new context and extensive updating of formulas. In contrast, cost accounting software can produce profitability reports for different products without re-coding of the software for each product reported on. Once a profit-and-loss statement has been programmed, it should not be necessary to duplicate it and update most of the formulas each time a different product needs to be analyzed. Yet, this is the situation encountered when using spreadsheets to create summary reports.
[0064] Both of the previous two issues are caused by the fact that summary models are composed of many (perhaps hundreds) of formulas that may refer to the input data. All of those formulas must be updated in order to summarize something else. Writing formulas that are sophisticated enough to parametrically vary what they are summarizing requires not only advanced functions, it results in extremely long formulas which are difficult to comprehend, and therefore difficult to audit and maintain. Even if summary formulas are parameterized, the entire summary model must be duplicated to view more than one summary at a time. Even then, writing such formulas requires perfect foresight, or perfect rigidity in what is selected for summarization.
[0065] Finally, once data has been summarized, validating the source of the data is extremely tedious. The values are shown, but the formulas can only be examined one by one. The method of using arrows on the grid to point to predecessor formulas would not work for a balance sheet containing hundreds of accounts, and in addition, the arrow technique does not work for inter-spreadsheet references.
[0066] The Forecast and Modeling system
[0067] According to an embodiment of the present invention, the Simulation Framework
[0068] The Forecast and Modeling system
[0069] The Forecast and Modeling system
[0070] Returning to the discussion of the simulation framework
[0071] For the purposes of simulating business models, the Forecast and Modeling system
[0072] Simulation classes
[0073] Entity state classes
[0074] Operator classes
[0075] Constraint classes
[0076] Agent classes
[0077] Functor classes
[0078] A workflow router
[0079] A workflow router
[0080] The Forecast and Modeling system
[0081] A spreadsheet-to-object mapper
[0082] The spreadsheet-to-object mapper
[0083] The advantage of a spreadsheet-to-object mapper
[0084] The spreadsheet-to-object mapper
[0085] Conversely, a spreadsheet-to-class mapper
[0086] The spreadsheet-to-class mapper
[0087] Furthermore, the spreadsheet-to-class mapper
[0088] An advantage of a spreadsheet-to-class mapper
[0089] An advantage of both spreadsheet-to-object mappers
[0090] Effectively, the mapping process is used to assign semantics to the contents of spreadsheets. For example, where a list of numbers in a spreadsheet may be labeled as “Cash Flow” in plain English, there are no additional semantics specific to Cash Flows that are available or enforced. Examples of such additional semantics would be an operation that calculates net present value or an operation that adds two cash flows. While it is evident that these operations can be performed directly on a spreadsheet, the key observation is that an automated process cannot perform these operations without customization to the exact context, because the semantics are only available in English, not in an unambiguous machine readable specification. In other words, any computation can be performed arbitrarily on any cell of a spreadsheet regardless of the intended semantics of that cell. For example, the net present value function could be applied to a list of shoe sizes, and a spreadsheet will continue to compute that non-sensical result. By mapping spreadsheet contents into a semantic context, higher level operations are enabled and semantic constraints are enforceable. In this regard, the Forecast and Modeling system
[0091] A spreadsheet storage and version wrapper
[0092] According to an embodiment of the present invention, the spreadsheet storage and version wrapper
[0093] One advantage of the spreadsheet storage and version wrapper
[0094] The Functor Requestor class
[0095] The Functor Requestor class
[0096] The Distribution Functor class
[0097] The distributions functor class
[0098] An object execution module
[0099] Additionally, the object execution module
[0100] One advantage of the object execution module
[0101] If any objects in the simulation provide results from distribution functors
[0102] Because some operators may have random effects, re-running a sequence of operators is not guaranteed to result in the same outcome. Depending on available storage and usage of compression techniques, in many cases it is possible to store every change to every entity in the simulation, thus allowing examination of entity states at any time point in the simulation.
[0103] As seen in
[0104] The modeling module
[0105] Because the model is built by requesting and responding to interfaces accepted by Functor Requestors
[0106] The purpose of the what-if module
[0107] The simulation framework
[0108] The strategy game module
[0109] For example, a scenario may be set up initially with the states of three entities representing three publicly traded companies, called A, B and C. Teams are set up to represent the managements of companies A, B, and C. Companies A and B are competing in a hostile takeover of C. It may be that after a few simulated time steps of the game, that a member of team B introduces a new entity, which represents the employees of Company C. Team B also introduces a new operator, which represents the cessation of production at Company C due to employee walkout. Team C may respond by introducing a new entity Company D. Company D may be characterized as a “white-knight” which Company C would prefer to be acquired by. Team A may respond by introducing an operator which represents a change in tax law which favors the transaction proposed by Team A. By introducing the novel idea in computer role playing of allowing arbitrary changes to the game state and the game operators, the beneficial effect of considering and introducing other plausible options is encouraged. The real purpose of the strategy gaming is to generate plausible scenarios that might not otherwise have been considered by attempting to set all game states and operators a priori.
[0110] Another significant benefit of the war-game module
[0111] A testing module
[0112] The testing module
[0113] Further, the testing module
[0114] At the end of the simulation process, the user can select from a number of interesting results to examine, for example, the top ten agents that came closest to satisfying their goals. It is likely that most agents will have achieved their goals by exploiting errors in the constraints on operators. For example, an agent may succeed in maximizing profit because no pre-condition was set on the build factory operator that it could only build factories with a positive bank balance over a certain amount. Another example is that an agent may succeed in maximizing profit because no pre-condition was set on the sell product operator that indicated a maximum limit on the number of consumers interested in purchasing the product. In this way, the testing process enables the user to discover weaknesses in the encoding of simulation objects. It is less probable, although possible, that an agent will embody a profit optimization strategy that could be executed successfully in the real world. Because of the exponentially large number of operator combinations that can be created for a simulation, it is acknowledged that this process cannot be exhaustive in general; nonetheless, many useful features and errors in the model may be discovered and analyzed using this technique.
[0115] The purpose of the list query language module
[0116] The list query language module
[0117] The object execution module
[0118] A visual list query language module
[0119] Furthermore, the enhanced visual list query language module
[0120] One advantage of the enhanced visual list query module
[0121] A verification feature for the visual list query module
[0122] A highlight is a graphical method of distinguishing a cell from an unhighlighted cell, and may include a change in colors, background, border, font, the addition of symbols or icons, combinations of the foregoing, or other similar techniques. This allows the user to enter a test query, say for example “SELECT ALL TOYS”, and if any cells in the report were constructed from members of the list “TOYS”, then those cells would be highlighted. As an extension, several test queries could be constructed, and each assigned a unique representation, for example colored shape. Each cell which matched according to the above criteria would have a marker of that color placed in the cell. Thus multiple sources of information could be graphically indicated on a report simultaneously. For example, if the test query “SELECT ALL TOYS” were assigned the marker green circle, and the test query “SELECT ALL DVDS” were assigned the marker red square, then the total profit cell would show a green circle if it were derived in any way from TOYS and a red square if it were derived in any way from DVDS.
[0123] The following elements can be combined to enable a new process enabling large groups to build dynamic, executable models of business activity: a modeling module
[0124] The new process for building models of business activity can include the following steps. A requesting user creates a functor requestor object from a Functor Requestor class
[0125] Next, the responding user can update their response an arbitrary number of times while the functor requestor is active. The responding user can forward the functor requestor object to another user who should provide the response instead. It is called delegation if the forwarding user designates that the response will be returned only with the forwarding user's approval. It is called transfer if the forwarding user does not require approval before the response is returned to the original requestor.
[0126] The above process provides a number of advantages. The requesting user does not have to execute a separate integration step whenever the respondent updates their response, because the response complies with a class interface specification. Also, the responding user can update their response as many times as desired until the request is deactivated or deleted. Another advantage is that the responding user can provide their response in the form of a computer program that may provide results that vary depending on inputs or external data, and this response is integrated directly into the requesting user's model. Further, the responding user can provide, and the requesting user can use additional interfaces of the Functor to provide different inputs to the Functor to obtain different outputs.
[0127] The following is an example of how the above process could be used to build a large scale model of business activity. User A defines a model of the business in which raw materials are converted into widgets, stores are built, widgets are transported to stores, and stores sell widgets. User A does not know the cost function of any of these activities. User A sends a functor requester to User B that requests the rate that widgets can be made per week. User B responds with a function that provides the rate as a function of lead time and volume. User A sends a functor requestor to User C that requests rate of store openings and User C responds with a functor that provides the rate as a function of monthly capital investment flows. User A sends a functor requester to User D that requests per-unit shipping costs, and User D responds with a functor that provides the rate as a function of weekly volumes between sources and destinations. User A sends a functor requestor to User E that requests the cost of store operations, and User E responds with a functor that provides the cost per store as a function of store hours open per week.
[0128] After all responses have been provided, User A has a collection of functors that are assembled into a simulation framework. The framework can be placed in a manual simulation where inputs to functors are changed one at a time such as the what-if module, or in an automated process such a testing module that automatically changes inputs to functors to optimize certain outputs.
[0129]
[0130] The computer system
[0131] According to one embodiment of the invention, the processes of