Source: http://www.google.com/patents/US20060259412?ie=ISO-8859-1&dq=6,952,563
Timestamp: 2015-03-01 04:15:20
Document Index: 672284107

Matched Legal Cases: ['art 800', 'art 800', 'art 800', 'art 800', 'art 800', 'art 900', 'art 100', 'art 1100', 'art 1100', 'art 1200', 'art 1200', 'art 1200']

Patent US20060259412 - System and method for performing automatic spread trading - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inAdvanced Patent SearchPatentsThe present embodiments are provided to facilitate the automatic trading of spreads in a fast and accurate manner. One or more market data feeds that contain market information for tradeable objects are received at an exchange. A spread data feed is generated in response to the market data feeds and...http://www.google.com/patents/US20060259412?utm_source=gb-gplus-sharePatent US20060259412 - System and method for performing automatic spread tradingAdvanced Patent SearchPublication numberUS20060259412 A1Publication typeApplicationApplication numberUS 11/417,915Publication dateNov 16, 2006Filing dateMay 3, 2006Priority dateMar 5, 2002Also published asCA2477561A1, EP1481350A2, EP1481350A4, EP2320374A2, EP2320374A3, US7389264, US7424450, US7437325, US8180692, US8768806, US20030200167, US20060259406, US20090006244, US20120166330, US20140258077, WO2003077061A2, WO2003077061A3Publication number11417915, 417915, US 2006/0259412 A1, US 2006/259412 A1, US 20060259412 A1, US 20060259412A1, US 2006259412 A1, US 2006259412A1, US-A1-20060259412, US-A1-2006259412, US2006/0259412A1, US2006/259412A1, US20060259412 A1, US20060259412A1, US2006259412 A1, US2006259412A1InventorsGary Kemp, Jens-Uwe Schluetter, Mike Burns, Scott Singer, Fred Monroe, David Babulak, Harris BrumfieldOriginal AssigneeTrading Technologies International, Inc.Export CitationBiBTeX, EndNote, RefManReferenced by (18), Classifications (13), Legal Events (2) External Links: USPTO, USPTO Assignment, EspacenetSystem and method for performing automatic spread trading
A. Implied Prices or Net Change Through a spread configuration window (e.g., see the spread configuration window 600 in FIG. 6), a user can selectively choose whether the generated spread prices are based on implied price levels or net change. Implied price is the price of the spread displayed as a cash value based on the current price for each leg of the spread. Net change is the price of the spread displayed as a net change value based on a price differential over a period which the user selects, such as the previous settlement price for each leg of the spread. Those skilled in the art of trading are familiar with a wide variety of spread pricing techniques and the preferred embodiments are not limited to any particular type of pricing scheme. In a preferred embodiment, when the spread data feed is based on the implied spread price, the automatic spreader may calculate for any unknown variable such as the implied spread price k or one of the leg prices p, using the following equation. Examples are provided herein to illustrate how the automatic spreader might use this equation to calculate spread prices and quote legs. k=m leg1 p leg1 +m leg2 p leg2 + . . . +m legn p legn [EQN 1]
k=spread price (implied price); n=total number of legs; mlegn=spread multiplier for leg n; and plegn=price for leg n. In another preferred embodiment, when the spread data feed is based on the net change, the automatic spreader 214 may calculate for any unknown variable such as the net change, k or leg prices p, using the following equation, which may be used instead of EQN 1. k=NCT leg1 m leg1 +NCT leg2 m leg2 + . . . +NCT legn m legn [EQN2]
k=spread price (net change); n=total number of legs; mlegn=spread multiplier for leg n; and NCTlegn=Net Change of the spread over a period for leg n. In accordance with the preferred embodiment, the spread multipliers, mlegn, are chosen by the user and attempt to homogenize the tradeable objects in terms of tick and currency differentials. For example, if one product is in Euros and another product is in U.S. dollars, the spread multipliers may be used to convert the two products into a uniform currency (e.g. both in U.S. dollars). The spread multipliers for each leg may also be entered by the user into a spread configuration window (e.g., 600 in FIG. 6). Note also that the automatic spreader may accommodate any spread multiplier values. B. Determining Spread Bid Depth FIG. 8 shows a flowchart 800 that illustrates a method of determining the spread depth and prices, which are then displayed in the buy quantities column 706, sell quantities column 712 and price column 718 of the spread window 700 in FIG. 7. The flowchart 800 illustrates a way to determine the spread depth and prices, however, it should be understood that the flowchart 800 may include more or fewer steps, in the same or different order, to achieve the same result. Thus, the present embodiments should not be limited to the steps shown in flowchart 800. The following discussion walks through the flowchart 800 with respect to the example spread illustrated and set-up in FIGS. 6 and 7. This particular spread, as configured in FIG. 6, is set up so that for each spread buy there will be a buy in the first leg and a sell in the second leg. This is defined by the spread ratios set at 1 for leg 1 and −1 for leg 2 as shown at 628 in FIG. 6. The spread ratio indicates the quantity of each leg in relation to the others. A positive spread ratio preferably indicates a long leg (i.e., a buy), whereas a negative spread ratio (−) preferably indicates a short leg (i.e., a sell). Any value for the spread ratio(s) may be entered for each leg at 628 in FIG. 6. A spread can be configurable in any number of ways other than the particular spread in FIG. 6. At step 802, preferably all quantities, which include both buy and sell quantities at each price level in each leg are stored. The quantities are preferably stored in a temporary fashion, such as buffering, in a data file, but alternatively the quantities may be stored for long periods of time for future processing. To illustrate step 802, the quantities in columns 708, 714, 710, and 716 in FIG. 7 are stored at their corresponding price levels. For instance, in column 708 (i.e., the buy column for the first leg) a file may contain data as follows: 10 at 105.12, 1 at 105.11, 5 at 105.10, 7 at 105.09, and 5 at 105.08. Note that in this example only the data in columns 708 and 716 are used in determining spread bid depth and prices, whereas only the data in columns 714 and 710 are used in determining spread ask depth and prices as described below. At step 804, the automatic spreader can calculate spread quantities at corresponding spread prices based on the stored quantities from step 802. To better illustrate the step of 804, FIG. 9 shows a flowchart 900 that illustrates a method of determining the spread quantities and spread prices. At step 902, spread units in each leg are calculated, where a spread unit is the absolute value of the quantity available at a price level in a leg divided by the spread ratio for that leg. Recall that the spread ratio is input by the user in the spread configuration window. spread unit = abs ( Q leg n ratio leg n ) [ EQN 3 ] Spread units as defined in EQN 3 may be interchangeable with quantities as used herein, depending on the ratio input by the user. Returning back to the example in FIG. 7, the spread ratio of 1 was input for the first leg (i.e., the buy leg) and the spread ration of −1 was input for the second leg (i.e., the sell leg). Therefore, the spread units for column 708 are 10/1=10, 1/1=1, 5/1=5, 7/1=7, and 5/1=5. This is repeated for column 716, except that the spread ratio for the second leg would be used. In another example, assume that a spread ratio of −2 was input for the first leg, then the spread units for column 708 would be 10/2=5, 1/2=0.5, 5/2=2.5, 7/5=3.5, and 5/2=2.5. Again, this would be repeated for column 716. The method of determining spread units is also repeated for columns 714 and 710 when determining spread ask depth and prices described in the following section. At step 904, preferably starting at the spread units with the highest bid price (HBP) in the buy leg(s) and the spread units with the lowest ask price (LAP) in the sell leg(s), the minimum spread unit is determined. To illustrate step 904, using the example laid out in FIGS. 6 and 7, with a spread ratio of 1 (i.e., a buy leg) for the first leg, and a −1 (i.e., a sell leg) for the second leg, the spread unit at the HBP is 10 at 105.12, and the spread unit at the LAP is 2 at 104.24. The minimum spread unit is 2, that is, 2 is less than 10. At step 906, if the minimum spread unit is one or greater, the spread quantity is equal to the minimum spread unit (a decimal number greater than 1 may be rounded up/down or truncated), then per step 908, the spread price is calculated using either EQN 1 or EQN 2. Referring back to the example illustrated in FIG. 7, the minimum spread unit is 2, which is greater than 1, so the spread quantity is 2 for this example, and the spread price is calculated to be 0.880 using the following relationship. k=m leg1 p leg1 +m leg2 p leg2 + . . . +m legn p legn k=spread price; n=2; Mleg, =1; mleg2=1; pleg1=105.12; and pleg2=104.24. If the minimum spread unit is less than one, then a weighted average of prices is determined, per steps 910, 912, and 914, for each leg that has a minimum spread unit less than one, determined in step 904. At step 910, assuming that there is a leg with a minimum spread unit less than one, the automatic spreader would look to the next level of depth for enough spread units to make 1 spread unit. For instance, using the numbers illustrated in FIG. 7, assume that the spread ratio for the second leg was −4, then column 716 would be: 0.5, 0.25, 1, 0.25, and 0.75. Therefore, spread units would be added together until one spread unit is found, thus, 0.5+0.25+0.25=1. At step 912, the weighted average of prices for those spread units used in step 910 is calculated. This weighted average of prices is a price for the leg with the minimum spread unit less that one that is used in either EQN 1 or EQN 2. Using the example in step 910 with a spread ratio of −4, the weighted average may be calculated by the following relationship. (0.5*104.24)+(0.25*104.25)+(0.25*104.26)=104.25 (i.e., 104.2475 rounded up) At step 914, using the example set out in steps 910 and 912, the spread quantity is 1, and the spread price would be calculated as 0.870 using the following relationship. k=m leg1 p leg1 +m leg2 p leg2 + . . . +m legn p legn k=spread price; n=2; mleg1=1; mleg2=1; pleg1=105.12; and pleg2=104.25 (the weighted average price for this example). Returning back to FIG. 8, at step 806, the spread quantity and the spread price are stored in memory, either temporarily or for a longer period of time, depending on the programming. At step 808, the quantities or spread units that were used in step 804 are preferably removed from the stored quantities in step 802. At step 810, if there are quantities left over in any leg, then move to step 814, otherwise, per step 812, all of the spread quantities and spread prices stored in step 806 can be displayed in the spread window. The spread quantities are displayed at their corresponding spread prices in a spread window. To illustrate this step, the spread quantities in column 706 in FIG. 7 are displayed at their corresponding spread prices. For instance, in column 706 (i.e., the buy column for the spread) there are 2 at 0.880, 1 at 0.870, 4 at 0.860, 1 at 0.850, 2 at 0.840, and 1 at 0.830. It should be understood that the spread quantities and spread prices may be displayed as they are generated and/or after all of the spread quantities and spread prices are generated, depending on how the automatic spreader is programmed. In a preferred embodiment, only those values that change from one moment in time to another are updated, but alternatively, all of the values can be updated or refreshed at once on a frequent basis. In addition, the spread quantities and spread prices may be updated when a trader indicates an update, such as re-centering or re-positioning the spread. Re-centering or re-positioning the spread is described in the incorporated patent applications entitled �Click Based Trading With Intuitive Grid Display Of Market Depth,� �Click Based Trading With Intuitive Grid Display of Market Depth and Price Consolidation,� and �Trading Tools for Electronic Trading.� In yet another preferred embodiment, a throttle adjustment, which is set by a trader or programmer, is utilized in combination with one of the above update techniques. In the throttle adjustment embodiment, a value is provided that reduces the number of times the automatic spreader updates the spread quantities and prices. To illustrate the throttle adjustment embodiment, assume that the throttle value is set to 10 milliseconds. Then, when a change to the spread quantities in a leg occurs, the automatic spreader determines if an update to the spread quantities for the spread has occurred within the last 10 milliseconds. If an update has not occurred within the last 10 milliseconds, then an update to the spread quantities for the spread is calculated. If an update has occurred within the last 10 milliseconds, then an update to the spread quantities for the spread is temporarily postponed until 10 milliseconds has past since the last update. The throttle adjustment embodiment preferably reduces the number of calculations the computer processors has to perform in calculating the spread quantities and prices for the spread, thereby freeing the processing to perform other processing tasks. At step 814, if there are quantities left over, the automatic spreader repeats the process in steps 804, 806, 808, and 810 using only the left over quantity. This is repeated until all of the remaining quantity has been used up in at least one of the legs. C. Spread Ask Depth To determine spread ask depth and prices, the method used in determining the spread bid depth and prices above may also be used, except that the automatic spreader will look to the ask depth in the buy leg(s) and the bid depth in the sell leg(s). So, for example, at step 904 in FIG. 9, the automatic spread would start at the spread units with the lowest ask price (LAP) in the buy leg(s) and the spread units with the highest bid price (HBP) in the sell leg(s) to determine which is the minimum spread unit. As a result of looking to the ask depth in the buy leg(s) and the bid depth in the sell leg(s), per step 812, all of the spread quantities and spread prices stored in step 806 can be displayed in the spread window. The spread quantities are displayed at their corresponding spread prices in a spread window. To illustrate this step, the spread quantities in column 712 in FIG. 7 are displayed at their corresponding spread prices. For instance, in column 712 (i.e., the ask column for the spread) there are 1 at 0.960, 3 at 0.950, 3 at 0.940, 3 at 0.930 and 1 at 0.900. D. Determining Last Traded Price and Last Traded Quantity In an embodiment, the last traded price (LTP) and the last traded quantity (LTQ) of the spread are also calculated using LTP and LTQ values received from the market data feeds using the following relationship. LTP of spread = ( LTP leg 1 * m leg 1 ) + ( LTP leg 2 * m leg 2 ) + � + ( LTP leg n * m leg n ) [ EQN 4 ] LTQ of spread = minimum ( abs ( LTQ leg 1 ratio leg 1 ) and abs ( LTQ leg 2 ratio leg 2 ) � and abs ( LTQ leg n ratio leg n ) ) [ EQN 5 ] For example, according to FIG. 7, the first leg in column 726 has an LTQ of 1 at an LTP of 105.12, whereas the second leg in column 728 has an LTQ of 1 at an LTP of 104.23. Using the above equations EQN 5 and EQN 6 for LTP and LTQ, respectively: LTP of spread=(105.12leg1*1leg1)+(104.23leg2*−1leg2)=0.89 LTQ of spread=minimum(abs(1leg1/1leg1) and abs(1leg2/1leg1))=1 For the spread window 700 in FIG. 7, LTP=0.89 and LTQ=1, which is evident by the LTP/LTQ indicator in column 724. In another embodiment, the LTP and LTQ can be calculated based on the spread units that can be filled with an offsetting sale in the other leg(s). When the LTQ of the first leg (i.e., the buy leg) was traded at or below the highest bid price (HBP), then the LTQ of the spread equals the maximum number of spread units that can be filled with an offsetting sale in the second leg at the HBP; and the LTP of the spread is calculated using that best bid price in the second leg. In some instances, there may not be enough quantity at the HBP in the second leg to create at least one spread unit. Then, preferably, this approach would look to the quantity at the next best bid (next best bid=HBP−one price level) and continue to do so until there is enough quantity to fill one spread unit. In this instance, the LTQ equals 1 and the LTP of the spread would be calculated using the weighted average of the various prices in the second leg needed to fill that quantity. When the LTQ of the first leg was traded at or above the lowest ask price (LAP), then the LTQ of the spread equals the maximum number of spread units that can be filled with an offsetting buy in the second leg at the LAP; and the LTP of the spread is calculated using that LAP in the second leg. This approach can be applied to n legs. Moreover, this approach may use the same weighted average technique described above if there is not enough quantity at the best offer in the second leg to create at least one spread unit. To illustrate an aspect of this alternative embodiment, referring to the example of FIG. 7, the LTQ in the first leg was 1 at a price of 105.12, this is shown in column 726. This occurred at the HBP in the first leg. Accordingly, the LTQ of the spread is the maximum number of spread units that can be filled with an offsetting sale in the second leg at 104.23 (the HBP in the second leg). In this example, the LTQ of the spread equals 1 because the spread ratios are 1 for the first leg and −1 for the second leg and there is a quantity of 1 at 104.23, this is shown in column 728. Using any of the equations, EQN1, EQN 2, or EQN 4, described above, the LTP of the spread can be calculated using the following relationship: LTP of spread=(105.12*1)+(104.23*−1)=0.89 In this particular example, the method results in the same number as the method above, that is, the method above which used both EQN 5 and EQN 6, but this will not necessarily occur in other examples. In this alternative embodiment, the LTQ and LTP may also be calculated starting from the second leg (rather than starting from the first leg, as described above). When the LTQ of second leg was traded at or below the best bid, then the LTQ of the spread equals the maximum number of spread units that can be filled with an offsetting sale in first leg at the best HBP; and the LTP of the spread is calculated using that best bid price in the first leg. If the LTQ of second leg was traded at or above the best offer, then the LTQ of the spread equals the maximum number of spread units that can be filled with an offsetting buy in the first leg at the LAP and the LTP of the spread is calculated using that best offer price in the first leg. Similarly, this approach will use the same weighted average technique described above if there is not enough quantity at the best offer in the first leg to create at least one spread unit. Regardless of which approach is used, the automatic spreader will preferably update the LTQ and LTP for the spread each time there is an update to the LTQ or LTP of any leg. In a preferred embodiment, once the LTQ is calculated, it is indicated on the spread window only when at least one spread unit is available. For example, referring to FIG. 7, the LTQ is shown in column 724 when at least one spread unit is available, which in this instance there is 1 spread unit. Alternatively, an LTQ of zero is displayed when there are spreads available but not enough to complete a full spread unit. Although FIG. 7 illustrates an LTQ in integer form, it should also be understood that the spread units can instead be displayed in decimal form. Note also that the LTQ of the spread can be calculated and/or displayed based on any unit scale that the user chooses. For example, it can be calculated and displayed in spread units (corresponding to the exact spread ratios set by the trader) or it can be calculated and displayed based on the lowest common denominator of the spread ratios or it can be calculated and displayed based on any other spread ratio. For example, assume that a trader sets the spread ratios of a two legged spread to be 100 for the first leg and −70 for the second leg, and assume also that the LTQ for the first leg was a buy of 100 and there is 70 available in the bid depth of the second leg. Then, according to this example, if the trader selects to use spread units, the LTQ of the spread would be displayed as a 1, but if the trader selects to use the highest common integer factor, the LTQ of the spread would be displayed as 10 (because the highest common integer factor of the 100/70 spread is 10). Furthermore, in another embodiment, color coding or other indicators may be utilized to indicate to the trader intra-spread unit variations in the LTQ. For example, the automatic spreader can be programmed to display the LTQ in various shades of color (e.g., ranging from white to green) to indicate increments of a spread unit. V. Trading in the Spread Window Using one or more of the techniques described above, the automatic spreader can generate and display a spread window and its corresponding leg windows, per step 108 of the flowchart 100 in FIG. 1. In the preferred embodiment, the spread window displays both the spread price (e.g., using EQN 1 and EQN 2) and the total quantity traded (e.g., using EQN 3 and EQN 4) at that spread price, although more or fewer items of interest may be displayed such as the LTP/LTQ (e.g., using EQN 4 and EQN 5). At step 110 in FIG. 1, once the spread window is displayed, a user can enter an order(s) that has quantity at a specified price. The user may enter the order(s) in the spread window by a click of a mouse, or by any other input device, such as a keyboard, light pen, or a variety of other means. Using the ongoing example presented above with respect to FIGS. 6 and 7, this section describes how the automatic spreader facilitates the trading of a spread once the order has been entered. FIG. 10 is substantially similar to FIG. 7, except that it shows an entered order 1032 to buy 5 of the spread at a price of 0.860 in the spread window 1000 and shows the corresponding working orders 1034, 1036 automatically entered by the automatic spreader. That is, a buy order 1034 was quoted in leg window 1002 and a sell order 1036 was quoted in leg window 1004. FIG. 10 illustrates an example of quoting both legs of the spread, but alternatively, the automatic spreader can quote only one of the legs, or more than two legs. How many legs the automatic spreader quotes preferably depends on the user's spread setting parameters. In any instance, the method for quoting any number of legs preferably remains the same. Referring back to the configuration window 600 in FIG. 6, the user can preferably select the appropriate spread setting parameters to quote one or more legs of the spread. That is, by selecting any one of the �Active Quoting� fields 620 corresponding to the underlying leg, the automatic spreader will automatically quote the selected leg based on information from the other legs, the order, and the user's preferences (e.g., multiplier, spread ratio, etc.). For example, by only selecting the �Active Quoting� field for leg A, the automatic spreader will quote only leg A first. The same is true quoting leg B, or any other leg underlying the spread. In another example, by selecting the �Active Quoting� field for both legs A and B, the spreader will quote both legs (this example is shown in FIG. 6). Again, regardless of whether one or more legs are quoted, in the preferred embodiment, the same calculation applies to determine where to place the quote in the leg(s). An example of which is provided below. A. Determining Where to Quote In a preferred embodiment, at the instant of placing an order in the spread window, the automatic spreader determines where to quote one or more legs of the spread. FIG. 11 shows a flowchart 1100 that illustrates a method of quoting a leg of a spread. The illustrated method can accommodate any number of legs, and the method of quoting one, some, or all of the legs preferably remains the same. However, it should be understood that more or fewer steps, in the same or different order, may be included in the flowchart 1100 to obtain similar results. For the sake of simplicity, the method in FIG. 11 is illustrated using the two-legged spread example first laid out with respect to FIGS. 6, 7, and 10. Then, looking to FIG. 10, it is visually apparent that a trader has entered an order to buy 5 lots of the spread at a price of 0.860, per step 1102. This working order is shown in column 1006. At step 1104, the automatic spreader quotes a leg based on information from the entered order, information from the other n−1 legs, and the user's preferences. In a preferred embodiment, the automatic spreader starts by looking to the inside market of the legs of the spread. In particular, it looks to the highest bid price (HBP) with quantity in a legs for which a quote to sell will be needed for this order and it also looks to the lowest ask price (LAP) in those legs for which a quote to buy will be needed. In this example, the order is to buy the spread, so in the preferred embodiment, the automatic spreader will be looking to sell at the HBP in the sell legs and will be looking to buy at the LAP in the buy legs. Recall that the user can select which legs are buy legs and sell legs by entering a positive or negative ratio. Referring back to this example, the first leg is quoted based on information from the second leg. Looking to the second leg (i.e., a sell leg), there is a buy quantity of 1 in column 1024 at the HBP price of 104.23 in column 1028. However, when there is not enough quantity at that level to fill an offsetting order, the software preferably looks to the next highest bid price (or next lowest sell price depending on if it is a buy) in that leg and continues to do so until it finds enough quantity. In one embodiment, once enough offsetting quantity is found, the automatic spreader uses the lowest bid price (or the highest sell price depending on if it is a buy) of the quantity used. To illustrate this embodiment, referring to FIG. 10, the quantity needed to offset the buy order is 5. However, the buy quantity of 1 in column 1024 at 104.23 is not enough to offset the user's buy order of 5. Thus, in this embodiment, the automatic spreader looks to the next level of quantity to supplement the buy quantity of 1, and in this example, finds a buy quantity of 6 in column 1024 at 104.22. As a result, the buy quantity of 1 plus 4 of the buy quantity of 6 may be used to offset the buy order of 5. According to this embodiment, the price for the second leg is 104.22. At step 1104, the price at which to quote in the first leg can be calculated using either EQN 1 or EQN 2. k=m leg1 p leg1 +m leg2 p leg2 + . . . +m legn p legn, k=0.860; n=2; m, =1; m2=−1; p2=104.22; p1=unknown Solving for the unknown price to quote the first leg, p1=105.08. Therefore, a buy order of 5 is entered in the first leg in column 1014 at a price of 105.08 in column 1020. This is evidenced by the illustration of a buy order 1034 in the working order column 1014 of the first leg shown in window 1002. In another embodiment, once enough offsetting quantity is found, the software can instead calculate the weighted average of prices for that quantity. FIG. 12 shows a flowchart 1200 to better illustrate how the automatic spreader can calculate a price in an offsetting order using the weighted average of prices, if necessary. Although the flowchart 1200 can accommodate any number of legs, it is illustrated using the ongoing example from FIG. 10. It should be understood, however, that the flowchart 1200 provides only an illustration of how to calculate the weighted average price, and therefore the present invention should not be limited to the steps, or orders of the steps, shown in the figure. At step 1202, the quantity needed to fill the order is determined. In this example, the quantity needed to offset the buy order is 5. This value is known from the entered buy order and from the spread ratios. Note that a trader can enter a sell order, whichever is desired. At step 1204, the quantity at the LAP in the first leg or the quantity at the HBP in the second leg is determined (or in other n−1 legs, if necessary) depending on the entered order. In this example, the trader entered an order to buy the spread, so to determine where enter an order in the buy leg(s) (in this example, the buy leg is the first leg), the automatic spreader preferably determines where it would currently be possible to fill an offset order by looking at the HBP price in the sell leg. In the ongoing example, a quantity of 1 in column 1024 at the HBP price of 104.23 is shown in column 1028. At step 1206, a value used in determining the weighted average of prices is found at that quantity, so using a general variable, B, the price determined at that quantity can be calculated: B=(1)(104.23)=104.23. The variable, B, represents the actual price multiplied by the most recent quantity determined in step 1204. At step 1208, another general variable, Total, is calculated to be used in the weighted average price: Total=B+Total (initially, total=0)=104.23+0=104.23. The variable, Total, represents a running total of B in step 1206. At step 1210, it is determined whether there is sufficient quantity to offset the order, in this example, a quantity of 4 more is needed (5−1=4). At step 1212, the next lower price level from the HBP is determined (or a next higher level from the LAP, if used), which is a quantity of 6 in column 1024 at price of 104.22 in column 1028. This value will be used in step 1206. At step 1206, the remaining quantity of 4 is needed (determined from step 1210), so B=(4)(104.22)=416.88. At step 1208, Total=B+Total=416.88+104.23=521.11. At step 1210, it is determined that there is sufficient quantity to complete the order (i.e., a quantity of 6 is available in column 1024 at a price of 104.22 in column 1028, however only a quantity of 4 is needed to offset the order). At step 1214, Total is divided by the total number of quantity included in the order, which is 5. Thus, Total/5=(521.11)/5=104.222. So, the weighted average for the price in the second leg is p2=104.222. Referring back to FIG. 11, at step 1104, the price at which to quote in the first leg can be calculated using either EQN 1 or EQN 2. k=m leg1 p leg1 +m leg2 p leg2 + . . . +m legn p legn, k=0.860; n=2; m1=1; m2=−1; p2=104.222; p1=unknown Solving for the unknown price to quote the first leg, p1=105.08 (105.082 rounded down) (Note that due to rounding, the weighted average approach results in the same price as with the previous approach, however, this may not always be true.) At step 1106 in FIG. 11, it is determined whether there are any legs which remain to be quoted. The steps 1104 and 1106 are repeated until all of the legs have been quoted. Continuing with the example in FIGS. 6, 7 and 10, the second leg is also quoted. So, the automatic spreader will place an order to sell 5 in the second leg, using information from the first leg. The automatic spreader starts by looking to the inside market of the first leg, and in particular, looks to the lowest ask price (LAP) with quantity, which in this example is a quantity of 1 in column 1018 at a price of 105.13 in column 1020. As described above, in one embodiment, once enough offsetting quantity is found, the automatic spreader can use the lowest bid price (or the highest sell price depending on if it is a buy) of the quantity used. Again, the quantity needed to offset the order is 5. However, the ask quantity of 1 in column 1018 at 105.13 is not enough to offset the order of 5. Thus, the automatic spreader looks to the next level of quantity to supplement the ask quantity of 1, and in this example, finds an ask quantity of 3 in column 1024 at 104.22 and a ask quantity of 6 in column 1024 at 105.16. As a result, the buy quantity of 1 plus 3 plus 1 of the ask quantity of 6 may be used to offset the order of 5. According to this embodiment, the price for the first leg is 105.16. At step, 1104, it is determined where to quote the second leg, preferably this step uses the same equation as the first leg: k=m leg1 p leg1 +m leg2 p leg2 + . . . +m legn p legn, k=0.860; n=2; m1=1; m2=−1; p2=unknown; p1=105.16 Solving for the price to quote in the second leg, p2=104.30. Therefore, a sell order 1036 of 5 in column 1022 is entered in the second leg at 104.30 in column 1028. This is evidenced by the entered sell order 1036 in FIG. 10. Alternatively, finding the weighted average of prices of the quantity needed for an offsetting order can instead be calculated: p1=((1*105.13)+(3*105.15)+(1*105.16))/5=105.148. Thus, p1=105.148. At step, 1104, it is determined where to quote the second leg, preferably this step uses the same equation as the first leg: k=m leg1 p leg1 +m leg2 p leg2 + . . . +m legn p legn, k=0.860; n=2; m1=1; m2=−1; p2=unknown; p1=105.148 Solving for the price to quote in the second leg, p2=104.29 (104.288 rounded up). Therefore, a sell order 1036 of 5 in column 1022 could be entered in the second leg at 104.29 in column 1028 (not shown). This process continues until all of the legs are quoted. In the preferred embodiment, the user may instead select to have the automatic spreader quote only based on the inside market prices by unselecting the �Adjust For Market Depth� icon in a spread configuration window for any given leg. Using the above example, if this option was unselected, then when quoting the first leg, priceleg2 would have been set at 104.23. The offsetting order on the first leg would have been entered, then, at spread price=(priceleg1 *m leg1)+(priceleg2 *m leg2) spread price=0.860; mleg1=1; mleg2=1; priceleg1=unknown priceleg2=104.23 then, plugging in the known values into EQN 1 or EQN 2 gives: 0.860=(price)(1)+(104.23)(−1), where priceleg1=105.09. Similarly, for quoting the second leg, priceleg1 would have been set at 105.13 and the offsetting order on the second leg would have been entered at 104.27. Regardless of which method is used to quote a leg, the automatic spreader preferably determines if there is enough quantity to complete an offsetting order before an order is entered. In the examples above, there was enough quantity to complete the offsetting order and thus the automatic spreader allowed the entering of the buy order in the spread. Preferably, the automatic spreader allows a trader to select how to enter orders when there is not enough quantity to complete the order, but alternatively, the automatic spreader could be programmed on how to enter orders when there is not enough quantity to complete the order. In a preferred embodiment, when there is not enough quantity to complete the offsetting order, the automatic spreader does not allow the order (i.e., to buy or sell the spread) to be entered at that time, and preferably advises the trader that there is not enough quantity to complete the order. The trader can change his or her order accordingly. In another preferred embodiment, when only a fraction of the offsetting order can be completed, the automatic spreader will allow an order for only the fraction available and advise that the order could not be entered for the remaining portion of the order. For example, assume that a trader has attempted to enter an order to buy 30, but only 10 was available at that time, then in this embodiment, the automatic spreader would enter an order to buy 10, and advise the trader that the remaining 20 could not be entered. In yet another preferred embodiment, if there was enough quantity at the time the order was entered, but the quantity changed and now there is not enough quantity to complete the order, the automatic spreader can delete the order or part of the order, if possible. Alternatively, the automatic spreader can be programmed to look for more quantity than is needed to complete an offsetting order before an order is entered to operate as a protective mechanism that would increase the likelihood that an offset will get filled. There are many other ways in which the automatic spread may allow orders to be entered or not entered, depending on available quantities in the market and the invention is not limited to any particular approach. B. Re-Pricing of Quotes At this point, a user has already entered an order. As the markets for each leg move, the price levels of the working orders in the legs need to change in order to maintain the spread level being sought by the trader. Preferably, the automatic spreader automatically moves the working orders in the legs accordingly. A trader may want to limit the number of times the automatic spreader re-quotes the legs. This may desirably reduce the chances of losing a trader's spot in the queue at the exchange, or may reduce the charges for submitting orders at an exchange, etc. Thus, in the preferred embodiment, the automatic spreader allows an acceptable range of prices to change before the automatic spreader re-prices the order into the legs. Therefore, if the market has moved, but is still within the acceptable range set by the user, the working orders in the legs will not be moved. Accordingly, if a working order gets filled the actual price that the trader purchased or sold the spread at may be different (within the acceptable range set by the trader) than the price of the spread at which the trader originally entered the order. This acceptable range is defined by variables that are referred to herein as �slop�. Generally, slop is a number based on units of change in whatever denomination the prices of the spread are calculated A preferred embodiment uses values for both an �inside� and an �outside� slop. As described herein, the inside slop value generally defines the worst price (the highest in the case of spread bid and the lowest in the case of a spread offer) a user is willing to accept for a spread, and the outside slop generally defines the best price (the lowest in the case of a spread bid and the highest in the case of a spread offer) the user is willing to accept for a spread. Referring back to the spread configuration window 600 in FIG. 6, the slop variables can be set by the user with �Inside Slop� and �Outside Slop� fields 608 and 610. In the preferred embodiment, a slop value of 0 indicates that the slop range is zero, and more specifically, that the legs will be re-quoted every time the market prices in the legs move. The larger the slop value, the larger the slop range will be, which allows for more market fluctuation before the automatic spreader re-quotes the legs. As previously described above, using slop, the spreader will change the price levels of working orders in the legs when the working spread changes such that it is out of the range between the inner and outer prices. Whenever market prices change, a trader's working spread orders are preferably checked against the trader's desired spread price for price validity (e.g., whether or not they are within the slop settings). For spread bid: Inner Price=Target Price+Inside Slop [EQN 6]
If Outer Price<=Working Price<=Inner Price, then the working orders in the legs may be unchanged. Otherwise, working orders may be re-calculated and re-entered pursuant to the quoting algorithms described above. For spread offer: Inner Price=Target Price−Inside Slop [EQN 8]