WO2006058054A2 - A method of simplifying & automating enhanced optimized decision making under uncertainty - Google Patents

A method of simplifying & automating enhanced optimized decision making under uncertainty Download PDF

Info

Publication number
WO2006058054A2
WO2006058054A2 PCT/US2005/042416 US2005042416W WO2006058054A2 WO 2006058054 A2 WO2006058054 A2 WO 2006058054A2 US 2005042416 W US2005042416 W US 2005042416W WO 2006058054 A2 WO2006058054 A2 WO 2006058054A2
Authority
WO
WIPO (PCT)
Prior art keywords
product
user
stock
algorithm
data
Prior art date
Application number
PCT/US2005/042416
Other languages
French (fr)
Other versions
WO2006058054A3 (en
Inventor
Gerard H. Gizinski
Original Assignee
Gizinski Gerard H
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Gizinski Gerard H filed Critical Gizinski Gerard H
Publication of WO2006058054A2 publication Critical patent/WO2006058054A2/en
Publication of WO2006058054A3 publication Critical patent/WO2006058054A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management

Definitions

  • This application includes a computer program listing appendix in accordance with 37 CFR 1 . 96 ( c ) , consisting of 20 pages , the entire content of which is incorporated by reference .
  • the present invention relates generally to a computer-supported method of solving real -world problems , using linear programming and probability analysis , amongst other methods , and, more particularly, to a user interface which permits even those unfamiliar with these tools to successfully apply these tools to the solution of real -world problems such as managing a business or managing an investment portfolio .
  • Mathematical optimization techniques also have specialized roles in business. Petroleum refiners, airlines, livestock feed blenders, distributors, investment firms and corporate treasurers routinely utilize optimization techniques. Refiners and livestock feed blenders use linear programs to minimize input costs of ingredients for product production. Airlines and distributors use optimization to schedule and route transportation equipment such as planes or trucks. Investment firms use non-linear programming to manage stock portfolios or manage cash. Corporate treasuries use optimization to manage the corporate cash. Operators of these programs often lack the expertise to devise the structure and equations required to mathematically formulate a problem solution. Either operations research consultants or technical staff members assist in problem and solution formulation. Specialty program houses sell these optimization programs.
  • Program installation requires certain fundamental operating coefficients to customize the program for the user organization. Over time, the operating coefficients change, necessitating program updates for the program to remain relevant. The frequency of user updates varies between organizations.
  • the present invention to provide a method of solving problems, with the assistance of a personal computer, which combines features of linear programming, probability analysis, and expert systems with a simple interface which enables users, who do not necessarily understand the details of these tools, to successfully apply these tools to solve real-world problems.
  • My name for this simple interface is "the Answer Machine.”
  • the present invention builds upon commercially available computational technology found in the MATHCAD program of MathSoft, Inc. and the EXCEL, SOLVER and VISUAL BASIC programs of Microsoft Corporation, as more fully disclosed in US Patents 5,469,538 & 5,526,475, RAZDOW, currently owned by MathSoft Inc. of Cambridge, Massachusetts, USA and other patents owned by Microsoft Corp.
  • MATHCAD is a trademark (US Reg.
  • a plurality of software modules are executed, in sequence, to perform the steps of the method. Some of these modules are specially adapted for their application, as described in greater detail below.
  • the program interacts with the user to determine the nature of the problem to be solved and to prompt the user to provide the appropriate kinds and quantities of data.
  • the program reads the data into a matrix or spreadsheet and checks validity of the data.
  • the program performs a statistical analysis of the data including: a Fourier analysis correlation, development of a forecasting regression, forecasts, determination of the median value and standard error (or variability) of the data and conversion of the median and variability into a probability distribution; and places the calculated results in additional cells which represent an extension of the original matrix or spreadsheet .
  • the program installs basic constraint equations and performs a preliminary Linear Programming (LP) analysis of the data to obtain a sensitivity analysis of the LP analysis subject to perturbations in price changes.
  • LP Linear Programming
  • This sensitivity analysis indicates the "opportunity cost" associated with producing and marketing products without any constraints on the ingredient inputs required to meet forecasted demand in the marketing solution module.
  • the LP sensitivity analysis indicates required price changes to make a stock a likely candidate for either purchase or sale in a "trading range" stock market environment.
  • the program iterates LP formulations, solutions and analysis for the various prices indicated by the LP sensitivity analysis of step three to determine the frequency of occurrences of: products in the market mix of the marketing solution module or stocks in the portfolio management or stock shorting solution modules.
  • the program uses the probability distribution determined in step three: to set upper and lower demand limits on demand forecasts for products or to compare stock prices with the probability of price increases or decreases within a "trading range" for stock trading.
  • the program uses expert analysis in conjunction with the results of step five to: recommend and make adjustments to the marketing/ sales budgets for products, install demand constraint equations and solve the LP with the expanded constraints; determine for stocks whether to buy or sell within a trading range or buy or sell with the intent to move beyond the trading range or not to commit to any trade.
  • FIG. 1 schematically illustrates the use of a personal computer to collect data via a global network, to process the data, and to communicate results and solutions;
  • FIG. IA is a flowchart showing steps of an interaction between a computer user and an "Answer
  • FIGS. IB & 1C are flowcharts showing steps of
  • FIG. 2 is a flowchart illustrating a method of collecting data relating to a proposed or actual product of a business
  • FIG. 3 is a flowchart illustrating how to formulate ratios for use in linear programming calculations, such as those typically used in marketing, pricing and gross margin problems;
  • FIG. 4 is a flowchart of a "Remake" program module for optimizing products, product market segments, product development budgets, and sales/marketing budgets;
  • FIG. 5 is a flowchart of a "Stkanlzr” program module for optimizing the reward/risk ratio for a stock portfolio
  • FIG. 6 is a flowchart of a "Stkshortr” program module for optimizing short sales of stocks.
  • FIG. 7A is a flowchart of the PD&ISnlzr module, for product development analysis
  • FIG. 7B is a flowchart for restoring PD&ISnlzr, Sheet2, to Original Solution Condition
  • FIG. 7C is a flowchart of the PD&ISnlzr module, to evaluate input substitution
  • FIG. 7D is a flowchart for restoring PD&ISnlzr, Sheet3, to Original Solution Condition; and FIG. 8 is a flowchart showing how to output final results from the Stkanlzr or Stkshortr solution modules to a simple spreadsheet, e.g. an EXCEL spreadsheet.
  • FIG. 1 schematically illustrates that a personal computer 102 can be used to communicate with a second computer 104 or computer server 106 via a wired or wireless network 108.
  • a desktop computer with a large monitor is shown for illustration purposes, those of ordinary skill in the art will appreciate that laptop computers now have the processing power to practice the present invention, and eventually even more compact and portable computing devices such as the PDA (Personal Digital Appliance) will have this capability.
  • PDA Personal Digital Appliance
  • improvements in networking are expected, so the present invention is not limited to use of the Internet in the form we know it today. The present invention is intended to encompass all such foreseeable advances in equipment and communication methods.
  • PREFERRED COMPUTER HARDWARE/SOFTWARE CONFIGURATION Software for carrying out the present invention was developed using a personal computer running the WINDOWS 2000 operating system from Microsoft Corp., the EXCEL spreadsheet program from Microsoft Corp. (Office 2000 version) , VISUAL BASIC 6.0 (Version 8435) , an Office 2000 version and the MATHCAD 8 Professional Edition program from Mathsoft, Inc.
  • the computer had a Pentium 3 central processor with a 128K cache and 128MB of Random Access Memory (RAM) .
  • the software has also been successfully operated on a laptop computer with a Pentium 4 central processor containing a 128K cache and 512MB of Random Access Memory (RAM) running the WINDOWS XP operating system and Excel 2002 (10.2614.2615), with small changes to commands used in the VISUAL BASIC 6.3 (Version 9108) program.
  • This configuration relies upon MATHCAD 2001i Premium Edition.
  • AM Answer Machine
  • the AM concept requires a linkage between a simple user interface and highly specialized programs.
  • the marketing, portfolio and stock shorting solution modules through the Visual Basic (VB) programming language, control two highly specialized programs: a statistical analysis program which executes using the MATHCAD program, and a linear programming program which executes using MICROSOFT EXCEL.
  • VISUAL BASIC is a registered trademark of Microsoft Corp.
  • the statistical analysis program represents an adaptation of an inventory control and forecasting method discussed by Robert Goodell Brown in his book Decision Rules for Inventory Management.
  • the Appendix contains a listing of the statistical analysis program of the present invention.
  • the linear programming program called SOLVER by Microsoft
  • Input data must have a name: inO, inl, in2, in3 or in4, etc. and output data must have a name: outO, outl, out2, out3 or out4, etc.
  • inO can be a data vector (one-dimensional matrix) containing 37 or more data points.
  • the format on the spreadsheet for the data exchange requires “number” ; neither “general” , “accounting” nor “currency” formats operate correctly.
  • the input and output data must conform to real and imaginary components of imaginary numbers. If no imaginary component exists, data entry must include the imaginary component with a zero coefficient. Omitting the imaginary result from an output causes no problem.
  • the results of the analysis, or instructions based on that analysis may be communicated to other persons within the business by computer transmission.
  • FIG. IA-USER STEPS FOR ANSWER MACHINE This algorithm describes Answer Machine directions, to a user, about how to utilize sophisticated application programs and analysis, without understanding either details of the analysis or learning the application programs.
  • the user may repeat the algorithm steps up to three times, before initiating the resolution process.
  • a user can exit the algorithm at any time during the algorithm's execution.
  • a user initiates the algorithm at step 102a by triggering execution of the Answer Machine program module, for example by clicking a button or speaking a verbal command.
  • the user indicates, at step 112a, what issue or problem needs solution.
  • step 114a If the user wishes to address a problem solution, the algorithm proceeds to step 114a. If the user desires general information about the Answer Machine concept or its usage, the algorithm proceeds to step 116a. If the user does not require general information about Answer Machine usage, the user can elect to review an example problem solution at step 120a. After reviewing the example, or if the user elects not to review an example, the algorithm proceeds to step 122a, to offer the user a choice between personal and commercial problems.
  • the algorithm proceeds to step 128a and offers the user a menu of commercial problems that include finance, investing, and marketing problems, among other commercial possibilities.
  • the algorithm at step 130a hyperlinks to a respective explanation about that type of problem.
  • the explanation includes a broad review of various aspects of the problem, including some aspects which the user may have overlooked or omitted from consideration. For example, a user might overlook marketing expenses for existing products as a concern in a product development program.
  • the marketing solution module includes an optimized balance of tradeoffs between each product, its price, marketing/sale budget and economic attractiveness for product replacement and ingredient substitution. Furthermore, the marketing solution module performs the tradeoffs with statistical, optimization and expert analyses beyond traditional methods, and possibly beyond the user's comprehension.
  • the solution requires: 36 periods of sales data for each product, the marketing/sales budget per unit of product, the ratio of each ingredient used per unit of product output, separated by inventoried and non-inventoried ingredient, the inventory of products and ingredients, and the prices of products and ingredients.
  • the user has the choice of how to enter the required information into the solution module, either manually or by loading one or more pre-existing data spreadsheets. If, upon initial review, the user lacks the information specified by the program, the user can elect, at step 132a, to exit the algorithm at step 134a, in order to first collect the required information.
  • a user in a large business probably has access to databases that contain the required data.
  • a user in a small business may have to cull the required information from accounting records.
  • step 122a the algorithm proceeds to step 124a and offers the user a menu of personal problems that include: finance, investing, health and other personal issues.
  • the algorithm at step 126a hyperlinks to a respective explanation about that kind of problem.
  • the explanation includes a broad review of various aspects of the problem, including some aspects which the user may choose to omit from consideration. Beside general aspects of the problem, the explanation indicates the specific information and data requirements necessary to achieve a balanced solution to the problem. If, upon initial review, the user lacks the information specified by the program, the user can elect, at step 132a, to exit the algorithm at step 134a, in order to first accumulate the required information, before continuing to use the program.
  • the user After collecting the required information, the user re-initiates the algorithm at step 102a and follows the steps returning to step 132a. Having the appropriate data available, the user proceeds with the solution process at step 136a.
  • the user uses a hyperlink at step 138a to call either a utility program or the solution module.
  • the user could elect to hyper-link to the solution module and manually enter all data during the solution process.
  • the user could use a hyper- linked utility program to structure the raw data into the correct format for input spreadsheets. Under either condition, the user hyper-links to another algorithm to continue the solution process.
  • step 138a If the user at step 138a hyper-linked to a utility program to structure input data, the user re-initiates the algorithm a third time at step 102a and follows the steps returning to step 132a.
  • the user uses a hyperlink at step 138a to call a solution module of the user's choice.
  • Stkshortr an optimizer program for managing short sales of securities.
  • the three programs include statistical analysis templates utilizing MATHCAD (US Trademark Reg. # 1,457,219 of Mathsoft, Inc. of Cambridge, MA) , an application program for mathematical analysis, and SOLVER, a linear programming module within the well-known EXCEL spreadsheet program (EXCEL is a trademark of Microsoft Corp. of Redmond, WA) .
  • the third program is an "expert analysis” program.
  • the present invention combines algorithms based on (1) MATHCAD and (2) SOLVER with (3) expert analysis, to thereby provide "solution” modules with enormous flexibility and broad applicability. DESCRIPTION OF FIG. IB-MATHCAD FUNCTIONS LINKED IN SOLUTION MODULES
  • This algorithm is an adaptation of an inventory control and forecasting method discussed by Robert Goodell Brown, a consultant at the firm Arthur D. Little Inc., in his book Decision Rules for Inventory Management, pp. 79-211, (ISBN 03-062745-1, published by Holt, Rinehart and Winston, Inc., 1967) .
  • the method defines a "Base correlation” and an "Intermediate correlation” which are used in calculating a "Final correlation.”
  • the time periods used in the algorithm may include days or weeks, as well as months.
  • the present invention includes an adaptation of the Brown algorithm, as set forth in the computer program appendix of this application.
  • values used for a smoothing vector (h) in the algorithm of the present invention are inspired by a mathematical derivation included in the Brown book on pages 144 through 149.
  • the Brown book contains mathematical inconsistencies .
  • the appendix portion of the present application includes a reproduction of the mathematical derivation with corrected equations.
  • the preferred value for hO in the algorithm equals 0.991, according to the present invention, rather than the mathematically determined 0.982.
  • the improved inventory control method of the present invention uses function parameters and data which are stored as a worksheet generated using MATHCAD, a computer program for mathematical analysis protected by US Patents 5,469,538 and 5,526,475, RAZDOW, and by copyright. MathSoft, Inc., 101 Main Street, Cambridge, MA 02142-1521, licenses authorized users of the MATHCAD program to practice the method(s) recited in those US patents .
  • the algorithm commences at step 102b with a call to a statistical analysis worksheet created in MATHCAD.
  • This call initiates a double-click on the MATHCAD worksheet (treated by VISUAL BASIC code as an object) to establish a link to the MATHCAD program.
  • the algorithm at step 112b transfers a data vector of 36 elements from a template to the MATHCAD worksheet for processing.
  • These 36 elements consist of sales data from the "Remake” template or securities prices from the "Stkanlzr" or "Stkshortr” templates.
  • the actual vector contains 37 elements, with the first element equaling zero.
  • the MATHCAD worksheet performs a series of mathematical steps to determine the coefficients used in the Base correlation analysis, which a statistician might also call a "regression" analysis. These coefficients change for every data element (sales or stock prices) and every time the user runs the solution module with different data.
  • the worksheet then performs a correlation analysis consisting of four terms: the level of the data, the trend of change in data and two terms of data oscillation. Each of the data oscillation terms consists of sine and cosine expressions.
  • the first oscillation term relies on a 30-degree phase.
  • the second variability term relies on double the frequency of the first variability term with a 15-degree phase.
  • the MATHCAD worksheet determines an "Intermediate correlation" consisting of four terms: the level of the data, the trend of change in data and two terms of data oscillation.
  • Each of the data oscillation terms consists of sine and cosine expressions.
  • the first oscillation term relies on a 30-degree phase.
  • the second variability term relies on double the frequency of the first variability term, with a 15-degree phase.
  • the Intermediate correlation consists of the Base correlation plus error propagation terms.
  • the Intermediate Correlation consists of the Base correlation value, one period earlier, plus a coefficient times the absolute value of the difference between the actual data and the Base correlation estimate one period earlier.
  • the worksheet After completion of the Intermediate correlation, the worksheet performs a second error analysis by measuring the difference between the actual data elements and the Intermediate correlation's estimated values. Finally, the worksheet determines a number of statistical measures concerning the significance of the various coefficients in the accuracy of the correlation analysis.
  • the worksheet determines the final correlation and forecasting tool .
  • the final correlation derives from exponential smoothing, the technique of using a fraction as a coefficient for one term and one minus the fraction as a coefficient for a second term.
  • the value for hO in the algorithm equals 0.991 rather than the mathematically determined 0.982. This difference reflects an attempt to permit the algorithm in the final correlation to place greater emphasis on the Intermediate correlation and less emphasis on the Base correlation.
  • step 120b plots the various correlations and data series, to provide visual confirmation of the relevance and usefulness of the correlations.
  • Step 120b also performs some extraneous calculations. Although a user may choose not to display these graphs, nor desire the extra calculations, they remain in the linked program to delay the MATHCAD worksheet completion. Under certain conditions, a linked MATHCAD worksheet may not be allocated sufficient execution time to complete its calculations, and communicate results to the host spreadsheet. The inclusion of extraneous time- consuming calculations appears to offer a practical work-around to this problem.
  • the worksheet at step 122b conducts the final calculations in preparation for communicating with the host worksheet. These calculations include the following:
  • the final calculation involves subtracting the initial data series value from the 37 terms of the final correlation's forecast and dividing by 36.
  • the worksheet's step 124b then transmits the forecasts for the next 36 periods after the current period, upper variability, lower variability, trend coefficient, trend coefficient variability and forecast to the host spreadsheet .
  • the host spreadsheet receives the 8 results and stores them in the appropriate locations on sheet 1.
  • Rows 2 through 37 of Column AJ receive the forecasts for the next thirty-six periods.
  • Column AI' s Row 41 receives the upper variability
  • Row 43 receives the lower variability
  • Row 45 receives the trend coefficient (growth rate)
  • Row 47 receives the trend variability
  • Row 49 receives the averaged forecast.
  • the spreadsheet algorithm moves the values from Column AJ to the appropriate column for the data series with:
  • Row 43 capturing the high variability.
  • Row 44 capturing the low variability.
  • Row 49 capturing the averaged forecast.
  • the MATHCAD worksheet at step 126b ceases and returns to the host spreadsheet.
  • the host spreadsheet may return to the MATHCAD spreadsheet for statistical analysis of another data set or the algorithm may continue to another step on the solution path.
  • This algorithm derives from a linear regression method.
  • the time periods used in the algorithm may include days, weeks or months.
  • This linear regression methodology resides in a program stored as a worksheet in MATHCAD, an application program for mathematical analysis. MathSoft, Inc., the program's publisher, authorizes purchasers of MATHCAD to practice the method steps claimed in the RAZDOW patents, cited above.
  • the algorithm commences at step 102c with a call to the second statistical analysis worksheet in MATHCAD.
  • a self-inspection may occur that indicates an abstention from making the call.
  • the self-inspection evaluates input data to determine if a monotonic increase or decrease exists. If it exists, then the possibility of a linear growth exists. Absence of monotonic increasing or decreasing data indicates a lack of linear growth and irrelevance of the linear regression analysis. Stock price data generally exhibit all types of change except linear behavior. Nevertheless, the solution modules, "Stkanlzr” or “Stkshortr” always perform the linear regression analysis. This forced evaluation occurs to avoid the reversal of the linkage process. Repeated use of the "Stkanlzr" or "Stkshortr" templates without calls to the linear regression analysis could eventually break the linked connection with the linear regression analysis.
  • the algorithm at step 112c transfers a data vector of 36 elements to the MATHCAD worksheet for processing.
  • These 36 elements consist of sales data from the "Remake” template or stock prices from the "Stkanlzr” or “Stkshortr” templates.
  • the actual vector contains 37 elements with the first element equaling zero. This extra element permits a "startup" phase of the statistical analysis process without compromising any of the 36 data elements.
  • the MATHCAD worksheet linked in
  • Sheet5 of "Remake”, “Stkanlzr” or “Stkshortr” performs a simple linear regression analysis between the input data and the period numbers (from 1 to 36) . These coefficients change for every data element (sales or stock prices) and every time the user runs the solution module with different data.
  • the MATHCAD worksheet determines the slope and intercept for the regression elements.
  • the worksheet performs a correlation between the regression and the input data.
  • the worksheet then forecasts the values for the next three periods, based on the regression.
  • the worksheet proceeds to step 120c and plots the regression and the data series to provide visual confirmation of the relevance and usefulness of the regression.
  • Step 120c also performs some extraneous calculations concerning differences between the data and the regression values . Although a user may choose not to display these graphs nor desire the extra calculations, they remain in the linked program to delay the MATHCAD worksheet completion. Under certain conditions, a linked MATHCAD worksheet may not receive sufficient time to complete its calculations and communicate results to the host spreadsheet. The inclusion of extraneous calculations appears to offer a practical work-around to this problem.
  • the worksheet's step 124c then transmits the: the slope of the regression, the intercept of the regression, the correlation coefficient of the regression with the input data and the forecasts for the next three periods after the current period.
  • the host spreadsheet receives the 6 results and stores them in these Row locations of Column AP on sheet5 : Row 39 receives the regression slope, Row 41 receives the regression intercept, Row 43 receives the correlation coefficient, Row 45 receives the forecast for the next period, Row 47 receives the forecast for the second period and Row 49 receives the third period forecast.
  • the spreadsheet algorithm moves the values from Column AJ on Sheet5 to Sheetl's appropriate column for the data series with:
  • Row 59 holding the first period forecast.
  • Row 60 holding the second period forecast.
  • Row 61 holding the third period forecast.
  • Row 62 holding the slope.
  • Row 63 holding the intercept.
  • the MATHCAD worksheet After transmitting the statistical analysis output, the MATHCAD worksheet ceases at step 126c and returns to the host spreadsheet, either to analyze another data set or continue to another step in the solution process.
  • FIG. 2 illustrates the steps in a data gathering method used in the solution of business, stock portfolio management or stock shorting problems.
  • a first step 202 when running the program is to call a utility program called LPutilities, a workbook with data structuring subprograms.
  • the second step 204 is to open a subprogram on LPutilities Sheet2 called Mnulxlprodmdspsht .
  • the third step 206 is to perform a check to determine whether there has been a rollover from prior execution from Sheetl of a Ratio Builder subprogram, RatioBldr; if yes, execution branches to a step 208, described below; if no, execution branches to a step 210 of checking whether or not the user wants to use a text-to- voice option; if yes, a text-to-voice subprogram is activated in a step 212; if no, execution goes directly to a step 214 of prompting the user to enter a user name. If text- to-voice was activated in step 212, execution also goes to step 214 of getting the user name.
  • the user is prompted, in a step 208, to tell the program whether or not data are going to be entered manually by the user; if yes, execution branches to a step 216 of checking a PMS (Product Market Segment or stock) count, to be described below; if no, execution branches to a step 218 of prompting the user to enter the name of a spreadsheet file which contains data needed by the program, stored in a matrix having as many dimensions as needed for solution of the problem being solved.
  • PMS Program Market Segment or stock
  • a step 220 check whether the term "Date" exists in column one, row one, to indicate date information is present. This is important since the program solution process needs date information in the proper location to execute.
  • step 220 If the result of step 220 is no, meaning date information is not present, execution follows a path 222 to exit the program.
  • a step 224 checks whether a Product Market Segment (PMS) (or stock) count is correct (within a predetermined acceptable range) , is too large, or is too small. If the count is too large, for example the user is trying to evaluate a product mix containing more products, and thus more computations, than the user's computer can handle, execution branches to exit path 222, previously mentioned.
  • PMS Product Market Segment
  • step 226 checks whether the revised count has reached a predetermined minimum number; if no, execution branches to exit path 222; if yes, the user is prompted to enter additional PMS product (or stock) names at step 228 and a respective demand (or stock price) number for each at step 230.
  • Step 230 queries the user for demand (or stock price) data according the date information provided by the spreadsheet data file of insufficient PMS (or stock) count. As the user responds to the query, step 230 records the input at the appropriate location on LPutilities Sheet2. Back in step 224, if the PMS count was acceptable, execution jumps along a path 232 which avoids steps 226, 228 and 230 and goes directly to a step 234 which moves the data gathered to LPutilities Sheet2.
  • a step 236 queries the user for the number of periods of obsolete data and removes that number of periods of data from the beginning periods recorded on LPutilities Sheet2.
  • Step 236 then reconfigures the remaining data such that the earliest period occupies the initial spreadsheet position.
  • Step 238 queries the user for recent demand (or stock/security price) data and places that data at positions of the latest periods on Sheet2.
  • Step 240 moves the updated data from LPutilities Sheet2 to the original spreadsheet.
  • a step 242 removes all data from the LPutilities Sheet2 for re-use for data updates.
  • execution follows exit path 222.
  • step 208 if the user in step 208 indicated a preference to enter data manually, execution branches to a step 216 which checks whether the PMS count is OK; if no, execution branches to exit path 222; if yes, execution follows a path shown in the lower left quadrant of FIG. 2.
  • step 250 for PMS's, prompts the user through a Form to select either daily, weekly or monthly periods. For stocks, the user can only elect weekly periods.
  • step 252 As the user enters 36 period dates, step 252 checks if the dates correspond to the daily, weekly or monthly periods selected during step 250. As the user provides dates, step 252 checks for inappropriate periods and, if it determines incorrectness, alerts the user and provides an opportunity to correct the dates.
  • step 254 the user is prompted to enter PMS (or stock) names.
  • step 256 the user is prompted to enter PMS demand (or stock price) numbers according to the dates provided in step 252. If the user enters PMS data, a step 258 checks whether the user wishes to use the Ratio Builder subprogram, RatioBldr. As marketing/sales problem solutions require ratios of PMS output to input ingredients, the user must eventually determine these ratios. Having developed a spreadsheet with PMS listings provides an ideal time to create the ratio spreadsheet.
  • a step 260 activates RatioBldr on Sheetl of LPutilities; if the user answers NO, or after step 260 has been executed, a step 262 saves data to a spreadsheet, with the fallback name "ProDmdmQuery. " Then, a step 264 cleans the LPutilities Sheet2 of all data, to prepare it for use with fresh data later. Execution then follows exit path 222. DESCRIPTION OF FIG. 3
  • FIG. 3 illustrates how to formulate ratios for use in linear programming calculations for products produced from multiple but shared ingredients.
  • the LPutilities program is called.
  • the Ratio Builder subprogram, "RatioBldr” on sheetl of LPutilites is called.
  • step 306 a check is made whether a PMS builder rollover occurred from LPutilities subprogram "Mnulxlprodmdspsht" on sheet2.
  • step 308 which asks whether the user desires voice instruction; if the answer is YES, the program activates voice instruction in step 310; otherwise, the program skips step 310 and goes along path 312 directly to a step 314 which gets the user's name. Thereafter, the program follows a path 316 which joins a YES path 318 from the result of step 306, both leading to a step 320 which determines the data content of any spreadsheets which are open.
  • step 320 The possible answers to the test in step 320 are: none open, inventory only, PMS only, inventory & PMS, business optimizer and ratio spreadsheet. If none are open or only inventory spreadsheets are open, execution jumps to a step 322 which tests whether to go to LPutilities subprogram "Mnulxlprodmdspsht" PMS Builder; if YES, LPutilities subprogram "Mnulxlprodmdspsht" PMS Builder is opened in step 324; if NO, execution proceeds along a path 326 leading to program termination at step 366 or instigating the user to use the PMS Builder "Mnulxlprodmdspsht" described in FIG. 2.
  • step 320 finds that a business optimizer spreadsheet or a ratio spreadsheet is open, a step 328 tests whether the spreadsheet name is "PMSINPTRatio. " If the answer is YES, execution jumps to a step 330 which makes a row and column count by performing character recognition along the first row and first column. When step 330 encounters an empty cell along the first row, it determines the count of products or PMS' s. When step 330 encounters an empty cell along the first column, it determines the count of inventoried ingredients. Step 332 follows step 330 and reviews the ratios in the open spreadsheet with the user. If the user needs to adjust a ratio, the user performs the adjustment during the step 332 query process.
  • step 328 If the result of step 328 is NO, the user is prompted, in a step 334, to enter the name of the spreadsheet.
  • the program in a step 336, inspects the identified spreadsheet and asks the user whether or not the spreadsheet is a "ratio only" spreadsheet. If the answer is YES, execution continues at step 330, previously discussed. If the answer is NO, then the user wants to update an existing LP solution spreadsheet for a Business Optimization, so a decision is made by the program, in a step 338, to warn the user that updating an existing LP solution spreadsheet may involve the eventual use of outdated sales information in the revised Business Optimization and then asks the user, whether or not he/she still wishes to update the LP solution spreadsheet ratios.
  • step 330 executes the open spreadsheets.
  • step 332 executes the open spreadsheets.
  • step 332 determines whether or not the spreadsheet name is "ProDmdmQuery. " If the answer is NO, the user is prompted, in a step 342, to enter the spreadsheet name.
  • a test 344 determines whether or not date information is present. If the answer is NO, execution follows path 326, previously discussed. If the answer is YES, a step 346 tests whether or not the PMS count is OK. If the count falls below 5 PMS' s or products, a linear programming analysis makes no sense because of an insufficient count. If the count exceeds 25, the current LP solution technique approaches overload. A different LP solution technique could raise the 25 limit substantially. For example, the MATHCAD optimizer permits a count up to 500. Other LP optimizers go up to 10,000. However, this introduces another problem; business people excessively studying individual products rather than product marketing segments.
  • a step 348 asks the user whether an ingredient spreadsheet is open.
  • the user needs an ingredient spreadsheet with inventories of ingredients, in order to conduct the LP marketing/sales solution process. If the user does not have an ingredient spreadsheet, then they need to create it. If the answer is NO, a step 350 assists the user in the creation of an ingredient inventory spreadsheet by asking for, and recording, the names of ingredients and then asking for and recording the inventory for those ingredients. Step 350 by default names the inventory spreadsheet "Inglnv Query.” If the answer is YES, the user is prompted, in a step 352, to enter the spreadsheet name. Next, a step 354 tests whether the count of ingredients is too high, too low, or acceptable.
  • step 356 asks the user to enter sufficient additional non- inventoried ingredients during the solution process to meet a minimum of 5 total ingredients. If the user fails to add sufficient non-inventoried ingredients and there are still too few, execution follows path 326. If the user indicates the addition of sufficient ingredients has added enough non-inventoried ingredients in step 356 for the total ingredient count to fall within a predetermined acceptable range (e.g. 5- 20) or if step 354 had already determined that the count was an acceptable number of ingredients, a step 358 creates a spreadsheet called "PMSINPTRatio. " This is the spreadsheet which step 328, previously discussed, seeks. Once the spreadsheet has been created, a step 360 gets the PMS names from either "PrDmd Query" as specified in step 340 or the user selected name as specified in step 342.
  • PMSINPTRatio This is the spreadsheet which step 328, previously discussed, seeks.
  • a step 362 uses the spreadsheet "Inglnv Query" to prompt the user to enter the names of ingredients per unit of PMS.
  • a step 364 queries the user about ratios as it does at step 332.
  • LPutilities clears itself of all data and saves the changes to "PMSINPTRatio" and then proceeds to 366 for termination and closure.
  • FIG. 5 Steps 502 to 522 and FIG. 6, Steps 602 to 622)
  • Block 1 contains algorithms to address 5 issues: 1) An algorithm that reads the state of completion of the module at the initiation of the processing Block and marks the completion of the Block;
  • Algorithms request the user to enter data and identify the method of data entry, manually or automated from user generated or database generated spreadsheet and check data for conformance to required input format;
  • MARKETING SOLUTION MODULE See FIG. 4 flowchart.
  • Step 406 begins the first processing Block, the algorithm looks for no entry at spreadsheet, "Remake Sheet2," position, Row 3 Column E, "E3" to begin processing at Step 408.
  • the conclusion of the processing Block at Step 420 includes an entry of "1" at position "E3" of spreadsheet, "Remake Sheet2. "
  • Step 506 checks the status of spreadsheet completion on Sheet2 at Steps 506, 522, 532 and 558.
  • the algorithm looks for no entry at spreadsheet, "Stkanlzr Sheet2," Row 3 Column E, "E3" to begin processing at Step 508. If Step 506 finds a value of "2" at position “E3” it begins processing to Step 532. If Step 506 finds a value of "3,” it begins processing at Step 548.
  • the conclusion of the processing Block at Step 522 includes an entry of "1" at position "E3" of Sheet2 of "Stkanlzr.”
  • Step 606 The portfolio management module spreadsheet, "Stkshortr" checks the status of spreadsheet completion on Sheet2 at Steps 606, 622, 632 and 658.
  • Step 606 begins the first processing Block, the algorithm looks for no entry at spreadsheet, "Stkshortr Sheet2," Row 3 Column E, "E3" to begin processing at Step 608. If Step 606 finds a value of "2" at position "E3” it begins processing to Step 632. If Step 606 finds a value of "3" it begins processing at Step 648.
  • the conclusion of the processing Block at Step 622 includes an entry of "1" at position "E3" of Sheet2 of "Stkshortr.” DATA INPUT ENTRY AND ALGORITHMS TO CHECK DATA CONFORMITY & COUNT THE INPUTS
  • a user opens a solution module by hyperlinking from the Answer Machine interface for the user's problem.
  • the user makes this hyperlink as previously discussed (FIG. 2) after determining the required data for a problem solution.
  • the user would hyperlink to the solution module, "Remake” .
  • a user would hyperlink to the solution module, "Stkanlzr” .
  • a user would hyperlink to the solution module, "Stkshortr” .
  • the algorithm (FIG. 4, Step 408, FIG. 5, Step 508 and FIG. 6, Step 608) checks the input data for conformity with a preferred data format (Steps 412, 512 or 612) .
  • the required input structure consists of: the word “Date” in the first row of the first column and names of products or product market segments in the first row starting after the word, "Date.”
  • the marketing solution module permits date entries of days, weeks or months.
  • the portfolio management module and the stock shorting module are preferably configured to only accept weekly "dates. " Monthly stock data cover too lengthy a time period and daily stock data cover too brief a time period for useful analysis.
  • the algorithm performs the same inspection (FIG. 5, Step 508 and FIG. 6, Step 608) for stock symbols for the portfolio management and stock shorting modules, in addition to seeking three specific symbols: QQQ, SPY and DJA ("index" securities representing, in the US, stocks listed on the NASDAQ system, the Standard S- Poor' s and the Dow-Jones Industrial Average, respectively) .
  • QQQ index
  • SPY index
  • DJA index
  • the algorithm counts the number of products or stock symbols at the reading of the data input and at appropriate times (FIG. 4, Steps 422, 446, 458 and 468 of the Marketing Module; FIG. 5, Steps 522, 532 and 558 of the Portfolio Management Module, and FIG.
  • Steps 622, 632 and 658 of the Stock Shorting Module throughout the solution module.
  • the algorithm checks the count against a minimum and maximum number specified in the algorithm. If the count meets the count criteria, it becomes an essential input to the solution module affecting the spreadsheet layout and the linear program equations used to solve the problem. If the count meets the count criterion, the algorithm stores the input data on Sheetl of the solution spreadsheet, "Remake" for the marketing module and "Stkanlzr" for the portfolio management module and "Stkshortr” for the stock shorting module. For the marketing, portfolio management and stock shorting modules the algorithm requires a minimum of five (5) products, product market segment or stocks. The use of linear programming in the solution process sets the minimum.
  • the current LP solution technique creates an upper bound of twenty-five (25) on the count of stocks, products or product market segments.
  • the use of a more capable LP solution technique could raise the maximum considerably.
  • Some LP solution techniques can handle a count up to ten thousand (10 000) although a count of one thousand (1000) represents a more common limit.
  • use of a count in the hundreds misses the point of the solution module.
  • a large complex manufacturer such as an automobile manufacturer should not enter automobile models as products and the thousands of components as the ingredients . In fact an auto manufacturer should not enter products but young, middle aged and retired males and females of various income brackets as the product market segments (PMS' s) .
  • Appropriateness relates to the consideration of "opportunity cost", an economic concept concerning the cost of performing one action versus another.
  • Contributors products or market segments which contribute to profitability
  • Non-contributors products or segments which have a less-than-optimal profitability
  • An optimized course of actions minimizes "opportunity cost” by focusing efforts on contributors and minimizing efforts on non- contributors.
  • An optimized business solution consists of: contributor PMS' s, contributor product classes, contributor component classes, contributor ingredients, a roster of non-contributors, an optimized sales and marketing budget and a methodology to decide what to do about non-contributors. Trying to short-circuit this process by entering thousands of ingredients, including every nut, bolt and screw, will not prove enlightening in focusing the business for optimal profitability. ALGORITHM QUERYING THE USER RE THE NEED TO ADJUST INPUT DATA.
  • FIG. 4, Step 410, FIG. 5, Step 510, & FIG. 6, Step 610 load a statistical analysis, previously discussed, MATHCAD program into the spreadsheet memory.
  • FIG. 4, Step 412, FIG. 5, Step 512, & FIG. 6, Step 612 query the user about the need to adjust the input data for changed conditions.
  • the user can expect the new account to generate a certain level of sales in the future. Therefore, the user should add the anticipated sales to the historical data to reflect the new incremental sales expected for the new account. Without an adjustment to historical data, the sales forecast will not include the new sales account in the forecast .
  • the loss of a customer would require the user to decrease historic sales to account for sales that had existed for that customer that would no longer occur in the future.
  • a similar algorithm FIG. 4, Step 410, FIG. 5, Step 510, & FIG. 6, Step 610.
  • Step 512 and FIG. 6, Step 612) in the portfolio management module, allows a user to adjust historic stock prices to account for more up-to-date stock market realities.
  • FIG. 4, Step 414, FIG. 5, Step 514, & FIG. 6, Step 614 call the statistical analysis program previously mentioned.
  • Step 616 request the user to set variability levels associated with probability distributions for the inputted data.
  • the algorithm suggests an upper bound of 0.95 from a possible range of 0.95 to 0.99 and 0.68 for a lower bound of a possible range of 0.5 to 0.68.
  • the analysis consists of an algorithm (FIG. 4, Step 418, FIG. 5, Step 518 and FIG. 6, Step 618) that uses two separate methods to analyze the input data on Sheetl .
  • the first method previously discussed, involves a complex combination of linear and Fourier analysis and correlations.
  • the algorithm subjects the correlation results to an error analysis, relative to actual input data. That comparison leads to the development of a normal distribution of uncertainty of the correlation relative to the actual data.
  • a user of the correlation could express a required confidence level, say 95 percent, and determine a correlation result of an estimated median value, + or - some error value, such that the user can feel comfortable that, 95 times out of 100, the actual value ⁇ will fall within the correlation median value + or - the error value.
  • the resulting error-corrected correlation then forecasts 36 periods into the future, for either stock prices or product sales.
  • the uncertainty value, associated with the forecast accounts for the variability of the forecast. Naturally, the forecast rests on the assumption that the future will reflect past performance.
  • the selection of variability range reflects practical considerations of customer service levels and required product production and inventories to support those customer service levels.
  • the variability ranges reflect the anomaly of stock price fluctuations.
  • Proprietary research indicates that the distribution of stock prices about a median value reflects a skewed distribution closer to a Poisson distribution rather than a Normal distribution.
  • the sharp decline in prices above the median versus the slowly declining distribution of prices below the median reflects the long held suspicion that investors sell profitable investments too soon and hold unprofitable investments too long.
  • the algorithm suggests 95 percent for the large variability band and 68 percent for the small variability band. These bands will comprise the stock price variability estimate for each stock.
  • the second statistical analysis involves a simple linear correlation of historic data. If the correlation coefficient exceeds 0.95, the algorithm selects the simple linear correlation for the forecast of product sales or stock price forecasts.
  • the algorithm stores the statistical results including: correlation results, small and large uncertainty bands, forecasts for the next three periods, the average forecast for the next 36 periods and forecasted growth rates on Sheetl .
  • the algorithm for the marketing module involves instructions to test whether the average of the first three, middle three or last three periods of sales history represent a monotonic (consistently directed) increasing or decreasing series. If they exhibit a concave or convex shape, the entire series reflects non-linearity. If the algorithm determines non-linearity, it does not perform the linear correlation analysis. Since the linear analysis requires approximately 50 percent as much processing time as the more complex analysis, skipping the linear analysis can save considerable processing time. In the entirely possible situation that no product sales exhibit monotonic increases or decreases, the elimination of the linear analysis would reduce processing time by 33 percent. Since this algorithm requires approximately 33 percent of the total module processing time, this improvement reduces overall processing time by 11 percent.
  • An algorithm (FIG. 4: Step 412) requests the names of additional ingredients and the amounts available for each. Then, in step 420, it moves the statistical analysis results into the appropriate locations in the linear program.
  • the algorithm using the DJA variability as an index, divides all the other entries by the DJA variability and stores that index result.
  • it determines the average index for all the stocks and stores that result at position Row 3, Column M, "M3, " of Sheet2 of spreadsheet, "Stkanlzr.”
  • it determines whether the calculated index of DJA (by definition, 1) exceeds SPY'S index.
  • the algorithm sorts all the stocks with indices less than the SPY index that must be less than one. These constitute low variability/low risk stocks. If SPY'S index exceeds DJA' s index of (1), the algorithm sorts all the stocks with indices between the DJA index and the SPY index. Under these conditions, these stocks may have indices less than and greater than one. These constitute low variability/low risk stocks. It places these stocks on the spreadsheet above SPY. Next, the algorithm sorts the remaining stocks whose indices fall between the SPY and QQQ indices. These constitute medium variability/medium risk stocks. It places these stocks on the spreadsheet below SPY. It places QQQ on the spreadsheet below these medium risk stocks .
  • the remaining stocks have indices greater than QQQ and represent high variability/high risk stocks.
  • the algorithm then counts the number of stocks in each category (low, medium and high risk) and places that count on Sheet2 of spreadsheet, "Stkanlzr.” along Row 3, Columns J, K and L, "J3, “ ⁇ K3" and "L3.”
  • the user now has an accurate view of the relative variability of the stock selection and how the stock selection compares to easily understood references . Note the user will not detect any difference in the results or spreadsheet layout, even when DJA variability exceeds SPY'S, except for a fractional SPY index less than one and all low risk stocks with indices less than one. An astute or professional user will recognize this result as indicative of unusual market conditions.
  • SOLUTION BLOCK 2 (FIG. 4, Steps 422 to 436, FIG. 5, Steps 522 to 532 & FIG.6, Steps 622 to 632)
  • Block 2 contains 4 distinct algorithms:
  • An algorithm that completes the spreadsheet layout, installs fundamental equations for a linear program (LP) calls the LP solution technique, seeks a Sensitivity Analysis from the LP, examines the Sensitivity Analysis for appropriateness, alerts the user in the case of inappropriateness and ceases module operation.
  • LP linear program
  • an algorithm (FIG. 4. Step 422) examines location "E3" on Sheet2 of the spreadsheet, "Remake.” If it finds the value "1" at “E3" on the spreadsheet, the second block commences processing at Step 424. If Step 422 finds the value "2" at “E3” the second block continues processing at Step 436. At the conclusion of the second Block's processing, Step 442 adjusts "E3's" value on Sheet2 to "3". If Step 422 finds a value greater than "2" at "E3" it skips processing to Step 446.
  • an algorithm searches for the term, "Products" on Sheet2 of "Remake.”
  • the algorithm after determining the location of the term "Products,” adds one more row and then searches by counting columns to the right to find the bold italic term n Subtoot2.”
  • the count to n Subtoot2 indicates the total number of • ingredients plus one (1) , including the two potential substitutes plus the marketing budget.
  • the algorithm After locating n Subtoot2,” the algorithm returns to the column containing "Products” and searches by counting columns to the right and adding the number of columns containing plain italic characters. This total indicates the count of non-inventoried ingredients.
  • the count of inventoried ingredients equals the total minus the non-inventoried count minus the two substitutes minus one (1) to allow for the marketing budget.
  • Step 522 To determine the state of completion of the module an algorithm (FIG. 5. Step 522) examines position "E3" on the spreadsheet, "Stkanlzr” . If it finds the value "1" at "E3" on the spreadsheet, the second block commences processing at Step 524. If Step 522 finds the value "2" at "E3" the second block continues processing at Step 532.
  • Step 532 adjusts "E3's" value to "3". If Step 532 finds a value greater than "2" at "E3” it skips processing to Step 548.
  • Another algorithm (FIG. 5, Step 522) calculates the number of stocks . The algorithm searches for the term, "Stock Symbol" on Sheet2 of the spreadsheet, "Stkanlzr.” After finding the term, it adds 4 rows and begins character recognition of the fifth row and each succeeding row and counting the rows until it detects an empty row. STOCK SHORTING MODULE
  • an algorithm (FIG. 6, Step 622) examines position "E3" on the spreadsheet, "Stkshortr” . If it finds the value "1" at “E3" on the spreadsheet, the second block commences processing at Step 624. If Step 622 finds the value "2" at “E3 , " the second block continues processing at Step 632. At the conclusion of the second Block's processing, Step 632 adjusts "E3's” value to "3". If Step 632 finds a value greater than "2" at "E3, " it skips processing to Step 648.
  • FIG. 6, Step 622 Another algorithm calculates the number of stocks .
  • the algorithm searches for the term, "Stock Symbol" on Sheet2 of the spreadsheet, "Stkshortr.” After finding the term, it adds 4 rows and begins character recognition of the fifth row and each succeeding row and counting the rows until it detects an empty row.
  • Steps 424 and 428 request additional input from the user concerning the ratios of PMS output per unit of ingredient input, the prices for products or PMS' s and the prices for ingredients.
  • the algorithm for Step 424 inquires how the user wishes to input the ratios: manually or by database such as a spreadsheet or a pre-existing marketing module solution. After determining the method of ratio input, the algorithm, at Step 424, accepts the ratios, analyzes them for degeneracy, and at step 426 begins the layout of the models on "Remake." Some Linear Program solution techniques cannot solve LP setups that contain degeneracy. "Degeneracy" occurs when the ratios of ingredients for one product represent multiples for another product.
  • a six-ounce container of product and a twelve-ounce container of product do not represent different products, but rather different sizes of the same product. To enter them as different products would cause degeneracy. If the algorithm detects degeneracy, it warns the user of the problem, and offers the user the opportunity to adjust one or the other group of ratios to alter the ingredient mix. If the user declines to adjust the ratios, the algorithm notifies the user that the input consists of an impossible condition and that the module will cease operation and will shut down.
  • Step 524 requests additional input from the user concerning earnings per share and dividends per share for each stock selection on a semi-annual basis. Using a six-month period focuses on the most up-to-date earnings performance.
  • An algorithm in Step 524 requests the user to input the amount of investment capital available and the amount of that capital the user can afford to lose. The contingency loss amounts to 10 percent of the investment capital .
  • the algorithm permits a loss up to 50 percent of investment capital.
  • the 50 percent upper limit represents a useful limit for users of the portfolio management solution module.
  • Sandra willing to risk losing more than 50 percent of his or her investment would not benefit from using the portfolio management solution module.
  • the algorithm for Step 524 inquires how the user wishes to input the data: manually or by database.
  • the algorithm begins the layout of models on "Stkanlzr.” STOCK SHORTING MODULE
  • Step 624 requests additional input from the user concerning earnings per share and dividends per share for each stock selection on a semi-annual basis. Using a six-month period focuses on the most up-to-date earnings performance.
  • An algorithm in Step 624 requests the user to input the amount of investment capital available and the amount of that capital the user can afford to lose. The contingency loss amounts to 10 percent of the investment capital .
  • the algorithm permits a loss up to 50 percent of investment capital.
  • the 50 percent upper limit represents a useful limit for users of the stock shorting solution module.
  • the algorithm for Step 624 inquires how the user wishes to input the data: manually or by database.
  • the algorithm begins the layout of models on "Stkshortr.”
  • ALGORITHMS INFORMING USERS ABOUT PARAMETER LIMITS, BASED ON SUMMARY CALCULATIONS MARKETING SOLUTION MODULE
  • An algorithm uses the ratios and demand forecasts to calculate the amount of ingredients required to meet demand. It then compares that requirement with the inventories of ingredient to calculate an additional backorder of ingredients required to meet demand. After the calculations, the algorithm informs the user of the amounts to backorder for each ingredient to meet demand forecasts. After the user approves the backorder, the algorithm completes the layout of the spreadsheet less the marketing/sales budget for each product. It then calculates, at Step 434, preliminary estimates of gross margin for each product and for the overall business. It then queries the user concerning how the user wishes to allocate the marketing/ sales budget, either on a total basis or on a unit basis for each product. It indicates the total amount available for the budget with the calculation representing 90 percent of the total gross margin.
  • the algorithm asks what percentage of the gross margin the user will allocate to the budget. The user can select any percentage less than 90 percent of the preliminary estimate of gross margin. After the user enters a percentage allocation for the budget, the algorithm confirms that entry. After the user confirms the algorithm' s confirmation, the algorithm proceeds to formulate the budget. If the user had indicated a preference for a budget allocated on a total basis, the algorithm multiplies the gross margin of each product by the user specified percentage to obtain the marketing/sales budget for each product.
  • the algorithm displays the multiplication result discussed above and asks the user whether to enter that amount, or less.
  • a larger budget means the budget would exceed the percentage limit the user just specified.
  • the algorithm confirms the value.
  • An algorithm (FIG. 5, Step 524) asks the user's preference to limit variability in stock price fluctuations.
  • the algorithm suggests a variability limit of the selected stocks.
  • the user can select variability with the choice limited by the state of the stock market and the user's stock selections.
  • the algorithm limits the user to specifying a variability constraint up to 50 percent greater than the variability for QQQ. This permits consideration of many stock selections but places a reasonable limit on variability that bears some relationship to the overall stock market. If a user only selects stocks with volatilities 50 percent greater than QQQ, the user over-rides the usefulness of the portfolio management module and enters the realm of gambling. Under this condition, a variability limit of one and one-half times QQQ' s variability will act as a binding constraint forcing a solution of no investment. Ultimately the user will recognize the extreme variability of the stock selections, act sensibly and consider a different stock mix with a lower average variability.
  • Product operating margins equal the difference between product prices and the unit costs to produce, sell and market each product.
  • Gross Operating Margin equals the array product from Optimal Quantities to Sell multiplied by Product operating margins.
  • the array's number of elements equals the number of products.
  • the LP "Objective Function" equals the Gross Operating Margin.
  • Constraint Equations consist of the difference between the availability and the consumption or usage of ingredients to meet sales. Specifically, ingredients remaining after usage equal the difference between the total of an array multiplication (of ratios of usage of an ingredient by each product times the Optimal Quantities to Sell for the products) subtracted from the amount of the ingredient available. This total requires determination for each ingredient. The amount remaining must equal or exceed zero. The amount used must equal or exceed zero. The quantity of product sold must equal or exceed zero.
  • the number of "Constraint Equations” comprises (array equations equal to the number of ingredients) plus (array equations to specify greater- than-zero results to the LP solution technique) .
  • An algorithm uses the count of products, inventoried and non-inventoried, and a prescribed format completes spreadsheet layouts of models on Sheet2 and Sheet3 of the spreadsheet "Remake.”
  • the algorithm further uses the count, for these variables, to create the appropriate equations governing the model and places them at the appropriate locations on the spreadsheet. It then takes the numerical results from the statistical analysis (base forecasts and uncertainties) and input data and calculates results for those equations. It then creates the required array equations and places them in the appropriate locations. It then creates the required "Objective Function,” “Change Variable” and “Constraint Equations” and places these equations in the LP solution technique, and formulates a preliminary LP solution.
  • the algorithm checks the appropriateness of the LP solution's Sensitivity Analysis. If it finds an inappropriate Sensitivity Analysis, it notifies the user and requests the user to manually operate the LP Solution technique to produce the correct Sensitivity Analysis . If the user must perform a manual run for the
  • Step 436 enters a "2" on Sheet2 in location ⁇ ⁇ 3" and then ceases the operation of the solution module. If the algorithm determines a correct Sensitivity Analysis it enters a "3" on Sheet2 at location ⁇ ⁇ 3" and moves to the next processing Block at Step 438.
  • Step 5228 utilizes the results of the statistical analysis (Step 518) to calculate the Reward/Risk ratios for the stocks.
  • Reward/Risk ratio equals the potential investment gain divided by the potential investment loss. Potential investment gain equals forecasted upside stock price, minus the current stock price. Potential investment loss equals the current stock price, minus the forecasted downside stock price. The algorithm stores these results for later use in the solution module.
  • the Investment Capital parameter constitutes the "Change Variable” equations (different numbers) for the optimal investment for each stock. Risk splits into two sub-parameters consisting of: the amount of invested capital the user can afford to lose and the amount of stock price variability the user can afford to encounter. Reward splits into two sub- parameters consisting of: dividends and stock price appreciation.
  • the 4-array product equations produce: the Total Reward from stock price appreciation, the Total Dividend from the selected stocks, the Total Potential Loss from investing in selected stocks and the Total Variability (Price Change Risk) for the selected stocks .
  • the "Objective Function” equation consists of the sum of Total Dividends plus Total Stock price appreciation (mathematically the sum of the two array product equations covering Reward) .
  • the layout of the linear program for 13 stocks requires 65 linear equations plus the 15 "number” equations of "Change Variables.”
  • the mathematical tool that solves the linear program requires equations for instructions.
  • the algorithm at Step 530 uses the count of stocks determined at Step 522 to create the appropriate equations for the linear programming model and uses a prescribed format to complete the spreadsheet models on Sheet2 and Sheet3 of the spreadsheet "Stkanlzr.” It further uses the count, for these variables, to create the appropriate equations governing the model and places the equations at the appropriate locations on the spreadsheet . It then takes the numerical results from the statistical analysis (base forecasts and uncertainties) and input data and calculates results for the spreadsheet equations . It then creates the required array equations and places them in the appropriate locations. It then creates the required "Objective Function", “Change Variable” and “Constraint Equations” and places them in the LP Solution Technique and formulates a preliminary LP solution.
  • the algorithm checks the appropriateness of the LP solution's Sensitivity Analysis. If it finds an inappropriate Sensitivity Analysis, it notifies the user and requests the user to manually operate the LP
  • Step 534 enters a "2" on Sheet2 at location "E3” and then ceases the operation of the solution module. If the algorithm determines a correct Sensitivity Analysis it enters a "3" on Sheet2 at location "E3” and moves to the next processing Block at Step 536.
  • An algorithm (FIG. 6, Step 628) utilizes the results of the statistical analysis (Step 618) to calculate the Reward/ Risk ratios for the stocks.
  • the Reward/ Risk ratio equals the potential investment gain divided by the potential investment loss.
  • the Stock Shorting Module treats Dividends as a loss, not a gain.
  • the stock shorter might have to make dividend payments out-of- pocket to the investor who actually owns the borrowed shares of stock.
  • SOLUTION BLOCK 3 (FIG. 4, Steps 436 to 456,
  • FIG. 5 Steps 532 to 556 and
  • FIG. 6 Steps 632 to 656)
  • Block 3 contains 4 distinct algorithms:
  • An algorithm reads the state of completion of the module at the initiation of the processing Block, marks the completion of the Block and counts variables;
  • Step 422 sends the module to Step 436 to continue the solution process. Otherwise, Step 422 sends the module to step 446 to determine the state of completion of the module.
  • An algorithm at step 446, examines location "E3" on Sheet2 of the spreadsheet, "Remake.” If it finds the value "3" at "E3" on Sheet2 of the spreadsheet "Remake,” the third block commences processing at Step 448. At the conclusion of processing, Step 456 places a value of "4" on Sheet2 at location ⁇ ⁇ 3" . If Step 446 finds a value greater than "3" in "E3” it proceeds to Step 458. If the user had to manually call the LP solution technique, the module on restart at Step 422 determines the correct number of products, inventoried ingredients and non-inventoried ingredients. Otherwise an algorithm
  • FIG. 4. Step 446 searches for the term, "Products" on Sheet2 of the spreadsheet, "Remake.”
  • the algorithm after determining the location of the term “Products” adds one more row and then searches by counting columns to the right to find the bold italic term “Subtoot2.”
  • the count to "SuJbtoot2" indicates the total number of ingredients plus one (1) , including two potential substitutes, plus the marketing budget.
  • the algorithm returns to the column containing "Products” and searches by counting columns to the right and adding the number of columns containing plain italic characters. This total indicates the count of non- inventoried ingredients.
  • the count of inventoried ingredients equals the total minus the non-inventoried count minus the two substitutes minus one (1) to allow for the marketing budget.
  • Step 522 sends the module to Step 532 to continue the solution process.
  • an algorithm (FIG. 5, Step 532) examines position "E3" on the spreadsheet, "Stkanlzr” . If it finds the value "3" on Sheet2 at location "E3" on the spreadsheet, the second block commences processing at Step 548. At the conclusion of processing, Step 556 places a value of "4" in "E3". If Step 532 finds a value greater than "3" in ⁇ E3" it proceeds to Step 558.
  • the module upon restart at Step 532, uses an algorithm (FIG. 5, Step 532) to calculate the number of stocks by searching for the term, "Stock Symbol" on Sheet2 of the spreadsheet, "Stkanlzr.” After finding the term, it adds 4 rows, begins character recognition of the fifth row and each succeeding row, and counts the rows until it detects an empty row.
  • step 532 becomes step 632.
  • the algorithm (Step 438) examine the linear program's Sensitivity Analysis. At first it examines the required increase in a product's gross margin to make it an equivalent "contributor" to overall business gross margin. Note that gross margins could exist such that all products contribute to the business. If so, the algorithm notifies the user of this situation. It might indicate a lack of upside or downside gross margin sensitivity. The count of upside or downside gross margin triggers has no relationship to the number of products, except that the maximum possible count of gross margin adjustments will be limited to less than twice the product count. Because the LP formulation provided all ingredients to meet demand, only marketing constraints, not production constraints, affect the solution.
  • the required gross margin increase for a product represents the "opportunity cost" attributable to making and selling the product. If products exist with “opportunity costs” , the business would benefit by devoting resources to the promotion and sales of other products.
  • the algorithm at Step 440, notifies the user of the less than optimal gross margin contribution of the product and indicates the per-unit cost to the business for supporting the product.
  • the user can choose to offset "opportunity cost" by either raising prices or cutting expenses.
  • the algorithm focuses on expense cuts.
  • the algorithm (FIG. 4, Step 442) examines each gross margin increase and decrease in the Sensitivity Analysis that affects the potential contribution of each product. Therefore, the algorithm must examine the Sensitivity Analysis and determine if and what price change would possibly change a product's contribution to the business .
  • the algorithm' s examination consists of determining if the upside or downside gross margin increase exceeds $0.01 but does not exceed $10000.
  • the algorithm detects a ⁇ 3" at position "E3" on the solution spreadsheet, the algorithm recognizes the user manually ran the LP analysis at Step 534 to obtain a Sensitivity Analysis for a LP with limited constraint equations. It proceeds to examine the linear program's Sensitivity Analysis (Step 536) . It examines the Sensitivity Analysis to determine whether an incremental price change exists (whatever its probability of occurrence) that would make the stock a portfolio candidate, or remove its candidacy. Note that current stock prices could exist such that all stock selections become portfolio candidates. In this situation, the Sensitivity Analysis would indicate NO upside price sensitivity. However, price drops co ⁇ ld remove a stock's candidacy.
  • the Sensitivity Analysis would indicate some upside price variability. If upside price variability exists, the algorithm adjusts the price to the upside trigger. It then compares that price to the statistical analysis' high side price variability. For the suggested upper variability of 0.95, less than a 5 percent probability exists, that the high side price or greater will occur. If the stock price trigger exceeds the high side price, then the algorithm notifies the user of this unlikely event. In some cases, the user would have to sell the stock at this high price, as well as purchase it at a low price, to make an investment gain equivalent to the gain afforded by other stocks . The algorithm compares the low buy price to the statistical analysis' low side price variability.
  • the algorithm at step 538, notifies the user of this unlikely event, in combination with the necessity of achieving the unlikely selling price.
  • the algorithm records, at Step 540, whether or not a stock has some reasonable probability of contributing to the portfolio.
  • the algorithm asks about the user's current portfolio, requesting identification of the stocks, the purchase prices, and the amount originally invested in each stock and the user's requirement for dividends.
  • the algorithm detects a "3" at position "E3" on the solution spreadsheet, the algorithm recognizes that the user manually ran the LP analysis at Step 634 to obtain a Sensitivity Analysis for a LP with limited constraint equations. It proceeds to examine the linear program's Sensitivity Analysis (Step 636) . It examines the Sensitivity Analysis to determine whether an incremental price change exists (whatever its probability of occurrence) that would make the stock a viable candidate for a short sale. Note that prices could exist such that all stock selections make acceptable stock shorting candidates. In this situation, the Sensitivity Analysis would indicate NO downside price sensitivity.
  • the Sensitivity Analysis would indicate some downside price sensitivity. If downside price sensitivity exists, the algorithm adjusts the price to the downside trigger. It then compares that price to the statistical analysis' low side price. For the suggested upper variability of 0.95, less than a 5 percent probability exists that the low side price or less will occur if the stock price trigger is less than the low side price. The algorithm, at Step 638, notifies the user of this unlikely event. In some cases, the user would have to sell the stock at this high price, as well as purchase at a low price, to make a short sale gain equivalent to the gain afforded by other stock short sales .
  • the algorithm compares the low sell price to the statistical analysis' low side price variability. If the statistical analysis' low side price is less than the indicated sell price, the algorithm at Step 638 notifies the user of this unlikely event, in combination with the necessity of achieving the unlikely buy price.
  • the algorithm at Step 640 records whether or not a stock has some reasonable probability of contributing to the short sale portfolio.
  • the algorithm inquires about the user's current portfolio of short sale stocks, the shorting prices and amount originally realized by the sale of each stock and the user's willingness for dividend re- imbursement expenditures.
  • the algorithm examines each stock price increase and decrease in the Sensitivity Analysis that affects the potential contribution of each stock to the portfolio. Note that prices could exist such that all stocks contribute to the portfolio mix. If so, the algorithm notifies the user of this situation. It might indicate a lack of upside or downside stock price sensitivity.
  • the count of stock selections for a portfolio has no relationship to the count of price changes of interest from a Sensitivity Analysis except that the maximum possible count of price changes will be limited to less than twice the stock count. Therefore, the algorithm must examine the Sensitivity Analysis and determine if a price change, and what price change, would possibly change a stock' s inclusion in the portfolio.
  • the algorithm' s examination consists of determining if the upside or downside price increase exceeds $0.01 but does not exceed $10000. This range excludes situations where unrealistically large price increases must occur to include the stock in the portfolio.
  • the algorithm records the count of upside price increases and adjusts the current stock prices for the increases. It performs the same for downside prices.
  • the algorithm takes the adjusted price for each stock, substitutes it into the linear program, solves the LP and records the solution of which stocks the LP includes in the portfolio. It repeats this process for all the possible stock price changes indicated by the Sensitivity Analysis. For each stock, this algorithm counts the number of occurrences in the LP solutions and records it . An algorithm in the final block of the portfolio management module uses this result in its analysis.
  • the algorithm compares the prices required for stock contribution to the portfolio from step 548 and the probabilities of price occurrence from the statistical analysis.
  • the algorithm stores these prices and probabilities.
  • STOCK SHORTING MODULE For further explanation of the Stock Shorting algorithms to count and adjust stock prices, review the paragraph above and substitute "Stkshortr" for "Stkanlzr” and add 100 to the reference numeral for the respective step.
  • the algorithms compare the probabilities of low prices with price drops required to make a shorted stock a "contributor” to the shorting portfolio.
  • ALGORITHMS ADJUSTING THE SIMPLE LINEAR PROGRAM (LP) MARKETING SOLUTION MODULE An algorithm (FIG. 4, Step 452) adjusts the simple LP on Sheet2 by utilizing the implications of the
  • Sensitivity Analysis to create additional equations to apply as additional constraints.
  • This algorithm does not affect the solution on Sheet3.
  • Sheet3 continues with the simple LP solution to offer a comparison between a simple type of LP solution and the more sophisticated one created by the inclusion of expert analysis contained on Sheet2.
  • the algorithm examines whether a product acts as a contributor or detractor to the business.
  • the algorithm takes the median demand forecast and adds the large demand variability determined by the statistical analysis.
  • the adjusted demand equates to a customer service level of 95 percent (or meeting customer demand 95 percent of the time) .
  • the algorithm copies, from the Sheetl statistical analysis results, the median demand forecast and subtracts the small variability.
  • the adjusted demand equates to a customer service level of 32 percent (or meeting customer demand 32 percent of the time) . It then uses these revised demand forecasts as additional constraints.
  • the 95 percent service level dictates the upper bound on the "Change Variable" equations.
  • the 32 percent service level dictates the lower bound on the "Change Variable” equations.
  • the algorithm adds two control equations to the LP solution technique bounding the solution to the "Change Variables" to within the upper and lower bounds.
  • the algorithm (Step 454) then commands the LP solution technique to re-solve the LP.
  • the solution consists of "Change Variables" for quantities to sell of products where:
  • Step 456 displays the improved results next to the base results on Sheet2 of spreadsheet, "Remake” in locations "F3" through “G6” .
  • the comparison includes Gross Margin, Resource Utilization and Total
  • the algorithm (Step 458) places a "4" in location ⁇ ⁇ 3" of Sheet2 of "Remake.”
  • PORTFOLIO MANAGEMENT MODULE Before adjusting the simple LP layout and equations, the algorithm (FIG. 5, Step 554) challenges the user to use any basis or methodology to make investments in any of the selected stocks . After the selection the algorithm calculates and records the results of the challenge at positions "F4" through “F7" of Sheet2 of "Stkanlzr.” Results include: the Reward / Risk ratio, the portfolio variability, the maximum loss and the maximum cash gain. Alternatively, if the user declines to make any investment decisions, the algorithm simply distributes investments equally among all the stocks. This represents the simplest method for investment allocation. The algorithm records the results of the challenge at positions "F4" through “F7” of Sheet2 of "Stkanlzr.”
  • the algorithm queries the user concerning any existing investments in the selected stocks. If the user has stocks, the algorithm requests and records information concerning the purchase price and the amount invested in the stock.
  • the algorithm adds to and adjusts the simple LP' s equations.
  • the algorithm queries the user concerning a preference for the maximum fraction a stock can constitute in the portfolio.
  • the algorithm limits the maximum fraction to between (0.15) and (0.36) .
  • Proper portfolio diversification requires a portfolio of at least 5 to 7 stocks. With 7 stocks, each stock's fraction would equal (1/7) one-seventh or a fraction of approximately (0.15) . This constitutes the reason for the lower fraction.
  • An upper limit of (0.36) permits a user to approximately double the limit for stocks with particularly strong investment potential.
  • the selection of (0.36) provides a number with large factorial possibility but approximately double the recommended limit. (The numbers 2, 3, 4, 6, 9, and 12 can divide 36.
  • the algorithm creates equations for stock prices within a trading range and equations for stock prices piercing established trading ranges. For stock prices occurring within established trading ranges, the algorithm creates equations with the format of: (calculated upside fraction limit for an individual stock) minus (optimum investment in individual stock divided by total investment) , if the user hold no current investment in the stock or
  • the above algorithm can formulate, for each stock, any one of 420 different equations. If the LP solution technique handled more than 25 stocks, the algorithm might require adjustment to account for a larger number of stocks.
  • the trigger factors of (0.16), (0.325) and (0.65) reflect an expert evaluation of the contributory nature of stocks with various (R/R) ratios and the requirement to broaden a portfolio to minimize risk. Proper portfolio diversification requires a portfolio of at least 6 to 7 stocks although it is recommended to investigate a minimum of 15 stocks. With 7 stocks, each stock on average represents less than (1/7) or (0.15) of the portfolio.
  • the calculated weight factors reflect the consideration of the Reward / Risk ratio (R/R ratio) for a stock:
  • the weight factor equals (one times the current stock investment divided by total investment available) .
  • weight factors permit a reasonable range for consideration of whether the stock represents an optimal investment, as well as its role as an existing investment.
  • the (R/R) hurdle (3) to keep the stock, should fall below the (R/R) hurdle (5) required for addition to the portfolio. If the (R/R) hurdle falls below (3) , the weight factor falls to one- half (0.5) , in consideration of possibly selling some of the existing investment.
  • a (R/R) ratio below 3 represents an investment with a potential return of less than $3 for every dollar at risk of loss. This represents a barely attractive investment.
  • the weight factor automatically equals zero if the (R/R) ratio falls below one dollar ($1) . In this situation, the user faces a greater risk of losing money than making money from the stock investment . It seems hard to imagine any rational user would prefer a money losing investment to a money making one.
  • the algorithm creates different equations that supersede the trading range equations. These additional equations reflect research on portfolio management results derived from the three previous blocks of analysis. The algorithm creates equations with three different formats : lock the stock out of the portfolio, lock the stock into the portfolio or discard consideration of the stock due to confusing stock price distribution results.
  • the algorithm prioritizes the non-trading range equations over trading range equations.
  • Non-trading range equations have two different objectives, depending upon whether the stock price exceeds the upper or lower trading range prices.
  • LOCK-IN EQUATIONS adhere to the mathematical and logic formula:
  • a price increase representing a differential between the current and forecasted prices of 2.56 percent within a one-week period indicates a major shift for a stock's price distribution. Furthermore, it indicates a substantial probability for a period of increasing prices. Consequently, the algorithm formulates several equations to force the stock into the portfolio.
  • the algorithm evaluates the equation to determine if the logic statement applies. If it applies, a second equation evaluates a value for an algorithm variable, zdzrato.
  • zdzrato equals the maximum permitted ratio of any stock within the available invested funds as selected by the user multiplied by the ratio derived by 0.8 divided by the square root of the number of stocks considered for the portfolio.
  • the value of 0.8 represents a compromise value sanctioning portfolios with 6 to 30 stocks. If the number of stocks considered for a portfolio were to exceed more than 30, the value 0.8 would have to increase.
  • a third equation determines if the value of zdzrato exceeds 0.05 and if so, sets zdzrato equal to 0.05.
  • the algorithm then produces another equation equaling the ratio of the amount invested in the stock relative to available invested funds minus zdzrato.
  • the reason for limiting the ratio of the stock to the total portfolio to 0.05 represents a minimum lower bound of 5 percent of the portfolio.
  • any equation for a stock with zdzrato equaling 0.05 must set the stock investment ratio to some value greater than or equal to 0.05 to meet the linear programming constraints prohibiting negative investment values.
  • DISCARD EQUATIONS supersede all other algorithm equations. Portfolio research with the portfolio management module indicates that, under certain conditions, the algorithm fails to adequately manage a stock portfolio.
  • DISCARD EQUATIONS evaluate the conditions for unsatisfactory portfolio management performance and test stock price distributions for these conditions. When the conditions apply, the algorithm eliminates the stock from portfolio consideration. Philosophically, this represents a decision to accept a lost opportunity rather than potentially make a losing investment. In some instances the algorithm's DISCARD EQUATION will eliminate LOCK-IN or LOCKOUT equations. Consequently, the LOCK-IN and LOCKOUT equations include the DISCARD EQUATION test as a condition for application.
  • the algorithm sets zszrato equal to zero.
  • the algorithm then enters another equation setting the allowed percentage of stock in the portfolio equal to zszrato minus the ratio of the amount invested in the stock relative to available invested funds.
  • any equation for a stock with zszrato equaling zero must set the stock investment to zero to meet the linear programming constraints prohibiting negative investment values.
  • the algorithm at Step 556, performs the final LP analysis utilizing all the constraint equations and then enters "4" at position ⁇ ⁇ 3" on Sheet2 of "Stkanlzr" . STOCK SHORTING MODULE Before adjusting the simple LP layout and equations, the algorithm (FIG.
  • Step 654 challenges the user to use any basis or methodology to short sales in any of the selected stocks.
  • Stock Shorting algorithms to weigh shorting amounts within a trading, range, review the paragraph above and substitute "Stkshortr” for "Stkanlzr” and add 100 to the step values.
  • the algorithm For stock prices occurring above or below established trading ranges, the algorithm creates different equations that supersede the trading range equations. These additional equations reflect research on portfolio management results derived from the three previous blocks of analysis.
  • the algorithm creates equations with three different formats: lock the stock out of short sale, lock the stock into the short sale or discard consideration of the stock due to confusing stock price distribution results.
  • the algorithm prioritizes the non-trading range equations over trading range equations. These equations represent the logical antithesis to the LOCK-IN and LOCKOUT equations for the Portfolio Management Module. As the stock-shorting module provides risk reduction to the portfolio management module stocks conforming to a LOCKOUT of stock purchases should appear as logical candidates for short sales.
  • stocks conforming to purchase LOCK-IN conditions should find no purpose for short sales.
  • the stock-shorting module evaluates the reasonableness of prices for good investments and determines shorting opportunities for over-priced stocks. This differs from the classic notion of short selling of "poor" investments.
  • the algorithm then enters another equation setting the allowed percentage of stock in the portfolio equal to zszrato minus the ratio of the amount invested in the stock relative to available invested funds.
  • any equation for a stock with zszrato equaling zero must set the stock investment to zero to meet the linear programming constraints prohibiting negative investment values.
  • a price decrease representing a differential between the current and forecasted prices of 8.68 percent within a one-week period indicates a major shift for a stock's price distribution. Similar to the portfolio management module this algorithm also requires several programming equations to achieve the lock-in. Consequently, the algorithm formulates several equations to force the stock into the shorting group. First, the algorithm evaluates the equation to determine if the logic statement applies. If it applies, a second equation evaluates a value for an algorithm variable, zdzrato.
  • zdzrato equals the maximum permitted ratio of any stock within the available invested funds as selected by the user multiplied by the ratio derived by 0.8 divided by the square root of the number of stocks considered for shorting.
  • the value of 0.8 represents a compromise value sanctioning shorting activity with 6 to 30 stocks. If the number of stocks considered for shorting were to exceed more than 30, the value 0.8 would have to increase.
  • a third equation determines if the value of zdzrato exceeds 0.05 and if so, sets zdzrato equal to 0.05.
  • the algorithm then produces another equation equaling the ratio of the amount invested in the stock relative to available invested funds minus zdzrato.
  • the reason for limiting the ratio of the shorted stock to the total of shorted funds to 0.05 represents a minimum lower bound of 5 percent of the portfolio.
  • DISCARD EQUATIONS evaluate the conditions for unsatisfactory stock shorting performance and test stock price distributions for these conditions. When the conditions apply, the algorithm eliminates the stock from consideration for shorting. Philosophically, this represents a decision to accept a lost opportunity rather than potentially make a losing short sale. In some instances the algorithm's DISCARD EQUATION will eliminate LOCK-IN or LOCKOUT equations. Consequently, the LOCK-IN and LOCKOUT equations include the DISCARD EQUATION test as a condition for application.
  • the algorithm achieves the exclusion with several equations.
  • the first equation makes the logic test. If the stock's price distribution characteristics fall within the logic test, the algorithm proceeds with additional equations equivalent to the equations in the LOCKOUT Equations. Initially, the algorithm sets zszrato equal to zero. The algorithm then enters another equation setting the allowed percentage of stock in shorting funds equal to zszrato minus the ratio of the amount risked in the stock shorting relative to available shorting funds . When the algorithm enters the final linear programming allocation of stock shorting funds, any equation for a stock shorting with zszrato equaling zero must set the stock short to zero to meet the linear programming constraints prohibiting negative funds .
  • FIG. 5 Steps 558 to 564 and
  • Block 4 contains 2 distinct algorithms:
  • An algorithm reads the state of completion of the module at the initiation of the processing Block, marks the completion of the Block and counts variables;
  • An algorithm queries the user concerning the user's preference: on the marketing module for adjustment of the Marketing/Sales budget and, upon completing the budget, creating a Product Development and or Ingredient Substitution analysis spreadsheet; creating a permanent spreadsheet with adjustable investment and risk factors for the portfolio management module or stock shorting module .
  • Step 458 examines "E3" on the spreadsheet, "Remake” , to locate a "4" in order to begin processing at Step 460. If Step 458 finds a value of "5" in “E3” it proceeds to Step 470 and exits the algorithm. At the conclusion of processing, Step 460 places a value of "4" in ⁇ ⁇ 3" if the user declines to adjust the Marketing/ Sales Budget. If the user adjusts the Marketing/ Sales budget Step 468 places a value of "5" in U E3" and exits (Step 470) . To determine the correct number of products, inventoried ingredients and non-inventoried ingredients an algorithm (FIG. 4.
  • Step 458) searches for the term, "Products" on Sheet2 of the spreadsheet "Remake.”
  • the algorithm after determining the location of the term “Products” adds one more row and then searches by- counting columns to the right to find the bold italic term n Subtoot2.”
  • the count to "Subtoot2" indicates the total number of ingredients plus one (1) , including the two potential substitutes plus the marketing budget.
  • the algorithm returns to the column containing "Products” and searches by counting columns to the right and adding the number of columns containing plain italic characters. This total indicates the count of non-inventoried ingredients.
  • the count of inventoried ingredients equals the total minus the non- inventoried count minus the two substitutes minus one (1) to allow for the marketing/ sales budget.
  • Step 558 examines position "E3" on the spreadsheet, "Stkanlzr” . If it finds the value "4" at “E3” it queries the user if the user wishes to record the portfolio management results to a spreadsheet. If the user answers “Yes” the algorithm proceeds to Step 560. After a "Yes” answer, “Stkanlzr” seeks the spreadsheet “Foliomgr” . If “Stkanlzr” misses “Foliomgr” it asks the user to locate “Foliomgr” and then shuts down.
  • Step 560 If “Stkanlzr” locates “Foliomgr” at step 560 it saves its results to a spreadsheet called, "Foliomgr(date) " where date equates to the month and date of the analysis. After transferring results to “Foliomgr(date) ", the algorithm at step 562 deletes the results from “Foliomgr” and closes it. At step 564 the algorithm deletes results from "Stkanlzr” and closes it. If the user answers "No” at step 558, "Stkanlzr” proceeds to Step 570 and exits the module. Another algorithm at this step, (FIG. 5. Step 558) calculates the number of stocks. The algorithm searches for the term, "Stock Symbol" on the module spreadsheet. After finding the term it adds 4 rows and begins character recognition of the fifth row and each succeeding row and counting the rows until it detects an empty row.
  • an algorithm examines position ⁇ E3" on the spreadsheet, "Stkshortr". If it finds the value "4" at “E3” it queries the user if the user wishes to record the portfolio management results to a spreadsheet. If the user answers “Yes” the algorithm proceeds to Step 660. After a "Yes” answer, “Stkshortr” seeks the spreadsheet “Foliomgr” . If “Stkshortr” misses “Foliomgr,” it asks the user to locate “Foliomgr” and then shuts down.
  • FIG. 6, Step 658 Another algorithm at this step, calculates the number of stocks .
  • the algorithm searches for the term, "Stock Symbol" on the module spreadsheet. After finding the term, it adds 4 rows, begins character recognition of the fifth row and each succeeding row, and counts the rows until it detects an empty row.
  • ALGORITHMS DETERMINING IF AND/OR HOW THE USER WISHES TO COMPLETE THE SOLUTION MODULE MARKETING MODULE
  • An algorithm asks if the user wants to adjust the Marketing/Sales budget. If the user declines, the algorithm ends the program at step 470. If the user decides to adjust the marketing budget, the next algorithm (Step 460) focuses on the "detractor" products. Initially, the algorithm attempts to reduce the marketing/sales budget . The algorithm subtracts the "opportunity cost" determined by the LP Sensitivity Analysis from the user's original per-unit marketing/sales budget. The algorithm presents the calculation result to the user, along with an upper limit of the amount of the original budget. A subtraction greater than the original budget would create a negative number. The user can select (Step 462) any number between the suggested number and the lower bound.
  • the algorithm performs the calculation and presents the results for each detractor product. After reviewing the budget adjustments, the algorithm (Step 464) then commands the LP solution technique to re-solve the LP. Assuming the user accepted the algorithm's recommendations for budget adjustments, the user is likely to achieve a dramatic Gross Margin improvement. Basically, the entire reduction in the marketing/sales budget flows directly to profitability. Furthermore, why should the business expend resources to sell something that ultimately decreases profitability?
  • the algorithm (468) places a "5" in position "E3. " It queries the user concerning the desire to create a Product Development or Ingredient Substitution analysis spreadsheet.
  • the block searches for spreadsheet "PD&ISnlzr.” If the user has opened "PD&ISnlzr", the marketing solution Module, "Remake” creates a specific marketing model on "PD&ISnlzr” that permits the user to: determine whether a new product development (Sheet2) will mesh economically with the existing business products or whether a potential new ingredient (Sheet3) will economically contribute to the existing mix of ingredients.
  • This marketing model utilizes the equations formulated in Step 462 of Module "Remake” for adjusting the marketing budget that supports the existing product mix.
  • Sheetl contains the product sales and statistical analysis data.
  • "PD&ISnlzr” erases itself. If the user forgot to open spreadsheet, "PD&ISnlzr”, “Remake” sends an error message that it did not find “PD&ISnlzr” . The user has an opportunity to open “PD&ISnlzr”, have “Remake” locate a value of "5" at "E3", and create the new product marketing model. Alternatively, the user can decline the Product Development or Ingredient Analysis until a later time.
  • Step 558 If the algorithm (Step 558) locates a "4" at position "E3" of "Stkanlzr,” it queries the user if the user wishes a permanent copy of the portfolio analysis. If the user answers "Yes” , the algorithm goes to Step 560 and copies the results to a spreadsheet called "Foliomgr(date) .” (See explanation in paragraphs above.) In Step 562, the algorithm erases itself and, in Step
  • Sheetl contains the stock sales data and the statistical analysis results.
  • Sheet2 contains the complete solution including the expert analysis constraint, equations.
  • Sheet3 contains a less sophisticated LP solution to compare with the Sheet2 results .
  • Step 658 If the algorithm (Step 658) locates a "4" at position "E3" of "Stkshortr” it queries the user if the user wishes a permanent copy of the stock shorting analysis. If the user answers "Yes", copies the results to a spreadsheet called “Foliomgr (date) . " (See explanation in paragraphs above.) Sheetl contains the stock sales data and the statistical analysis results. Sheet2 contains the complete solution including the expert analysis constraint equations. Sheet3 contains a less sophisticated LP solution to compare with the Sheet2 results. FLOWCHART DESCRIPTION OF SHEET2 OF PD&ISnlzr(Date) FOR PRODUCT DEVELOPMENT (FIG. 7A)
  • PD&ISnlzr operates as a template for the Remake template spreadsheet .
  • Remake calls PD&ISnlzr and transfers the spreadsheet data and algorithms to Sheet2 of PD&ISnlzr for a product development and Sheet3 for input substitution investigations.
  • Remake then saves PD&ISnlzr as a finished spreadsheet called PD&ISnlzr(Date) .
  • Date indicates the month and day of PD&ISnlzr(Date) ' s completion.
  • Remake then closes PD&ISnlzr and itself so that Remake and PD&ISnlzr always remain empty templates for subsequent problem analysis.
  • PD&ISnlzr contains the same algorithms described for PD&ISnlzr(Date) .
  • Step 702a involves the selection and opening of
  • Sheet2 of PD&ISnlzr(Date) On opening PD&ISnlzr(Date) inserts the current date at position Cell (4,4) on (Sheet2) .
  • This reference date provides a time marker to evaluate the timeliness and relevance upon subsequent openings to the date of spreadsheet completion recorded at Cells (3,4) .
  • Timeliness depends upon the time period of sales data: monthly, weekly or daily. If the date of the re-opening of a completed spreadsheet occurs within: 7 days for daily sales data, two weeks for weekly data or two months for monthly data, the algorithm continues to step 710a.
  • the algorithm alerts the user at step 706a of the un-timeliness of the spreadsheet results, and asks, at Step 708a, whether the user wishes to continue using the out-dated results. If the user answers NO, the algorithm proceeds to step 746a, the algorithm exit. If the user answers YES, the algorithm proceeds to step 710a and asks the user's name, assuming the user differs from the user of "Remake" .
  • step 712a The algorithm proceeds to step 712a to read: Cells (1,1) for the number of products, Cells (2,1) for the number of inventoried ingredients, Cells (3,1) for the number of non- inventoried ingredients and Cells (6,1) for the type of product comparison, if any, the user attempted.
  • Step 714a examines the spreadsheet to determine the existence of parameters in a spreadsheet storage area four lines below the spreadsheet layout. If stored parameters exist, the algorithm proceeds to step 722a. If no stored parameters exist, .the algorithm at step 716a asks the user if the user wishes to hear instructions. If the user answers YES, the algorithm at step 718a calls a text-to-voice program.
  • step 720a moves the forecasted sales demand, ratios of ingredients to products and new product parameters to a storage area.
  • step 722a the user has a choice between a general or specific product (or product market segment) comparisons. If the user chooses a general comparison (the algorithm recommends against this choice as a poor basis for comparison) , the algorithm enters a 50 in Cells (6,1) and advances to step 730a. Step 730a determines the average product (or product market segment) price, average demand and average marketing/ sales budget for all existing products (or product market segments) .
  • step 724a asks the user to select a product for substitution.
  • Step 724a asks if the user requires recapitulation of the status of each product as a contributor, non-contributor or neutral element in business profitability. If the user desires a recapitulation, the algorithm reviews the status of each product and inquires which product the user wishes to choose for product development substitution. If the user reviews all existing products without selecting one, step 726a moves to step 728a and asks the user whether to review the existing products again. If the user selects NO, the algorithm advances to step 746a, the algorithm exit .
  • step 728a If the user answers YES to step 728a, the algorithm returns to step 724a. Assuming upon return to step 726a, the user selects an existing product for substitution, and the algorithm at step 732a enters the sequence number of the product in the product list into Cells (6,1) and then obtains the selected product's (or product market segment) price, demand and marketing/sales budget and places the values in the appropriate cell locations for the new product . The algorithm advances to step 734a and requests the revised ratios of input requirements per unit of new product (or new product market segment) output.
  • the algorithm compares the new ratios with the other ratios to determine if the user created a degeneracy problem between the new product and any of the existing products. If the user's proposed ingredient to product ratios creates a degeneracy problem, the algorithm advances to step 738a notifies the user of the degeneracy problem and asks if the user wishes to alter the new product ratios. If the user declines to adjust the ratios, the algorithm at step 738a notifies the user of the non-feasibility of problem solution and advances to step 746a, the algorithm exit. If the user agrees to revise the ratios, the algorithm returns to step 734a to repeat the ratio input and subsequent degeneracy checking steps .
  • step 740a calls the linear program and step 742a solves the linear program for the proposed new product with the existing product parameters (price, demand and marketing/ sales budget) .
  • step 744a of the algorithm compares the new product solution to the existing product solution. The comparison includes several factors: Total Business Gross Margin, specific replaced product gross margin, and displacements of demand for non-contributor, contributor and neutral products.
  • the algorithm indicates to the user whether the proposed product development improves or retards business performance and whether the proposal warrants further investigation. For example, if the proposed new product increases overall business gross margin, the gross margin for the substituted product and displaces demand for the substituted product as well as other non- contributor products, the algorithm notifies the user of the favorable results and recommends further investigation of the proposed product development. Conversely, if the proposed new product decreases Total Business Gross Margin and reduces product gross margin, as well as displacing demand for contributor products while not displacing demand for non-contributor products, the algorithm notifies the user of the objectionable results and recommends discontinuation of investigating the new product. After notifying the user of the new product results, step 746a exits the algorithm. FLOWCHART DESCRIPTION FOR SHEET2 of PD&ISnlzr (Date) FOR PRODUCT DEVELOPMENT (FIG. 7B) : SYSTEM RESTORE
  • Step 748b includes reading Cells (2,1) for the number of inventoried ingredients, Cells (3,1) for the number of non-inventoried ingredients and Cells (6,1) for the type of product comparison, if any, the user previously attempted. If Cells (6,1) remains empty, the user has not attempted a product development and step 750b on finding an empty cell proceeds to step 760b and exits the program. ' If step 750b locates a number in Cells (6,1) , the algorithm proceeds to step 752b to determine if any activity occurred at the new product ratio spreadsheet storage area.
  • step 760b If no activity occurred the algorithm proceeds to step 760b and exits the program. If step 752b detects activity at the ratio storage area, the algorithm proceeds to step 754b and moves the original data concerning the existing products (or product marketing segments) to the appropriate cells on the solution spreadsheet . The algorithm advances to step 756b and checks Cells (6,1) to determine if the user sought a general (cell entry of 50) or specific product (cell entry of existing product sequence number) comparison. If step 756b detects a general comparison, the algorithm proceeds to step 760b and exits the program. If step 756b detects a specific comparison, the algorithm at step 758b restores the marketing/sales budget of the new product to the value of the comparison existing product's budget and then proceeds to step 760b and exits the program.
  • step 756b detects a general comparison
  • step 758b restores the marketing/sales budget of the new product to the value of the comparison existing product's budget and then proceeds to step 760b and exits the program.
  • Step 702c involves the selection and opening Sheet3 of PD&ISnlzr (Date) . On opening
  • PD&ISnlzr(Date) at step 704c inserts the current date at position Cell (4,4) on (Sheet3) .
  • This reference date provides a time marker to evaluate the timeliness and relevance upon subsequent openings to the date of spreadsheet completion recorded at Cells (3,4) . If the user opens Sheet3 of PD&ISnlzr (Date) on the same day as the Date in Cells (3,4) the algorithm assumes the user's name matches the name recorded during the creation of PD&ISnlzr(Date) . Otherwise, the algorithm at step 706c asks for the user's name. Then, the algorithm investigates the timeliness of Sheet3. Timeliness depends upon the time period of sales data: monthly, weekly or daily.
  • step 712c If the date of the re-opening of a completed spreadsheet occurs within: 7 days for daily sales data, two weeks for weekly data or two months for monthly data, the algorithm continues to step 712c. If the re-opening date relative to the spreadsheet completion date exceeds: 8 days for daily sales data, two weeks for weekly data or two months for monthly data, the algorithm alerts the user at step 708c of the un-timeliness of the spreadsheet results and proceeds to step 710c to ask if the user wishes whether to continue using the out-dated results. If the user answers no the algorithm proceeds to step 754c, the algorithm exit.
  • step 712c determines the existence of parameters in a spreadsheet storage area. If stored parameters exist, the algorithm proceeds to step 722c. If no stored parameters exist, the algorithm at step 716c asks the user if the user wishes to hear instructions.
  • step 718c calls a text to voice program. Whatever the user's answer at step 716c, the algorithm proceeds to step 720c and moves the forecasted sales demand, ratios of ingredients to products and ingredient prices to a storage area four lines below the spreadsheet layout.
  • step 722c the user has a choice between a new ingredient or, if previously selected, an existing ingredient for substitution investigation. If the user has previously selected an ingredient for a substitution comparison the algorithm queries whether to continue with the selected ingredient. If the user decides to continue with the existing ingredient, the algorithm proceeds to step 730c and enters the ingredient number (counted from left to right starting with one of the ingredient list in the spreadsheet layout) in Cells (6,1) .
  • Step 724c reviews the existing ingredients for the user's selection.
  • the algorithm at step 726c checks if the user selected an ingredient, and if so proceeds to step 730c and enters the ingredient number in Cells (6,1) . If the user failed to select an ingredient, step 726c advances to step 728c and asks the user about reviewing the ingredients again. If the user desires a re-capitulation, the algorithm returns to step 724c. If the user reviews all ingredients without selecting one or asking for another review, step 728c advances to step 754c, the algorithm exit.
  • step 732c asks the user if ingredient substitution will require one or two substitute ingredients. Depending upon the user's choice, the algorithm enters a one or two in Cells (7,1) to remember the number of substitutes. The algorithm advances to step 734c and asks: first, for the user to enter revised ratios of the amount of the existing ingredient required per unit of product (or product market segment) output and then checks the entered ratios and second, the ratio (s) of the amount of the new ingredient (s) required per unit of product (or product market segment) output.
  • step 736c The algorithm advances to step 736c and asks the user to check the entered ratios. If upon checking, the user discovers an incorrect ratio entry, the user can correct the ratio.
  • the algorithm advances to step 738c and asks the user for the price (s) for the new ingredient (s) .
  • Step 738c also assumes that the inventory of new substitute (s) equals the amount available of the existing ingredient and enters that amount in the appropriate cell for the substitute inventory.
  • step 740c determine if product (or product market segment) prices exceed the cost of product re-formulation with the new ingredient (s) .
  • step 742c the algorithm advances to step 742c and cautions the user about the cost discrepancy and asks if the user wishes to increase the product price to cover input cost. If the user declines to adjust the product (or product market segment) price, the algorithm advances to step 754c, the algorithm exit. If the user accepts a product price adjustment the algorithm makes the adjustment advances through step 740c to step 744c. If the product prices at step 740c cover input costs or the user accepts a price adjustment to cover input costs, the algorithm advances to step 744c and checks if degeneracy occurs from the ingredient changes.
  • step 746c the algorithm advances to step 746c and asks the user if the user wishes to redo the ratios of substitute ingredient amounts per unit of product (or product market segment) output. If the user answers YES, the algorithm returns to step 734c; if NO, the algorithm advances to step 754c, the algorithm exit. Assuming no degeneracy, the algorithm calls the linear program at step 748c and solves the linear program at step 750c.
  • Step 752c evaluates the new ingredient solution.
  • the evaluation includes several factors: Total Business Gross Margin, and displacements of existing ingredients in products (or product market segments) and displacement of contributor products (or product market segments) from the marketing mix.
  • the algorithm indicates to the user whether the proposed ingredient substitution improves or retards business performance and whether the proposal warrants further investigation. For example, if the proposed new ingredient increases overall business gross margin, displaces usage for the substituted ingredient without affecting contributor products' role in the marketing mix, the algorithm notifies the user of the favorable results and recommends further investigation of the proposed ingredient substitution.
  • step 754c exits the algorithm.
  • Step 748d includes reading Cells (2,1) for the number of inventoried ingredients, Cells (3,1) for the number of non-inventoried ingredients and Cells (6,1) for the type of input substitution comparison, if any, the user previously attempted. If Cells (6,1) remains empty, the user has not attempted an ingredient substitution and step 75Od on finding an empty cell proceeds to step 76Od and exits the program.
  • step 75Od locates a number in Cells (6,1) , the algorithm proceeds to step 754d and moves the original data concerning the existing products (or product marketing segments) to the appropriate cells on the solution spreadsheet, resets the ratio data for Subtootl and Subtoot2 to zero and any adjusted product prices to their original values .
  • the algorithm advances to step 76Od and exits the program.
  • Foliomgr operates as a template for both the Stkanlzr and Stkshortr template spreadsheets. Whether the user conducts a portfolio management or stock shorting analysis, the user opens Foliomgr. When the user reaches completion of either the Stkanlzr or Stkshortr templates each template calls Foliomgr and transfers algorithms, stock price data to Sheet1 and spreadsheet layout to Sheet2 of Foliomgr. Stkanlzr then saves Foliomgr as a finished spreadsheet called Foliomgr(Date) . Date indicates the month and day of Foliomgr(Date) ' s completion. Stkanlzr then closes Foliomgr and itself so that Stkanlzr and Foliomgr always remain empty templates for subsequent problem analysis. The Foliomgr algorithm description applies to Foliomgr(Date) .
  • Stkshortr saves Foliomgr as a finished spreadsheet called Shrtfolio (Date) . Date indicates the month and day of Shrtfolio(Date) ' s completion. Stkshortr then closes Foliomgr and itself so that Stkshortr and Foliomgr always remain empty templates for subsequent problem analysis. Foliomgr contains the same algorithm described for Shrtfolio (Date) and Foliomgr (Date) .
  • Step 802 involves selection of either a Shrtfolio (Date) or Foliomgr(Date) and initiation of an investigation of : changing total capital investment, tolerance for loss and or dividend requirements.
  • the algorithm proceeds to step 804 to place the date of the analysis in Cells (4,4) and compare the current date with the date of the stock shorting or portfolio management analysis recorded in Cells (3,4) .
  • the algorithm proceeds to step 806 and if the time difference exceeds more than one day, the algorithm asks the user for a user name. For a time difference of less than one day, the algorithm assumes the user' s name to be the name of the Foliomgr(Date) or Shrtfolio (Date) user recorded in Cells(3,3) and proceeds to step 808.
  • step 810 determines whether the time difference exceeds 7 days. If the time difference exceeds 7 days, the algorithm proceeds to step 810 and notifies the user of the outdated nature of the analysis and whether the user wishes to continue. If the user declines to continue, the algorithm proceeds to step 856 and ends. If the user wishes to continue, the algorithm proceeds to step 812. For a time difference at step 808 of less than 7 days, the algorithm assumes timeliness of the analysis and proceeds to step 812. Step 812 recovers the number of stocks recorded on either Foliomgr(Date) 's or
  • step 816 The algorithm proceeds to step 816 and asks the user if the user wishes to hear subsequent instructions as well as read them. If the user answers YES, the algorithm at step 818 calls a text-to-voice program. The algorithm then proceeds to step 820 and asks if the user wishes to change the amount of investment capital used in the original analysis and if so what amount to use. The algorithm moves to step 822 and asks the user to confirm or adjust the entry made at step 820. The algorithm at step 824 asks the user whether the user's tolerance for potential investment losses has changed from the tolerance expressed in the original analysis and if so to adjust the amount. At step 826, the algorithm asks the user to confirm or change the entry made at step 824.
  • the algorithm checks whether the spreadsheet data indicate that any stocks pay dividends . If no stocks pay dividends, the algorithm proceeds to step 848. If some stocks pay dividends, the algorithm proceeds to step 830 to determine the type of analysis the user desires. If the algorithm detects the words "Optimum Short Mix” the algorithm determines the user desires a review of a stock shorting analysis and warns the user to anticipate the possibility of paying stock dividends on borrowed stock shares. If the algorithm detects the words "Optimum Portfolio,” the algorithm determines the user desires a review of a stock portfolio analysis and warns the user that the selection of a minimum dividend payment can place a restrictive constraint on the portfolio analysis.
  • step 836 If the algorithm detects a stock shorting analysis, it proceeds to step 836 to ask the user about the maximum dividend repayment the user will consider.
  • the algorithm suggests a maximum percentage based on a value determined by: (the total dividends paid by all dividend paying stocks) multiplied by (the total number of stocks) and (divided by the sum of all stock prices) .
  • the user may elect to increase or decrease the algorithm recommended value.
  • the algorithm asks the user to confirm or adjust the entry made at step 836.
  • the algorithm at step 830 detects the words "Optimum Portfolio,” the algorithm determines the user desires a review of a stock portfolio and proceeds to step 832 and asks about the minimum dividend re-payment required by the user.
  • the algorithm suggests a minimum percentage based on a value determined by: (the total dividends paid by all dividend paying stocks) multiplied by (the total number of stocks) and (divided by the sum of all stock prices) .
  • the user may elect to increase or decrease the algorithm recommended value.
  • the algorithm asks the user to confirm or adjust the entry made at step 832.
  • the algorithm proceeds to step 848 and calls the linear program.
  • the algorithm solves the linear program.
  • the algorithm contains a threshold value of 9 prices outside the upper or lower 95- percentile range. If the algorithm counts more than 9 instances of prices on the outside or downside of the 95-percentile limit for a stock included in the optimum solution mix, the algorithm at step 854 issues a warning to the user that a statistical problem may exist. This cautionary note should instigate the user to more closely investigate the stock price history to determine: Did the user enter incorrect price data for the stock?
  • step 856 If no potential statistical problem exists, the algorithm proceeds from step 852 to step 856 and ends.
  • q represents a dummy variable for the period (t) (as a matrix entry)
  • inO &-yi provide data matrices.
  • the additional entries forini and in2 account for fall-back entries for 95 percentile and 68 percentile limits on uncertainties.
  • variable in ⁇ (t) for the forecast development occurs in the last column; except where y1 permits an additional 24 periods of data analysis. See pages 7 and 8.
  • the 6 Terms for the forecasting equation include:
  • Matnx contains the inversion terms necessary to complete the inversion analysis for a model with 36 data elements Cova ⁇ ant Matnx 36 penod basis
  • the FOLLOWING EQUATIONS represent the Forecasting tool that predicts Based on a statistical analysis of historical info ⁇ natbn including Base, Trend and Period Terms.
  • the coefficients, a1 through a6 for the Terms come from the equations above.
  • the absolute error represents the difference between the actual and the forecast values
  • One Period Variance defined as:
  • the FINAL FORECASTEQUATION, OUW accounts for the developed a's as well as the coefficients and a smoothing ot the two other forecasts. Define a new time period, p, to account for program peculiarities concerning subscript specifications.
  • the total data set must include 24 periods to meet programming restrictions i.e. the use of the original two forecasts which require 24 periods of input data to meet the 24 period statistical analysis.
  • the final 11 forecast periods (36 to 47) may be used at the forecaster's discretion.
  • the first period of the forecast, outO is a start-up value
  • the second period corresponds to period 24 of the original data series.
  • Matrix represents the first sub-Matrix in the program, the upper right hand corner for the base and trend components, no periodic functions
  • This section attempts to fit a linear growth curve to the input data, then examines if the fit correlates well with the original data. This method requires no scaling treatment.

Abstract

Many business problems involve too many complex and interacting variables for a person to solve them, unassisted. Linear programming, statistical and probability analyses provide effective tools for solving such problems, but until now, use of these tools has not been practical for persons without extensive mathematical training. The present invention provides an understandable user interface to these tools, enabling even mathematically unsophisticated users to effectively solve complex problems. The invention also incorporates sensitivity analyses, thereby permitting the user to explore how changes in input data would affect the results of the program calculations. In addition to a data-input program module, respective program modules are disclosed for managing a company product line, a securities portfolio, and a short-selling portfolio.

Description

A METHOD OF SIMPLIFYING & AUTOMATING ENHANCED OPTIMIZED DECISION MAKING UNDER UNCERTAINTY
Inventor : Gerard H . Gi zinski
COMPUTER PROGRAM LISTING APPENDIX
This application includes a computer program listing appendix in accordance with 37 CFR 1 . 96 ( c ) , consisting of 20 pages , the entire content of which is incorporated by reference .
BACKGROUND OF THE INVENTION
1 . TECHNICAL FIELD
The present invention relates generally to a computer- supported method of solving real -world problems , using linear programming and probability analysis , amongst other methods , and, more particularly, to a user interface which permits even those unfamiliar with these tools to successfully apply these tools to the solution of real -world problems such as managing a business or managing an investment portfolio .
2 . DISCUSSION OF RELATED ART :
Although computers af ford the potential to handle complex problems and sophisticated mathematical procedures , the vast maj ority of computer users bypass these possibilities . Information technologists estimate that 80 percent of all personal computer use involves typewriting on word processing or e -mail programs . Generally, only technical specialists , scientists or engineers utilize sophisticated programs peculiar to their respective specialties . Non-specialists have two problems in addressing this deficiency. First, they may, or may not, have any familiarity with the underlying technical area, mathematics, science or engineering. Second, with limited know-how concerning the technical underpinnings, learning to utilize the specialized computer programs represents a difficult task.
Yet, sophisticated solutions to many very important business and personal problems require the computational and data handling possibilities of computers. Large organizations with substantial financial resources can afford to hire technical specialists and experts to build proprietary systems useful to the organization's function. However, even large organizations have a predilection to favor investments in data handling systems over development of computational analytical tools.
Consider statistics and probability theory. Although an airline traveler has orders of magnitude less chance of a fatal encounter in the air than a fatal encounter in an automobile traveling to the airport, most travelers feel more comfortable in a car than a plane. In business, only insurance company actuaries, risk assessors for large companies, quality controllers and research scientists routinely utilize statistics and probability theory.
Mathematical optimization techniques also have specialized roles in business. Petroleum refiners, airlines, livestock feed blenders, distributors, investment firms and corporate treasurers routinely utilize optimization techniques. Refiners and livestock feed blenders use linear programs to minimize input costs of ingredients for product production. Airlines and distributors use optimization to schedule and route transportation equipment such as planes or trucks. Investment firms use non-linear programming to manage stock portfolios or manage cash. Corporate treasuries use optimization to manage the corporate cash. Operators of these programs often lack the expertise to devise the structure and equations required to mathematically formulate a problem solution. Either operations research consultants or technical staff members assist in problem and solution formulation. Specialty program houses sell these optimization programs.
Program installation requires certain fundamental operating coefficients to customize the program for the user organization. Over time, the operating coefficients change, necessitating program updates for the program to remain relevant. The frequency of user updates varies between organizations.
US Patent 6,032,123, JAMESON (FEB. 2002) , discloses the use of linear programming and "Monte Carlo simulation" in solving business problems. However, it is not clear how the simulation is performed, nor whether sufficient statistical analyses, of initial results of a program-run, are performed to verify that those results are optimal, or even satisfactory in a real-world context. US Patent Application Publication 2003/0 046 130-Al
(MAR. 2003) , GOLIGHTLY et al. , SN 10/225,093, discloses a system and method for optimization of business operations in a chemical or manufacturing plant . However, it is not clear how the method could be adapted for use in managing investments.
US Patents 5,581,663 (ZLOTIN et al. ) , 5,692,233 (GARMAN), 5,781,430 (TSAI), 6,031,984 (WALSER), 6,122,623 (GARMAN) , 6,405,179 (REBANE) and US Patent Application Publications 2002/0,111,780-Al (SY), 2003/0,004,845-Al (TAKEDA et al . ) , 2003/0,083,971-Al (KAWAMOTO et al . ) and 2003/0, 148, 253-A1 (SACCO et al. ) disclose computer-supported methods of managing investments . However, after reviewing the prior art, it is apparent that there is still a need for an easy-to-use, yet mathematically powerful, method of solving problems which can be applied both to business management problems and to investment management problems. Expert systems and methods have been created to serve specific problem solution needs. In particular, expert systems cover certain areas of medical diagnosis and investment formulation. However, these systems and methods generally involve Boolean logic, decision trees and data mining that utilize the data handling capabilities of computers rather than sophisticated mathematical treatment.
Thus it can be appreciated that a great need exists in the art, for an improved method, device and system to permit a broad range of users to improve their problem solving and resolution techniques. Such a method, device and system should place minimal or no requirements on users to learn or understand the underlying mathematics, statistics, optimization and expert analysis but should afford access to such capabilities through a simple interface. By avoiding the drawbacks and shortcomings of learning either the underlying mathematics, statistics and optimization techniques or associated data handling and computer programs, users avoid potential mishandling of said programs from either usage based on untimely information or misusage.
Furthermore, it can be appreciated that additional need exists in the art for methods, devices and a system to Co- ordinate and record the output of disparate computer programs, analyze the disparate results and utilize the implications of the results in a coordinated, refined expert process. Such methods, devices and system should avoid the manual manipulation and integration that analytical results, from disparate sources such as engineering analysis, statistical analysis or optimization processes, require to synthesize a coherent and vigorous problem solution.
SUMMARY OF THE INVENTION:
Therefore, it is an object of the present invention to provide a method of solving problems, with the assistance of a personal computer, which combines features of linear programming, probability analysis, and expert systems with a simple interface which enables users, who do not necessarily understand the details of these tools, to successfully apply these tools to solve real-world problems. My name for this simple interface is "the Answer Machine." The present invention builds upon commercially available computational technology found in the MATHCAD program of MathSoft, Inc. and the EXCEL, SOLVER and VISUAL BASIC programs of Microsoft Corporation, as more fully disclosed in US Patents 5,469,538 & 5,526,475, RAZDOW, currently owned by MathSoft Inc. of Cambridge, Massachusetts, USA and other patents owned by Microsoft Corp. MATHCAD is a trademark (US Reg. #1,457,219) of MathSoft, Inc.; EXCEL, SOLVER and VISUAL BASIC are trademarks of Microsoft Corp. of Redmond, WA. In a preferred embodiment, a plurality of software modules are executed, in sequence, to perform the steps of the method. Some of these modules are specially adapted for their application, as described in greater detail below. In a first step, the program interacts with the user to determine the nature of the problem to be solved and to prompt the user to provide the appropriate kinds and quantities of data. The program reads the data into a matrix or spreadsheet and checks validity of the data.
In the second step, the program performs a statistical analysis of the data including: a Fourier analysis correlation, development of a forecasting regression, forecasts, determination of the median value and standard error (or variability) of the data and conversion of the median and variability into a probability distribution; and places the calculated results in additional cells which represent an extension of the original matrix or spreadsheet . In the third step, the program installs basic constraint equations and performs a preliminary Linear Programming (LP) analysis of the data to obtain a sensitivity analysis of the LP analysis subject to perturbations in price changes. This sensitivity analysis indicates the "opportunity cost" associated with producing and marketing products without any constraints on the ingredient inputs required to meet forecasted demand in the marketing solution module. For stock purchase (portfolio management) or stock shorting solution modules, the LP sensitivity analysis indicates required price changes to make a stock a likely candidate for either purchase or sale in a "trading range" stock market environment.
In the fourth step, the program iterates LP formulations, solutions and analysis for the various prices indicated by the LP sensitivity analysis of step three to determine the frequency of occurrences of: products in the market mix of the marketing solution module or stocks in the portfolio management or stock shorting solution modules.
In the fifth step, the program uses the probability distribution determined in step three: to set upper and lower demand limits on demand forecasts for products or to compare stock prices with the probability of price increases or decreases within a "trading range" for stock trading.
In the sixth step, the program uses expert analysis in conjunction with the results of step five to: recommend and make adjustments to the marketing/ sales budgets for products, install demand constraint equations and solve the LP with the expanded constraints; determine for stocks whether to buy or sell within a trading range or buy or sell with the intent to move beyond the trading range or not to commit to any trade.
BRIEF FIGURE DESCRIPTION: FIG. 1 schematically illustrates the use of a personal computer to collect data via a global network, to process the data, and to communicate results and solutions;
FIG. IA is a flowchart showing steps of an interaction between a computer user and an "Answer
Machine" program module according to the present invention;
FIGS. IB & 1C are flowcharts showing steps of
"solution" program modules of the present invention which rely upon mathematical functions in the commercially available MATHCAD program described in US patents 5,469,538 and 5,526,475 to perform Fourier regression, correlation, statistical analysis and forecasting; FIG. 2 is a flowchart illustrating a method of collecting data relating to a proposed or actual product of a business;
FIG. 3 is a flowchart illustrating how to formulate ratios for use in linear programming calculations, such as those typically used in marketing, pricing and gross margin problems;
FIG. 4 is a flowchart of a "Remake" program module for optimizing products, product market segments, product development budgets, and sales/marketing budgets;
FIG. 5 is a flowchart of a "Stkanlzr" program module for optimizing the reward/risk ratio for a stock portfolio; and FIG. 6 is a flowchart of a "Stkshortr" program module for optimizing short sales of stocks.
FIG. 7A is a flowchart of the PD&ISnlzr module, for product development analysis;
FIG. 7B is a flowchart for restoring PD&ISnlzr, Sheet2, to Original Solution Condition;
FIG. 7C is a flowchart of the PD&ISnlzr module, to evaluate input substitution;
FIG. 7D is a flowchart for restoring PD&ISnlzr, Sheet3, to Original Solution Condition; and FIG. 8 is a flowchart showing how to output final results from the Stkanlzr or Stkshortr solution modules to a simple spreadsheet, e.g. an EXCEL spreadsheet.
DETAILED DESCRIPTION: In the following discussion, a reference to a stock index on a North American stock exchange is intended as exemplary only, and investment professionals will understand that the methods described are equally applicable to a stock index compiled in Europe, Asia, or elsewhere, or indeed to an index of securities or other asset values yet to be formulated. A reference to a "stock" is not necessarily limited to a common equity share as it is understood today, because the general principles discussed herein are applicable to preferred shares, bonds, convertible bonds, real estate trust shares and similar exchange-traded interests in income- producing assets.
FIG. 1 schematically illustrates that a personal computer 102 can be used to communicate with a second computer 104 or computer server 106 via a wired or wireless network 108. Although a desktop computer with a large monitor is shown for illustration purposes, those of ordinary skill in the art will appreciate that laptop computers now have the processing power to practice the present invention, and eventually even more compact and portable computing devices such as the PDA (Personal Digital Appliance) will have this capability. Similarly, improvements in networking are expected, so the present invention is not limited to use of the Internet in the form we know it today. The present invention is intended to encompass all such foreseeable advances in equipment and communication methods. PREFERRED COMPUTER HARDWARE/SOFTWARE CONFIGURATION Software for carrying out the present invention was developed using a personal computer running the WINDOWS 2000 operating system from Microsoft Corp., the EXCEL spreadsheet program from Microsoft Corp. (Office 2000 version) , VISUAL BASIC 6.0 (Version 8435) , an Office 2000 version and the MATHCAD 8 Professional Edition program from Mathsoft, Inc. The computer had a Pentium 3 central processor with a 128K cache and 128MB of Random Access Memory (RAM) . The software has also been successfully operated on a laptop computer with a Pentium 4 central processor containing a 128K cache and 512MB of Random Access Memory (RAM) running the WINDOWS XP operating system and Excel 2002 (10.2614.2615), with small changes to commands used in the VISUAL BASIC 6.3 (Version 9108) program. This configuration relies upon MATHCAD 2001i Premium Edition.
TIPS ON USING THE MATHCAD AND SOLVER APPLICATION PROGRAMS
When a user learns and adopts the rules and conventions of application programs for conventional computers, the user adapts to an interface for manipulating and utilizing vast amounts of data to achieve some ordered state of knowledge. What if the user could utilize and manipulate data without learning the rules or conventions of computer programs or even understanding the science, mathematics, technology or logic that underlie the programs? The Answer Machine (AM) concept addresses this simplification. AM solution modules utilize not only specialized programs but also expert knowledge to formulate generalized solutions to complex problems.
Technologically, the AM concept requires a linkage between a simple user interface and highly specialized programs. In these particular formulations, the marketing, portfolio and stock shorting solution modules, through the Visual Basic (VB) programming language, control two highly specialized programs: a statistical analysis program which executes using the MATHCAD program, and a linear programming program which executes using MICROSOFT EXCEL. VISUAL BASIC is a registered trademark of Microsoft Corp. The statistical analysis program represents an adaptation of an inventory control and forecasting method discussed by Robert Goodell Brown in his book Decision Rules for Inventory Management.
The Appendix contains a listing of the statistical analysis program of the present invention. The linear programming program, called SOLVER by Microsoft
Corporation, resides within EXCEL. To activate and call these two programs requires two different approaches. Both approaches require diligence and patience for successful implementation. To link the statistical program requires several steps:
First, develop the statistical program in MATHCAD Professional Edition.
Second, remove input data from the MATHCAD statistical program. Third, open the appropriate spreadsheet.
Fourth, select the appropriate location on the spreadsheet.
Fifth, from the spreadsheet toolbar, select the INSERT command. Sixth, from the INSERT tableau, select Mathcad
OBJECT.
Seventh, for the Mathcad OBJECT select the statistical program, sans input data.
After creating the linkage, operation of the statistical program requires direction by Visual Basic commands to a Professional Edition of MATHCAD; see MATHCAD User's Guide (ISBN: 1-57682-039-4 for MATHCAD 8 or 1-57682-041-6 or 1-57682-221-4 for MATHCAD 200Ii) and related documentation for the commands and a description of scripting custom OLE automation objects.
The commands supply data to, and retrieve results from, the statistical program. Input data must have a name: inO, inl, in2, in3 or in4, etc. and output data must have a name: outO, outl, out2, out3 or out4, etc. For example, inO can be a data vector (one-dimensional matrix) containing 37 or more data points. Furthermore the format on the spreadsheet for the data exchange requires "number" ; neither "general" , "accounting" nor "currency" formats operate correctly. Additionally, the input and output data must conform to real and imaginary components of imaginary numbers. If no imaginary component exists, data entry must include the imaginary component with a zero coefficient. Omitting the imaginary result from an output causes no problem. Assuming that SOLVER has been installed, SOLVER exists within EXCEL. Visual Basic (VB) commands call and execute the SOLVER linear program. However, successful calling and execution of SOLVER requires determination and patience. Similar to the linkage of the MATHCAD statistical program, SOLVER may, or may not, initially respond to the commands. Creating the linear programming layout and constraint equations and manually calling helps with instigating the functionality of the VB commands. However, after activating the VB commands, they may subsequently cease operation. A problem may arise from case sensitivity. For example, after initially causing a solution with "Solversolve" , the command requirement may mutate to "SOLVERSOLVE" or to some other construct with punctuation "Solver.Solve" . Routine experimentation will indicate the most functional commands. Obviously, command structure also depends upon the operating system.
Other hurdles to linkage appear to involve size. It appears easier to link a small MATHCAD program and then enlarge it, rather than install a large program. Similarly, the execution of a small linear program with VB commands succeeds faster than large programs. A step- by-step execution, prior to an uninterrupted program run with loops, also will achieve faster operational results .
PRELIMINARY DATA COLLECTION
In order for a business to make plans and decisions, it is usually necessary to first gather data, such as the cost and availability of parts, ingredients, working capital, labor, intellectual property and other inputs, and concerning the demand for, and market value of, the expected products and/or services of the business. In an investment management context, there are similar needs to obtain historical and current data on prices of various securities and investment properties. Typically, such data is communicated from either a commercial outside data supplier's computer or from another computer within the business. Depending upon the sensitivity of the data, it may be transferred in encrypted form.
Generally, when the analysis according to the present invention has been performed, the results of the analysis, or instructions based on that analysis, may be communicated to other persons within the business by computer transmission.
DESCRIPTION OF FIG. IA-USER STEPS FOR ANSWER MACHINE This algorithm describes Answer Machine directions, to a user, about how to utilize sophisticated application programs and analysis, without understanding either details of the analysis or learning the application programs. Depending upon the user's familiarity with the Answer Machine and the issue at hand requiring resolution, the user may repeat the algorithm steps up to three times, before initiating the resolution process. A user can exit the algorithm at any time during the algorithm's execution. As shown in FIG. IA, a user initiates the algorithm at step 102a by triggering execution of the Answer Machine program module, for example by clicking a button or speaking a verbal command. Next, the user indicates, at step 112a, what issue or problem needs solution. If the user wishes to address a problem solution, the algorithm proceeds to step 114a. If the user desires general information about the Answer Machine concept or its usage, the algorithm proceeds to step 116a. If the user does not require general information about Answer Machine usage, the user can elect to review an example problem solution at step 120a. After reviewing the example, or if the user elects not to review an example, the algorithm proceeds to step 122a, to offer the user a choice between personal and commercial problems.
If the user selects commercial problems, the algorithm proceeds to step 128a and offers the user a menu of commercial problems that include finance, investing, and marketing problems, among other commercial possibilities. After the user selects a commercial problem category, the algorithm at step 130a hyperlinks to a respective explanation about that type of problem. The explanation includes a broad review of various aspects of the problem, including some aspects which the user may have overlooked or omitted from consideration. For example, a user might overlook marketing expenses for existing products as a concern in a product development program. Yet, the marketing solution module includes an optimized balance of tradeoffs between each product, its price, marketing/sale budget and economic attractiveness for product replacement and ingredient substitution. Furthermore, the marketing solution module performs the tradeoffs with statistical, optimization and expert analyses beyond traditional methods, and possibly beyond the user's comprehension.
Beside general aspects of the problem, the explanation indicates the specific information and data requirements necessary to achieve a balanced solution to the problem.
According to a preferred embodiment, for the marketing problem, the solution requires: 36 periods of sales data for each product, the marketing/sales budget per unit of product, the ratio of each ingredient used per unit of product output, separated by inventoried and non-inventoried ingredient, the inventory of products and ingredients, and the prices of products and ingredients. The user has the choice of how to enter the required information into the solution module, either manually or by loading one or more pre-existing data spreadsheets. If, upon initial review, the user lacks the information specified by the program, the user can elect, at step 132a, to exit the algorithm at step 134a, in order to first collect the required information. A user in a large business probably has access to databases that contain the required data. A user in a small business may have to cull the required information from accounting records.
If the user selects a personal problem at step 122a, the algorithm proceeds to step 124a and offers the user a menu of personal problems that include: finance, investing, health and other personal issues. After the user selects a problem area, the algorithm at step 126a hyperlinks to a respective explanation about that kind of problem. The explanation includes a broad review of various aspects of the problem, including some aspects which the user may choose to omit from consideration. Beside general aspects of the problem, the explanation indicates the specific information and data requirements necessary to achieve a balanced solution to the problem. If, upon initial review, the user lacks the information specified by the program, the user can elect, at step 132a, to exit the algorithm at step 134a, in order to first accumulate the required information, before continuing to use the program.
After collecting the required information, the user re-initiates the algorithm at step 102a and follows the steps returning to step 132a. Having the appropriate data available, the user proceeds with the solution process at step 136a. Depending upon the user's requirements to either format the data or call the solution module, the user uses a hyperlink at step 138a to call either a utility program or the solution module. The user could elect to hyper-link to the solution module and manually enter all data during the solution process. Alternatively, the user could use a hyper- linked utility program to structure the raw data into the correct format for input spreadsheets. Under either condition, the user hyper-links to another algorithm to continue the solution process.
If the user at step 138a hyper-linked to a utility program to structure input data, the user re-initiates the algorithm a third time at step 102a and follows the steps returning to step 132a. The user uses a hyperlink at step 138a to call a solution module of the user's choice. The remainder of this application discusses in detail several solution modules, namely:
1) Remake, a marketing, sales and marketing/ sales budget optimizer with satellite solutions to product development and input substitution components.
2) PD&ISnlzr, a Product Development & Input Substitution Analyzer for optimizing the development of new products for a company (part of
Remake) ;
3) Stknlzr, a stock portfolio management optimizer; and
4) Stkshortr, an optimizer program for managing short sales of securities.
These solution modules access three programs not normally used by average business people. The three programs include statistical analysis templates utilizing MATHCAD (US Trademark Reg. # 1,457,219 of Mathsoft, Inc. of Cambridge, MA) , an application program for mathematical analysis, and SOLVER, a linear programming module within the well-known EXCEL spreadsheet program (EXCEL is a trademark of Microsoft Corp. of Redmond, WA) . The third program is an "expert analysis" program. The present invention combines algorithms based on (1) MATHCAD and (2) SOLVER with (3) expert analysis, to thereby provide "solution" modules with enormous flexibility and broad applicability. DESCRIPTION OF FIG. IB-MATHCAD FUNCTIONS LINKED IN SOLUTION MODULES
This algorithm is an adaptation of an inventory control and forecasting method discussed by Robert Goodell Brown, a consultant at the firm Arthur D. Little Inc., in his book Decision Rules for Inventory Management, pp. 79-211, (ISBN 03-062745-1, published by Holt, Rinehart and Winston, Inc., 1967) . The method defines a "Base correlation" and an "Intermediate correlation" which are used in calculating a "Final correlation." The time periods used in the algorithm may include days or weeks, as well as months. The present invention includes an adaptation of the Brown algorithm, as set forth in the computer program appendix of this application. Note that values used for a smoothing vector (h) in the algorithm of the present invention, are inspired by a mathematical derivation included in the Brown book on pages 144 through 149. However, the Brown book contains mathematical inconsistencies . The appendix portion of the present application includes a reproduction of the mathematical derivation with corrected equations. The values of the smoothing vector (h) used in the algorithm include: hl= 0.035, h2 = 0.0003278, h3 = 0.002153, h4 = 0.035, h5 = 0.002913 and h6 = 0.035. The preferred value for hO in the algorithm equals 0.991, according to the present invention, rather than the mathematically determined 0.982. This difference increases the algorithm's reliance on an error-corrected Intermediate correlation and decreases the emphasis on the Base correlation in the final correlation employing exponential smoothing. The value of h0 plays a direct role in the weighting of the different correlations in the exponentially smoothed correlation. These small value adjustments cause a major impact on the role of the non-error-corrected correlation, because the non-error-corrected correlation's coefficient equals the difference between one and (hO) , that is: (1- hO) . Thus the difference of (1 - 0.982 = 0.0018) as taught by the Brown book is twice the value of the difference according to the present invention (1 - 0.991 = 0.009) . Using a value of (hO) of 0.991 reduces the impact of the non-error-adjusted correlation to half the weight which it would have, based upon the (hO) value of 0.982 as taught by the Brown book.
The improved inventory control method of the present invention uses function parameters and data which are stored as a worksheet generated using MATHCAD, a computer program for mathematical analysis protected by US Patents 5,469,538 and 5,526,475, RAZDOW, and by copyright. MathSoft, Inc., 101 Main Street, Cambridge, MA 02142-1521, licenses authorized users of the MATHCAD program to practice the method(s) recited in those US patents .
Referring to FIG. IB, the algorithm commences at step 102b with a call to a statistical analysis worksheet created in MATHCAD. This call initiates a double-click on the MATHCAD worksheet (treated by VISUAL BASIC code as an object) to establish a link to the MATHCAD program. After alerting the MATHCAD worksheet, the algorithm at step 112b transfers a data vector of 36 elements from a template to the MATHCAD worksheet for processing. These 36 elements consist of sales data from the "Remake" template or securities prices from the "Stkanlzr" or "Stkshortr" templates. For programming reasons, the actual vector contains 37 elements, with the first element equaling zero. This extra element permits a "startup" phase of the statistical analysis process, without compromising any of the 36 data elements. At step 114b, the MATHCAD worksheet performs a series of mathematical steps to determine the coefficients used in the Base correlation analysis, which a statistician might also call a "regression" analysis. These coefficients change for every data element (sales or stock prices) and every time the user runs the solution module with different data. The worksheet then performs a correlation analysis consisting of four terms: the level of the data, the trend of change in data and two terms of data oscillation. Each of the data oscillation terms consists of sine and cosine expressions. The first oscillation term relies on a 30-degree phase. The second variability term relies on double the frequency of the first variability term with a 15-degree phase. After determining the Base correlation, the worksheet measures the difference between the correlation and the actual input data.
At step 116b, the MATHCAD worksheet determines an "Intermediate correlation" consisting of four terms: the level of the data, the trend of change in data and two terms of data oscillation. Each of the data oscillation terms consists of sine and cosine expressions. The first oscillation term relies on a 30-degree phase. The second variability term relies on double the frequency of the first variability term, with a 15-degree phase. Essentially, the Intermediate correlation consists of the Base correlation plus error propagation terms.
Mathematically, the Intermediate Correlation consists of the Base correlation value, one period earlier, plus a coefficient times the absolute value of the difference between the actual data and the Base correlation estimate one period earlier. The coefficients for the difference (or error) terms equal : hl= 0.035, h2 = 0.0003278, h3 = 0.002153, h4 = 0.035, h5 = 0.002913 and h6 = 0.035. These coefficients result from a unit matrix solution for a correlation reflecting a cycle with 18 periods with a 30-degree phase and assuming the input data cover two cycles . See the Appendix for the derivation of these coefficients. Also note the derivation reflects the presentation of Robert G. Brown in Decision Rules for Inventory Management, Holt, Rinehart and Winston, Inc.; 1967, pp. 145 to 149, with appropriate mathematical corrections. After completion of the Intermediate correlation, the worksheet performs a second error analysis by measuring the difference between the actual data elements and the Intermediate correlation's estimated values. Finally, the worksheet determines a number of statistical measures concerning the significance of the various coefficients in the accuracy of the correlation analysis.
At step 118b, the worksheet determines the final correlation and forecasting tool . The final correlation derives from exponential smoothing, the technique of using a fraction as a coefficient for one term and one minus the fraction as a coefficient for a second term. Mathematically, the final correlation consists of (0.991) times the Intermediate correlation value for the prior period less (1-0.991=0.009) times the Base correlation for the prior period, added to the trend coefficient times the period number for the prior period. The value for hO in the algorithm equals 0.991 rather than the mathematically determined 0.982. This difference reflects an attempt to permit the algorithm in the final correlation to place greater emphasis on the Intermediate correlation and less emphasis on the Base correlation. The worksheet proceeds to step 120b and plots the various correlations and data series, to provide visual confirmation of the relevance and usefulness of the correlations. Step 120b also performs some extraneous calculations. Although a user may choose not to display these graphs, nor desire the extra calculations, they remain in the linked program to delay the MATHCAD worksheet completion. Under certain conditions, a linked MATHCAD worksheet may not be allocated sufficient execution time to complete its calculations, and communicate results to the host spreadsheet. The inclusion of extraneous time- consuming calculations appears to offer a practical work-around to this problem. After the momentary delay, the worksheet at step 122b conducts the final calculations in preparation for communicating with the host worksheet. These calculations include the following:
1) determining the user's upper variability for a unit normal distribution about mean of zero;
2) determining the specific data series' upper variability by: multiplying the unit normal distribution' s upper variability by the mean average deviation of the Intermediate Correlation and multiplying by (1.25) . The standard deviation equals (1.25) multiplied by the Mean Average Deviation.
3) determining the user's lower variability for a unit normal distribution about mean of zero;
4) determining the specific data series' lower variability by multiplying the unit normal distribution's lower variability by the mean average deviation of the Intermediate correlation and multiplying by (1.25) .
5) determining the coefficient for the trend component of the Base correlation;
6) determining the variability for the trend component of the Base correlation and 7) determining a forecast for the data series from the final correlation.
The final calculation involves subtracting the initial data series value from the 37 terms of the final correlation's forecast and dividing by 36. The worksheet's step 124b then transmits the forecasts for the next 36 periods after the current period, upper variability, lower variability, trend coefficient, trend coefficient variability and forecast to the host spreadsheet . The host spreadsheet receives the 8 results and stores them in the appropriate locations on sheet 1. Rows 2 through 37 of Column AJ receive the forecasts for the next thirty-six periods. Column AI' s : Row 41 receives the upper variability, Row 43 receives the lower variability, Row 45 receives the trend coefficient (growth rate) , Row 47 receives the trend variability and Row 49 receives the averaged forecast.
The spreadsheet algorithm moves the values from Column AJ to the appropriate column for the data series with:
1) Rows 39 through 41 capturing the forecasts for first three periods.
2) Row 43 capturing the high variability. 3) Row 44 capturing the low variability.
4) Row 45 capturing the Trend Coefficient (growth rate) .
5) Row 48 capturing the Trend Coefficient uncertainty.
6) Row 49 capturing the averaged forecast. After transmitting the statistical analysis output, the MATHCAD worksheet at step 126b ceases and returns to the host spreadsheet. The host spreadsheet may return to the MATHCAD spreadsheet for statistical analysis of another data set or the algorithm may continue to another step on the solution path.
DESCRIPTION OF FIG. lC-ALGORITHM LINKED IN
Remake, Stkanlzr & Stkshortr Template SOLUTION MODULES
This algorithm derives from a linear regression method. The time periods used in the algorithm may include days, weeks or months. This linear regression methodology resides in a program stored as a worksheet in MATHCAD, an application program for mathematical analysis. MathSoft, Inc., the program's publisher, authorizes purchasers of MATHCAD to practice the method steps claimed in the RAZDOW patents, cited above.
Referring to FIG. 1C, the algorithm commences at step 102c with a call to the second statistical analysis worksheet in MATHCAD. Depending upon the solution module, a self-inspection may occur that indicates an abstention from making the call. The self-inspection evaluates input data to determine if a monotonic increase or decrease exists. If it exists, then the possibility of a linear growth exists. Absence of monotonic increasing or decreasing data indicates a lack of linear growth and irrelevance of the linear regression analysis. Stock price data generally exhibit all types of change except linear behavior. Nevertheless, the solution modules, "Stkanlzr" or "Stkshortr" always perform the linear regression analysis. This forced evaluation occurs to avoid the reversal of the linkage process. Repeated use of the "Stkanlzr" or "Stkshortr" templates without calls to the linear regression analysis could eventually break the linked connection with the linear regression analysis.
Breaking the connection would make the linear regression analysis unavailable on some future occasion when it requires investigation.
After alerting the MATHCAD worksheet, the algorithm at step 112c transfers a data vector of 36 elements to the MATHCAD worksheet for processing. These 36 elements consist of sales data from the "Remake" template or stock prices from the "Stkanlzr" or "Stkshortr" templates. For programming reasons, the actual vector contains 37 elements with the first element equaling zero. This extra element permits a "startup" phase of the statistical analysis process without compromising any of the 36 data elements. At step 114c, the MATHCAD worksheet, linked in
Sheet5 of "Remake", "Stkanlzr" or "Stkshortr" , performs a simple linear regression analysis between the input data and the period numbers (from 1 to 36) . These coefficients change for every data element (sales or stock prices) and every time the user runs the solution module with different data.
At step 116c, the MATHCAD worksheet determines the slope and intercept for the regression elements. At step 118c, the worksheet performs a correlation between the regression and the input data. The worksheet then forecasts the values for the next three periods, based on the regression. The worksheet proceeds to step 120c and plots the regression and the data series to provide visual confirmation of the relevance and usefulness of the regression. Step 120c also performs some extraneous calculations concerning differences between the data and the regression values . Although a user may choose not to display these graphs nor desire the extra calculations, they remain in the linked program to delay the MATHCAD worksheet completion. Under certain conditions, a linked MATHCAD worksheet may not receive sufficient time to complete its calculations and communicate results to the host spreadsheet. The inclusion of extraneous calculations appears to offer a practical work-around to this problem.
The worksheet's step 124c then transmits the: the slope of the regression, the intercept of the regression, the correlation coefficient of the regression with the input data and the forecasts for the next three periods after the current period. The host spreadsheet receives the 6 results and stores them in these Row locations of Column AP on sheet5 : Row 39 receives the regression slope, Row 41 receives the regression intercept, Row 43 receives the correlation coefficient, Row 45 receives the forecast for the next period, Row 47 receives the forecast for the second period and Row 49 receives the third period forecast. The spreadsheet algorithm moves the values from Column AJ on Sheet5 to Sheetl's appropriate column for the data series with:
Row 59 holding the first period forecast. Row 60 holding the second period forecast. Row 61 holding the third period forecast. Row 62 holding the slope.
Row 63 holding the intercept.
Row 64 holding the correlation coefficient.
After transmitting the statistical analysis output, the MATHCAD worksheet ceases at step 126c and returns to the host spreadsheet, either to analyze another data set or continue to another step in the solution process. DETAILED DESCRIPTION OF FIG. 2
FIG. 2 illustrates the steps in a data gathering method used in the solution of business, stock portfolio management or stock shorting problems. A first step 202 when running the program is to call a utility program called LPutilities, a workbook with data structuring subprograms. The second step 204 is to open a subprogram on LPutilities Sheet2 called Mnulxlprodmdspsht . The third step 206 is to perform a check to determine whether there has been a rollover from prior execution from Sheetl of a Ratio Builder subprogram, RatioBldr; if yes, execution branches to a step 208, described below; if no, execution branches to a step 210 of checking whether or not the user wants to use a text-to- voice option; if yes, a text-to-voice subprogram is activated in a step 212; if no, execution goes directly to a step 214 of prompting the user to enter a user name. If text- to-voice was activated in step 212, execution also goes to step 214 of getting the user name.
After the user name has been obtained, the user is prompted, in a step 208, to tell the program whether or not data are going to be entered manually by the user; if yes, execution branches to a step 216 of checking a PMS (Product Market Segment or stock) count, to be described below; if no, execution branches to a step 218 of prompting the user to enter the name of a spreadsheet file which contains data needed by the program, stored in a matrix having as many dimensions as needed for solution of the problem being solved. This is the user- friendliest and preferred way to run the program since, by avoiding manual entry of data, the user saves considerable time and possible key stroking or misinterpretation errors.
AUTOMATED DATA ENTRY ALTERNATIVE
After data have been loaded from a spreadsheet file specified by the user, a step 220 check whether the term "Date" exists in column one, row one, to indicate date information is present. This is important since the program solution process needs date information in the proper location to execute.
If the result of step 220 is no, meaning date information is not present, execution follows a path 222 to exit the program.
If the result of step 220 is yes, meaning date information is present, a step 224 checks whether a Product Market Segment (PMS) (or stock) count is correct (within a predetermined acceptable range) , is too large, or is too small. If the count is too large, for example the user is trying to evaluate a product mix containing more products, and thus more computations, than the user's computer can handle, execution branches to exit path 222, previously mentioned.
If the count is too small, the user is prompted to increase the PMS (or stock) count, e.g. by adding another product (or stock) to the mix. A step 226 checks whether the revised count has reached a predetermined minimum number; if no, execution branches to exit path 222; if yes, the user is prompted to enter additional PMS product (or stock) names at step 228 and a respective demand (or stock price) number for each at step 230. Step 230 queries the user for demand (or stock price) data according the date information provided by the spreadsheet data file of insufficient PMS (or stock) count. As the user responds to the query, step 230 records the input at the appropriate location on LPutilities Sheet2. Back in step 224, if the PMS count was acceptable, execution jumps along a path 232 which avoids steps 226, 228 and 230 and goes directly to a step 234 which moves the data gathered to LPutilities Sheet2.
Next, a step 236 queries the user for the number of periods of obsolete data and removes that number of periods of data from the beginning periods recorded on LPutilities Sheet2. Step 236 then reconfigures the remaining data such that the earliest period occupies the initial spreadsheet position. Step 238 queries the user for recent demand (or stock/security price) data and places that data at positions of the latest periods on Sheet2. Step 240 moves the updated data from LPutilities Sheet2 to the original spreadsheet. A step 242 removes all data from the LPutilities Sheet2 for re-use for data updates. Finally, execution follows exit path 222.
MANUAL DATA ENTRY ALTERNATIVE As previously mentioned, if the user in step 208 indicated a preference to enter data manually, execution branches to a step 216 which checks whether the PMS count is OK; if no, execution branches to exit path 222; if yes, execution follows a path shown in the lower left quadrant of FIG. 2. First, a step 250, for PMS's, prompts the user through a Form to select either daily, weekly or monthly periods. For stocks, the user can only elect weekly periods. For PMS' s, a user might require a sequence of periods, which typically are at intervals of one or more days, weeks, or months, for example 36 monthly intervals spanning a period of three years, a typical life cycle for a mixture of products in an industry with a reasonable but not excessive amount of technological change. Of course, this is only an example, and similar calculations can be performed for shorter or longer time periods, depending upon the nature of the user's real-world problem. In step 252, as the user enters 36 period dates, step 252 checks if the dates correspond to the daily, weekly or monthly periods selected during step 250. As the user provides dates, step 252 checks for inappropriate periods and, if it determines incorrectness, alerts the user and provides an opportunity to correct the dates. In step 254, the user is prompted to enter PMS (or stock) names. In step 256, the user is prompted to enter PMS demand (or stock price) numbers according to the dates provided in step 252. If the user enters PMS data, a step 258 checks whether the user wishes to use the Ratio Builder subprogram, RatioBldr. As marketing/sales problem solutions require ratios of PMS output to input ingredients, the user must eventually determine these ratios. Having developed a spreadsheet with PMS listings provides an ideal time to create the ratio spreadsheet. If the user answers YES to step 258, a step 260 activates RatioBldr on Sheetl of LPutilities; if the user answers NO, or after step 260 has been executed, a step 262 saves data to a spreadsheet, with the fallback name "ProDmdmQuery. " Then, a step 264 cleans the LPutilities Sheet2 of all data, to prepare it for use with fresh data later. Execution then follows exit path 222. DESCRIPTION OF FIG. 3
FIG. 3 illustrates how to formulate ratios for use in linear programming calculations for products produced from multiple but shared ingredients. In a first step 302, the LPutilities program is called. In a second step 304, the Ratio Builder subprogram, "RatioBldr" on sheetl of LPutilites is called. Then, in step 306, a check is made whether a PMS builder rollover occurred from LPutilities subprogram "Mnulxlprodmdspsht" on sheet2. If the answer is NO, the program goes to a step 308 which asks whether the user desires voice instruction; if the answer is YES, the program activates voice instruction in step 310; otherwise, the program skips step 310 and goes along path 312 directly to a step 314 which gets the user's name. Thereafter, the program follows a path 316 which joins a YES path 318 from the result of step 306, both leading to a step 320 which determines the data content of any spreadsheets which are open.
The possible answers to the test in step 320 are: none open, inventory only, PMS only, inventory & PMS, business optimizer and ratio spreadsheet. If none are open or only inventory spreadsheets are open, execution jumps to a step 322 which tests whether to go to LPutilities subprogram "Mnulxlprodmdspsht" PMS Builder; if YES, LPutilities subprogram "Mnulxlprodmdspsht" PMS Builder is opened in step 324; if NO, execution proceeds along a path 326 leading to program termination at step 366 or instigating the user to use the PMS Builder "Mnulxlprodmdspsht" described in FIG. 2.
If step 320 finds that a business optimizer spreadsheet or a ratio spreadsheet is open, a step 328 tests whether the spreadsheet name is "PMSINPTRatio. " If the answer is YES, execution jumps to a step 330 which makes a row and column count by performing character recognition along the first row and first column. When step 330 encounters an empty cell along the first row, it determines the count of products or PMS' s. When step 330 encounters an empty cell along the first column, it determines the count of inventoried ingredients. Step 332 follows step 330 and reviews the ratios in the open spreadsheet with the user. If the user needs to adjust a ratio, the user performs the adjustment during the step 332 query process.
If the result of step 328 is NO, the user is prompted, in a step 334, to enter the name of the spreadsheet. The program, in a step 336, inspects the identified spreadsheet and asks the user whether or not the spreadsheet is a "ratio only" spreadsheet. If the answer is YES, execution continues at step 330, previously discussed. If the answer is NO, then the user wants to update an existing LP solution spreadsheet for a Business Optimization, so a decision is made by the program, in a step 338, to warn the user that updating an existing LP solution spreadsheet may involve the eventual use of outdated sales information in the revised Business Optimization and then asks the user, whether or not he/she still wishes to update the LP solution spreadsheet ratios. If the answer is YES, execution continues at step 330 as previously discussed. Execution continues at step 332 as previously discussed to query the user about the ratios. If the answer is NO at step 338, LPutilities clears itself of all data and then follows path 326, previously discussed, to exit the program. Returning to step 320, if the open spreadsheets are determined to be either "PMS only" or "Inventory & PMS," a test 340 determines whether or not the spreadsheet name is "ProDmdmQuery. " If the answer is NO, the user is prompted, in a step 342, to enter the spreadsheet name. If the answer is YES, or if the user has entered a new spreadsheet name, execution continues with a test 344 which determines whether or not date information is present. If the answer is NO, execution follows path 326, previously discussed. If the answer is YES, a step 346 tests whether or not the PMS count is OK. If the count falls below 5 PMS' s or products, a linear programming analysis makes no sense because of an insufficient count. If the count exceeds 25, the current LP solution technique approaches overload. A different LP solution technique could raise the 25 limit substantially. For example, the MATHCAD optimizer permits a count up to 500. Other LP optimizers go up to 10,000. However, this introduces another problem; business people excessively studying individual products rather than product marketing segments.
If a business has more than 25 products, those products need weighted average reductions into PMS's or product market segments. The standard industrial code (SIC) encompasses 32 segments to cover the entire US economy. As no single company serves all sectors of the US economy, a limit of 25 PMS' s should permit appropriate aggregation to allow any company to analyze its PMS' s. If the answer is NO, execution follows path 326.
If the answer is YES, a step 348 asks the user whether an ingredient spreadsheet is open. The user needs an ingredient spreadsheet with inventories of ingredients, in order to conduct the LP marketing/sales solution process. If the user does not have an ingredient spreadsheet, then they need to create it. If the answer is NO, a step 350 assists the user in the creation of an ingredient inventory spreadsheet by asking for, and recording, the names of ingredients and then asking for and recording the inventory for those ingredients. Step 350 by default names the inventory spreadsheet "Inglnv Query." If the answer is YES, the user is prompted, in a step 352, to enter the spreadsheet name. Next, a step 354 tests whether the count of ingredients is too high, too low, or acceptable. If there are too many ingredients (count exceeds 25; likely LP solution technique overload) , execution follows path 326 to quit. If there are too few ingredients, a step 356 asks the user to enter sufficient additional non- inventoried ingredients during the solution process to meet a minimum of 5 total ingredients. If the user fails to add sufficient non-inventoried ingredients and there are still too few, execution follows path 326. If the user indicates the addition of sufficient ingredients has added enough non-inventoried ingredients in step 356 for the total ingredient count to fall within a predetermined acceptable range (e.g. 5- 20) or if step 354 had already determined that the count was an acceptable number of ingredients, a step 358 creates a spreadsheet called "PMSINPTRatio. " This is the spreadsheet which step 328, previously discussed, seeks. Once the spreadsheet has been created, a step 360 gets the PMS names from either "PrDmd Query" as specified in step 340 or the user selected name as specified in step 342.
Then, a step 362 uses the spreadsheet "Inglnv Query" to prompt the user to enter the names of ingredients per unit of PMS. Finally, a step 364 queries the user about ratios as it does at step 332. Upon completion of step 364, LPutilities clears itself of all data and saves the changes to "PMSINPTRatio" and then proceeds to 366 for termination and closure. DESCRIPTION OF FIGS. 4-6:
ANSWER MACHINE SOLUTION BLOCKS
SOLUTION BLOCK 1 (FIG. 4: Steps 402 to 422;
FIG. 5: Steps 502 to 522 and FIG. 6, Steps 602 to 622)
Block 1 contains algorithms to address 5 issues: 1) An algorithm that reads the state of completion of the module at the initiation of the processing Block and marks the completion of the Block;
2) Algorithms request the user to enter data and identify the method of data entry, manually or automated from user generated or database generated spreadsheet and check data for conformance to required input format;
3) An algorithm querying the user whether the input data requires adjustment and if so, permitting the user to adjust the input data and 4) An algorithm to statistically analyze the data.
5) An algorithm to complete data input: in the marketing solution module, adding input data for non- inventoried ingredients; in the portfolio management and stock shorting modules, sorting stocks by price variability (risk) .
ALGORITHM TO DETERMINE THE MODULE'S STATE OF COMPLETION
MARKETING SOLUTION MODULE: See FIG. 4 flowchart. The marketing module spreadsheet, "Remake," checks the status of spreadsheet completion at Steps 406, 422, 446, 458 and 468.
As Step 406 begins the first processing Block, the algorithm looks for no entry at spreadsheet, "Remake Sheet2," position, Row 3 Column E, "E3" to begin processing at Step 408. The conclusion of the processing Block at Step 420 includes an entry of "1" at position "E3" of spreadsheet, "Remake Sheet2. "
PORTFOLIO MANAGEMENT MODULE: See FIG. 5. flow sheet. The portfolio management module spreadsheet,
"Stkanlzr", checks the status of spreadsheet completion on Sheet2 at Steps 506, 522, 532 and 558. As Step 506 begins the first processing Block, the algorithm looks for no entry at spreadsheet, "Stkanlzr Sheet2," Row 3 Column E, "E3" to begin processing at Step 508. If Step 506 finds a value of "2" at position "E3" it begins processing to Step 532. If Step 506 finds a value of "3," it begins processing at Step 548. The conclusion of the processing Block at Step 522 includes an entry of "1" at position "E3" of Sheet2 of "Stkanlzr."
STOCK SHORTING MODULE. See FIG. 6 flowchart. The portfolio management module spreadsheet, "Stkshortr", checks the status of spreadsheet completion on Sheet2 at Steps 606, 622, 632 and 658. As Step 606 begins the first processing Block, the algorithm looks for no entry at spreadsheet, "Stkshortr Sheet2," Row 3 Column E, "E3" to begin processing at Step 608. If Step 606 finds a value of "2" at position "E3" it begins processing to Step 632. If Step 606 finds a value of "3" it begins processing at Step 648. The conclusion of the processing Block at Step 622 includes an entry of "1" at position "E3" of Sheet2 of "Stkshortr." DATA INPUT ENTRY AND ALGORITHMS TO CHECK DATA CONFORMITY & COUNT THE INPUTS
A user opens a solution module by hyperlinking from the Answer Machine interface for the user's problem. The user makes this hyperlink as previously discussed (FIG. 2) after determining the required data for a problem solution. In the case of marketing/sales problems, the user would hyperlink to the solution module, "Remake" . For portfolio management, a user would hyperlink to the solution module, "Stkanlzr" . For stock shorting, a user would hyperlink to the solution module, "Stkshortr" . These hyperlinks represent: FIG. 4, step 402, FIG. 5, step 502 and FIG. 6, step 602. Assuming data availability, the user begins the solution process by pressing a button titled, "Push for Mktg, Sales, Price Analysis" on Remake Sheet2, or titled, "Push for Portfolio Review" on Sheet2 of either "Stkanlzr" or
"Stkshortr" . After welcoming the user and obtaining the user's name, the modules either acquire the requisite data from appropriate spreadsheets or from manual entries by the user. The algorithm (FIG. 4, Step 408, FIG. 5, Step 508 and FIG. 6, Step 608) checks the input data for conformity with a preferred data format (Steps 412, 512 or 612) . The required input structure consists of: the word "Date" in the first row of the first column and names of products or product market segments in the first row starting after the word, "Date." The marketing solution module permits date entries of days, weeks or months. The portfolio management module and the stock shorting module are preferably configured to only accept weekly "dates. " Monthly stock data cover too lengthy a time period and daily stock data cover too brief a time period for useful analysis.
The algorithm performs the same inspection (FIG. 5, Step 508 and FIG. 6, Step 608) for stock symbols for the portfolio management and stock shorting modules, in addition to seeking three specific symbols: QQQ, SPY and DJA ("index" securities representing, in the US, stocks listed on the NASDAQ system, the Standard S- Poor' s and the Dow-Jones Industrial Average, respectively) . To allow the generalization of the solution module, the actual count of products, product market segments or stock symbols remains a variable throughout the solution modules . The algorithm counts the number of products or stock symbols at the reading of the data input and at appropriate times (FIG. 4, Steps 422, 446, 458 and 468 of the Marketing Module; FIG. 5, Steps 522, 532 and 558 of the Portfolio Management Module, and FIG. 6, Steps 622, 632 and 658 of the Stock Shorting Module) throughout the solution module. After making the count, the algorithm checks the count against a minimum and maximum number specified in the algorithm. If the count meets the count criteria, it becomes an essential input to the solution module affecting the spreadsheet layout and the linear program equations used to solve the problem. If the count meets the count criterion, the algorithm stores the input data on Sheetl of the solution spreadsheet, "Remake" for the marketing module and "Stkanlzr" for the portfolio management module and "Stkshortr" for the stock shorting module. For the marketing, portfolio management and stock shorting modules the algorithm requires a minimum of five (5) products, product market segment or stocks. The use of linear programming in the solution process sets the minimum. It makes no sense to conduct an LP analysis with fewer than five (5) components. The current LP solution technique creates an upper bound of twenty-five (25) on the count of stocks, products or product market segments. The use of a more capable LP solution technique could raise the maximum considerably. Some LP solution techniques can handle a count up to ten thousand (10 000) although a count of one thousand (1000) represents a more common limit. However, use of a count in the hundreds misses the point of the solution module. A large complex manufacturer such as an automobile manufacturer should not enter automobile models as products and the thousands of components as the ingredients . In fact an auto manufacturer should not enter products but young, middle aged and retired males and females of various income brackets as the product market segments (PMS' s) . Auto, SUV (Sport Utility Vehicle) and truck models represent the ingredients to serve these PMS' s. After determining what PMS's to serve and what models best serve them, a second tier analysis would focus on general model classifications and the groups of components: bodies, engines, transmissions, electrical components and accessories as the ingredients to these product classes. An intelligible marketing solution evolves over several iterations as the user focuses on the best PMS' s, the appropriate product classes to serve the PMS' s, the appropriate component groups to meet those product classes and ultimately the appropriate types of components to meet the product classes.
Appropriateness relates to the consideration of "opportunity cost", an economic concept concerning the cost of performing one action versus another. Contributors (products or market segments which contribute to profitability) have no "opportunity cost" associated with them. Non-contributors (products or segments which have a less-than-optimal profitability) do have an "opportunity cost" . An optimized course of actions minimizes "opportunity cost" by focusing efforts on contributors and minimizing efforts on non- contributors.
An optimized business solution consists of: contributor PMS' s, contributor product classes, contributor component classes, contributor ingredients, a roster of non-contributors, an optimized sales and marketing budget and a methodology to decide what to do about non-contributors. Trying to short-circuit this process by entering thousands of ingredients, including every nut, bolt and screw, will not prove enlightening in focusing the business for optimal profitability. ALGORITHM QUERYING THE USER RE THE NEED TO ADJUST INPUT DATA.
After acquiring the input data, FIG. 4, Step 410, FIG. 5, Step 510, & FIG. 6, Step 610, load a statistical analysis, previously discussed, MATHCAD program into the spreadsheet memory. FIG. 4, Step 412, FIG. 5, Step 512, & FIG. 6, Step 612, query the user about the need to adjust the input data for changed conditions. Consider the expected addition of a new sales account. The user can expect the new account to generate a certain level of sales in the future. Therefore, the user should add the anticipated sales to the historical data to reflect the new incremental sales expected for the new account. Without an adjustment to historical data, the sales forecast will not include the new sales account in the forecast . Conversely, the loss of a customer would require the user to decrease historic sales to account for sales that had existed for that customer that would no longer occur in the future. A similar algorithm (FIG.
5, Step 512 and FIG. 6, Step 612) , in the portfolio management module, allows a user to adjust historic stock prices to account for more up-to-date stock market realities.
ALGORITHM TO STATISTICALLY ANALYZE INPUT DATA
After checking data consistency, FIG. 4, Step 414, FIG. 5, Step 514, & FIG. 6, Step 614, call the statistical analysis program previously mentioned. The algorithm, FIG. 4, Step 416, FIG. 5, Step 516, & FIG.
6, Step 616, request the user to set variability levels associated with probability distributions for the inputted data. The algorithm suggests an upper bound of 0.95 from a possible range of 0.95 to 0.99 and 0.68 for a lower bound of a possible range of 0.5 to 0.68.
Concerning the statistical analysis of input data, the analysis consists of an algorithm (FIG. 4, Step 418, FIG. 5, Step 518 and FIG. 6, Step 618) that uses two separate methods to analyze the input data on Sheetl . The first method, previously discussed, involves a complex combination of linear and Fourier analysis and correlations. Next, the algorithm subjects the correlation results to an error analysis, relative to actual input data. That comparison leads to the development of a normal distribution of uncertainty of the correlation relative to the actual data. Thus a user of the correlation could express a required confidence level, say 95 percent, and determine a correlation result of an estimated median value, + or - some error value, such that the user can feel comfortable that, 95 times out of 100, the actual value will fall within the correlation median value + or - the error value. The resulting error-corrected correlation then forecasts 36 periods into the future, for either stock prices or product sales. The uncertainty value, associated with the forecast, accounts for the variability of the forecast. Naturally, the forecast rests on the assumption that the future will reflect past performance. For the marketing module, the selection of variability range reflects practical considerations of customer service levels and required product production and inventories to support those customer service levels.
In the portfolio management module, the variability ranges reflect the anomaly of stock price fluctuations. Proprietary research indicates that the distribution of stock prices about a median value reflects a skewed distribution closer to a Poisson distribution rather than a Normal distribution. The sharp decline in prices above the median versus the slowly declining distribution of prices below the median reflects the long held suspicion that investors sell profitable investments too soon and hold unprofitable investments too long. For both modules, the algorithm suggests 95 percent for the large variability band and 68 percent for the small variability band. These bands will comprise the stock price variability estimate for each stock.
The second statistical analysis, previously discussed, involves a simple linear correlation of historic data. If the correlation coefficient exceeds 0.95, the algorithm selects the simple linear correlation for the forecast of product sales or stock price forecasts. The algorithm stores the statistical results including: correlation results, small and large uncertainty bands, forecasts for the next three periods, the average forecast for the next 36 periods and forecasted growth rates on Sheetl .
One aspect of the statistical analysis algorithm that deserves note involves instructions about what not to do. The algorithm for the marketing module involves instructions to test whether the average of the first three, middle three or last three periods of sales history represent a monotonic (consistently directed) increasing or decreasing series. If they exhibit a concave or convex shape, the entire series reflects non-linearity. If the algorithm determines non-linearity, it does not perform the linear correlation analysis. Since the linear analysis requires approximately 50 percent as much processing time as the more complex analysis, skipping the linear analysis can save considerable processing time. In the entirely possible situation that no product sales exhibit monotonic increases or decreases, the elimination of the linear analysis would reduce processing time by 33 percent. Since this algorithm requires approximately 33 percent of the total module processing time, this improvement reduces overall processing time by 11 percent.
Although stock prices generally exhibit non-linear behavior, the portfolio management module (Stkanlzr) contains the linear analysis algorithm. The existence of the linear analysis permits future expansion of the module to serve professional investors. A professional should have the wherewithal to examine a price history for a stock and make realistic and necessary adjustments in prices, possibly leading to a linear progression. Under these circumstances, the linear analysis becomes appropriate. ALGORITHMS TO COMPLETE THE DATA INPUT MARKETING SOLUTION MODULE
An algorithm (FIG. 4: Step 412) requests the names of additional ingredients and the amounts available for each. Then, in step 420, it moves the statistical analysis results into the appropriate locations in the linear program.
PORTFOLIO ANALYSIS MODULE
An algorithm (FIG. 5, Step 520) performs an extensive sort of stocks according to the price variability risk, relative to the Dow Jones Average (pseudo-stock DJA where DJA = (Dow Jones Industrial Average/1000) x $1) , SPY (the index stock for the Standard and Poor's 500) and QQQ (the index stock for the NASDAQ 100) . First, the algorithm, using the DJA variability as an index, divides all the other entries by the DJA variability and stores that index result. Next, it determines the average index for all the stocks and stores that result at position Row 3, Column M, "M3, " of Sheet2 of spreadsheet, "Stkanlzr." Next, it determines whether the calculated index of DJA (by definition, = 1) exceeds SPY'S index. If so, the algorithm sorts all the stocks with indices less than the SPY index that must be less than one. These constitute low variability/low risk stocks. If SPY'S index exceeds DJA' s index of (1), the algorithm sorts all the stocks with indices between the DJA index and the SPY index. Under these conditions, these stocks may have indices less than and greater than one. These constitute low variability/low risk stocks. It places these stocks on the spreadsheet above SPY. Next, the algorithm sorts the remaining stocks whose indices fall between the SPY and QQQ indices. These constitute medium variability/medium risk stocks. It places these stocks on the spreadsheet below SPY. It places QQQ on the spreadsheet below these medium risk stocks . The remaining stocks have indices greater than QQQ and represent high variability/high risk stocks. The algorithm then counts the number of stocks in each category (low, medium and high risk) and places that count on Sheet2 of spreadsheet, "Stkanlzr." along Row 3, Columns J, K and L, "J3, " λλK3" and "L3." The user now has an accurate view of the relative variability of the stock selection and how the stock selection compares to easily understood references . Note the user will not detect any difference in the results or spreadsheet layout, even when DJA variability exceeds SPY'S, except for a fractional SPY index less than one and all low risk stocks with indices less than one. An astute or professional user will recognize this result as indicative of unusual market conditions. The unusual market conditions may indicate a particularly auspicious time to invest in stocks with low variability/ risk. SOLUTION BLOCK 2 (FIG. 4, Steps 422 to 436, FIG. 5, Steps 522 to 532 & FIG.6, Steps 622 to 632) Block 2 contains 4 distinct algorithms:
1) An algorithm that reads the state of module completion at the initiation of the processing Block, marks the completion of the Block, and calculates the number of inputs;
2) An algorithm to request additional input information from the user;
3) An algorithm that performs summary calculations to set limits to parameters specified by the user,
(marketing/ sales budget allocation or portfolio variability risk acceptance)
4) An algorithm that completes the spreadsheet layout, installs fundamental equations for a linear program (LP) , calls the LP solution technique, seeks a Sensitivity Analysis from the LP, examines the Sensitivity Analysis for appropriateness, alerts the user in the case of inappropriateness and ceases module operation.
ALGORITHM TO DETERMINE THE MODULE'S STATE OF COMPLETION AND TO COUNT INPUTS MARKETING SOLUTION MODULE
To determine the state of completion of the module, an algorithm (FIG. 4. Step 422) examines location "E3" on Sheet2 of the spreadsheet, "Remake." If it finds the value "1" at "E3" on the spreadsheet, the second block commences processing at Step 424. If Step 422 finds the value "2" at "E3" the second block continues processing at Step 436. At the conclusion of the second Block's processing, Step 442 adjusts "E3's" value on Sheet2 to "3". If Step 422 finds a value greater than "2" at "E3" it skips processing to Step 446.
To determine the correct number of products, inventoried ingredients and non-inventoried ingredients an algorithm (FIG. 4, Step 422) searches for the term, "Products" on Sheet2 of "Remake." The algorithm, after determining the location of the term "Products," adds one more row and then searches by counting columns to the right to find the bold italic term nSubtoot2." The count to nSubtoot2" indicates the total number of • ingredients plus one (1) , including the two potential substitutes plus the marketing budget. After locating nSubtoot2," the algorithm returns to the column containing "Products" and searches by counting columns to the right and adding the number of columns containing plain italic characters. This total indicates the count of non-inventoried ingredients. The count of inventoried ingredients equals the total minus the non-inventoried count minus the two substitutes minus one (1) to allow for the marketing budget.
The use of this algorithm necessitates that a user has no input to the layout of the solution module. The user foregoes preferences about looks, for the sake of simplicity of use. Leaving the count as a variable, in the solution module, permits the module to cover a wide range of problems with the same solution process . PORTFOLIO MANAGEMENT MODULE To determine the state of completion of the module an algorithm (FIG. 5. Step 522) examines position "E3" on the spreadsheet, "Stkanlzr" . If it finds the value "1" at "E3" on the spreadsheet, the second block commences processing at Step 524. If Step 522 finds the value "2" at "E3" the second block continues processing at Step 532. At the conclusion of the second Block' s processing, Step 532 adjusts "E3's" value to "3". If Step 532 finds a value greater than "2" at "E3" it skips processing to Step 548. Another algorithm (FIG. 5, Step 522) calculates the number of stocks . The algorithm searches for the term, "Stock Symbol" on Sheet2 of the spreadsheet, "Stkanlzr." After finding the term, it adds 4 rows and begins character recognition of the fifth row and each succeeding row and counting the rows until it detects an empty row. STOCK SHORTING MODULE
To determine the state of completion of the module, an algorithm (FIG. 6, Step 622) examines position "E3" on the spreadsheet, "Stkshortr" . If it finds the value "1" at "E3" on the spreadsheet, the second block commences processing at Step 624. If Step 622 finds the value "2" at "E3 , " the second block continues processing at Step 632. At the conclusion of the second Block's processing, Step 632 adjusts "E3's" value to "3". If Step 632 finds a value greater than "2" at "E3, " it skips processing to Step 648.
Another algorithm (FIG. 6, Step 622) calculates the number of stocks . The algorithm searches for the term, "Stock Symbol" on Sheet2 of the spreadsheet, "Stkshortr." After finding the term, it adds 4 rows and begins character recognition of the fifth row and each succeeding row and counting the rows until it detects an empty row.
ALGORITHMS SEEKING ADDITIONAL INPUT FROM THE USER MARKETING SOLUTION MODULE
In FIG. 4, Steps 424 and 428 request additional input from the user concerning the ratios of PMS output per unit of ingredient input, the prices for products or PMS' s and the prices for ingredients. Additionally, the algorithm for Step 424 inquires how the user wishes to input the ratios: manually or by database such as a spreadsheet or a pre-existing marketing module solution. After determining the method of ratio input, the algorithm, at Step 424, accepts the ratios, analyzes them for degeneracy, and at step 426 begins the layout of the models on "Remake." Some Linear Program solution techniques cannot solve LP setups that contain degeneracy. "Degeneracy" occurs when the ratios of ingredients for one product represent multiples for another product. For example, a six-ounce container of product and a twelve-ounce container of product do not represent different products, but rather different sizes of the same product. To enter them as different products would cause degeneracy. If the algorithm detects degeneracy, it warns the user of the problem, and offers the user the opportunity to adjust one or the other group of ratios to alter the ingredient mix. If the user declines to adjust the ratios, the algorithm notifies the user that the input consists of an impossible condition and that the module will cease operation and will shut down. PORTFOLIO MANAGEMENT MODULE
In FIG. 5, Step 524 requests additional input from the user concerning earnings per share and dividends per share for each stock selection on a semi-annual basis. Using a six-month period focuses on the most up-to-date earnings performance. An algorithm in Step 524 requests the user to input the amount of investment capital available and the amount of that capital the user can afford to lose. The contingency loss amounts to 10 percent of the investment capital . The algorithm permits a loss up to 50 percent of investment capital. The 50 percent upper limit represents a useful limit for users of the portfolio management solution module. Anyone willing to risk losing more than 50 percent of his or her investment would not benefit from using the portfolio management solution module.
Additionally, the algorithm for Step 524 inquires how the user wishes to input the data: manually or by database. At Step 526, the algorithm begins the layout of models on "Stkanlzr." STOCK SHORTING MODULE
In FIG. 6, Step 624 requests additional input from the user concerning earnings per share and dividends per share for each stock selection on a semi-annual basis. Using a six-month period focuses on the most up-to-date earnings performance. An algorithm in Step 624 requests the user to input the amount of investment capital available and the amount of that capital the user can afford to lose. The contingency loss amounts to 10 percent of the investment capital . The algorithm permits a loss up to 50 percent of investment capital. The 50 percent upper limit represents a useful limit for users of the stock shorting solution module. Anyone willing to risk losing more than 50 percent of his or her investment would not benefit from using the stock shorting solution module. Additionally, the algorithm for Step 624 inquires how the user wishes to input the data: manually or by database. At Step 626, the algorithm begins the layout of models on "Stkshortr." ALGORITHMS INFORMING USERS ABOUT PARAMETER LIMITS, BASED ON SUMMARY CALCULATIONS MARKETING SOLUTION MODULE
An algorithm (FIG. 4, Steps 430 and 432) uses the ratios and demand forecasts to calculate the amount of ingredients required to meet demand. It then compares that requirement with the inventories of ingredient to calculate an additional backorder of ingredients required to meet demand. After the calculations, the algorithm informs the user of the amounts to backorder for each ingredient to meet demand forecasts. After the user approves the backorder, the algorithm completes the layout of the spreadsheet less the marketing/sales budget for each product. It then calculates, at Step 434, preliminary estimates of gross margin for each product and for the overall business. It then queries the user concerning how the user wishes to allocate the marketing/ sales budget, either on a total basis or on a unit basis for each product. It indicates the total amount available for the budget with the calculation representing 90 percent of the total gross margin. This limit permits coverage for additional general and administrative expenses not included in the module's formulation of gross margin. After the user indicates a preference for a total basis or a unit basis for each product, the algorithm asks what percentage of the gross margin the user will allocate to the budget. The user can select any percentage less than 90 percent of the preliminary estimate of gross margin. After the user enters a percentage allocation for the budget, the algorithm confirms that entry. After the user confirms the algorithm' s confirmation, the algorithm proceeds to formulate the budget. If the user had indicated a preference for a budget allocated on a total basis, the algorithm multiplies the gross margin of each product by the user specified percentage to obtain the marketing/sales budget for each product. If the user specified a preference for a unit basis, the algorithm displays the multiplication result discussed above and asks the user whether to enter that amount, or less. A larger budget means the budget would exceed the percentage limit the user just specified. After the user specifies an acceptable per-unit budget, the algorithm confirms the value.
PORTFOLIO MANAGEMENT MODULE
An algorithm (FIG. 5, Step 524) asks the user's preference to limit variability in stock price fluctuations. The algorithm suggests a variability limit of the selected stocks. The user can select variability with the choice limited by the state of the stock market and the user's stock selections.
CONSERVATIVE STOCK SELECTIONS If the stock market has the usual progression of variability (for example, in the US, QQQ > SPY > DJA) and the user makes stock selections with an average variability between SPY and QQQ, the user can specify a variability up to 10 percent greater than the average for the user's stock selection. This permits consideration of all stock selections but places a reasonable limit on variability. Using a variability constraint greater than this level makes the constraint too large for any relevance to the portfolio analysis.
INTERMEDIATE VARIABILITY STOCK SELECTIONS If the stock market has the usual progression of variability (or even the unusual variability progression (QQQ > DJA > SPY) ) and the user makes stock selections with an average variability greater than SPY but less than QQQ, the user can specify a variability constraint up to 25 percent greater than the average for the user' s stock selection. This permits consideration of all the user's stock selections but places a reasonable limit on variability. Using a variability constraint greater than this level makes the constraint too large for any relevance to the portfolio analysis. Conversely, leaving the constraint at 10 percent greater than the stock selection average would excessively constrain the portfolio selection. If the user chooses a very low variability, the module will create a portfolio with small investments in few stocks. If this occurs, the user probably would re-use the module again but select a larger variability. HIGH VARIABILITY STOCK SELECTIONS
No matter what the state of the stock market, if the user specifies a portfolio with an average variability exceeding QQQ's variability, the algorithm notifies the user that the selections consist of "Hi Risk Stocks." In this situation, the algorithm limits the user to specifying a variability constraint up to 50 percent greater than the variability for QQQ. This permits consideration of many stock selections but places a reasonable limit on variability that bears some relationship to the overall stock market. If a user only selects stocks with volatilities 50 percent greater than QQQ, the user over-rides the usefulness of the portfolio management module and enters the realm of gambling. Under this condition, a variability limit of one and one-half times QQQ' s variability will act as a binding constraint forcing a solution of no investment. Hopefully the user will recognize the extreme variability of the stock selections, act sensibly and consider a different stock mix with a lower average variability.
Unfortunately, many investors motivated by greed, rather than prudence, expect high investment returns without realizing or accepting the risks associated with the potential for high returns. This selection should represent a wake-up call, to the uninitiated, that high risk accompanies high reward. The other risk constraint, concerning how much invested capital a user can afford to lose, represents a fallback provision that can save the investor from himself or herself if the user honestly addresses tolerance for loss. If users accept unreasonably high variability and large investment loss limits, they may experience a very expensive education.
STOCK SHORTING MODULE
An algorithm (FIG. 6, Step 624) asks the user's preference to limit variability in stock price fluctuations; see explanation in the paragraph above. ALGORITHMS TO COMPLETE SPREADSHEET LAYOUT, CREATE AND SOLVE AN INITIAL LINEAR PROGRAM. MARKETING SOLUTION MODULE
Eight general parameters affect marketing mix: (1) Product Market Segments (PMS) , (2) Components to serve the PMS' s, (3) the Ratio of PMS per unit Component Input, (4) Component Availability, (5) Demand Forecasts, (6) Prices, (7) Gross Margins and (8) the Marketing/Sales Budget. For simple businesses, Products serve as proxies for PMS's and ingredients serve as components and inventories serve as component availability. For simplicity of explanation, assume a simple business and the terminology of Products, ingredients and inventories. A complex business requires the more general terminology of PMS and components . PMS' s consist of weighted averages of sales to target segments, components consist of weighted average costs of ingredients to serve the target segments and component availability consists of weighted averages of ingredient inventories. The Optimal Quantities to Sell for each product constitute the "Change Variable" equations (different numbers) for the optimal marketing mix to support the maximum Gross Operating Margin.
Product operating margins equal the difference between product prices and the unit costs to produce, sell and market each product. Gross Operating Margin equals the array product from Optimal Quantities to Sell multiplied by Product operating margins. The array's number of elements equals the number of products. According to standard linear programming terminology, the LP "Objective Function" equals the Gross Operating Margin.
"Constraint Equations" consist of the difference between the availability and the consumption or usage of ingredients to meet sales. Specifically, ingredients remaining after usage equal the difference between the total of an array multiplication (of ratios of usage of an ingredient by each product times the Optimal Quantities to Sell for the products) subtracted from the amount of the ingredient available. This total requires determination for each ingredient. The amount remaining must equal or exceed zero. The amount used must equal or exceed zero. The quantity of product sold must equal or exceed zero.
Thus, the number of "Constraint Equations" comprises (array equations equal to the number of ingredients) plus (array equations to specify greater- than-zero results to the LP solution technique) . For ten (10) ingredients, that totals to thirteen (13) equations.
An algorithm (FIG. 4, Step 436) uses the count of products, inventoried and non-inventoried, and a prescribed format completes spreadsheet layouts of models on Sheet2 and Sheet3 of the spreadsheet "Remake."
The algorithm further uses the count, for these variables, to create the appropriate equations governing the model and places them at the appropriate locations on the spreadsheet. It then takes the numerical results from the statistical analysis (base forecasts and uncertainties) and input data and calculates results for those equations. It then creates the required array equations and places them in the appropriate locations. It then creates the required "Objective Function," "Change Variable" and "Constraint Equations" and places these equations in the LP solution technique, and formulates a preliminary LP solution.
The algorithm checks the appropriateness of the LP solution's Sensitivity Analysis. If it finds an inappropriate Sensitivity Analysis, it notifies the user and requests the user to manually operate the LP Solution technique to produce the correct Sensitivity Analysis . If the user must perform a manual run for the
Sensitivity Analysis, Step 436 enters a "2" on Sheet2 in location λΕ3" and then ceases the operation of the solution module. If the algorithm determines a correct Sensitivity Analysis it enters a "3" on Sheet2 at location ΛΕ3" and moves to the next processing Block at Step 438.
PORTFOLIO MANAGEMENT SOLUTION MODULE An algorithm (FIG. 5, Step 528) utilizes the results of the statistical analysis (Step 518) to calculate the Reward/Risk ratios for the stocks. The
Reward/Risk ratio equals the potential investment gain divided by the potential investment loss. Potential investment gain equals forecasted upside stock price, minus the current stock price. Potential investment loss equals the current stock price, minus the forecasted downside stock price. The algorithm stores these results for later use in the solution module.
Three general parameters affect portfolio selection: (1) Risk, (2) Reward and (3) Investment Capital. The Investment Capital parameter constitutes the "Change Variable" equations (different numbers) for the optimal investment for each stock. Risk splits into two sub-parameters consisting of: the amount of invested capital the user can afford to lose and the amount of stock price variability the user can afford to encounter. Reward splits into two sub- parameters consisting of: dividends and stock price appreciation.
Constraint equations for these 4 sub-parameters must address each stock individually, as well as in total. Therefore, a portfolio consisting of 13 stock picks (plus the two "index" stocks) requires [{(13+2) X 4}=60] sixty individual equations. Additionally, the linear program requires constraint on the sums of each of these 4 parameters or 4 vector (or array) product equations, consisting of the product of each constraint parameter times the "Change Variable" equations (numbers) . For a 13-stock portfolio, the constraint vector would consist of 15 elements. For the sum of capital invested in particular stocks, the 4-array product equations produce: the Total Reward from stock price appreciation, the Total Dividend from the selected stocks, the Total Potential Loss from investing in selected stocks and the Total Variability (Price Change Risk) for the selected stocks . Finally, the "Objective Function" equation consists of the sum of Total Dividends plus Total Stock price appreciation (mathematically the sum of the two array product equations covering Reward) . Thus the layout of the linear program for 13 stocks requires 65 linear equations plus the 15 "number" equations of "Change Variables." Additionally, the mathematical tool that solves the linear program requires equations for instructions. These instruction equations define the location of the "Objective Function", "Change Variables" and "Constraint Equations," as well as dictate that solutions consist of zero or positive results. The count of these instruction equations varies from 6 to 9, depending upon the block in the solution module. Thus, a basic linear program for a 13-stock portfolio requires between 86 to 89 equations to define a solution for an optimized portfolio. Fifty iterations to solve the linear program equates to the solution of 4300 to 4500 equations. Using the count of stocks determined at Step 522, the algorithm at Step 530 creates the appropriate equations for the linear programming model and uses a prescribed format to complete the spreadsheet models on Sheet2 and Sheet3 of the spreadsheet "Stkanlzr." It further uses the count, for these variables, to create the appropriate equations governing the model and places the equations at the appropriate locations on the spreadsheet . It then takes the numerical results from the statistical analysis (base forecasts and uncertainties) and input data and calculates results for the spreadsheet equations . It then creates the required array equations and places them in the appropriate locations. It then creates the required "Objective Function", "Change Variable" and "Constraint Equations" and places them in the LP Solution Technique and formulates a preliminary LP solution.
The algorithm checks the appropriateness of the LP solution's Sensitivity Analysis. If it finds an inappropriate Sensitivity Analysis, it notifies the user and requests the user to manually operate the LP
Solution technique to produce the correct Sensitivity Analysis. If the user must perform a manual run for the Sensitivity Analysis, Step 534 enters a "2" on Sheet2 at location "E3" and then ceases the operation of the solution module. If the algorithm determines a correct Sensitivity Analysis it enters a "3" on Sheet2 at location "E3" and moves to the next processing Block at Step 536. STOCK SHORTING MODULE
An algorithm (FIG. 6, Step 628) utilizes the results of the statistical analysis (Step 618) to calculate the Reward/ Risk ratios for the stocks. The Reward/ Risk ratio equals the potential investment gain divided by the potential investment loss. Unlike the
Portfolio Management Module, the Stock Shorting Module treats Dividends as a loss, not a gain. The stock shorter might have to make dividend payments out-of- pocket to the investor who actually owns the borrowed shares of stock. For further explanation of the Stock Shorting algorithms, review the paragraph above and substitute "Stkshortr" for "Stkanlzr" and add 100 to the step values. SOLUTION BLOCK 3 (FIG. 4, Steps 436 to 456,
FIG. 5, Steps 532 to 556 and
FIG. 6, Steps 632 to 656)
Block 3 contains 4 distinct algorithms:
1) An algorithm reads the state of completion of the module at the initiation of the processing Block, marks the completion of the Block and counts variables;
2) An algorithm alerts the user concerning the implications of the Sensitivity Analysis; 3) An algorithm iterates the simple LP according to
Sensitivity Analysis implications; 4) An algorithm querying the user for adjustments to the simple LP. ALGORITHMS WHICH DETERMINE THE MODULE'S STATE OF COMPLETION AND WHICH COUNT INPUTS
MARKETING SOLUTION MODULE
If the user had to manually call the LP solution technique, upon restart, Step 422 sends the module to Step 436 to continue the solution process. Otherwise, Step 422 sends the module to step 446 to determine the state of completion of the module. An algorithm, at step 446, examines location "E3" on Sheet2 of the spreadsheet, "Remake." If it finds the value "3" at "E3" on Sheet2 of the spreadsheet "Remake," the third block commences processing at Step 448. At the conclusion of processing, Step 456 places a value of "4" on Sheet2 at location ΛΕ3" . If Step 446 finds a value greater than "3" in "E3" it proceeds to Step 458. If the user had to manually call the LP solution technique, the module on restart at Step 422 determines the correct number of products, inventoried ingredients and non-inventoried ingredients. Otherwise an algorithm
(FIG. 4. Step 446) searches for the term, "Products" on Sheet2 of the spreadsheet, "Remake." The algorithm after determining the location of the term "Products" adds one more row and then searches by counting columns to the right to find the bold italic term "Subtoot2." The count to "SuJbtoot2" indicates the total number of ingredients plus one (1) , including two potential substitutes, plus the marketing budget. After locating nSubtoot2, " the algorithm returns to the column containing "Products" and searches by counting columns to the right and adding the number of columns containing plain italic characters. This total indicates the count of non- inventoried ingredients. The count of inventoried ingredients equals the total minus the non-inventoried count minus the two substitutes minus one (1) to allow for the marketing budget. PORTFOLIO MANAGEMENT MODULE
If the user had to manually call the LP solution technique, upon module restart, Step 522 sends the module to Step 532 to continue the solution process. To determine the state of completion of the module, an algorithm (FIG. 5, Step 532) examines position "E3" on the spreadsheet, "Stkanlzr" . If it finds the value "3" on Sheet2 at location "E3" on the spreadsheet, the second block commences processing at Step 548. At the conclusion of processing, Step 556 places a value of "4" in "E3". If Step 532 finds a value greater than "3" in ΛΛE3" it proceeds to Step 558.
If the user had to manually call the LP solution technique, the module, upon restart at Step 532, uses an algorithm (FIG. 5, Step 532) to calculate the number of stocks by searching for the term, "Stock Symbol" on Sheet2 of the spreadsheet, "Stkanlzr." After finding the term, it adds 4 rows, begins character recognition of the fifth row and each succeeding row, and counts the rows until it detects an empty row. STOCK SHORTING MODULE
For further explanation of the Stock Shorting algorithms to count stocks, review the paragraph above and substitute "Stkshortr" for "Stkanlzr" and add 100 to the reference number of each step, e.g. step 532 becomes step 632.
ALGORITHMS ALERTING THE USER TO THE IMPLICATIONS OF THE SENSITIVITY ANALYSIS
MARKETING SOLUTION MODULE The algorithm (Step 438) examine the linear program's Sensitivity Analysis. At first it examines the required increase in a product's gross margin to make it an equivalent "contributor" to overall business gross margin. Note that gross margins could exist such that all products contribute to the business. If so, the algorithm notifies the user of this situation. It might indicate a lack of upside or downside gross margin sensitivity. The count of upside or downside gross margin triggers has no relationship to the number of products, except that the maximum possible count of gross margin adjustments will be limited to less than twice the product count. Because the LP formulation provided all ingredients to meet demand, only marketing constraints, not production constraints, affect the solution.
Effectively, the required gross margin increase for a product represents the "opportunity cost" attributable to making and selling the product. If products exist with "opportunity costs" , the business would benefit by devoting resources to the promotion and sales of other products.
The algorithm, at Step 440, notifies the user of the less than optimal gross margin contribution of the product and indicates the per-unit cost to the business for supporting the product. The user can choose to offset "opportunity cost" by either raising prices or cutting expenses. The algorithm focuses on expense cuts. The algorithm (FIG. 4, Step 442) examines each gross margin increase and decrease in the Sensitivity Analysis that affects the potential contribution of each product. Therefore, the algorithm must examine the Sensitivity Analysis and determine if and what price change would possibly change a product's contribution to the business . The algorithm' s examination consists of determining if the upside or downside gross margin increase exceeds $0.01 but does not exceed $10000. This range excludes situations where unrealistically large gross margin increases must occur to make the product an optimal contributor to the business. The algorithm records the count of upside gross margin increases, and adjusts the current product prices for the increases. It performs the same for downside prices . PORTFOLIO MANAGEMENT MODULE
If the algorithm detects a λΛ3" at position "E3" on the solution spreadsheet, the algorithm recognizes the user manually ran the LP analysis at Step 534 to obtain a Sensitivity Analysis for a LP with limited constraint equations. It proceeds to examine the linear program's Sensitivity Analysis (Step 536) . It examines the Sensitivity Analysis to determine whether an incremental price change exists (whatever its probability of occurrence) that would make the stock a portfolio candidate, or remove its candidacy. Note that current stock prices could exist such that all stock selections become portfolio candidates. In this situation, the Sensitivity Analysis would indicate NO upside price sensitivity. However, price drops coμld remove a stock's candidacy. In the situation that some prices make portfolio candidates for a few stocks, the Sensitivity Analysis would indicate some upside price variability. If upside price variability exists, the algorithm adjusts the price to the upside trigger. It then compares that price to the statistical analysis' high side price variability. For the suggested upper variability of 0.95, less than a 5 percent probability exists, that the high side price or greater will occur. If the stock price trigger exceeds the high side price, then the algorithm notifies the user of this unlikely event. In some cases, the user would have to sell the stock at this high price, as well as purchase it at a low price, to make an investment gain equivalent to the gain afforded by other stocks . The algorithm compares the low buy price to the statistical analysis' low side price variability. If the statistical analysis' low side price exceeds the indicated buy price, the algorithm, at step 538, notifies the user of this unlikely event, in combination with the necessity of achieving the unlikely selling price. The algorithm records, at Step 540, whether or not a stock has some reasonable probability of contributing to the portfolio. At Step 542, the algorithm asks about the user's current portfolio, requesting identification of the stocks, the purchase prices, and the amount originally invested in each stock and the user's requirement for dividends.
STOCK SHORTING MODULE
If the algorithm detects a "3" at position "E3" on the solution spreadsheet, the algorithm recognizes that the user manually ran the LP analysis at Step 634 to obtain a Sensitivity Analysis for a LP with limited constraint equations. It proceeds to examine the linear program's Sensitivity Analysis (Step 636) . It examines the Sensitivity Analysis to determine whether an incremental price change exists (whatever its probability of occurrence) that would make the stock a viable candidate for a short sale. Note that prices could exist such that all stock selections make acceptable stock shorting candidates. In this situation, the Sensitivity Analysis would indicate NO downside price sensitivity.
However, price increases could remove a stock's shorting candidacy. In the situation that some prices make portfolio candidates for a few stocks, the Sensitivity Analysis would indicate some downside price sensitivity. If downside price sensitivity exists, the algorithm adjusts the price to the downside trigger. It then compares that price to the statistical analysis' low side price. For the suggested upper variability of 0.95, less than a 5 percent probability exists that the low side price or less will occur if the stock price trigger is less than the low side price. The algorithm, at Step 638, notifies the user of this unlikely event. In some cases, the user would have to sell the stock at this high price, as well as purchase at a low price, to make a short sale gain equivalent to the gain afforded by other stock short sales . The algorithm compares the low sell price to the statistical analysis' low side price variability. If the statistical analysis' low side price is less than the indicated sell price, the algorithm at Step 638 notifies the user of this unlikely event, in combination with the necessity of achieving the unlikely buy price. The algorithm at Step 640 records whether or not a stock has some reasonable probability of contributing to the short sale portfolio. At Step 642, the algorithm inquires about the user's current portfolio of short sale stocks, the shorting prices and amount originally realized by the sale of each stock and the user's willingness for dividend re- imbursement expenditures.
ALGORITHM TO ITERATE (REPEATED RUNS)
THE SIMPLE LP FORMULATION WITH MINIMUM CONSTRAINTS MARKETING SOLUTION MODULE The algorithm (Figure 4. Step 448) takes the adjusted price for each product, substitutes it into the linear program, solves the LP and records the "solution" : which products the LP includes on a list of products recommended to be offered for sale. Note this LP formulation does not conform to market demands. The solution simply attempts to find whether the product can become a robust "business contributor" relative to other products. It repeats this process, for all the possible gross margin changes indicated by the Sensitivity Analysis. For each product, the algorithm counts the number of occurrences in the LP solutions and records it. This algorithm then indicates to the user, at Step 450, how the product weathered the gross margin changes. Some products remain viable contributors under a wide range in gross margin (price) adjustments. The algorithm denotes any product a "Contributor" if it maintains its place in the sales-mix for more than 90 percent of the combinations of gross margin (price) variations. Conversely, the algorithm denotes products with fewer than 10 percent occurrences as "Detractors." Any product with more than 10 percent but fewer than 90 percent occurrences receives no special designation. The algorithm records these results for subsequent use in the solution module. PORTFOLIO MANAGEMENT MODULE
The algorithm (FIG. 5, Step 548) examines each stock price increase and decrease in the Sensitivity Analysis that affects the potential contribution of each stock to the portfolio. Note that prices could exist such that all stocks contribute to the portfolio mix. If so, the algorithm notifies the user of this situation. It might indicate a lack of upside or downside stock price sensitivity. The count of stock selections for a portfolio has no relationship to the count of price changes of interest from a Sensitivity Analysis except that the maximum possible count of price changes will be limited to less than twice the stock count. Therefore, the algorithm must examine the Sensitivity Analysis and determine if a price change, and what price change, would possibly change a stock' s inclusion in the portfolio.
The algorithm' s examination consists of determining if the upside or downside price increase exceeds $0.01 but does not exceed $10000. This range excludes situations where unrealistically large price increases must occur to include the stock in the portfolio. The algorithm records the count of upside price increases and adjusts the current stock prices for the increases. It performs the same for downside prices. Next the algorithm takes the adjusted price for each stock, substitutes it into the linear program, solves the LP and records the solution of which stocks the LP includes in the portfolio. It repeats this process for all the possible stock price changes indicated by the Sensitivity Analysis. For each stock, this algorithm counts the number of occurrences in the LP solutions and records it . An algorithm in the final block of the portfolio management module uses this result in its analysis. (For 50 iterations of the possible 28 price adjustments of a reference 13 stock portfolio would require the solution of 120,000 to 126,000 equations.) At Step 550, the algorithm compares the prices required for stock contribution to the portfolio from step 548 and the probabilities of price occurrence from the statistical analysis. At Step 552, the algorithm stores these prices and probabilities. STOCK SHORTING MODULE For further explanation of the Stock Shorting algorithms to count and adjust stock prices, review the paragraph above and substitute "Stkshortr" for "Stkanlzr" and add 100 to the reference numeral for the respective step. In the case for selecting stocks to short, the algorithms compare the probabilities of low prices with price drops required to make a shorted stock a "contributor" to the shorting portfolio. ALGORITHMS ADJUSTING THE SIMPLE LINEAR PROGRAM (LP) MARKETING SOLUTION MODULE An algorithm (FIG. 4, Step 452) adjusts the simple LP on Sheet2 by utilizing the implications of the
Sensitivity Analysis to create additional equations to apply as additional constraints. (This algorithm does not affect the solution on Sheet3. Sheet3 continues with the simple LP solution to offer a comparison between a simple type of LP solution and the more sophisticated one created by the inclusion of expert analysis contained on Sheet2. ) The algorithm examines whether a product acts as a contributor or detractor to the business. The algorithm takes the median demand forecast and adds the large demand variability determined by the statistical analysis.
For a selection of .95 during the statistical analysis, the adjusted demand equates to a customer service level of 95 percent (or meeting customer demand 95 percent of the time) . The algorithm copies, from the Sheetl statistical analysis results, the median demand forecast and subtracts the small variability. For a selection of .68 during the statistical analysis, the adjusted demand equates to a customer service level of 32 percent (or meeting customer demand 32 percent of the time) . It then uses these revised demand forecasts as additional constraints. The 95 percent service level dictates the upper bound on the "Change Variable" equations. The 32 percent service level dictates the lower bound on the "Change Variable" equations. The algorithm adds two control equations to the LP solution technique bounding the solution to the "Change Variables" to within the upper and lower bounds. The algorithm (Step 454) then commands the LP solution technique to re-solve the LP. The solution consists of "Change Variables" for quantities to sell of products where:
"Contributor" products meet customer service levels between 50 and 95 percent but usually closer to 95 percent;
"Detractor" products meet customer service levels between 32 and 95 percent but usually less than 50 percent and
Other products meet customer service levels between 32 and 95 percent but usually closer to some value greater than 50 percent. By supporting "contributor" products more than "detractor" products, the Total Business Profitability usually improves by about 5 to 20 percent, with 10 percent improvement being the most common result. The algorithm (Step 456) displays the improved results next to the base results on Sheet2 of spreadsheet, "Remake" in locations "F3" through "G6" . The comparison includes Gross Margin, Resource Utilization and Total
Profitability comparisons. The algorithm (Step 458) places a "4" in location ΛΕ3" of Sheet2 of "Remake." PORTFOLIO MANAGEMENT MODULE Before adjusting the simple LP layout and equations, the algorithm (FIG. 5, Step 554) challenges the user to use any basis or methodology to make investments in any of the selected stocks . After the selection the algorithm calculates and records the results of the challenge at positions "F4" through "F7" of Sheet2 of "Stkanlzr." Results include: the Reward / Risk ratio, the portfolio variability, the maximum loss and the maximum cash gain. Alternatively, if the user declines to make any investment decisions, the algorithm simply distributes investments equally among all the stocks. This represents the simplest method for investment allocation. The algorithm records the results of the challenge at positions "F4" through "F7" of Sheet2 of "Stkanlzr."
Next, the algorithm queries the user concerning any existing investments in the selected stocks. If the user has stocks, the algorithm requests and records information concerning the purchase price and the amount invested in the stock.
Finally, the algorithm adds to and adjusts the simple LP' s equations. Initially the algorithm queries the user concerning a preference for the maximum fraction a stock can constitute in the portfolio. The algorithm limits the maximum fraction to between (0.15) and (0.36) . Proper portfolio diversification requires a portfolio of at least 5 to 7 stocks. With 7 stocks, each stock's fraction would equal (1/7) one-seventh or a fraction of approximately (0.15) . This constitutes the reason for the lower fraction. An upper limit of (0.36) permits a user to approximately double the limit for stocks with particularly strong investment potential. The selection of (0.36) provides a number with large factorial possibility but approximately double the recommended limit. (The numbers 2, 3, 4, 6, 9, and 12 can divide 36. This helps numerical processing of the solution module.) The algorithm suggests the minimum limit (0.15) to the user. After the user selects a fraction in the permitted range, the algorithm confirms that selection with the user. The algorithm then creates constraints for each stock with the format : constraint = [ (user selected fraction) minus (optimum investment in individual stock divided by total investment)] and installs the constraints on the spreadsheet. The number of additional constraint equations equals the number of stocks.
After placing equations constraining the stock selection to a maximum fraction on Sheet2 and Sheet3, the algorithm continues but only focuses on Sheet2. The subsequent algorithm adjustments to the solution on Sheet2 do not affect the solution on Sheet3. Sheet3 continues with the simple LP model to offer a comparison between the simple LP model and the more sophisticated one exhibited on Sheet2 and created by the inclusion of expert analysis. Next, the algorithm creates constraint equations for each stock by utilizing:
Reward/ Risk Ratios, the implications of the Sensitivity Analysis, relationships between stock prices and probabilities of occurrence and if any, the user's current holding and investment in stocks. This algorithm contains decision rules introduced without a developed theoretical basis. Conventional wisdom holds that the open-market bidding system for stocks operates efficiently. In the efficient market, pertinent information affecting stock outlook disperses throughout the market quickly, with the consequence of stock price re-appraisal, regardless of the vested interests of past pricing. The efficient market theory conflicts with anecdotal information concerning human behavior of: denial, distortion and reticence to accept bad news and stock trading losses . This algorithm builds on the anecdotal information and assumes that historical prices have a substantial impact on current and future prices.
The algorithm creates equations for stock prices within a trading range and equations for stock prices piercing established trading ranges. For stock prices occurring within established trading ranges, the algorithm creates equations with the format of: (calculated upside fraction limit for an individual stock) minus (optimum investment in individual stock divided by total investment) , if the user hold no current investment in the stock or
(optimum investment in individual stock divided by total investment) minus [ (weight factor) times (current individual stock investment divided by total investment) ] , if the user holds a current investment in the stock. If the user hold no current investment in the stock, the calculated upside fraction limits reflects the following considerations:
Reward / Risk ratio (R/R ratio) for a stock For a (R/R ratio) less than 1, the fraction limit automatically equals zero
For a (R/R ratio) >= than 1 but < 3, a fraction limit equals (0.16 divided by the square root of the number of stocks in the user's selection) multiplied by a weight factor,
For a (R/R ratio) >= 3 but < 5, a fraction limit equals (0.325 divided by the square root of the number of stocks in the user's selection) multiplied by a weight factor,
For a (R/R ratio) >= 5, a fraction limit equals (0.65 divided by the square root of the number of stocks in the user's selection) multiplied by a weight factor, the consistency of the stock' s selection during the LP Sensitivity Analysis and the probabilities of occurrence: if the stock occurs in less than two Sensitivity Analysis portfolios, the weight factor equals the square root of the number of occurrences plus (two minus the count of ranges beyond the upper and lower variability of 95 percent) ; for example, if the stock occurred in one portfolio but needed a purchase with less than a 5 percent probability of occurrence and a selling price with less than a 5 percent probability of occurrence the weight factor would equal ( 11/2 + 0 = 1 ) one ; if the stock occurs in two or more Sensitivity Analysis portfolios, the weight factor equals two plus (two minus the count of ranges beyond the upper and lower variability of 95 percent) , for example, if the stock occurred in 5 portfolios and did not require a sell price or purchase price with less than a 5 percent probability of occurrence the weight factor would equal (2 + 2 = 4) four.
Depending upon: a count of stocks (between 5 and 25) ; the range of reward/ risk ratios; stock portfolio consistency and price probabilities, the above algorithm can formulate, for each stock, any one of 420 different equations. If the LP solution technique handled more than 25 stocks, the algorithm might require adjustment to account for a larger number of stocks. The trigger factors of (0.16), (0.325) and (0.65) reflect an expert evaluation of the contributory nature of stocks with various (R/R) ratios and the requirement to broaden a portfolio to minimize risk. Proper portfolio diversification requires a portfolio of at least 6 to 7 stocks although it is recommended to investigate a minimum of 15 stocks. With 7 stocks, each stock on average represents less than (1/7) or (0.15) of the portfolio. Increasing the weighting of stock according to a Reward/Risk ratio series of a base value, double base value and finally doubled double base value and considering that the solution model does permit a minimum number of stocks as low as 5, the series (0.16) , (0.325) and (0.65) provides a series of trigger factors consistent with the numbers of stocks subject to analysis and the greatest weight factor (4) . At the extreme of a portfolio with as few as 5 stocks and a stock with a high Reward/ Risk ratio and a weight factor of 4, the upper bound fraction would permit a stock fraction of (0.52) [= (0.65/5) X (4)] in the portfolio. However, this upper limit represents a non-binding constraint. The algorithm's previous constraints
(determined from user's fraction limit) confines the maximum stock fraction to (0.36) and makes larger fractions (such as 0.52) irrelevant.
If the user holds a current investment in the stock, the calculated weight factors reflect the consideration of the Reward / Risk ratio (R/R ratio) for a stock:
For a (R/R ratio) less than 1, the weight factor automatically equals zero For a (R/R ratio) >= than 1 but < 3, the weight factor equals (0.5 times the current stock investment divided by total investment available)
For a (R/R ratio) >= 3, the weight factor equals (one times the current stock investment divided by total investment available) .
These weight factors permit a reasonable range for consideration of whether the stock represents an optimal investment, as well as its role as an existing investment. The difference between the (R/R) trigger of 3 for an existing investment and a 5 for a stock not yet purchased, takes into account the taxes and selling transaction costs associated with the existing investment. Once in a portfolio, the (R/R) hurdle (3) , to keep the stock, should fall below the (R/R) hurdle (5) required for addition to the portfolio. If the (R/R) hurdle falls below (3) , the weight factor falls to one- half (0.5) , in consideration of possibly selling some of the existing investment. A (R/R) ratio below 3 represents an investment with a potential return of less than $3 for every dollar at risk of loss. This represents a barely attractive investment. The weight factor automatically equals zero if the (R/R) ratio falls below one dollar ($1) . In this situation, the user faces a greater risk of losing money than making money from the stock investment . It seems hard to imagine any rational user would prefer a money losing investment to a money making one. For stock prices occurring above or below established trading ranges, the algorithm creates different equations that supersede the trading range equations. These additional equations reflect research on portfolio management results derived from the three previous blocks of analysis. The algorithm creates equations with three different formats : lock the stock out of the portfolio, lock the stock into the portfolio or discard consideration of the stock due to confusing stock price distribution results.
The algorithm prioritizes the non-trading range equations over trading range equations. Non-trading range equations have two different objectives, depending upon whether the stock price exceeds the upper or lower trading range prices.
STOCK LOCK-OUT- If the price falls below the lower trading range boundary the algorithm develops an equation to remove consideration of the stock and forcing the stock investment to zero. STOCK-IN Conversely, if the stock price exceeds the upper bound for a trading range, the algorithm creates an equation requiring a minimum stock investment. These equations reflect the shape of price distribution for the stock as well as its variability relative to the Dow Jones Industrial average. Their genesis reflects considerable research on the use of the solution modules and fine-tuning of the expert analysis portion of the algorithm in the determination of key coefficients. Discussion of the DECLINE equations follows below. Without providing algebraic derivations, the following discussion encompasses the qualitative reasoning for the existence of the equations. To simplify the discussion and algebraic presentation, the discussion assumes the user selects the upper (0.95) and lower (0.68) set points for stock variability. Although mathematic logic would follow the path of broad to narrow constraints, simplified algorithm- programming dictates proceeding from narrow to broad constraint equations. For discussion purposes, variable names and symbols include: Current Stock Price = CP; Forecasted Stock Price = FP; Upper Forecasted Stock Price = UP; Lower Forecasted Stock Price = Plow; Minimum Variability of Stock price (at the lower (0.68) set point = Vmin; Maximum Variability of Stock Price at the upper (0.95) set point = Vmax; Ratio of the Variability of the Stock Price to the Variability of the Dow Jones Industrial Average = Rreiative Note in the Portfolio Management module: UP = FP + Vmin and Plow = FP - Vmax LOCK-OUT EQUATIONS adhere to the mathematical and logic formula:If CP/ (FP+ (Vmin X (1 - Relative )) =< 0.9508 force the stock from the portfolio. To achieve the lock out in the algorithm requires several programming equations. One equation evaluates the inequality to determine if the lock out applies. If it applies, a second equation sets an algorithm variable, zszrato, equal to zero. The algorithm then enters another equation setting the allowed percentage of stock in the portfolio equal to zszrato, minus the ratio of the amount invested in the stock relative to available invested funds. When the algorithm enters the final linear programming allocation of stock investment funds, any equation for a stock with zszrato equaling zero must set the stock investment to zero, to meet the linear programming constraints prohibiting negative investment values.
LOCK-IN EQUATIONS adhere to the mathematical and logic formula: When CP/FP >= 1.0256 then include the stock in the portfolio. A price increase representing a differential between the current and forecasted prices of 2.56 percent within a one-week period indicates a major shift for a stock's price distribution. Furthermore, it indicates a substantial probability for a period of increasing prices. Consequently, the algorithm formulates several equations to force the stock into the portfolio.
First, the algorithm evaluates the equation to determine if the logic statement applies. If it applies, a second equation evaluates a value for an algorithm variable, zdzrato. zdzrato equals the maximum permitted ratio of any stock within the available invested funds as selected by the user multiplied by the ratio derived by 0.8 divided by the square root of the number of stocks considered for the portfolio. The value of 0.8 represents a compromise value sanctioning portfolios with 6 to 30 stocks. If the number of stocks considered for a portfolio were to exceed more than 30, the value 0.8 would have to increase. A third equation determines if the value of zdzrato exceeds 0.05 and if so, sets zdzrato equal to 0.05. The algorithm then produces another equation equaling the ratio of the amount invested in the stock relative to available invested funds minus zdzrato. The reason for limiting the ratio of the stock to the total portfolio to 0.05 represents a minimum lower bound of 5 percent of the portfolio. When the algorithm enters the final linear programming allocation of stock investment funds, any equation for a stock with zdzrato equaling 0.05 must set the stock investment ratio to some value greater than or equal to 0.05 to meet the linear programming constraints prohibiting negative investment values. DISCARD EQUATIONS supersede all other algorithm equations. Portfolio research with the portfolio management module indicates that, under certain conditions, the algorithm fails to adequately manage a stock portfolio. Consequently DISCARD EQUATIONS evaluate the conditions for unsatisfactory portfolio management performance and test stock price distributions for these conditions. When the conditions apply, the algorithm eliminates the stock from portfolio consideration. Philosophically, this represents a decision to accept a lost opportunity rather than potentially make a losing investment. In some instances the algorithm's DISCARD EQUATION will eliminate LOCK-IN or LOCKOUT equations. Consequently, the LOCK-IN and LOCKOUT equations include the DISCARD EQUATION test as a condition for application. DISCARD EQUATIONS adhere to the mathematical and logic formula: If (Vmax )X ((1.14 X Rrelative ) - 1) >= (0.14 ) X (FP + (2 X V1111n )) and if (0.25) X ( (FP + 2 X Vmin ) ) >= (VmajX ((1.25 X Relative ) ~ D then remove the stock from consideration. This logic statement covers a wide range of stock prices, but only relates to the shape of the stock price distribution not current stock prices. Generally, price distributions of a short broad shape fall within this constraint and necessitate stock exclusion. The algorithm achieves the exclusion with several equations . The first equation makes the logic test. If the stock's price distribution characteristics fall within the logic test, the algorithm proceeds with additional equations equivalent to the equations in the LOCKOUT Equations.
Initially, the algorithm sets zszrato equal to zero. The algorithm then enters another equation setting the allowed percentage of stock in the portfolio equal to zszrato minus the ratio of the amount invested in the stock relative to available invested funds. When the algorithm enters the final linear programming allocation of stock investment funds, any equation for a stock with zszrato equaling zero must set the stock investment to zero to meet the linear programming constraints prohibiting negative investment values. The algorithm, at Step 556, performs the final LP analysis utilizing all the constraint equations and then enters "4" at position ΛΕ3" on Sheet2 of "Stkanlzr" . STOCK SHORTING MODULE Before adjusting the simple LP layout and equations, the algorithm (FIG. 6, Step 654) challenges the user to use any basis or methodology to short sales in any of the selected stocks. For further explanation of the Stock Shorting algorithms to weigh shorting amounts within a trading, range, review the paragraph above and substitute "Stkshortr" for "Stkanlzr" and add 100 to the step values.
For stock prices occurring above or below established trading ranges, the algorithm creates different equations that supersede the trading range equations. These additional equations reflect research on portfolio management results derived from the three previous blocks of analysis. The algorithm creates equations with three different formats: lock the stock out of short sale, lock the stock into the short sale or discard consideration of the stock due to confusing stock price distribution results. The algorithm prioritizes the non-trading range equations over trading range equations. These equations represent the logical antithesis to the LOCK-IN and LOCKOUT equations for the Portfolio Management Module. As the stock-shorting module provides risk reduction to the portfolio management module stocks conforming to a LOCKOUT of stock purchases should appear as logical candidates for short sales. Conversely, stocks conforming to purchase LOCK-IN conditions should find no purpose for short sales. Note the stock-shorting module evaluates the reasonableness of prices for good investments and determines shorting opportunities for over-priced stocks. This differs from the classic notion of short selling of "poor" investments.
For discussion purposes, variable names and symbols include: Current Stock Price = CP; Forecasted Stock Price = FP; Upper Forecasted Stock Price = UP ; Lower Forecasted Stock Price = Plow ; Minimum Variability of Stock price (at the lower (0.68) set point = Vmin ; Maximum Variability of Stock Price at the upper (0.95) set point = Vraax . Ratio of the Variability of the Stock Price to the Variability of the Dow Jones Industrial Average = Rreiative Note in the Stock Shorting Module: UP = FP + Vraax and Plow = FP - Vmax Although Plow remains the same in the two modules UP differs between them. The difference approximates a Poisson distribution of stock prices in stock purchases but a normal distribution of stock prices for short sales. LOCK-OUT EQUATIONS adhere to the mathematical and logic formula:If CP/ (FP+ (Vmax X (1 - Rrelative )) >= 1.0288 force the stock from the portfolio. (Notice the similarity to the LOCK-OUT EQUATIONS in the portfolio management module except for a greater than rather than a less than logic comparison. ) Similarly to the portfolio management module, this algorithm also requires several programming equations to achieve the lockout. One equation evaluates the inequality to determine if the lock out applies. If it applies, a second equation sets an algorithm variable, zszrato, equal to zero. The algorithm then enters another equation setting the allowed percentage of stock in the portfolio equal to zszrato minus the ratio of the amount invested in the stock relative to available invested funds. When the algorithm enters the final linear programming allocation of stock investment funds, any equation for a stock with zszrato equaling zero must set the stock investment to zero to meet the linear programming constraints prohibiting negative investment values. LOCK-IN EQUATIONS adhere to the mathematical and logic formula: When CP/FP <= 0.9132 then include the stock in short sales. (Notice the similarity to the LOCK-IN EQUATIONS in the portfolio management module except for a less than rather than a greater than logic comparison.) A price decrease representing a differential between the current and forecasted prices of 8.68 percent within a one-week period indicates a major shift for a stock's price distribution. Similar to the portfolio management module this algorithm also requires several programming equations to achieve the lock-in. Consequently, the algorithm formulates several equations to force the stock into the shorting group. First, the algorithm evaluates the equation to determine if the logic statement applies. If it applies, a second equation evaluates a value for an algorithm variable, zdzrato. zdzrato equals the maximum permitted ratio of any stock within the available invested funds as selected by the user multiplied by the ratio derived by 0.8 divided by the square root of the number of stocks considered for shorting. The value of 0.8 represents a compromise value sanctioning shorting activity with 6 to 30 stocks. If the number of stocks considered for shorting were to exceed more than 30, the value 0.8 would have to increase.
A third equation determines if the value of zdzrato exceeds 0.05 and if so, sets zdzrato equal to 0.05. The algorithm then produces another equation equaling the ratio of the amount invested in the stock relative to available invested funds minus zdzrato. The reason for limiting the ratio of the shorted stock to the total of shorted funds to 0.05 represents a minimum lower bound of 5 percent of the portfolio. When the algorithm enters the final linear programming allocation of stock shorting funds, any equation for a stock with zdzrato equaling 0.05 must set the stock-shorting ratio to some value greater than or equal to 0.05 to meet the linear programming constraints prohibiting negative funds . DISCARD EQUATIONS supersede all other algorithm equations. Portfolio research with the stock-shorting module indicates that under certain conditions the algorithm fails to adequately manage stock shorting activity. Consequently DISCARD EQUATIONS evaluate the conditions for unsatisfactory stock shorting performance and test stock price distributions for these conditions. When the conditions apply, the algorithm eliminates the stock from consideration for shorting. Philosophically, this represents a decision to accept a lost opportunity rather than potentially make a losing short sale. In some instances the algorithm's DISCARD EQUATION will eliminate LOCK-IN or LOCKOUT equations. Consequently, the LOCK-IN and LOCKOUT equations include the DISCARD EQUATION test as a condition for application. DISCARD EQUATIONS adhere to the mathematical and logic formula: If (Vraax ) X ((1.15 X Rrelative ) - 1) >= (0.15 ) X (FP + Vraax ) and if (0.25) X (FP + Vmax ) >= (Vmax )X ((1.25 X Rreiatαve ) - 1) then remove the stock from consideration. This logic statement covers a wide range of stock prices but only relates to the shape of the stock price distribution not current stock prices. (Note that these discard equations differ from the Portfolio Management Module equations with slight differences in coefficients and (Vmax) substituting for (2 X Vmin) in parts of the equation. These differences occur because of using (UP = FP + Vmin) for the upper forecast in the Portfolio Management Module to approximate a Poisson Distribution.) Generally, price distributions of a short broad shape fall within this constraint and necessitate stock exclusion.
The algorithm achieves the exclusion with several equations. The first equation makes the logic test. If the stock's price distribution characteristics fall within the logic test, the algorithm proceeds with additional equations equivalent to the equations in the LOCKOUT Equations. Initially, the algorithm sets zszrato equal to zero. The algorithm then enters another equation setting the allowed percentage of stock in shorting funds equal to zszrato minus the ratio of the amount risked in the stock shorting relative to available shorting funds . When the algorithm enters the final linear programming allocation of stock shorting funds, any equation for a stock shorting with zszrato equaling zero must set the stock short to zero to meet the linear programming constraints prohibiting negative funds .
SOLUTION BLOCK 4 (FIG. 4, Steps 458 to End,
FIG. 5, Steps 558 to 564 and
FIG. 6, Steps 658 to 664)
Block 4 contains 2 distinct algorithms:
1) An algorithm reads the state of completion of the module at the initiation of the processing Block, marks the completion of the Block and counts variables;
2) An algorithm queries the user concerning the user's preference: on the marketing module for adjustment of the Marketing/Sales budget and, upon completing the budget, creating a Product Development and or Ingredient Substitution analysis spreadsheet; creating a permanent spreadsheet with adjustable investment and risk factors for the portfolio management module or stock shorting module . ALGORITHMS WHICH DETERMINE THE MODULE'S STATE OF COMPLETION AND COUNT INPUTS MARKETING MODULE
Step 458 examines "E3" on the spreadsheet, "Remake" , to locate a "4" in order to begin processing at Step 460. If Step 458 finds a value of "5" in "E3" it proceeds to Step 470 and exits the algorithm. At the conclusion of processing, Step 460 places a value of "4" in λΕ3" if the user declines to adjust the Marketing/ Sales Budget. If the user adjusts the Marketing/ Sales budget Step 468 places a value of "5" in UE3" and exits (Step 470) . To determine the correct number of products, inventoried ingredients and non-inventoried ingredients an algorithm (FIG. 4. Step 458) searches for the term, "Products" on Sheet2 of the spreadsheet "Remake." The algorithm after determining the location of the term "Products" adds one more row and then searches by- counting columns to the right to find the bold italic term nSubtoot2." The count to "Subtoot2"indicates the total number of ingredients plus one (1) , including the two potential substitutes plus the marketing budget. After locating nSubtoot2" the algorithm returns to the column containing "Products" and searches by counting columns to the right and adding the number of columns containing plain italic characters. This total indicates the count of non-inventoried ingredients. The count of inventoried ingredients equals the total minus the non- inventoried count minus the two substitutes minus one (1) to allow for the marketing/ sales budget. PORTFOLIO MANAGEMENT MODULE
To determine the state of completion of the module an algorithm (FIG. 5. Step 558) examines position "E3" on the spreadsheet, "Stkanlzr" . If it finds the value "4" at "E3" it queries the user if the user wishes to record the portfolio management results to a spreadsheet. If the user answers "Yes" the algorithm proceeds to Step 560. After a "Yes" answer, "Stkanlzr" seeks the spreadsheet "Foliomgr" . If "Stkanlzr" misses "Foliomgr" it asks the user to locate "Foliomgr" and then shuts down. If "Stkanlzr" locates "Foliomgr" at step 560 it saves its results to a spreadsheet called, "Foliomgr(date) " where date equates to the month and date of the analysis. After transferring results to "Foliomgr(date) ", the algorithm at step 562 deletes the results from "Foliomgr" and closes it. At step 564 the algorithm deletes results from "Stkanlzr" and closes it. If the user answers "No" at step 558, "Stkanlzr" proceeds to Step 570 and exits the module. Another algorithm at this step, (FIG. 5. Step 558) calculates the number of stocks. The algorithm searches for the term, "Stock Symbol" on the module spreadsheet. After finding the term it adds 4 rows and begins character recognition of the fifth row and each succeeding row and counting the rows until it detects an empty row.
STOCK SHORTING MODULE
To determine the state of completion of the module an algorithm (FIG. 6, Step 658) examines position ΛΛE3" on the spreadsheet, "Stkshortr". If it finds the value "4" at "E3" it queries the user if the user wishes to record the portfolio management results to a spreadsheet. If the user answers "Yes" the algorithm proceeds to Step 660. After a "Yes" answer, "Stkshortr" seeks the spreadsheet "Foliomgr" . If "Stkshortr" misses "Foliomgr," it asks the user to locate "Foliomgr" and then shuts down. If "Stkshortr" locates "Foliomgr" it saves its results to a spreadsheet called, "Shrtfolio(date) " where date equates to the month and date of the analysis. After transferring results to "Shrtfolio (date) ", the algorithm at step 662 deletes the results from "Foliomgr" and closes it. At step 664 the algorithm deletes results from "Stkshortr" and closes it.
If the user answers "No" at step 658 "Stkshortr" proceeds to Step 670 and exits the module.
Another algorithm at this step, (FIG. 6, Step 658) calculates the number of stocks . The algorithm searches for the term, "Stock Symbol" on the module spreadsheet. After finding the term, it adds 4 rows, begins character recognition of the fifth row and each succeeding row, and counts the rows until it detects an empty row. ALGORITHMS DETERMINING IF AND/OR HOW THE USER WISHES TO COMPLETE THE SOLUTION MODULE MARKETING MODULE
An algorithm (Step 458) asks if the user wants to adjust the Marketing/Sales budget. If the user declines, the algorithm ends the program at step 470. If the user decides to adjust the marketing budget, the next algorithm (Step 460) focuses on the "detractor" products. Initially, the algorithm attempts to reduce the marketing/sales budget . The algorithm subtracts the "opportunity cost" determined by the LP Sensitivity Analysis from the user's original per-unit marketing/sales budget. The algorithm presents the calculation result to the user, along with an upper limit of the amount of the original budget. A subtraction greater than the original budget would create a negative number. The user can select (Step 462) any number between the suggested number and the lower bound. (If the "opportunity cost" exceeds the original budget, the user must raise the product's price to make it a "contributor.") The algorithm performs the calculation and presents the results for each detractor product. After reviewing the budget adjustments, the algorithm (Step 464) then commands the LP solution technique to re-solve the LP. Assuming the user accepted the algorithm's recommendations for budget adjustments, the user is likely to achieve a dramatic Gross Margin improvement. Basically, the entire reduction in the marketing/sales budget flows directly to profitability. Furthermore, why should the business expend resources to sell something that ultimately decreases profitability? The algorithm (468) places a "5" in position "E3. " It queries the user concerning the desire to create a Product Development or Ingredient Substitution analysis spreadsheet. If the user indicates yes, the block searches for spreadsheet "PD&ISnlzr." If the user has opened "PD&ISnlzr", the marketing solution Module, "Remake" creates a specific marketing model on "PD&ISnlzr" that permits the user to: determine whether a new product development (Sheet2) will mesh economically with the existing business products or whether a potential new ingredient (Sheet3) will economically contribute to the existing mix of ingredients. This marketing model utilizes the equations formulated in Step 462 of Module "Remake" for adjusting the marketing budget that supports the existing product mix.
Sheetl contains the product sales and statistical analysis data. At the conclusion of the creation of the new product-marketing model on "PD&ISnlzr", "Remake" erases itself. If the user forgot to open spreadsheet, "PD&ISnlzr", "Remake" sends an error message that it did not find "PD&ISnlzr" . The user has an opportunity to open "PD&ISnlzr", have "Remake" locate a value of "5" at "E3", and create the new product marketing model. Alternatively, the user can decline the Product Development or Ingredient Analysis until a later time. PORTFOLIO MANAGEMENT MODULE If the algorithm (Step 558) locates a "4" at position "E3" of "Stkanlzr," it queries the user if the user wishes a permanent copy of the portfolio analysis. If the user answers "Yes" , the algorithm goes to Step 560 and copies the results to a spreadsheet called "Foliomgr(date) ." (See explanation in paragraphs above.) In Step 562, the algorithm erases itself and, in Step
564, closes "Stkanlzr." Sheetl contains the stock sales data and the statistical analysis results. Sheet2 contains the complete solution including the expert analysis constraint, equations. Sheet3 contains a less sophisticated LP solution to compare with the Sheet2 results .
STOCK SHORTING MODULE
If the algorithm (Step 658) locates a "4" at position "E3" of "Stkshortr" it queries the user if the user wishes a permanent copy of the stock shorting analysis. If the user answers "Yes", copies the results to a spreadsheet called "Foliomgr (date) . " (See explanation in paragraphs above.) Sheetl contains the stock sales data and the statistical analysis results. Sheet2 contains the complete solution including the expert analysis constraint equations. Sheet3 contains a less sophisticated LP solution to compare with the Sheet2 results. FLOWCHART DESCRIPTION OF SHEET2 OF PD&ISnlzr(Date) FOR PRODUCT DEVELOPMENT (FIG. 7A)
PD&ISnlzr operates as a template for the Remake template spreadsheet . When the user requests a product development and or input substitution analysis, Remake calls PD&ISnlzr and transfers the spreadsheet data and algorithms to Sheet2 of PD&ISnlzr for a product development and Sheet3 for input substitution investigations. Remake then saves PD&ISnlzr as a finished spreadsheet called PD&ISnlzr(Date) . Date indicates the month and day of PD&ISnlzr(Date) ' s completion. Remake then closes PD&ISnlzr and itself so that Remake and PD&ISnlzr always remain empty templates for subsequent problem analysis. PD&ISnlzr contains the same algorithms described for PD&ISnlzr(Date) . Step 702a involves the selection and opening of
Sheet2 of PD&ISnlzr(Date) . On opening PD&ISnlzr(Date) inserts the current date at position Cell (4,4) on (Sheet2) . This reference date provides a time marker to evaluate the timeliness and relevance upon subsequent openings to the date of spreadsheet completion recorded at Cells (3,4) . Timeliness depends upon the time period of sales data: monthly, weekly or daily. If the date of the re-opening of a completed spreadsheet occurs within: 7 days for daily sales data, two weeks for weekly data or two months for monthly data, the algorithm continues to step 710a. If the re-opening date relative to the spreadsheet completion date exceeds : 8 days for daily sales data, two weeks for weekly data or two months for monthly data, the algorithm alerts the user at step 706a of the un-timeliness of the spreadsheet results, and asks, at Step 708a, whether the user wishes to continue using the out-dated results. If the user answers NO, the algorithm proceeds to step 746a, the algorithm exit. If the user answers YES, the algorithm proceeds to step 710a and asks the user's name, assuming the user differs from the user of "Remake" . The algorithm proceeds to step 712a to read: Cells (1,1) for the number of products, Cells (2,1) for the number of inventoried ingredients, Cells (3,1) for the number of non- inventoried ingredients and Cells (6,1) for the type of product comparison, if any, the user attempted. Step 714a examines the spreadsheet to determine the existence of parameters in a spreadsheet storage area four lines below the spreadsheet layout. If stored parameters exist, the algorithm proceeds to step 722a. If no stored parameters exist, .the algorithm at step 716a asks the user if the user wishes to hear instructions. If the user answers YES, the algorithm at step 718a calls a text-to-voice program.
Whatever the user's answer at step 718a, the algorithm proceeds to step 720a and moves the forecasted sales demand, ratios of ingredients to products and new product parameters to a storage area. At step 722a, the user has a choice between a general or specific product (or product market segment) comparisons. If the user chooses a general comparison (the algorithm recommends against this choice as a poor basis for comparison) , the algorithm enters a 50 in Cells (6,1) and advances to step 730a. Step 730a determines the average product (or product market segment) price, average demand and average marketing/ sales budget for all existing products (or product market segments) . If the user selects a specific product (or product market segment) comparison as recommended by the algorithm at step 722a the algorithm moves to step 724a and asks the user to select a product for substitution. Step 724a asks if the user requires recapitulation of the status of each product as a contributor, non-contributor or neutral element in business profitability. If the user desires a recapitulation, the algorithm reviews the status of each product and inquires which product the user wishes to choose for product development substitution. If the user reviews all existing products without selecting one, step 726a moves to step 728a and asks the user whether to review the existing products again. If the user selects NO, the algorithm advances to step 746a, the algorithm exit . If the user answers YES to step 728a, the algorithm returns to step 724a. Assuming upon return to step 726a, the user selects an existing product for substitution, and the algorithm at step 732a enters the sequence number of the product in the product list into Cells (6,1) and then obtains the selected product's (or product market segment) price, demand and marketing/sales budget and places the values in the appropriate cell locations for the new product . The algorithm advances to step 734a and requests the revised ratios of input requirements per unit of new product (or new product market segment) output.
After the user provides the revised ratios, the algorithm, at Step 736, compares the new ratios with the other ratios to determine if the user created a degeneracy problem between the new product and any of the existing products. If the user's proposed ingredient to product ratios creates a degeneracy problem, the algorithm advances to step 738a notifies the user of the degeneracy problem and asks if the user wishes to alter the new product ratios. If the user declines to adjust the ratios, the algorithm at step 738a notifies the user of the non-feasibility of problem solution and advances to step 746a, the algorithm exit. If the user agrees to revise the ratios, the algorithm returns to step 734a to repeat the ratio input and subsequent degeneracy checking steps . Assuming elimination or non-occurrence of degeneracy, step 740a calls the linear program and step 742a solves the linear program for the proposed new product with the existing product parameters (price, demand and marketing/ sales budget) . Step 744a of the algorithm compares the new product solution to the existing product solution. The comparison includes several factors: Total Business Gross Margin, specific replaced product gross margin, and displacements of demand for non-contributor, contributor and neutral products.
Depending upon the comparison results, the algorithm indicates to the user whether the proposed product development improves or retards business performance and whether the proposal warrants further investigation. For example, if the proposed new product increases overall business gross margin, the gross margin for the substituted product and displaces demand for the substituted product as well as other non- contributor products, the algorithm notifies the user of the favorable results and recommends further investigation of the proposed product development. Conversely, if the proposed new product decreases Total Business Gross Margin and reduces product gross margin, as well as displacing demand for contributor products while not displacing demand for non-contributor products, the algorithm notifies the user of the objectionable results and recommends discontinuation of investigating the new product. After notifying the user of the new product results, step 746a exits the algorithm. FLOWCHART DESCRIPTION FOR SHEET2 of PD&ISnlzr (Date) FOR PRODUCT DEVELOPMENT (FIG. 7B) : SYSTEM RESTORE
After the user selects and opens Sheet2 of PD&ISnlzr (Date) , pressing the Restart Button of Step 702b initiates the step 748b recovery of spreadsheet parameters. Step 748b includes reading Cells (2,1) for the number of inventoried ingredients, Cells (3,1) for the number of non-inventoried ingredients and Cells (6,1) for the type of product comparison, if any, the user previously attempted. If Cells (6,1) remains empty, the user has not attempted a product development and step 750b on finding an empty cell proceeds to step 760b and exits the program.' If step 750b locates a number in Cells (6,1) , the algorithm proceeds to step 752b to determine if any activity occurred at the new product ratio spreadsheet storage area. If no activity occurred the algorithm proceeds to step 760b and exits the program. If step 752b detects activity at the ratio storage area, the algorithm proceeds to step 754b and moves the original data concerning the existing products (or product marketing segments) to the appropriate cells on the solution spreadsheet . The algorithm advances to step 756b and checks Cells (6,1) to determine if the user sought a general (cell entry of 50) or specific product (cell entry of existing product sequence number) comparison. If step 756b detects a general comparison, the algorithm proceeds to step 760b and exits the program. If step 756b detects a specific comparison, the algorithm at step 758b restores the marketing/sales budget of the new product to the value of the comparison existing product's budget and then proceeds to step 760b and exits the program.
FLOWCHART DESCRIPTION FOR SHEET3 of PD&ISnlzr (Date) FOR INPUT SUBSTITUTION
FIG. 7c, Step 702c involves the selection and opening Sheet3 of PD&ISnlzr (Date) . On opening
PD&ISnlzr(Date) at step 704c inserts the current date at position Cell (4,4) on (Sheet3) . This reference date provides a time marker to evaluate the timeliness and relevance upon subsequent openings to the date of spreadsheet completion recorded at Cells (3,4) . If the user opens Sheet3 of PD&ISnlzr (Date) on the same day as the Date in Cells (3,4) the algorithm assumes the user's name matches the name recorded during the creation of PD&ISnlzr(Date) . Otherwise, the algorithm at step 706c asks for the user's name. Then, the algorithm investigates the timeliness of Sheet3. Timeliness depends upon the time period of sales data: monthly, weekly or daily. If the date of the re-opening of a completed spreadsheet occurs within: 7 days for daily sales data, two weeks for weekly data or two months for monthly data, the algorithm continues to step 712c. If the re-opening date relative to the spreadsheet completion date exceeds: 8 days for daily sales data, two weeks for weekly data or two months for monthly data, the algorithm alerts the user at step 708c of the un-timeliness of the spreadsheet results and proceeds to step 710c to ask if the user wishes whether to continue using the out-dated results. If the user answers no the algorithm proceeds to step 754c, the algorithm exit.
If the user answers yes, the algorithm proceeds to step 712c to read: CeIIs(I7I) for the number of products, Cells(2,l), for the number of inventoried ingredients, Cells(3,l) , for the number of non- inventoried ingredients, Cells (6,1), for the number of the substituted ingredient, if one, and Cells (7,1) for the number of ingredient substitutions (either 1 or 2) , if any, the user attempted. Step 714c examines the spreadsheet to determine the existence of parameters in a spreadsheet storage area. If stored parameters exist, the algorithm proceeds to step 722c. If no stored parameters exist, the algorithm at step 716c asks the user if the user wishes to hear instructions. If the user answers YES, the algorithm at step 718c calls a text to voice program. Whatever the user's answer at step 716c, the algorithm proceeds to step 720c and moves the forecasted sales demand, ratios of ingredients to products and ingredient prices to a storage area four lines below the spreadsheet layout. At step 722c, the user has a choice between a new ingredient or, if previously selected, an existing ingredient for substitution investigation. If the user has previously selected an ingredient for a substitution comparison the algorithm queries whether to continue with the selected ingredient. If the user decides to continue with the existing ingredient, the algorithm proceeds to step 730c and enters the ingredient number (counted from left to right starting with one of the ingredient list in the spreadsheet layout) in Cells (6,1) . If the user has not previously selected an ingredient or wishes to select another ingredient for substitution for that ingredient, Step 724c reviews the existing ingredients for the user's selection. The algorithm at step 726c checks if the user selected an ingredient, and if so proceeds to step 730c and enters the ingredient number in Cells (6,1) . If the user failed to select an ingredient, step 726c advances to step 728c and asks the user about reviewing the ingredients again. If the user desires a re-capitulation, the algorithm returns to step 724c. If the user reviews all ingredients without selecting one or asking for another review, step 728c advances to step 754c, the algorithm exit. Assuming the user selects an ingredient for substitution investigation, the algorithm at step 732c asks the user if ingredient substitution will require one or two substitute ingredients. Depending upon the user's choice, the algorithm enters a one or two in Cells (7,1) to remember the number of substitutes. The algorithm advances to step 734c and asks: first, for the user to enter revised ratios of the amount of the existing ingredient required per unit of product (or product market segment) output and then checks the entered ratios and second, the ratio (s) of the amount of the new ingredient (s) required per unit of product (or product market segment) output.
The algorithm advances to step 736c and asks the user to check the entered ratios. If upon checking, the user discovers an incorrect ratio entry, the user can correct the ratio. The algorithm advances to step 738c and asks the user for the price (s) for the new ingredient (s) . Step 738c also assumes that the inventory of new substitute (s) equals the amount available of the existing ingredient and enters that amount in the appropriate cell for the substitute inventory. The algorithm advances to step 740c to determine if product (or product market segment) prices exceed the cost of product re-formulation with the new ingredient (s) . If the product prices do not exceed the revised input costs, the algorithm advances to step 742c and cautions the user about the cost discrepancy and asks if the user wishes to increase the product price to cover input cost. If the user declines to adjust the product (or product market segment) price, the algorithm advances to step 754c, the algorithm exit. If the user accepts a product price adjustment the algorithm makes the adjustment advances through step 740c to step 744c. If the product prices at step 740c cover input costs or the user accepts a price adjustment to cover input costs, the algorithm advances to step 744c and checks if degeneracy occurs from the ingredient changes. If degeneracy does occur the algorithm advances to step 746c and asks the user if the user wishes to redo the ratios of substitute ingredient amounts per unit of product (or product market segment) output. If the user answers YES, the algorithm returns to step 734c; if NO, the algorithm advances to step 754c, the algorithm exit. Assuming no degeneracy, the algorithm calls the linear program at step 748c and solves the linear program at step 750c.
Step 752c evaluates the new ingredient solution. The evaluation includes several factors: Total Business Gross Margin, and displacements of existing ingredients in products (or product market segments) and displacement of contributor products (or product market segments) from the marketing mix. Depending upon the comparison results, the algorithm indicates to the user whether the proposed ingredient substitution improves or retards business performance and whether the proposal warrants further investigation. For example, if the proposed new ingredient increases overall business gross margin, displaces usage for the substituted ingredient without affecting contributor products' role in the marketing mix, the algorithm notifies the user of the favorable results and recommends further investigation of the proposed ingredient substitution. Conversely, if the proposed new ingredient decreases Total Business Gross Margin, marginally replaces usage of the substituted ingredient and displaces contributor products' role in the marketing mix, the algorithm notifies the user of the objectionable results and recommends discontinuation of investigating the new ingredient . After notifying the user of the new ingredient results, step 754c exits the algorithm. FLOWCHART DESCRIPTION FOR SHEET3 of PD&ISnlzr (Date) FOR INPUT SUBSTITUTION FIG. 7D; SYSTEM RESTORE
After the user selects and opens Sheet3 of PD&ISnlzr (Date) , pressing the Restart Button of Step 702d initiates the step 748d recovery of spreadsheet parameters. Step 748d includes reading Cells (2,1) for the number of inventoried ingredients, Cells (3,1) for the number of non-inventoried ingredients and Cells (6,1) for the type of input substitution comparison, if any, the user previously attempted. If Cells (6,1) remains empty, the user has not attempted an ingredient substitution and step 75Od on finding an empty cell proceeds to step 76Od and exits the program. If step 75Od locates a number in Cells (6,1) , the algorithm proceeds to step 754d and moves the original data concerning the existing products (or product marketing segments) to the appropriate cells on the solution spreadsheet, resets the ratio data for Subtootl and Subtoot2 to zero and any adjusted product prices to their original values . The algorithm advances to step 76Od and exits the program.
FLOWCHART DESCRIPTION FOR SHEET2 of FOLIOMGR(Date) FOR PORTFOLIO MANAGEMENT OF STOCKS & SHEET2 of SHRTFOLIO (Date) ; (FIG. 8)
Foliomgr operates as a template for both the Stkanlzr and Stkshortr template spreadsheets. Whether the user conducts a portfolio management or stock shorting analysis, the user opens Foliomgr. When the user reaches completion of either the Stkanlzr or Stkshortr templates each template calls Foliomgr and transfers algorithms, stock price data to Sheet1 and spreadsheet layout to Sheet2 of Foliomgr. Stkanlzr then saves Foliomgr as a finished spreadsheet called Foliomgr(Date) . Date indicates the month and day of Foliomgr(Date) ' s completion. Stkanlzr then closes Foliomgr and itself so that Stkanlzr and Foliomgr always remain empty templates for subsequent problem analysis. The Foliomgr algorithm description applies to Foliomgr(Date) .
Stkshortr saves Foliomgr as a finished spreadsheet called Shrtfolio (Date) . Date indicates the month and day of Shrtfolio(Date) ' s completion. Stkshortr then closes Foliomgr and itself so that Stkshortr and Foliomgr always remain empty templates for subsequent problem analysis. Foliomgr contains the same algorithm described for Shrtfolio (Date) and Foliomgr (Date) .
Step 802 involves selection of either a Shrtfolio (Date) or Foliomgr(Date) and initiation of an investigation of : changing total capital investment, tolerance for loss and or dividend requirements. Upon initiation, the algorithm proceeds to step 804 to place the date of the analysis in Cells (4,4) and compare the current date with the date of the stock shorting or portfolio management analysis recorded in Cells (3,4) . The algorithm proceeds to step 806 and if the time difference exceeds more than one day, the algorithm asks the user for a user name. For a time difference of less than one day, the algorithm assumes the user' s name to be the name of the Foliomgr(Date) or Shrtfolio (Date) user recorded in Cells(3,3) and proceeds to step 808.
If the time difference exceeds 7 days, the algorithm proceeds to step 810 and notifies the user of the outdated nature of the analysis and whether the user wishes to continue. If the user declines to continue, the algorithm proceeds to step 856 and ends. If the user wishes to continue, the algorithm proceeds to step 812. For a time difference at step 808 of less than 7 days, the algorithm assumes timeliness of the analysis and proceeds to step 812. Step 812 recovers the number of stocks recorded on either Foliomgr(Date) 's or
Shrtfolio(Date) ' s CeIIs(I, 1) of Sheet2. The algorithm proceeds to step 816 and asks the user if the user wishes to hear subsequent instructions as well as read them. If the user answers YES, the algorithm at step 818 calls a text-to-voice program. The algorithm then proceeds to step 820 and asks if the user wishes to change the amount of investment capital used in the original analysis and if so what amount to use. The algorithm moves to step 822 and asks the user to confirm or adjust the entry made at step 820. The algorithm at step 824 asks the user whether the user's tolerance for potential investment losses has changed from the tolerance expressed in the original analysis and if so to adjust the amount. At step 826, the algorithm asks the user to confirm or change the entry made at step 824.
At step 828, the algorithm checks whether the spreadsheet data indicate that any stocks pay dividends . If no stocks pay dividends, the algorithm proceeds to step 848. If some stocks pay dividends, the algorithm proceeds to step 830 to determine the type of analysis the user desires. If the algorithm detects the words "Optimum Short Mix" the algorithm determines the user desires a review of a stock shorting analysis and warns the user to anticipate the possibility of paying stock dividends on borrowed stock shares. If the algorithm detects the words "Optimum Portfolio," the algorithm determines the user desires a review of a stock portfolio analysis and warns the user that the selection of a minimum dividend payment can place a restrictive constraint on the portfolio analysis. If the algorithm detects a stock shorting analysis, it proceeds to step 836 to ask the user about the maximum dividend repayment the user will consider. The algorithm suggests a maximum percentage based on a value determined by: (the total dividends paid by all dividend paying stocks) multiplied by (the total number of stocks) and (divided by the sum of all stock prices) . The user may elect to increase or decrease the algorithm recommended value. At step 838, the algorithm asks the user to confirm or adjust the entry made at step 836.
If the algorithm at step 830 detects the words "Optimum Portfolio," the algorithm determines the user desires a review of a stock portfolio and proceeds to step 832 and asks about the minimum dividend re-payment required by the user. The algorithm suggests a minimum percentage based on a value determined by: (the total dividends paid by all dividend paying stocks) multiplied by (the total number of stocks) and (divided by the sum of all stock prices) . The user may elect to increase or decrease the algorithm recommended value. At step 834, the algorithm asks the user to confirm or adjust the entry made at step 832.
Whether the user provides a minimum dividend requirement for a portfolio management problem or a maximum dividend re-payment for a stock shorting problem, the algorithm proceeds to step 848 and calls the linear program. At step 850, the algorithm solves the linear program. The algorithm advances to step 852 and, for each stock, counts the number of times the historic stock price data falls outside the range of the calculated price distribution for the stock. If the calculated stock price distribution accurately reflects stock price data indicating a trading range pattern, no more than 5 percent of the 36 weeks of price data (0.05 X 36 = 1.8 or 2 above in addition to 2 below) should fall above or below the 95-percentile range of the calculated values. Therefore, more than 4 instances of stock prices outside the 95-percentile range of calculated prices indicates the calculated distribution may poorly reflect a stock with prices observing trading range behavior. Step changes in price occur for a stock facing re-evaluations in value with either value increases or value decreases. Based on stock price research, some stocks can enter periods with more volatile trading ranges. Therefore, the algorithm contains a threshold value of 9 prices outside the upper or lower 95- percentile range. If the algorithm counts more than 9 instances of prices on the outside or downside of the 95-percentile limit for a stock included in the optimum solution mix, the algorithm at step 854 issues a warning to the user that a statistical problem may exist. This cautionary note should instigate the user to more closely investigate the stock price history to determine: Did the user enter incorrect price data for the stock?
Did the stock's price change with an unusually large increase or decrease during certain periods?
If unusual price changes occurred, can the user understand and justify the changes and adjust the price history to reflect the reasons for the stock valuation? If the user understands that unusual stock prices stem either from incorrect data or price re-evaluations, the user should correct the price data and re-do the entire solution procedure. Otherwise, the user will have erroneous solution results based on incorrect or inappropriate stock price data. After warning the user of possible statistical problems, the algorithm ends at step 856. If no potential statistical problem exists, the algorithm proceeds from step 852 to step 856 and ends.
As people familiar with the linear programming and management arts will appreciate, the problem-solving methods described above are usable in a variety of contexts, so the invention is not limited to the specific examples described. Rather, the scope of the invention is defined by the following claims. FORECAST MODEL including Base, Trend, One and Two Period Terms This version requires 36 periods of data and is specified in 37 Periods starting with t=0.
The following Matrices provide input data to the Forecasting Analysis, q represents a dummy variable for the period (t) (as a matrix entry), inO &-yi provide data matrices. The additional entries forini and in2 account for fall-back entries for 95 percentile and 68 percentile limits on uncertainties.
q :=
Figure imgf000105_0001
Figure imgf000106_0004
Figure imgf000106_0001
The variable inθ(t) for the forecast development occurs in the last column; except where y1 permits an additional 24 periods of data analysis. See pages 7 and 8.
The 6 Terms for the forecasting equation include:
Base Trend Period Fluctuations
Figure imgf000106_0002
Figure imgf000106_0005
Figure imgf000106_0003
2
Figure imgf000107_0002
Figure imgf000107_0001
Figure imgf000108_0001
Develop the Data Vector, g, which consists of 6 terms used in the forecast equation multiplying the histonc data by the 6 separate forecast elements The dummy vanablej substitutes fort
Figure imgf000109_0001
Calculation Results for the Specific Data from x1 ory1 become,
Figure imgf000109_0002
77?e following Matnx contains the inversion terms necessary to complete the inversion analysis for a model with 36 data elements Covaπant Matnx 36 penod basis
124341 - 00522 - 01948 00522 - 009041 00522
- 00522 000282 001053 - 000282 000489 - 000282
- 01948 001053 059485 - 001053 001824 - 001053
H = 00522 - 000282 - 001053 055838 - 000489 000282
- 009041 000489 001824 - 000489 056402 - 000489 00522 - 000282 - 001053 000282 - 000489 055838
Multiply the g vector by the inversion matnx elements to determine the coefficients for the Terms in the BASE FORECAST
0,5 -g b6
3, 5 -g b6
Figure imgf000109_0003
The FOLLOWING EQUATIONS represent the Forecasting tool that predicts Based on a statistical analysis of historical infoπnatbn including Base, Trend and Period Terms. The coefficients, a1 through a6 for the Terms come from the equations above.
Figure imgf000110_0004
Amplitude of One Period Term
(AmAj and
Amplitude of Two Period Term
Figure imgf000110_0005
(AmS) defined as:
Figure imgf000110_0001
The BASE FORECAST
Equation FOR(t), is
Figure imgf000110_0006
To estimate the MAD (Mean Average Deviation) of the forecast use the absolute value of the Difference from actual data divided by the number of observations (data points).
Figure imgf000110_0002
From the BASE FORECAST, determine the INTERMEDIATE FORECAST by applying the correction terms, hθ, M, h2, h3, h4, h5 and h6 to the forecast equation coefficients a1, a2, a3, a4,aδ and a6. Initialize the smoothing factor for: 9 periods, N=9; for 18 periods N=18 ; for 36 periods N -36.
Figure imgf000110_0003
Initialize the h's and the a's
Figure imgf000110_0007
Figure imgf000110_0008
The equations for the variable coefficients, a's, that account for error propagation follow.
Figure imgf000110_0009
The INTERMEDIATE FORECAST equation which accounts for error propagation by including the variable coefficients a's follows'
Figure imgf000111_0003
The absolute error represents the difference between the actual and the forecast values
Figure imgf000111_0001
The revised Mean Averag
Deviation equals MD.
Figure imgf000111_0004
Check the SIGNIFICANCE of the BASE FORECAST
COEFFICIENTS.
Noise Variance defined as~
Figure imgf000111_0005
Trend Variance (TV) defined as:
Figure imgf000111_0006
One Period Variance (AV) defined as:
Figure imgf000111_0002
lZSatd VarianCe (SV)
Figure imgf000111_0007
Significance Test @ 99% confidence level with Standard Distribution of Trend (2.35) and Chi Square Test (2 degrees of freedom for 4.605)
Figure imgf000111_0008
Figure imgf000111_0009
Then for TREND a2o = - 5.48 plus/minus AC = 5.239
Then for One Period AmA = 53.962 plus/minus AVS = 74.916
Then for Two Period AmS = 91.355 plus/minus SVS = 73.908
The FINAL FORECASTEQUATION, OUW, accounts for the developed a's as well as the coefficients and a smoothing ot the two other forecasts. Define a new time period, p, to account for program peculiarities concerning subscript specifications. The total data set must include 24 periods to meet programming restrictions i.e. the use of the original two forecasts which require 24 periods of input data to meet the 24 period statistical analysis. The final 11 forecast periods (36 to 47) may be used at the forecaster's discretion. NOTE the first period of the forecast, outO, is a start-up value, the second period corresponds to period 24 of the original data series.
Figure imgf000112_0001
Figure imgf000112_0002
Figure imgf000112_0003
Figure imgf000112_0004
Figure imgf000113_0001
Figure imgf000114_0001
Compare the forecast results for BASE FORECAST, FOR(t) and INTERMEDIATE FORECAST, Fort , with the actual input data inθt .
Figure imgf000114_0002
10 20
JO This graph compares the FINAL FORECAST projected 23 months into the future from a delayed origin, so that the last 12 months of data represent the first 12 months of the future. In other words the graph displays pure projections with actual results. The last section of the y1 plot indicates the end of actual data. Demand does not drop to zero, it does not exist. NOTE: the time t in this graph defines period 24 at period 1, t=13 on this graph corresponds to period 36 and t=24 corresponds to period 47. The correlation coefficient between forecast and data equals (.148) due to a dramatic drop in demand.
Figure imgf000115_0001
11
Figure imgf000116_0001
Figure imgf000116_0002
10 20
12 Yl :=
Figure imgf000117_0006
Figure imgf000117_0001
h := qnorm( in 1 , 0 , l ) C =0148 h = 1.645 zit := qnorm(in2,o,l )
Figure imgf000117_0002
Figure imgf000117_0004
Figure imgf000117_0003
Figure imgf000117_0005
OUt5 =2.02-103
13 Define the Frequency, (co 211/12), for the number of observations per year, (12) Define the variable, (β), related to the total number of observations. Define the number (N) for the time frame of the forecast, (number of months) The following calculations define the Matrix operations to determine the coefficients for the smoothing constants used for the forecasting error calculation
Based on the number of observations/year
Figure imgf000118_0003
tion, this integer changes throughout the program
The following Matrix represents the first sub-Matrix in the program, the upper right hand corner for the base and trend components, no periodic functions
Figure imgf000118_0004
The following equations represent the elements for the second set of sub-matrices; consisting of periodic functions dependent on q
SOXF(I ) = - ! 899
TSOF( 1 ) = 0 258
COXF( I ) = 0.569
Figure imgf000118_0005
Figure imgf000118_0001
The following equations represent the elements for the second set of sub-matrices; consisting of periodic functions dependent on q.
Figure imgf000118_0006
Figure imgf000118_0002
14 Establish additional values of periodic functions for several values of q in order to formulate the remaining sub-matrix entries into the SUPER MATRIX
q :=0 SOXF(O) = 0 COXF(O) = 54.446 q:=3 SOXF(3) =-0.509 COXF(3) = 0.509 q :=- ] SOXF(- I)=I .899 C0XF(- 1 ) = 0.569 q:=4 SOXF(4) =-0.294 C0XF( 4 ) = 0506
Define new functions to simplify entries into the SUPER MATRIX
CULLT :=(-.5)-(COXF(2)- COXF(O)) CULLT = 26.964 CULLB :=(-.5)-(SOXF(2)- SOXF(O)) CULLB = 0.441
CULRT :=(-.5)-(SOXF(2) + SOXF(O)) CULRT= 0.441 CULRB :=(.5)(COXF(2) + COXF(0)) CULRB = 27.482
CLLLT :=(- .5)(COXF(3) - COXF( 1 )) CLLLT = 0.03 CLLLB : = (-.5)(SOXF(3)- SOXF(I)) CLLLB =-0.695
CLLRT := (- .5 ) •( S0XF( 3 ) + SOXF( 1 ) ) CLLRT = 1.204 CLLRB : = (.5)-(COXF(3)-f-COXF(l)) CLLRB = 0.539
CURLT :=(-.5)(COXF(3)-COXF(- I)) CURLT = 0.03 CURLB :=(-.5)-(SOXF(3)-SOXF(- 1)) CURLB= 1.204
CURRT :=(-.5)-(SOXF(3)+SOXF(- I)) CURRT = -0.695 CURRB :=(.5)(COXF(3) + COXF(-1)) CURRB = 0.539
CLRLT := (- .5 ) •( COXF( 4 ) - C0XF( 0 ) ) CLRLT = 26.97 CLRLB : -(-.5)(SOXF(4)- SOXF(O)) CLRLB =0.147
CLRRT :=-(.5)-(SOXF(4) + SOXF(O)) CLRRT= 0.147 CLRRB:= (.5)(COXF(4) + COXF(0)) CLRRB = 27.476
To construct the SUPER MATRIX, substitute the elements from the equations.
1 (β) -SOXF(I) COXF(I) -SOXF(2) COXF(2)
1-β (P-I) (β) β (i + β) TSOF(I) -TCOF(I) TSOF(2) -TCOF(2)
F:= (β-i) (i-β)
-SOXF(I) TSOF(I) CULLT CULRT CURLT CURRT
COXF(I) -TCOF(I) CULLB CULRB CURLB CURRB
-SOXF(2) TSOF(2) CLLLT CLLRT CLRLT CLRRT
COXF(2) -TCOF(2) CLLLB CLLRB CLRLB CLRRB
The calculation of the SUPER MATRIX, F, and its inverse F-I follow.
54.446 2.9110 1.899 0.569 0.882 0.519
2.9M03 3.14-105 0.258 3.718 0.032 0.999 p = 1.899 0.258 26.964 0.441 0.03 -0.695
0.569 3.718 0.441 27.482 1.204 0.539
0.882 0.032 0.03 1.204 26.97 0.147
0.519 0.999 -0.695 0.539 0.147 27.476
15 Calculation ofSmothingn^Constants continued
Use the IhTVERS SUPER MATRIX to determine the smoothing factors through
Figure imgf000120_0005
Figure imgf000120_0003
Figure imgf000120_0001
The following h's result from Assumptions of N=I 8, P= 982 and ω = 0 5236 from 12 monthly data points
The following z-transforms determine the correct equations for b in lieu of the parameter β
Figure imgf000120_0004
Figure imgf000120_0002
16 This section attempts to fit a linear growth curve to the input data, then examines if the fit correlates well with the original data. This method requires no scaling treatment.
Insert Data at this section
1 := 0..36
0 o 1 2 2 4 3 6 4 8 5 10 6 12 7 14
16
9 18 10 20 11 22 12 24 13 26 14 28 15 14 inl := .95 16 32 17 34 in2 := .68 vx := 18 inO := 36 19 38 20 42 21 42 22 44 23 46 24 48 25 52
17
Figure imgf000122_0004
Determine the Slope and Intercept for a Linear curve fitted to the input data
Figure imgf000122_0003
regress( vx , inO , 1 ) outO := slope ( vx, inO) outO = 2.021
Figure imgf000122_0005
intercept vx , inO )=- 0.654 outl := intercept ( vx, inO)
outl =-0.654 Determine how well the curve fits the input data to prepare a forecast. j :=0,1..36
Figure imgf000122_0001
Figure imgf000122_0002
corr(inO,y) =0.992 out2 := corr(inO,y)
18
Figure imgf000123_0001
ow make predictions for 3 future periods.
Figure imgf000123_0003
Figure imgf000123_0002
19 Perform an error analysis and formulate uncertainty factors per t = O..36 input for customer service levels.
Figure imgf000124_0004
Figure imgf000124_0001
Figure imgf000124_0002
mad =-34863
sigma2 =
Figure imgf000124_0003
sigma2 = 233.333
Figure imgf000124_0005
sigma = 15.275 tv:= qnorm(inl ,o,i) out6 := sigma-tv
0Ut6 =25126 zit := qnorm( in2 , 0 , 1 )
out7 := sigma-zit
OUt7 =7144
20

Claims

WHAT IS CLAIMED IS:
1. A method of generating, using a computer, advice to a human being for evaluation of results of linear programming (LP) calculations, comprising the steps of: first, evaluating a basis solution of Linear Programming (LP) equations representing a base list of items analyzed, using a sensitivity analysis associated with this basis solution to determine opportunity costs such that the basis solution alters to reflect input changes from opportunity costs; second, storing a predetermined number of values which, if included during calculation of said basis solution, would have resulted in a solution differing, by a predetermined percentage, from said basis solution; third, selecting certain of said values as input variables for a further round of linear program calculations, performing said LP calculations, and storing a revised solution; fourth, evaluating results of a plurality of revised solutions, each representing a different plurality of starting items, and determining which revised solutions are better, in terms of predefined criteria; and fifth, identifying, to the human being, those items whose inclusion in the calculations lead to such better revised solutions.
2. A method of acquiring data, for later analysis, concerning a plurality of products to be offered by a company, comprising the steps of: prompting a user to select (208) between entering data manually and entering data from a pre-existing data file and, upon selection of the former, prompting said user (250) for a product name and estimated product demand for each of said plurality of products;
Figure imgf000126_0001
entry of data from a pre-existing data file, obtaining (218) from said user, an identification of said pre-existing data file, confirming (220) that the identified data file contains product demand numbers for a predetermined plurality of time periods, confirming (224) that the identified data file contains data for a number of products falling within a predetermined acceptable product number range, transferring (234) said product names, product demand numbers and time periods into an input data file adapted for input into linear programming equations of a linear programming computer program, and saving (240) said input data file for subsequent use.
3. A method of formulating, from input data concerning a plurality of products, ratios for use in linear programming analysis of business problems, comprising the steps of locating a pre-existing data file containing data concerning said plurality of products; confirming (344) that said data file contains data spanning a predetermined number of time periods, for each product among said plurality of products; confirming (346) that said data file contains data concerning at least a predetermined number of products; locating (348) or creating (350) a respective ingredient data file representing ingredients needed to produce each product; checking (354) each ingredient data file to confirm that a count of ingredients in said ingredient data file is within a predetermined acceptable range; and generating (358) a ratio data file representing relative costs of said product ingredients, with respect to total cost of each product .
Figure imgf000127_0001
melfcifrtrd fop- optimizing product offerings of a company for maximum profitability, based upon data representing product ingredient costs and product market segment demand, comprising the steps of: acquiring (408) product sales history data by product market segment; checking (412) said acquired data for consistency; performing (416) statistical analysis on said acquired data in order to derive variability values; forecasting (418) demand for each of a plurality of products, including use of said variability values to define a demand range for each product; defining (420) linear programming variables for execution of a linear optimization program, including a set of initial demand constraints; executing (436) said linear optimization program and thereby determining price and gross margin sensitivity for each product market segment; iterating (448) execution of said linear optimization program for upper and lower prices for each product market segment; revising (452) said demand constraints and re- executing said linear program using said revised demand constraints, and outputting recommended product prices and marketing budgets for each of said products, based upon results of said linear program.
5. A method of selecting and managing a portfolio consisting of an initial cash fund and a plurality of stocks, comprising the steps of selecting (504) a plurality of stocks which are candidates for inclusion in said portfolio; acquiring (508) historical time-series data on each of said candidate stocks and at least one index of stocks listed on a securities exchange; calculating (518) a variability parameter for each of said stocks and each index; sorting (520) said stocks by variability, relative to each index,- PdaϊMila€iEcfit (ΪSϋfβ) an expected risk/reward ratio for each stock; generating (530) , for each stock, a plurality of linear program (LP) equations and constraint values used in said LP equations; executing (534) said linear program equations a first time, to thereby calculate a respective price sensitivity of each stock and a respective probability that taking a position in said stock will be profitable; repeating (548) execution of said linear program equations, substituting, for each stock price, price values which are higher and lower by a predetermined factor; adjusting (554) said constraint values and executing (556) said linear program equations again with said adjusted constraint values; and recording (560) results of said calculations as a spreadsheet .
6. The method of claim 5, wherein said at least one index of stocks includes a first exchange index representing Dow Jones Average (DJA) stocks and a second exchange index representing Standard & Poor's 500 stocks
(SPY) .
7. The method of claim 6, further comprising inputting data concerning an index representing NASDAQ 100 stocks (QQQ) .
8. The method of claim 5, wherein said plurality of linear program equations comprise, for each stock: an equation representing total reward from appreciation, an equation representing total dividends; an equation representing total potential loss; an equation representing stock price variability; and and an objective function equation which is a sum of said total appreciation and total dividends equations. KiOϋfoe ^mEtHd&€ωf claim 5, further comprising performing a sensitivity analysis for each stock, namely simulating a hypothetical stock price increase and a hypothetical stock price decrease, determining whether the stock remains among those stocks having the most favorable risk/reward ratios for stock transactions within a trading range, and outputting a result of said determination to a user, to permit said user to decide whether to retain said stock in the portfolio.
10. A computer-assisted method of managing a portfolio of a plurality of investment positions, comprising the steps of: inputting data (802-836) concerning a current date, an amount to be invested, a tolerance for loss, and any dividend constraint on desired results from said portfolio; executing (850) linear program equations to calculate a price distribution, with respect to a plurality of successive dates, for each investment position; determining (852) how often, over said plurality of dates, a price of each investment position falls outside respective upper and lower limits of a trading range; and for each one of said investment positions whose price falls outside said trading range more often than a predetermined criterion, issuing (854) a warning with respect to said range-exceeding investment position.
11. A method of managing a portfolio of short positions in stocks, comprising the steps of selecting (604) a plurality of stocks which are candidates for inclusion in said portfolio; acquiring (608) historical time-series data on each of said candidate stocks and at least one index of stocks listed on a securities exchange; calculating (618) a variability parameter for each of said stocks and each index; Mlf;tiiil9'»»ϊ(-gSiϊ(3..)t.irp.id stocks by variability, relative to each index; calculating (628) an expected risk/reward ratio for each stock; generating (630) , for each stock, a plurality of linear program (LP) equations and constraint values used in said LP equations; executing (634) said linear program equations a first time, to thereby calculate a respective price sensitivity of each stock and a respective probability that taking a position in said stock will be profitable; repeating (648) execution of said linear program equations, substituting, for each stock price, price values which are higher and lower by a predetermined factor; adjusting (654) said constraint values and executing (656) said linear program equations again with said adjusted constraint values; and recording (660) results of said calculations as a spreadsheet .
12. The method of claim 4, further comprising performing a product development/input substitution analysis by the steps of creating (702) a spreadsheet, associated with an initial date, representing a plurality of products, a plurality of inventoried product ingredients, a plurality of non-inventoried product ingredients, and a type of product comparison desired to be performed; defining, for each product, values representing how much of said ingredients are required to make each unit of product; periodically inputting (708) sales data for each of said plurality of products until data, representing a desired time interval, are complete; calculating (730) in a linear program, for each product, average product price, average demand and average marketing budget over said desired time interval, results of said calculations collectively constituting an initial Product Solution; and iyiCΦEΗ.ti&fp,«iiξ&]f!i each product, an indication of whether said product contributes to business profitability, detracts from business profitability, or has a neutral effect on business profitability.
13. The method of claim 12, further comprising the steps of selecting one of said plurality of products in a previous product list for replacement on said product list; calculating a revised Product Solution; and comparing (744) said revised Product Solution with said initial Product Solution in terms of business gross margin, replaced product gross margin and displacements of demand for contributor, non-contributor and neutral ones of said products.
14. The method of claim 12, further comprising the step of testing (736) whether presence of a new product on said list creates a degeneracy with respect to any product already on said list.
15. The method according to claim 12, further comprising the steps of selecting (702b) a spreadsheet of existing product data; reading (748b, 750b) predetermined cells of said spreadsheet to determine whether said data document an attempt at product development and, if not, terminating program execution; testing (756b) whether said attempt at product development was a specific product comparison and, if so, restoring (758b) marketing budget values in said spreadsheet to values which were present, prior to said specific product comparison. JOSSOStCHeI"ifeMtifoffi!according to claim 12, further comprising the steps of selecting (702c) a spreadsheet of existing product data,- reading (712c, 714c) predetermined cells of said spreadsheet to determine whether said data document an attempt at product substitution and, if not, prompting a user to select a product for substitution; prompting (732) a user to input data concerning amounts of previous ingredients and amounts of new ingredients required per unit of product; comparing (740c) product price with aggregate cost of ingredients according to a proposed reformulation and, if unprofitable, prompting (742c) said user to increase said product price or modify said proposed reformulation.
17. The method according to claim 16, further comprising the step of checking whether said proposed reformulation creates a degeneracy.
18. The method according to claim 17, further comprising performing linear program calculations (750c) to determine how the proposed reformulation affects business profitability.
19. A method of generating, using a computer, advice to a human being for evaluation of results of linear programming (LP) calculations, comprising the steps of: first, evaluating a basis solution of Linear Programming (LP) equations representing a base list of items analyzed, using a sensitivity analysis associated with this basis solution to determine trigger price adjustments such that the basis solution alters to reflect input changes from trigger price adjustments; second, storing a predetermined number of values which, if included during calculation of said basis solution, would have resulted in a solution differing, by a predetermined percentage, from said basis solution; third, selecting certain of said values as input variables for a further round of linear program calculations, performing said LP calculations, and storing a revised solution; fourth, evaluating results of a plurality of revised solutions, each representing a different plurality of starting items, and determining which revised solutions are better, in terms of predefined criteria; and fifth, identifying, to the human being, those items whose inclusion in the calculations lead to such better revised solutions.
PCT/US2005/042416 2004-11-24 2005-11-21 A method of simplifying & automating enhanced optimized decision making under uncertainty WO2006058054A2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/996,926 2004-11-24
US10/996,926 US20060117303A1 (en) 2004-11-24 2004-11-24 Method of simplifying & automating enhanced optimized decision making under uncertainty

Publications (2)

Publication Number Publication Date
WO2006058054A2 true WO2006058054A2 (en) 2006-06-01
WO2006058054A3 WO2006058054A3 (en) 2009-04-02

Family

ID=36498489

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2005/042416 WO2006058054A2 (en) 2004-11-24 2005-11-21 A method of simplifying & automating enhanced optimized decision making under uncertainty

Country Status (2)

Country Link
US (1) US20060117303A1 (en)
WO (1) WO2006058054A2 (en)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7945472B2 (en) * 2005-02-11 2011-05-17 Optimum Outcomes, Llc Business management tool
US20060241984A1 (en) * 2005-04-22 2006-10-26 Emmanuelle Godin Fare and yield driven travel services optimizer for a budget based request system
US7739165B2 (en) * 2005-06-03 2010-06-15 Jpmorgan Chase Bank Method and system for issuing convertible preferred securities
US7590590B2 (en) * 2005-06-28 2009-09-15 Jpmorgan Chase Bank Method and system for exchangeable bundled option and no-principal debt securities
US20070011065A1 (en) * 2005-07-07 2007-01-11 Santosh Sreenivasan Method and system for pre-funding with merger call flexibility
US20070011068A1 (en) * 2005-07-08 2007-01-11 Zajkowski Jeffrey J Method and system for net share settlement of a convertible bond
US7689592B2 (en) * 2005-08-11 2010-03-30 International Business Machines Corporation Method, system and program product for determining objective function coefficients of a mathematical programming model
US7895114B2 (en) * 2005-10-28 2011-02-22 Jpmorgan Chase Bank, N.A. Method and system for repatriating earnings
US7571151B1 (en) * 2005-12-15 2009-08-04 Gneiss Software, Inc. Data analysis tool for analyzing data stored in multiple text files
US20070162403A1 (en) * 2006-01-06 2007-07-12 Rothschild James A System and method for financing with a convertible repurchase agreement
US20070174210A1 (en) * 2006-01-23 2007-07-26 Zajkowski Jeffrey J Method and system for issuing convertible preferred securities
US20070244785A1 (en) * 2006-04-15 2007-10-18 Williams Anthony B Method and system for analysis of a stock portfolio
US8346586B1 (en) * 2006-05-02 2013-01-01 Macroeconomic Advisers, LLC Systems and methods for estimating employment levels
US7822669B2 (en) * 2006-11-16 2010-10-26 General Electric Capital Corporation System and software for providing recommendations to optimize a portfolio of items
US8117057B2 (en) * 2006-11-30 2012-02-14 The Kroger Co. Retail production guide for store-prepared food items
US8650067B1 (en) * 2007-02-27 2014-02-11 Richard Moss Systems, methods, and computer program product for real estate value analysis
EP2126696A4 (en) * 2007-03-19 2011-08-31 Marketshare Partners Llc Automatically prescribing total budget for marketing and sales resources and allocation across spending categories
US20080255973A1 (en) * 2007-04-10 2008-10-16 Robert El Wade Sales transaction analysis tool and associated method of use
US8676629B2 (en) * 2007-04-13 2014-03-18 Sas Institute Inc. System and methods for retail forecasting utilizing forecast model accuracy criteria, holdout samples and marketing mix data
EP2227742A4 (en) * 2007-11-29 2012-01-11 Marketshare Partners Llc Automatically prescribing total budget for marketing and sales resources and allocation across spending categories
JP5366171B2 (en) * 2008-01-29 2013-12-11 インターナショナル・ビジネス・マシーンズ・コーポレーション Multi-objective optimization apparatus, method for adjusting weighting, and weighting adjustment program
US20090216597A1 (en) * 2008-02-21 2009-08-27 David Cavander Automatically prescribing total budget for marketing and sales resources and allocation across spending categories
US8411085B2 (en) * 2008-06-27 2013-04-02 Microsoft Corporation Constructing view compositions for domain-specific environments
US8117145B2 (en) 2008-06-27 2012-02-14 Microsoft Corporation Analytical model solver framework
US20090322739A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Visual Interactions with Analytics
US8620635B2 (en) 2008-06-27 2013-12-31 Microsoft Corporation Composition of analytics models
US8255192B2 (en) * 2008-06-27 2012-08-28 Microsoft Corporation Analytical map models
WO2010016839A1 (en) * 2008-08-06 2010-02-11 Marketshare Partners Llc Automatically prescribing total budget for marketing and sales resources and allocation across spending categories
US20100036700A1 (en) * 2008-08-06 2010-02-11 Marketshare Partners Llc Automatically prescribing total budget for marketing and sales resources and allocation across spending categories
WO2010017502A1 (en) * 2008-08-08 2010-02-11 Marketshare Partners Llc Automatically prescribing total budget for marketing and sales resources and allocation across spending categories
KR20110049858A (en) * 2008-08-15 2011-05-12 마켓셰어 파트너스 엘엘씨 Automated decision support for pricing entertainment tickets
US20100076897A1 (en) * 2008-09-19 2010-03-25 Reliance Communications Limited Media investment and inventory management system and method
MX2011004611A (en) * 2008-10-31 2011-07-28 Marketshare Partners Llc Automated specification, estimation, discovery of causal drivers and market response elasticities or lift factors.
US20100114928A1 (en) * 2008-11-06 2010-05-06 Yahoo! Inc. Diverse query recommendations using weighted set cover methodology
US8103608B2 (en) * 2008-11-26 2012-01-24 Microsoft Corporation Reference model for data-driven analytics
US8190406B2 (en) * 2008-11-26 2012-05-29 Microsoft Corporation Hybrid solver for data-driven analytics
US8145615B2 (en) * 2008-11-26 2012-03-27 Microsoft Corporation Search and exploration using analytics reference model
US8155931B2 (en) * 2008-11-26 2012-04-10 Microsoft Corporation Use of taxonomized analytics reference model
US8381172B2 (en) * 2008-12-02 2013-02-19 Nokia Corporation Method, apparatus, mobile terminal and computer program product for employing a form engine as a script engine
US8314793B2 (en) * 2008-12-24 2012-11-20 Microsoft Corporation Implied analytical reasoning and computation
KR100931826B1 (en) * 2009-05-14 2009-12-15 이계영 Financial asset investment management system and that method
US8788574B2 (en) 2009-06-19 2014-07-22 Microsoft Corporation Data-driven visualization of pseudo-infinite scenes
US9330503B2 (en) 2009-06-19 2016-05-03 Microsoft Technology Licensing, Llc Presaging and surfacing interactivity within data visualizations
US8692826B2 (en) 2009-06-19 2014-04-08 Brian C. Beckman Solver-based visualization framework
US8259134B2 (en) * 2009-06-19 2012-09-04 Microsoft Corporation Data-driven model implemented with spreadsheets
US8493406B2 (en) * 2009-06-19 2013-07-23 Microsoft Corporation Creating new charts and data visualizations
US8531451B2 (en) * 2009-06-19 2013-09-10 Microsoft Corporation Data-driven visualization transformation
US8866818B2 (en) 2009-06-19 2014-10-21 Microsoft Corporation Composing shapes and data series in geometries
US8352397B2 (en) * 2009-09-10 2013-01-08 Microsoft Corporation Dependency graph in data-driven model
US9043296B2 (en) 2010-07-30 2015-05-26 Microsoft Technology Licensing, Llc System of providing suggestions based on accessible and contextual information
US20140365298A1 (en) * 2010-09-28 2014-12-11 Google Inc. Smart budget recommendation for a local business advertiser
US8583470B1 (en) * 2010-11-02 2013-11-12 Mindjet Llc Participant utility extraction for prediction market based on region of difference between probability functions
US20150142565A1 (en) * 2011-10-14 2015-05-21 Xuefu Wang Targeting Content Based On Local Queries
US20130173292A1 (en) * 2012-01-03 2013-07-04 International Business Machines Corporation Identifying an optimal cohort of databases for supporting a proposed solution to a complex problem
US20130204662A1 (en) * 2012-02-07 2013-08-08 Caterpillar Inc. Systems and Methods For Forecasting Using Modulated Data
US9159056B2 (en) 2012-07-10 2015-10-13 Spigit, Inc. System and method for determining the value of a crowd network
US9400495B2 (en) 2012-10-16 2016-07-26 Rockwell Automation Technologies, Inc. Industrial automation equipment and machine procedure simulation
WO2015047423A1 (en) 2013-09-30 2015-04-02 Mindjet Llc Scoring members of a set dependent on eliciting preference data amongst subsets selected according to a height-balanced tree
GB2582512B (en) 2017-12-15 2022-03-30 Motorola Solutions Inc Device, system and method for crowd control
US20210350426A1 (en) 2020-05-07 2021-11-11 Nowcasting.ai, Inc. Architecture for data processing and user experience to provide decision support

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5692233A (en) * 1992-05-28 1997-11-25 Financial Engineering Associates, Inc. Integrated system and method for analyzing derivative securities
US5526475A (en) * 1994-03-02 1996-06-11 Mathsoft, Inc. Method for live symbolic calculations in a mathematical document editor
US5469538A (en) * 1994-03-02 1995-11-21 Mathsoft, Inc. Mathematical document editor and method performing live symbolic calculations for use with an electronic book
US5581663A (en) * 1994-04-22 1996-12-03 Ideation International Inc. Automated problem formulator and solver
US5781430A (en) * 1996-06-27 1998-07-14 International Business Machines Corporation Optimization method and system having multiple inputs and multiple output-responses
US6032123A (en) * 1997-05-12 2000-02-29 Jameson; Joel Method and apparatus for allocating, costing, and pricing organizational resources
US6045179A (en) * 1997-07-15 2000-04-04 Harrison; Paul A. Portable and adjustable keyboard stand for computer
US6031984A (en) * 1998-03-09 2000-02-29 I2 Technologies, Inc. Method and apparatus for optimizing constraint models
US6122623A (en) * 1998-07-02 2000-09-19 Financial Engineering Associates, Inc. Watershed method for controlling cashflow mapping in value at risk determination
JP2000293569A (en) * 1999-04-02 2000-10-20 Rg Asset Management Co Ltd Portfoilo presentation method, device and system, and storage medium of computer program
US20020116237A1 (en) * 2000-05-26 2002-08-22 Marc-David Cohen Cross-selling optimizer
US6961685B2 (en) * 2000-09-19 2005-11-01 Sy Bon K Probability model selection using information-theoretic optimization criterion
US20030046130A1 (en) * 2001-08-24 2003-03-06 Golightly Robert S. System and method for real-time enterprise optimization
JP4388248B2 (en) * 2001-10-29 2009-12-24 株式会社日立製作所 Optimal portfolio determination method and apparatus
US20030148253A1 (en) * 2002-01-10 2003-08-07 Sacco William J. Interactive, delayed revelation, educational method and system

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
BROWN R.G.: 'Decision Rules for Inventory Management' HOL, RINEHART AND WINSTON, INC. 1967, pages 104 - 141, 144 - 149, 168 - 171 *
POPE J.A.: 'An Inventory Management Simulation' JOURNAL OF EXPERIENTAL LEARNING AND SIMULATION 1981, pages 261 - 281 *
SILVER E.A.: 'Operation Researhc in Inventory Management: A Review and Critique' OPERATION RESEARCH SOCIETY OF AMERICA vol. 29, no. 4, August 1981, pages 628 - 645 *
WAGNER H.M.: 'Research Portfolio for Inventory Management and Production Planning Systems' OPERATION RESEARCH SOCIETY OF AMERICA vol. 28, no. 3, June 1980, pages 445 - 475 *

Also Published As

Publication number Publication date
WO2006058054A3 (en) 2009-04-02
US20060117303A1 (en) 2006-06-01

Similar Documents

Publication Publication Date Title
US20060117303A1 (en) Method of simplifying &amp; automating enhanced optimized decision making under uncertainty
US10825099B2 (en) Dynamic dashboards system and method
US6405179B1 (en) System and method for data collection, evaluation, information generation, and presentation
US7447652B2 (en) Methods and systems for portfolio cash flow valuation
US7885889B2 (en) System and method for processing data pertaining to financial assets
US20140200930A1 (en) Methods and Systems for Determining the Importance of Individual Variables in Statistical Models
US20040024619A1 (en) System and method for facilitating the determination of property and casualty insurance rates
US20030101080A1 (en) Method and system for determining the importance of individual variables in a statistical model
US20020062272A1 (en) Personalized investment consulting system implemented on network and method for the same
US20030009408A1 (en) Providing financial portfolio risk measurement and analysis to remote client services via a network-based application programming interface
US20020046053A1 (en) Web based risk management system and method
US20030088489A1 (en) Automated investment advisory software and method
Ai et al. Optimal enterprise risk management and decision making with shared and dependent risks
WO2006048684A2 (en) Method of storing data used in backtesting a computer implemented investment trading strategy
US20160171619A1 (en) Dynamic underwriting system
US20070016502A1 (en) Computer-aided financial security analysis system and method
US20090076988A1 (en) Method and system for optimal choice
US20080082371A1 (en) System and Method for Evaluating a Value of an Insurance Policy
Izzi et al. Basel III credit rating systems: An applied guide to quantitative and qualitative models
US8452621B1 (en) System and method for determining loss reserves
US20040103052A1 (en) System and method for valuing investment opportunities using real options, creating heuristics to approximately represent value, and maximizing a portfolio of investment opportunities within specified objectives and constraints
WO2001043037A1 (en) Automated investment advisory software and method
WO2001027844A1 (en) Investment analysis and management system for generating financial advice
WO1998038588A1 (en) Business analysis tool and method
AU2017101891A4 (en) Electronic calculator for real time optimisation, searching, and extrapolating multiple scenarios of post-retirement cash flow with intertemporal settings, and system and method thereof

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KM KN KP KR KZ LC LK LR LS LT LU LV LY MA MD MG MK MN MW MX MZ NA NG NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 05852050

Country of ref document: EP

Kind code of ref document: A2