1. Calculation modules 38 that each perform functions on data. These functions include simple numeric conversions to advanced analysis such as neural networks, pattern recognition and simulations. The calculation modules are normally defined by a set of attributes, which determine the inputs, outputs and other parameters of the modules. For example if one of the modules implemented a running average the attributes maybe a data input, a sample period and a running average output.
2. A calculation engine controller 36 manages inputs from the external data streams 22 via the interface 13 and the flow of data between the various calculation modules 38.
The icons 34 in the user interface 30 can be adapted to present a systematic characterization of time series and models. The icons may be presented as individual icons representing arrays of data, or have specific designs to distinguish among different the classes of icons. For example, functions may be represented by a triangle, time series by a square and output as a circle.
The icons 34 can be thought of as being hot-wired to an underlying complex of calculation modules 38, data sources 22 and outputs. This structure ensures that the most recent data is automatically generated and the integrity of the time series and predictions is maintained through a rigorous architecture that explicitly manages the correct sequencing of calculations and interdependence among time series.
The results of calculations in the calculation modules 38 may be stored for later use, presented to the user via the GUI 14, or used in the calculation of another calculation module.
A more detailed description of the user interface module 30 is provided in the following paragraphs. Figure 3 shows a screen shot 50 of the graphical user interface for one embodiment.
When the user is building a model 51 they will have at least two windows open, the Objects in Hierarchy window 52 and the Model window 54. The Model window 54 provides an area for the user to create the model 51. It also provides access to a set of functions 56 that can be used in the model. The Objects 58 in Hierarchy window 52 provides access to all the time series data that can be used in the model. Individual data of a time series may contain a number of
attributes, or time series data. For example, the 'Intel' series 58 may contain the attributes of price 59, volume 60 and earnings 61, these attributes are displayed in a separate window 53.
The objects may also be represented in a graphical tree as shown in window 63. The data that is displayed in the Objects in Hierarchy window 52 can be referenced by a folder 62 or by individual series 64 in the tree display window 63. If the user drags an entire folder 62 such as 'My Portfolio' 62a over to the Model window 54 then all the series 64a in that folder 62a are added to the model 51. When the series are dragged to the Model window 54, a new icon 66a called 'Time Series' appears and the series' names are displayed in the top half of the icon 66a. The bottom half of the icon 66 displays an intersection of the attributes of the selected series 64a. If the folder 'My Portfolio' 62a changes, the model 51 is automatically updated to reflect those changes. For example, if the Oracle stock is added to the folder marked 'My Portfolio' 62a, then the set of series 62a would have Oracle added to it automatically and Oracle would appear in the top half of the time series icon 66a.
This process is particularly useful if a ranking object is used to generate a folder with ten stocks in it. If the stocks change their order, or are added and removed from the list often, the model is automatically updated, as are other objects that use that model or those series.
In a similar fashion to the creation of the first time series icon 66 a, a second time series icon 66b can be created for various interest scenarios. The names of the interest scenarios appear in the top half of the icon 66b, while their attributes appears in the bottom half. The interest rate for each interest scenario is its only attribute.
Once a series 64 or set of series is added to the model 51 the user can drag in functions 56 to operate on those series 64. The functions 56 are categorized by use, with the most commonly used functions automatically placed in a special folder. When the user drags a function 56 into the Model window 54 a function icon 68 is displayed. The function icon has inputs and outputs. The inputs types can consist of various formats such as drop down boxes, tick boxes, date ranges or simple numbers. Inputs can also be attributes. For example, figure 3 shows a line connecting the price of the time series 66a to the input of a Percent Change function 68a. The connection implies that the user wants to perform a percent change calculation in the price of both Intel and nVidia that spans the previous ten days. The user via an input text box 70 specifies the number of days. The result of this calculation is a time series output. This input text box may also be
used to represent the type of interpolation/extrapolation the attribute goes through before it is used in a calculation.
In this example shown in window 54 there are two time series icons 66. The first icon 66a has two series, and the second icon 66b has three. The system deals with models as if there is only one series in each of those time series objects 66. Therefore the Model window 54 needs to create six unique combinations of interest rate scenarios and stocks internally. These combinations are:
1. Intel and Interest Scenario 1;
6. nVidia and Interest Scenario 3.
Therefore there are six unique attributes for the predicted price, each slotted into a different folder in My Portfolio Model ## in the Objects in Hierarchy window 52. The attributes for the Intel folder in My Portfolio Model ## are the predicted prices for the Intel stock with each interest scenario. Similarly, the attributes of the nVidia folder are the predicted prices for nVidia for each interest scenario. Therefore each folder has three attributes.
The attributes for the Interest Scenario 1 folder in My Portfolio Model ## are the predicted prices for each of the Intel and nVidia stocks using interest scenario 1. Similarly, the attributes of the Interest Scenario 2 and Interest Scenario 3 folders are the predicted prices for each of the Intel and nVidia stocks using interest scenarios two and three respectively. Therefore each of the interest scenario folders has two attributes.
Any attribute that is displayed in the 'Objects in Hierarchy' window can be used as an input to another model, or it can used to drive an output for the user. Therefore, the user can build up nested layers of models that depend on each other. In this example, the user could take the predicted price for nVidia and use it in another model. If the user developed a model that used the predicted price for nVidia, and then changed the model that generated that predicted price, the new model would automatically reflect those changes. This automatic linking ensures concurrent and consistent management of time series and models and enables real time applications. The icons enable the user to build very complex, nested models without the need
for coding or selecting columns and typing formulas. It also allows the user a simple view of what the model performs.
While the user interface module 30 provides the user with an easy drag and drop method for creating models, the calculation module 32 is responsible for providing the user interface 30 with all the data it requests. The calculation module 32 ensures that the data used is the most current available and that it is provided quickly and accurately. The user interface is connected to the calculation module via the Calculation Engine Interface 40 that allows it to describe precisely what calculations and models it requires. An example of how such a structure works is outlined in the example below, although other methods will be apparent to those skilled in the art.
The user builds a model in the model creation window 54. This process has already been discussed while describing the User Interface module 30. Once the model has been completed and the user is ready to make it active, the model window contacts the Calculation Engine Controller 36 via the Calculation Engine Interface 40. The Model window 54 describes the calculation, data, functions and the relationships between that have been specified in the model 51. The Calculation Engine Controller 36 builds a set of calculation components 38 that represents the model 51 as described by the Model window 54. The calculation components perform the prescribed functions represented by the function icons 68.
In the example illustrated in figure 2, the attributes numbered 1 through 6 require the acquisition of external information. The attributes have several unique characteristics. They are not set to any specific frequency and can deal with incoming data at random, changing frequencies. Also, the frequencies between attributes may differ. The time series represented by the attributes do not need to be contiguous. For example, if an attribute represents the Toronto Stock Exchange (TSE) price, it would only contain valid data for the hours that the exchange was open.
Since attributes typically do not have similar or even constant frequencies, an attribute set is required. The attribute set interpolates or extrapolates the attribute to a common, although not necessarily regular, frequency so that the calculation components 38 can operate on them. Since the technology is frequency independent the user does not need to be concerned with the fact that the data used for the same calculation may be updated daily or monthly.
To ensure that interpolation or extrapolation errors are not carried too far, the concept of a rollback is introduced. Referring to figure 4, a first time series A is collected at a frequency of 0.1 ms and a second time series B is collected at a frequency of 0.5 ms. In figure 4(a), the plot of the two different time series are shown at t = 1.4 ms. Therefore, the plot for time series A is accurate at t = 1.4 ms, since data points are collected every 0.1 ms. However, the most recent data point collected for time series B is at t = 1.0 ms. Therefore, the program has to extrapolate a data point using the previous data in order to determine where time series might actually be at 1=1.4 ms. However, this extrapolation process may not be accurate and, as shown in figure 6(a), it may even be possible to extrapolate the value of time series B to have a value below 0 at t = 1.4 ms, which is not a logical conclusion.
Furthermore, when the time reaches t = 1.5 ms, an accurate value for time series B is available and is plotted on the graph accordingly. However, due to the previous extrapolation error between t = 1.0 ms and t = 1.4 ms, the data illustrated between t = 1.4 ms and t = 1.5 ms, as shown in figure 6(b), is incorrect. This error is compounded when the incorrect information is used for extrapolating the data between t = 1.5 ms and t = 2.0 ms.
Therefore, as soon as the accurate value for time series B is available, the calculations are rolled back to the previously received accurate value and recalculated, as illustrated in figure 4(c). The rollback provides a more accurate estimate of the value of time series B between received data points. In the present embodiment, the rollback is accomplished because the program saves the data to a storage medium rather than simply displaying it. Thus, once the processor has the correct value for time series B at t = 1.5 ms, it can retrieve the value for time series B at t = 1.0 ms and interpolate the points in order to provide a more accurate graph to the user. The method of auto-correction also allows the processor to more accurately extrapolate the next point, t = 2.0 ms. The calculation components 38 perform calculations using the attributes that are linked to them and they output other attributes. The output attributes can be used either as inputs to other functions or passed to the User Interface module for display and user interaction.
When the user wants to display a chart, a chart object asks the Calculation Engine Controller for a particular attribute. The Calculation Engine Controller provides an output cache where which the chart object can read and write data. It then copies all the data from the
attribute into the output cache. The Controller then calculates any changes in the data that have occurred since the last time the attribute was viewed.
When calculating a desired output, the Calculation Engine Controller 34 first determines what attributes from an outside source are required to perform the calculation. Once attributes that require external data are determined, the Calculation Engine Controller 36 triggers the Data Stream Object to start grabbing data from the data server. The data is gathered starting from the most recently collected data point of the attribute. The system is capable of running in real time with a fully abstracted data layer. The data may be retrieved and refreshed at any frequency including real time. Therefore, the user does not have to adjust input sources or press a 'refresh' button to update the system. Rather, while the system is operative, the most recent data is provided as soon as it becomes available. When the Data Stream Object adds a new data point to the attribute, the Calculation Engine Controller is informed. The Calculation Engine Controller then recalculates all the attributes that depend on the attribute that was updated.
The Calculation Engine Controller 36 also controls the order of calculation. In the above example it is necessary to calculate Function 1 before it calculating Function 2, since Function 2 relies on the output of Function 1. It may occur that the are several functions that can be calculated simultaneously, that is if their inputs are independent of each other's output. This allows the Calculation Module to take advantage of the multithreading capabilities of the machine it is running on. When attribute number 9 is calculated, the Calculation Engine Controller 36 moves the new data into the output cache and alerts the chart object that there is new data. This process is repeated when the Data Stream Object tells the Calculation Engine Controller that new data was added to one or more of the attributes that attribute number 9 requires for its calculation.
This process is real time, with both historical and new data being fed to the Data Stream Object. Also, nothing is calculated unless it is needed for the model 51 specified in the User Interface Module 30.
This process continues until the User Interface tells the Calculation Engine Controller that it no longer needs a particular attribute. The Calculation Engine Controller stops the Data Stream Object from grabbing data for those attributes that are no longer needed for any calculations.
In an alternate embodiment, the application of the system described above to an Internet based system is illustrated in figure 7. A user is coupled to the system via the Internet. Before being allowed access to the system the user is prompted for a user identification and password. Upon successful input of the user identification and password, the user can access his/her portfolio by clicking a portfolio option. Selecting the portfolio option provides the user with access to the portfolio so that he/she may modify it as desired.
Once the user is satisfied with the portfolio, he/she can view the performance of the portfolio by selecting the performance option. Selecting the performance option provides the user with a list of list of possible performance formulae to select from. Having such a system on the Internet allows users to have access to performance formulae from major financial institutions, providing the user with a broader knowledge base with which to make decisions. Once the user has selected an appropriate formula or formulae, the performance of the portfolio is analysed and the results are provided to the user.
Alternately, the user may predefine preferred formulae to apply to the portfolio. In this case, the portfolio is analysed and the results are provided to the user once the user has selected the performance option, without having to make any other selections.
The user can then use the performance analysis for making an informed decision about purchasing and selling components of his/her portfolio. If the user decides to buy or sell a particular component of his/her portfolio, he/she selects the buy/sell option. The user is prompted to enter the product to be purchased or sold as well as the desired quantity and price. The buy/sell offer is processed by the system and executed through a trading system, which is well known in the art.
Furthermore, the user has the ability to enter alerts into the system. If the user wants to be alerted of a predetermined change in a particular stock price, for example, the details of the- stock is provided to the system. If the change is realised, then the user is alerted by email or the like. Also, the user can set up an alert such that if the performance of a particular stock reaches a predefined threshold, then the system notifies the user via the performance analysis that the change has been realised.
It may be seen that the present invention provides a simple automated tool for implementing and analyzing numerous data driven applications. These may include engineering applications to manage, analyze and model the behavior or performance of dynamic systems
including applications such as communications, chemical processes and other physical systems; business intelligence applications to analyze time series and accounting data to monitor both internal and external business environments and/or predict' future business conditions; business modeling such as scheduling and strategic planning where arrays or data are managed in conjunction with linked statistical or mathematical models. In such applications a custom user interface may also be implemented.
In summary, the invention provides for a compute programr having an object based graphical interface which represents a system to control data retrieval from a plurality of data sources, initiate a plurality of statistical or other data analysis operations and a plurality of generated outputs including data files,tables, graphs and other representations. The objects represented by icons may be linked through multiple connections which ensure the automatic or specified sending or retrieval of data among the data files, statistical operations and desired output formats. The output formats may be graphical, tabular, generated data files or other applications. The operations on time series may be characterized by a sequence of interactive icons represented in flow models. Messages may be sent and received interactively by all types of objects. Each object has an associated set of properties. The links among the objects may impose a sequential order of operations or hierarchy of procedures which may be called directional links. A graphical and text interface will allow the user to monitor the properties of each object, congregate objects by shared properties and analyze the directional links and order of operations. The systems of object directed operations may be replicated with the inherited properties of each object and the directional links. The systems are then amenable to modification or comparison with earlier systems.
Although the invention has been described with reference to certain specific embodiments, various modifications thereof will be apparent to those skilled in the art without departing from the spirit and scope of the invention as outlined in the claims appended hereto.