Language selection

Search

Patent 2616364 Summary

Third-party information liability

Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.

Claims and Abstract availability

Any discrepancies in the text and image of the Claims and Abstract are due to differing posting times. Text of the Claims and Abstract are posted:

  • At the time the application is open to public inspection;
  • At the time of issue of the patent (grant).
(12) Patent Application: (11) CA 2616364
(54) English Title: DYNAMIC COMPUTER SOFTWARE FOR TRADING SECURITIES
(54) French Title: LOGICIEL DYNAMIQUE POUR OPERATIONS SUR VALEURS MOBILIERES
Status: Deemed Abandoned and Beyond the Period of Reinstatement - Pending Response to Notice of Disregarded Communication
Bibliographic Data
(51) International Patent Classification (IPC):
  • G06Q 40/04 (2012.01)
(72) Inventors :
  • STARK, THOMAS (United States of America)
(73) Owners :
  • THOMAS STARK
(71) Applicants :
  • THOMAS STARK (United States of America)
(74) Agent: BORDEN LADNER GERVAIS LLP
(74) Associate agent:
(45) Issued:
(22) Filed Date: 2007-12-27
(41) Open to Public Inspection: 2008-06-29
Availability of licence: N/A
Dedicated to the Public: N/A
(25) Language of filing: English

Patent Cooperation Treaty (PCT): No

(30) Application Priority Data:
Application No. Country/Territory Date
11/648,168 (United States of America) 2006-12-29

Abstracts

English Abstract


The invention relates to a computer-implemented method of trading securities,
a
computer-readable medium carrying one or more sequences of instructions for
trading
securities, and a computer program product for use with a graphics display
device. The
program determines a reference price for the security, monitors the value of
the security
over time, and receives an input corresponding to a differential in the value
of the security.
A trigger price is determined for the security as a function of the
differential and the
reference price. The program liquidates the security after determining that
the value of the
security reaches or passes the trigger price in a first direction. After
liquidating the
security, the program automatically acquires at least one position in the
security when the
value of the security reaches or passes the trigger price in a second
direction opposite to
the first direction. The computer-implemented method and computer program may
be
modified in several ways, such as buying as many shares as possible from one
account,
maximizing the funds in an account with which to buy shares, enforcing a
maximum
allowable difference between a security's ask and bid price, or enforcing a
maximum
number of daily trades of a security.


Claims

Note: Claims are shown in the official language in which they were submitted.


CLAIMS:
1. A computer-implemented method executed on a computer of buying as many
shares as possible of a security using funds from one account, the security
having a value
and actually being traded, the method comprising the steps of:
(a) calculating the total cost of one share of the security;
(b) determining whether the total cost of one share of the security is greater
than or equal to the balance of available funds in the account;
(c) calculating the total cost of a trade, the trade including a number of the
shares of step (a);
(d) determining whether the total cost of the trade is greater than or equal
to the
available account balance;
(e) calculating a projected number of shares to buy based on the available
account balance, the projected number being less than or equal to the number
of shares
included in the trade;
(f) calculating the projected total cost of shares;
(g) calculating the projected cost of a trade;
(h) determining whether the projected cost of the trade is greater than or
equal
to the balance of available funds in the account;
(i) subtracting by one the projected number of shares to buy if the projected
cost of the trade is greater than or equal to the balance of available funds
in the account;
and
(j) buying the projected number of shares when the total projected cost of the
trade is less than or equal to the available account balance.
2. A computer-implemented method executed on a computer of maximizing the
funds
in an account with which to buy shares of a security, the method comprising
the steps of:
(a) determining whether shares of a security are to be bought;
(b) finding securities in a long position to be sold;
(c) placing sell orders with a broker for the securities found in step (b);
(d) determining whether the broker has confirmed the placed sell orders within
a time allotted for receiving confirmations;
(e) confirming that the shares of step (a) are to be bought;
36

(f) calculating the total cost of a trade, the trade including a number of the
shares of step (a);
(g) determining whether the total cost of the trade exceeds the balance of
available funds in the account; and
(h) buying the shares of step (a) if the total cost of the trade is less than
or
equal to the available account balance.
3. A computer-implemented method executed on a computer of trading a security
while enforcing a maximum allowable difference between the bid price of the
security and
the ask price of the security, the method comprising the steps of:
(a) entering at a graphical user interface of the computer a maximum allowable
difference between the security's bid price and ask price;
(b) determining whether shares of the security are to be traded;
(c) calculating the difference between the bid price and ask price;
(d) comparing the difference between the bid price and ask price to the
maximum allowable difference between the bid price and ask price; and
(e) completing the trade of shares if the difference between the bid price and
ask price is less than the maximum allowable difference between the bid price
and ask
price.
4. A computer-implemented method executed on a computer of trading a security
while enforcing a maximum number of trades per day of shares of the security,
the method
comprising the steps of:
(a) entering at a graphical user interface of the computer a daily maximum
number of trades of shares of the security;
(b) determining whether shares of a security are to be traded;
(c) determining whether placing an order for a trade of the shares of step (b)
will exceed the daily maximum number of trades; and
(d) completing the trade of step (c) if the trade does not exceed the daily
maximum number of trades.
37

5. A computer data signal embodied in a carrier wave readable by a computer
and
encoding a computer program of instructions to execute a computer process for
trading a
position in a security which has a value and which is actually being traded,
the computer
process comprising:
(a) entering at a graphical user interface of said computer a trading time
delay
period in a range of from minutes to hours;
(b) acquiring a first position in the security, wherein said first position is
short;
(c) determining a reference price for the security at a first point in time;
(d) monitoring the actual value of the security over a period of time;
(e) receiving an input corresponding to a differential in said actual value of
the
security during said period of time, said differential being either the
difference between
said actual value and said reference price or a percentage change in said
reference price;
(f) determining a trigger price for the security as a function of said
differential
and said reference price;
(g) outputting instructions to liquidate said first position in the security
when
said actual value of the security reaches or passes said trigger price moving
in a first
direction in which the actual value of the security is decreasing, step (g)
being performed
by said computer after the performance of steps (a)-(f);
(h) continuing to monitor the actual value of the security after step (g);
(i) determining when said actual value of the security first reaches or passes
said trigger price moving in a second direction, said second direction being
opposite said
first direction;
(j) waiting said trading time delay period after the performance of step (1)
to
avoid trading the security prematurely due to fluctuations of said actual
value of the
security around said trigger price; and
(k) outputting instructions to reacquire a second position in the security,
step
(k) being performed by said computer after the performance of step (j).
38

Description

Note: Descriptions are shown in the official language in which they were submitted.


CA 02616364 2007-12-27
DYNAMIC COMPUTER SOFTWARE FOR TRADING SECURITIES
FIELD OF THE INVENTION
This invention relates to a computer implemented method, a computer-readable
medium carrying instructions, and a computer program product, all for trading
securities.
BACKGROUND
Trading stock can be performed in a variety of ways. One way to trade stock is
to
hire a broker who will perform the transactions on the client's behalf.
Another manner to
trade stock is to open an on-line account and trade stock using an on-line
program found
on the Internet. A third way is to purchase a computer program that permits
the user to
trade stock through use of a brokerage service. These examples are just three
ways stock
can be traded.
After a stock is purchased, the owner of the shares of stock usually desires
to
monitor the value of the shares. This is done in an effort to both avoid a
significant loss
financially should the value of the stock decrease and to increase profit
should the value of
the stock increase. In either case, once the stock is purchased, it is
important to know how
the value of it fluctuates, if at all.
When trading long, a stock's value decreases, many owners of the stock desire
to
sell their shares in order to avoid losing more money in the event that the
stock's value
continues to decline further. Once the stock is sold, either through a broker
or through a
computer program, the transaction is generally over. This means that if shares
of stock are
sold and then soon thereafter the stock's value increases to an amount where
the individual
may have wanted to repurchase the shares, the individual must instruct the
computer
program or broker to purchase a specific number of shares. Put another way,
when the
stock's value rises, the computer program or broker generally will not
automatically
repurchase shares that were previously sold. Thus, separate steps are
required, both of
which must be initiated by the individual. As a result, the individual could
not only lose
money by selling the shares of stock at a loss, but he could also fail to make
money
because he did not repurchase the stock when the stock's value began to
increase past his
previously sold price.
When purchasing stock through the use of a computer, when the user wishes to
buy
a stock, he or she generally instructs the program being used to buy the
stock. The price at
1

CA 02616364 2007-12-27
which the user is willing to purchase the shares of stock is referred to as
the ask price.
Then, if the user wishes to sell the stock he can do so, again by instructing
the computer to
do so. These buying and selling transactions are generally performed as two
separate
transactions, and the user must initiate both. There are at least three
different methods to
trade stock long, short, or both. Trading long occurs when an individual owns
shares of
stock and sells them later when the per share value has increased in price in
order to
generate a profit. An investor who sells stock short borrows shares from a
brokerage house
and sells them to another buyer. Proceeds from the sale go into the shorter's
account. He
must buy those shares back (cover) at some point in time and return them to
the lender.
When an individual sells short, he is anticipating that the value per share of
stock is going
to decrease which would result in his being able to earn a profit when he
repurchases the
shares and "returns" them to the rightful owner.
When trading long, a user can instruct a computer program of the current art
to sell
stock when the stock's value reaches a certain desirable amount. The value of
a stock at
any given moment is known as the bid price. However, once the stock is sold,
the program
no longer monitors the value of the stock that was just sold. As a result, if
the stock was
sold and declined in value, the user limited his loss by selling the stock. If
however, the
stock's value increased at least back to the price at which it was sold, the
user essentially
lost money because he could have repurchased the stock as soon as the stock's
value
equaled the price at which it was previous sold. Similar considerations apply
when stock is
traded short.
Thus, there is the need for a computer program that continuously monitors the
value per share of stock after shares are sold and then automatically
repurchases the shares
when the value of the shares just sold reaches a specified amount. In other
words, there is
a need for a dynamic program for trading stock.
SUMMARY OF THE INVENTION
One aspect of the invention is a computer-implemented method of trading a
position in a security, such as a stock. The value of the security is
monitored by the
associated computer program. A determination of a reference price for the
security is
made. An input is received which designates a differential for the computer to
use when
calculating the trigger price; the trigger price is the value used to
liquidate and acquire
positions in a security. The program liquidates, or gets out of, a first
position in the
2

CA 02616364 2007-12-27
security when the value of the security reaches or passes the trigger price
moving in a first
direction. After liquidating the first position, the program acquires, or gets
into, a second
position in the security when the value of the security reaches or passes the
trigger price
moving in a second direction opposite to the first direction. The position
acquired or
liquidated depends on whether the user is trading long or short.
Another aspect of the invention is a computer-readable medium carrying one or
more sequences of instructions for trading a position in a security. Execution
of the one or
more sequences of instructions by one or more processors causes the one or
more
processors to perform the steps of monitoring the value of the security over
time;
determining a reference price for the security; receiving an input
corresponding to a
deferential in the value of the security; determining a trigger price for the
security as a
function of the differential and the reference price; outputting instructions
to liquidate a
first position in the security when the value of the security reaches or
passes the trigger
price moving in a first direction; and outputting instructions to acquire a
second position in
the security when the value of the security reaches or passes the trigger
price moving in a
second direction which is opposite the first direction. The position acquired
by liquidated
depends, of course, on whether the user is trading in the long or the short
market.
Yet another aspect of the invention is a computer program product for use with
a
graphics display device. The computer program product comprises a computer
usable
medium that has computer readable program code. Included in the computer
readable
program code are means monitoring the value of the security over time; means
determining a reference price for the security; means for receiving an input
corresponding
to a deferential in the value of the security; means for determining a trigger
price for the
security as a function of the differential and the reference price; means for
outputting
instructions to liquidate a first position in the security when the value of
the security
reaches or passes the trigger price moving in a first direction; and means for
outputting
instructions to acquire a second position in the security when the value of
the security
reaches or passes the trigger price moving in a second direction which is
opposite the first
direction.
The invention thus is a dynamic computer software program and related media
and
systems, for trading a position in a security that does not suffer the
shortfalls of the prior
art.
3

CA 02616364 2007-12-27
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is one screen of the graphical user interface for the invention;
FIGS. 2-6 are flow charts representing the computer program;
FIG. 7 shows the different methods the inventive computer program uses to
calculate statistics for the stock that was traded;
FIG. 8 shows the method for determining the trigger price parameters;
FIG. 9 represents the steps the inventive program utilizes to buy or sell
stock;
FIG. 10 is a block diagram representing a computer system;
FIG. 11 A is a flow chart representing a first modification of the program of
the
present invention;
FIG. 11B is a screen shot of a pull-down menu of the user interface for the
modified program represented in FIG. 11A;
FIG. 12 is a flow chart representing a second modification of the program of
the
present invention;
FIG. 13 is a flow chart representing a third modification of the program of
the
present invention;
FIG. 14 is a flow chart representing a fourth modification of the program of
the
present invention;
FIG. 15A is a flow chart representing a fifth modification of the program of
the
present invention;
FIG. 15B is a screen shot of a pull-down menu of the user interface for the
modified program represented in FIG. 15A;
FIG. 16A is a flow chart representing a sixth modification of the program of
the
present invention;
FIG. 16B is a screen shot of a pull-down menu of the user interface for the
modified program represented in FIG. 16A;
FIG. 17 is a flow chart representing a seventh modification of the program of
the
present invention;
FIG. 18A is a flow chart representing an eighth modification of the program of
the
present invention;
FIG. 18B is a screen shot of a pull-down menu of the user interface for the
modified program represented in FIG. 18A;
4

CA 02616364 2007-12-27
FIG. 19A is a flow chart representing a ninth modification of the program of
the
present invention;
FIG. 19B is a screen shot of a pull-down menu of the user interface for the
modified program represented in FIG. 19A;
FIG. 20 is a flow chart representing the set-up procedure at initialization
for
modifying the program of the present invention;
FIG. 21 is a flow chart representing the run-time procedure represented in
FIG.
20;
FIG. 22A is a flow chart representing a tenth modification of the program of
the
present invention; and
FIG. 22B is a screen shot of a pull-down menu of the user interface for the
modified program represented in FIG. 22A.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
In general terms, the invention involves a computer-based system with suitable
programming to allow a user to trade one or more securities in response to
certain market
conditions or at certain times. The securities traded by use of the invention
can be of any
marketable type, such as, but not limited to, stocks, bonds, options, and
derivatives. Thus,
although the invention has been described herein with reference to the trading
of stock, it
is understood to pertain more generally to any type of marketable security.
FIG. 1 shows a graphical user interface for a computer program for dynamically
trading stock. The program keeps track of the value of the stock in real time
or near real
time by interfacing with a suitable database, stock quote service, computer,
or other means
for monitoring the value of the stock. The program displays such information
in field
2400. The program also interfaces with suitable providers or services to trade
the stock.
The stock is selected preferably from a file list maintained by the user or by
entering the
appropriate symbol in field 2405. As shown in field 2403, the program keeps
track of and
displays information related to the stock of interest, including the actual
trade statistics, the
last trade, the next trade, and the status of the current trade for the
selected stock. The user
can enter the number of shares in field 2407 that he or she wants to monitor.
If the user wishes to trade in the selected stock, the program includes
suitable
routines for allowing participation in trading long or trading short. The
appropriate routine
is selected by checking the corresponding box in field 2415 or 2417.

CA 02616364 2007-12-27
An important feature of the program is the so-called trigger price, and the
various
programming routines and automatic trading decisions keyed off of the trigger
price. In
general terms, the trigger price is calculated by taking a reference price and
applying a
change in value, or a "differential," to the reference price. The differential
can be either a
set number of points or a percentage of the reference price. The reference
price is the
highest asking price when trading long and the lowest bid price when trading
short.
If the user chooses to trade long the user checks the box in field 2415 and
then
specifies the buy-sell trigger price parameters for long positions 2411.
Similar options are
available for trading short in field 2413.
As explained in more detail below, the program uses the trigger price
calculated by
the program during monitoring of the stock or stocks of interest. The program
automatically initiates buying or selling of shares in response to the market
achieving such
trigger price. The trigger price is adjustable by the user or through various
programming
routines, such as the reset options, explained in more detail below, and such
programming
routines are activated by selecting appropriate boxes in fields 2419 and 2421.
The program includes routines for the user to set up other automatic, dynamic
trading events related to selected stocks. For example, the user is able to
select the
frequency at which the program checks the various parameters that determine
whether
trading should occur. This feature, referred to as the "trading time delay,"
is configured
using area 2423. In such area the user can specify the number of hours and
minutes for the
trading time delay. The program monitors the market prices of the selected
stock(s), but
the program will not perform an indicated trade until the specified time has
elapsed. By
way of example, this means that if an hour and a half has been specified by
the user in the
appropriate areas of field 2423, such delay shall apply between every
transaction that the
program would otherwise perform for the stock(s) being monitored.
Area 2423 allows the user to specify exact times of day at which transactions
are to
be performed; such option is referred to as the "custom delay option." For
example, the
user can specify in suitable locations in the program to trade at 9:45 a.m.,
11:30 a.m.,
12:00 p.m., 12:15 p.m., and 3:15 p.m.
Specifying a trading time delay is optional. If no delay is specified, the
program
will perform transactions upon demand or when appropriate trading trigger
price
parameters have been satisfied, allowing the trading to occur automatically.
6

CA 02616364 2007-12-27
Some owners of stock prefer to trade outside the normal business hours of the
stock market. The program allows trading during such extended hours by
appropriate
designations in area 2409.
In view of the foregoing, the computer program monitors the value of a user's
stock or stocks and has suitable programming to continue monitoring such stock
or stocks
even after the regular market buying or selling has occurred. The user is able
to select
trigger prices either as a number of points or a percentage change, and such
trigger prices
determine trading of the stocks, depending on what transactions previously
occurred, as
well as the direction the market has moved since such previous transactions
were made.
As discussed above, the trading response to the trigger price may be
controlled or adjusted
by the user by specifying trading time delay or by specifying the hours in
which the trades
should occur (normal or extended hours).
The computer program includes various additional features for the user to
manage
his or her stock portfolio. With reference to the graphical user interface of
FIG. 1, the
user's portfolio can be revised by selecting various buttons in decision field
2422, the
function of which is apparent by the labels on such buttons.
Similarly, this program permits various trading options to be specified in the
context of the trigger-price-driven trading discussed previously. For example,
the user can
select a price at which to enter a position on a particular stock by assigning
a purchase or
sell short price for such stock either for trading long or short,
respectively. Such price is
designated by the user in the appropriate area of field 2415 in trading long
and 2417 for
trading short, and is referred to as a buy limit or a short limit,
respectively.
Another program feature, referred to as QuickFlip, activates suitable routines
in the
program so that the trading strategy alternates between trading long and
trading short. The
user activates this program feature by selecting the corresponding box in
field 2425.
Having described the features of the program with reference to an exemplary
graphical user interface shown in FIG. 1, it will be appreciated that the
program can be
operated in a variety of different manners to manage stock portfolios in a
variety of
different ways, depending on the selections of the user, including the stock,
the trading
options, the trigger price, the trading time delay, and the various other user-
selectable
options discussed previously. These various modes of operation are illustrated
schematically with flow charts in FIGS. 2-6. It will be appreciated by those
skilled in the
7

CA 02616364 2007-12-27
programming arts that the flow charts of FIGS. 2-6 are but one preferred
embodiment for
accomplishing the functions and features of the program for dynamically
trading stock.
Referring now to FIG. 2, the program includes suitable routines shown by block
400 for determining whether to trade during normal hours or extended hours.
Once such a
determination is made, the program includes suitable routines, shown in
decision block
500, for determining whether the appropriate amount of time, if any, has
elapsed between
the last trade of the selected stock or stocks and the current date and time.
If not, as set
forth in the programming blocks of decision block 500, the program moves to
the next
stock or stock to be evaluated.
If the user-inputted parameters are such that it is time to look at the
selected stock
for trading, the program proceeds to computer element 1, and follows the logic
tree or
programming blocks shown in FIGS. 3A-3D. Again in general terms, as shown in
FIGS.
3A-3D, the program checks to see whether the user wishes to participate in
long or short
trading by entering the market at the current price (market price) of the
stock or to begin
trading by using the buy limit or short limit option feature discussed
previously.
The various programming steps for determining which trading action is to take
place are detailed in decision areas 600, 700, 800, 900, and 1000. In these
decision areas,
as will be detailed subsequently, programming routines not only compare the
trigger price
to various ask and bid prices, but the trigger price is adjusted and
recalculated under
certain circumstances, to enable the user to get back into the market of a
particular stock
under advantageous conditions, as determined by the program.
If the user has selected the various parameters for participating in trading
long and
for using a trigger price to determine selling and repurchasing of stock, then
the program
will sell such a stock when its price decreases to the trigger price or below
assuming that
the stock was previously bought. Significantly, the program continues to track
the stock
price that was sold in the above transaction and will repurchase such stock if
its value
increases to equal or exceed the trigger price at the next trading time. The
program repeats
analogous actions after the stock was purchased to determine the need and time
to sell.
The continued monitoring of the stock price after it has been continuously
bought and
sold, and the subroutines that allow for repurchasing and selling of such
stock when it
meets or exceeds the trigger price, renders the stock-trading program dynamic.
The programming routines illustrated in FIGS. 2-6 include subroutines which
automatically adjust the trigger price originally selected by the user, under
certain
8

CA 02616364 2007-12-27
conditions, and the trigger price is determined through program calculations
using trading
parameters, such as those accessed through the graphical user interface in
FIG. 1.
In the event that the user is not trading long, the program logic continues to
perform the various subroutines shown in FIGS. 4A-4D, as indicated. The
program
determines whether the user has selected to participate in trading short,
which selection the
user would have made in area 2417 of the graphical user interface of FIG. 1.
If so, the
program makes use of bid and asking prices and compares such prices to the
inputted
differential to be used when determining the trigger price when participating
in trading
short in a manner similar to, but generally conversely to, the calculations
performed with
reference to trading long. Decision areas 1200, 1300, 1400, 1500, and 1600,
and the
computer programming blocks contained in such decision areas, correspond to
various
subroutines for evaluating the trigger price in relation to the bid and asking
price and, as a
result of such evaluation, determining what, if any, trades should be made
when trading
short.
The program executes the various steps shown in FIGS. 5A-5D when the user has
selected the QuickFlip option by checking the appropriate box in the graphical
user
interface in area 2425 (FIG. 1). The QuickFlip operations involve resetting
certain
parameters relating to the bid and ask prices, as well as those related to the
trigger price as
shown in the programming blocks of area 1900. Decision areas 1700, 1800, 2000,
2100,
and 2200 are involved in updating the various trading parameters to accomplish
the
alternating long and short trading positions of this feature. In particular,
if the user is in a
long position and the stock price falls, which is an example of moving in a
first direction,
to the trigger price, normally the stock is sold and the user is out of the
position. With
QuickFlip activated, the user not only closes his long position by selling the
shares, but
also immediately goes into a short position by selling short. The trading
parameters that
determine the trigger price for both long and short positions are enabled
because both
positions are used and the trading time delay feature is also used as
described. This same
type of scenario takes place for the conversion of short to long positions.
When QuickFlip is not selected, the program can be instructed to stop trading
the
stock or close the position of the stock (if currently in a position) by
selecting either field
2427 or 2429, respectively, in the graphical interface. FIG. 7 shows the
programming steps
that take place as a result of the user's selection of either field 2427 or
2429.
9

CA 02616364 2007-12-27
The calculations of the programs to cost average buy lots, cost average sell
lots,
cost average short sell lots, and cost average covering lots are shown in
computer
programming blocks 304, 310, 316, and 322, respectively, of FIG. 6.
Having discussed the overall structure of the subroutines of the computer
program,
the corresponding computer operations are now illustrated with the benefit of
certain
working examples or hypotheticals. Suppose a user purchases stock for $20.00
(in this
case, the reference price), and wishes to sell it when the stock declines by 5
points (the
differential) to $15.00. Under such scenario, the trigger price is $15.00, and
the differential
of 5 would be inputted into area 2411 of the graphical user interface in FIG.
1. If, at the
appropriate trading time, the program determines that the stock price or value
has
decreased to less than or equal to $15.00 (in this case, the stock's value has
moved in a
first direction by decreasing), then the program will automatically sell the
stock at such
value.
The program continues to monitor selected stocks, including the one sold in
the
hypothetical above, so that, if at the next trading time its value has risen
to, risen above, or
maintained the $15.00 trigger price (in this case, the stock's value has moved
in a second
direction by increasing or no longer decreasing), the program will
automatically execute
instructions to repurchase the shares that were previously sold. This
repurchasing feature
allows the user to capture the increasing trend of a stock and thus offset any
previous
losses by capturing gains as the stock continues to rise beyond the 5-point
spread, in this
example. Optionally, the program can be modified so that the user has the
option of
repurchasing at least one share of the-stock instead of repurchasing the same
number of
shares previously sold.
When the trigger price is based on a percentage of the stock value, the
calculations
above are similar. For example, if the sell short/cover trigger price
parameter for short
positions is 50% for a stock valued at $20.00, then the stock will be sold
when its value
declines to a trigger price of $10.00, which is 50% of the value at purchase
of $20.00.
Then, in order for the stock to be repurchased, the stock must attain a value
equal to or
above the previously sold price (trigger price).
As seen from the above, the trigger price is used to both get into, that is
"acquire,"
or get out of, that is "liquidate," a stock position whether such "value" is
expressed when
trading long or short. As such, although the user designates only the points
or percentage

CA 02616364 2007-12-27
difference for a stock, such designation generates a trigger price for buying
and selling if
the user is trading long, or selling short and covering if the user is trading
short.
Thus, the user specifies a differential in the value of the stock so that the
program
can determine the trigger price. When the value of the security reaches or
passes the
trigger price moving in a first direction, the program liquidates the first
position in the
stock. A second position in the stock is acquired when the value of the stock
reaches or
passes the trigger price moving in a second direction which is opposite to the
first
direction.
If the user is trading long, the feature of adjusting or resetting the trigger
price is
activated when the stock's value increases beyond the price at which it was
purchased by
the user. In other words, the program determines the highest asking price or
"high" of a
stock (the reference price) and uses such determination to reset the trigger
price
accordingly. Referring back to the previous example, if the user has specified
a 5-point
"spread" for the trigger price, and the stock purchased for $10.00 increased
in value to
$100.00 per share, then the recalculated trigger price would be based on the
new stock
value of $100.00 (the highest ask price), which would be 5 points down from
such high,
that is, $95.00 per share.
The determination of the reference price (not shown in the figures), which is
highest asking price or "high" of the stock when trading long, can be updated
with any
suitable granularity, including updating daily, at intervals corresponding to
the trade delay
discussed previously, or continuously. It will be appreciated that one skilled
in the art can
create suitable programming to vary the intervals at which the highest price
for the stock is
determined and/or the trigger price is recalculated accordingly.
The program includes various other options to reset the trigger price,
including
resetting the trigger price at the beginning of each day based on the stock's
asking price,
varying the trigger price during the course of the day based on fluctuations
of the stock's
value, or other appropriate resetting options. The option of resetting the
trigger price at the
beginning of each day allows the user to take advantage of what is referred to
as "Allow
Daily Reset." With "Allow Daily Reset," the user can have the program
automatically re-
enter a stock position at the start of a new trading day which he had been
formally sold out
of (or covered), at a time in the past, because the trigger price had been
reached. This is
done by obtaining a new asking price (or bid if the user is trading short),
and getting into
the position with a new trigger price established by, but not limited to, the
original trading
11

CA 02616364 2007-12-27
parameters. Bid and ask prices are both routinely obtained together since each
are used by
different subroutines in the program.
By way of example, when the user is in a long position, suppose the trigger
price
had been indicated by the user to be 5 points below the highest asking price.
Suppose
further that all shares of the associated stock were sold the previous day
when the trigger
price was $20.00. Suppose still further that on the following day, the asking
price for such
stock opened at $15.00, because its value continued to fall after the user's
shares were sold
at $20.00. If the daily reset of the trigger price option has been selected
after the stock was
repurchased, then the trigger price will be recalculated by taking the opening
price of
$15.00 less 5 points, making the trigger price $10.00. Under such a scenario,
if the stock's
value continues to fall from its opening so that it decreases from $15.00 to
$10.00, then the
program will sell the stock when the trigger price of $10.00 is achieved. This
feature
allows the user to reenter the market after all shares have been sold, because
the shares
have fallen to a low enough value to warrant market reentry. It should be
noted that the
foregoing use of the trigger price in trading long to reset the trigger price
and repurchase
shares does not apply unless the user has previously exited the market and
owns no shares
of the stock. In other words, in the preferred embodiment, when trading long,
the reset
trigger price option is used to reenter the market after all the user's shares
have been
previously sold in a declining market.
In staying with trading long, the program also includes suitable routines to
perform
in accordance with the following hypothetical. Suppose the user specifies a
10% decrease
from the highest asking price as the "trigger price." Under such hypothetical,
suppose the
user purchases stock for $85.00 and its value increases over time. If the
stock's asking
price has increased to $250.00, the new trigger price is reset to be 10% less
than the stock's
value, in this case such trigger price being $225.00.
The resetting of the trigger price in such an increasing market further
protects the
user's gain from previous stock purchases. Referring back to the same
hypothetical above,
if the stock declines from a reference price of $250.00 to a value below
$225.00, then the
10% trigger price will be activated, resulting in sale of the stock. If,
however, the stock
had been previously purchased at $85.00, as set forth above, then the user has
still
received gain from such sale, even though the stock began decreasing in price.
If the
trigger price had not been reset, but had remained at 10% down from the
purchase price of
$85.00, the user's gain would not have been realized.
12

CA 02616364 2007-12-27
The resetting of the trigger price continues for selected stocks on a daily
basis, and
through the trigger-price driven trading transactions discussed above, seeks
to avoid losses
and protect gains of the user.
The program of the current invention calculates stock values, that is the ask
and bid
prices for stocks, and compares them to trigger prices for stocks when trading
short in the
same way as it does for trading long described above, with suitable
adjustments for the
selling short and covering rules of trading short versus trading long. For
example, instead
of tracking the highest asking price, as in trading long, the lowest bid price
is tracked in
the short market.
The program can also include suitable routines that allow the user to buy or
sell
short when the trigger price is between or equal to the bid and the asking
price. It also can
include suitable routines that the user may sell or cover when the trigger
price is between
or equal to the bid and ask prices. Additionally, suitable routines may also
be found in the
program to modify the trigger price calculations so that the trigger price
becomes an order
trade under the following scenarios: (1) after a user-specified gain has been
reached; (2)
when a stock's value reaches its 50 day, 100 day, or other moving averages;
(3) when a
stock's value reaches a certain indicator such as Price/Earnings ratio or any
other useable
indicator utilized for trading stocks; (4) when a particular trade volume has
occurred
whether or not in conjunction with other indicators or events such as price
movement; and
(5) before, on, or after a particular date, such as, but not limited to, the
day a company's
earnings announcement has occurred. Furthermore, the user may have the option
of
directing the program to select whichever trigger price calculation (1-5)
occurs first.
The program includes suitable routines, set out schematically in FIGS. 2-6,
for
accomplishing trading during extended hours. When extended trading is to be
used, there
are no market orders for prices. The user puts in a limit order. He states the
price in which
he is willing to buy or sell the stock and a third party states how much he or
she is willing
to buy or sell the stock for. A company then matches up the user and the third
party so that
the transaction can be completed. The user is able to select whether to trade
only during
extended hours. The program contacts a remote computer and has suitable
interfaces to
obtain the third-party information and to perform the trade.
The flow charts of FIGS. 2-6 correspond generally to the trading transactions
in
response to achieving trigger prices, as described above. Certain significant
steps of the
computer program in relation to such trading practices are now described with
more
13

CA 02616364 2007-12-27
detailed reference to the flow charts and the computer programming steps
schematically
shown therein. The calculations for trading long are generally shown in FIG.
3. The trigger
price is generally calculated in computer blocks 84-89 in decision area 800
and in
computer block 70 in decision area 900.
When the hold trigger price is not selected 78, area 2419, the program
determines
whether to get the bid and ask prices by performing the steps found in
decision block 900.
However, when long daily reset 90 located in area 2419 is selected and the
user currently
owns stock 94, the program proceeds through blocks 86 and 88, and then either
through
decision block 700 or 800. If the user does not currently own stock and the
selected stock
has not been traded yet today 96 then the program proceeds to block 42. If the
stock has
been traded today, then the old date equals today's date, the trigger price is
for a new stock
98, and the program proceeds to block 42.
At block 42, the program determines whether the trigger price is for a new
stock. If
the trigger price is not for new stock, the program proceeds through the steps
found in
decision block 1000, where the stock is either traded or the next stock is
looked at.
Otherwise, if the trigger price is for a new stock, the program proceeds
through decision
block 600.
In decision block 600, shares of stock are bought 56 and the trade statistics
are
calculated. The program recalculates the trigger price at block 70. This
permits the trigger
price to vary throughout the day. In other words, allow daily reset was
selected in area
2421. Either the "Allow Daily Reset" or the "Hold trigger price" in area 2421
can be
selected in order for the trigger price to be adjusted when the price of stock
rises.
However, if buy market is not selected 26 but buy limit is selected 28, in
area
2415, and the buy limit price is for a traded stock 32, the program proceeds
to block 78 to
determine whether the user selected to hold the trigger price, area 2419.
After block 78,
the program continues to either decision block 800 or 900.
In decision block 800, when the user currently owns shares of the stock to be
traded, the program obtains the ask and bid prices and proceeds to either
decision block
700 or computer block 64 depending on whether the bid price is less than or
equal to the
trigger price 88. The stock is sold and statistics are calculated in decision
block 700
moving along to the next stock. The trigger price is reset in block 64.
Alternatively, if the
user does not currently own shares of stock 82 in decision block 800, the
program
proceeds to block 42.
14

CA 02616364 2007-12-27
If decision block 900 is executed by the program and the user has selected
long
daily reset 90, area 2419, and currently owns the stock to be traded 94, the
program
proceeds to block 84 and either sells or keeps the stock. But, when the user
does not
currently own the stock to be traded 94, after performing the steps in block
96 and/or
block 98, the program continues to block 42.
As mentioned above, the short market portion of the program shown in FIG. 4
works similarly to the buy market portion of the program except that the short
market
portion tracks the lowest bid (the reference price), not the highest ask. The
difference in
the short market portion is that the program tracks the current market bid
price of the stock
until the program calculated trigger price is reached or surpassed in the
positive direction.
When this occurs, the program takes the user out of the position by covering
the stock.
Referencing FIG. 4, which is a flowchart of the short market portion of the
program,
decision block 1600 is analogous to decision block 900 of FIG. 3 and the
program
determines whether the stock has already been traded on the day it is to be
traded; decision
block 1100 is analogous to decision block 800; decision block 1200, where the
bid/asking
prices are obtained and analyzed, is analogous to decision block 600; decision
block 1300
is analogous to decision block 700; decision block 1400 where the short stock
is covered is
analogous to decision block 1000; and computer block 189a is analogous to
computer
block 64 and the trigger price is recalculated.
As mentioned previously, the QuickFlip feature allows the program to alternate
its
trading strategy, i.e., from long to short, short to long, etc. If the user
established a long
position and a trigger price is reached, the program ends the user's long
position and
automatically puts the user in a short position. After the trigger price for
the short position
is reached and stock is traded, the program automatically puts the user in a
long position.
This cycle continues until the user deactivates the QuickFlip option.
The particular program steps are detailed with reference to FIG. 5, in which
the
user has the option of selecting QuickFlip 206, field 2415. When QuickFlip is
selected by
the user in field 2415, decision block 1900 is followed first. In decision
block 1900, the
trading hours are analyzed. If the stock is to be traded during regular market
hours, the
program then proceeds from block 210 to block 220.
The program determines whether the trigger price is for a new stock, block
220.
After setting the values found in block 210, decision block 2000 is performed
if the trigger
price is not for a new stock.

CA 02616364 2007-12-27
Decision block 2000 is performed if the trigger price is not for a new stock.
Decision block 1700 is performed if the trigger price is for a new stock that
the user wants
to start trading long and 1800 for a new stock that the user wants to start
trading.
Returning to decision block 2000, if the stock is currently owned 222, the
program
moves along to decision block 2100 to determine whether market conditions
warrant
selling the stock. In decision block 2100, either the stock is sold short or
no sale occurs
and the program proceeds to the next stock 278. In another scenario, when the
shares of
stock are currently being neither bought 222 nor sold 224, but sold short 226,
decision
block 2200 is next. In decision block 2200, the stock is covered 286 and
bought 292, or
the stock is not traded in the event that the trigger price is higher than the
asking price 284,
prior to advancing to the next stock 302.
Alternatively, if decision block 1700 is performed, when the user has selected
to
trade stock long, the program proceeds to buy the stock 240 and calculate the
statistics of
the trade 242, 244, 246, 248 before the next stock is looked at 260. Or,
should the user
have decided to trade stock short 234 instead of trading stock long 232,
decision block
1800 is executed. In decision block 1800, stock is sold short 252 and the
statistics of the
trade are calculated 254, 256, 258. The program then moves to the next stock
to be traded
260.
In decision block 2100, if stock is currently being bought 222, the program
will get
the bid 262. When the bid is less than or equal to the trigger price 268, the
program
proceeds to sell stock 270, sells it short 273, and the last trade price
equals the actual ask
price 277. The program then proceeds to the next stock 278. However, after
getting the bid
262, if the bid is not less than or equal to the trigger price 268, the
program proceeds to the
next stock 278.
When moving to the next stock 230, 248, 260, 278, 302 the program goes to
block
AA 4, found in FIG. 2, which is the beginning of the program.
For decision block 2200, if at block 226, the stock is currently being sold
short, the
program gets the asking price 280. The stock is covered 286 and purchased 292
when the
asking price is greater than or equal to the trigger price 284. The last trade
price will equal
the actual buy price 300 and the program examines the next stock 286. But, if
the ask price
is not greater than or equal to trigger price, the program moves onto the next
stock 302.
Again, this means that the program proceeds to AA 4.
16

CA 02616364 2007-12-27
Regarding decision block 1700, should the trigger price be for new stock 220,
the
program looks to see if the user has selected to begin trading long 232. If
this option is
selected, the program gets the asking price 238 and buys the stock 240. Next,
the statistics
are calculated 242, 244, 246. After calculating the statistics, the program
proceeds to the
next stock 248.
If begin long trading 232 is not selected, and begin trading short is selected
234,
the program proceeds to get the bid 250 and sell the stock short 252, as found
in decision
block 1800. The statistics are then calculated 254, 256, 258. The program then
moves onto
the next stock 264. An error message 236 will appear if the user has not
selected to begin
trading long and also has not selected to begin trading short.
When the user has not selected QuickFlip, the user has to instruct the program
to
either stop trading the stock, field 2427, or immediately close out the stock
position if
currently holding a position, field 2429. FIG. 6 is the schematic
representation of how the
program proceeds according to the user's instructions.
If the user chooses to immediately trade the stock, decision block 2250 is
followed.
In decision block 2250, the stock is either sold S, covered CS, or neither,
i.e., the program
moves along to the next stock 406.
Alternatively, if the user selected to have the program stop trading the stock
408,
the program proceeds to the next stock 410. Should the user fail to instruct
the program by
not making a selection in either fields 2427 or 2429, an error message 412
will appear.
When a user owns more than one share of one stock, he has the option of
selling
the stock in lots over time or selling the stock all at once 58, 102. The user
may also have
the option of not trading any of the shares.
FIG. 7 shows schematically how the program trades stocks in lots. The lots are
calculated by either cost averaging buy lots 304, cost averaging sell lots
310, cost
averaging short sell lots 316, or cost averaging short covering lots 322.
After calculating
the appropriate values, the program either proceeds to block 108 or 190
depending on
what portion of the program the cost average lots are being calculated for.
The program can either cost average buys/sells or short sells/cover. This
works in
either of two ways. In the first way, the program sets up new screens for a
specified
number of the shares for each screen. The trigger price is adjusted to reflect
the shares
associated with the corresponding screens. In the second way, the program
averages the
prices and bundles the prices back to the amount of shares that were sold.
17

CA 02616364 2007-12-27
For example, suppose a user wants to sell 100 shares of stock. Fifty shares
are sold
for $172.00 per share, thirty shares for $171.98, and twenty shares for
$171.95. Using the
first method, the program has three separate screens for the corresponding
amount of
shares: Fifty, thirty, and twenty shares. Using the second method, the program
groups all
of the 100 shares back together and averages the cost so that it would be
$171.98 per
share, allowing only one screen to be needed.
Blocks 70 and 192, in FIGS. 3 and 4, respectively, determine the trigger price
parameters for long and short positions, respectively. FIG. 8 shows the method
the
program uses to calculate these parameters.
In FIGS. 3-5, stock is bought and sold. A detailed description of the
procedure
used to perform the steps of buying and selling stock appears in FIG. 9.
FIG. 10 is a block diagram that illustrates a computer system 2300 upon which
an
embodiment of the invention may be implemented. Computer system 2300 includes
a bus
2302 or other communication mechanism for communicating information and a
processor
2304 coupled with bus 2302 for processing information. Computer system 2300
also
includes a main memory 2306, such as a random access memory (RAM) or other
dynamic
storage device, coupled to bus 2302 for storing information and instructions
to be executed
by processor 2304. Main memory 2306 also may be used for storing temporary
variable or
other intermediate information during execution of instructions to be executed
by
processor 2304. Computer system 2300 further includes a read only memory (ROM)
2308
or other static storage device coupled to bus 2302 for storing static
information and
instructions for processor 2304. A storage device 2310, such as a magnetic
disk or optical
disk, is provided and coupled to bus 2302 for storing information and
instructions.
Computer system 2300 may be coupled via bus 2302 to a display 2312, such as a
cathode ray tube (CRT), for displaying information to a computer user. An
input device
2314, including alphanumeric and other keys, is coupled to bus 2302 for
communicating
information and command selections to processor 2304. Another type of user
input device
is cursor control 2316, such as a mouse, a trackball, or cursor direction keys
for
communicating direction information and command selections to processor 2304
and for
controlling cursor movement on display 2312. This input device typically has
two degrees
of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y),
that allows the
device to specify positions in a plane.
18

CA 02616364 2007-12-27
According to one embodiment of the invention, trading stock is provided by
computer system 2300 in response to processor 2304 executing one or more
sequences of
one or more instructions contained in main memory 2306. Such instructions may
be read
into main memory 106 from another computer-readable medium, such as storage
device
2310. Execution of the sequences of instructions contained in main memory 2306
causes
processor 2304 to perform the process steps described herein. One or more
processors in a
multi-processing arrangement may also be employed to execute the sequences of
instructions contained in main memory 2306. In alternative embodiments, hard-
wired
circuitry may be used in place of or in combination with software instructions
to
implement the invention. Thus, embodiments of the invention are not limited to
any
specific combination of hardware circuitry and software.
The term "computer-readable medium" as used herein refers to any medium that
participates in providing instructions to processor 2304 for execution. Such a
medium may
take many forms, including, but not limited to, non-volatile media, volatile
media, and
transmission media. Non-volatile media include, for example, optical or
magnetic disks,
such as storage device 2310. Volatile media include dynamic memory, such as
main
memory 2306. Transmission media include coaxial cables, copper wire, and fiber
optics,
including the wires that comprise bus 2302. Transmission media can also take
the form of
acoustic or light waves, such as those generated during radio frequency (RF)
and infrared
(IR) data communications. Common forms of computer-readable media include, for
example, floppy disk, a flexible disk, hard disk, magnetic tape, and other
magnetic
medium, a CD-ROM, DVD, any other optical medium, punch cards, paper tape, any
other
physical medium with patterns of holes, a RAM, a PROM, an EPROM, a
FLASHEPROM, any other memory chip or cartridge, a carrier wave as described
hereinafter, or any other medium from which a computer can read.
Various forms of computer-readable media may be involved in carrying one or
more sequences of one or more instructions to processor 2304 for execution.
For example,
the instructions may initially be borne on a magnetic disk of a remote
computer. The
remote computer can load the instructions into its dynamic memory and send the
instructions over a telephone line using a modem. A modem local to computer
system
2300 can receive the data on the telephone line and use an infrared
transmitter to convert
the data to an infrared signal. An infrared detector coupled to bus 2302 can
receive the
data carried in the infrared signal and place the data on bus 2302. Bus 2302
carries the
19

CA 02616364 2007-12-27
data to main memory 2306, from which processor 2304 retrieves and executes the
instructions. The instructions received by main memory 106 may optionally be
stored on
storage device 2310 either before or after execution by processor 2304.
Computer system 2300 also includes a communication interface 2318 coupled to
bus 2302. Communication interface 2318 provides a two-way data communication
coupling to a network link 2320 that is connected to a local network 2322. For
example,
communication interface 2318 may be an integrated services digital network
(ISDN) card
or a modem to provide a data communication connection to a corresponding type
of
telephone line. As another example, communication interface 2318 may be a
local area
network (LAN) card to provide a data communication connection to a compatible
LAN.
Wireless links may also be implemented. In any such implementation,
communication
interface 2318 sends and receives electrical, electromagnetic, or optical
signals that carry
digital data streams representing various type of information.
Network link 2320 typically provides data communication through one or more
networks to other data devices. For example, network link 2320 may provide a
connection
through local network 2322 to a host computer 2324 or to data equipment
operated by an
Internet Service Provider (ISP) 2326. ISP 2326 in turn provides data
communication
services through the worldwide packet data communication network, now commonly
referred to as the "Internet" 2328. Local network 2322 and Internet 2328 both
use
electrical electromagnetic, or optical signals that carry digital data
streams. The signals
through the various networks and the signals on network link 2320 and through
communication interface 2318, which carry the digital data to and from
computer system
2300, are exemplary forms of carrier waves transporting the information.
Computer system 2300 can send messages and receive data, including program
codes, through the network(s), network link 2320, and communication interface
2318. In
the Internet example, a server 2330 might transmit a requested code for an
application
program through Internet 2328, ISP 2326, local network 2322, and communication
interface 2318. In accordance with the invention, one such downloaded
application
provides for trading stock as described herein.
The received code may be executed by processor 2304 as it is received, and/or
stored in storage device 2310, or other non-volatile storage for later
execution. In this
manner, computer system 2300 may obtain an application code in the form of a
carrier
wave.

CA 02616364 2007-12-27
The present invention is subject to numerous modifications. The program can be
modified so that the user specifies how much money he is willing to spend to
purchase
shares of stock. Suitable programming routines can monitor the money available
to
purchase stock, and if the available money decreases to an amount below that
which is
needed to purchase the desired number of shares, the user has the option to
either not buy
the shares or have the program purchase the greatest number of shares
possible.
Another modification would be to have the program interface with at least one
commercially available data source on the Internet to download stocks that
either are the
"most up" in the first few minutes of trading, have the greatest price
movement together
with high trading volume, or have any other desirable indicators, or
combination of
indicators that the program could use to automatically select a particular
stock. The
program could have suitable programming to find the stock with the "best fit"
for the
request and automatically add it to the user's stock portfolio and trade it
based on the
parameters set forth on the graphical user interface.
A further modification can allow the program to suggest minimum "Points Up,"
"Points Down," "Percent Up," or "Percent Down" values in the trading
parameters to
decrease the number of potential trades. Suitable programming routines can
calculate the
difference in price between the bid and ask prices. A multiple of this
difference in prices
can be the suggested values. By suggesting this value, the trigger price will
not be between
the bid and ask prices when the program begins trading a stock.
Still another modification to the program allows the program to automatically
close
out a previously selected (by the user or other predefined computer assisted
parameter)
position that is currently being traded in order to use money obtained by
selling those
shares to purchase a preselected (with defined trading parameters) stock when
a user-
specified condition occurs. For example, a user could direct the program to
sell his shares
of Intel stock and buy shares of Microsoft stock when the value of Microsoft
stock
decreases to $40.00.
The program can also be modified to run hypothetical predefined trading
parameters. Such hypothetical predefined trading parameters may use historical
data of
price movements for a particular stock and compare the results against each
other as well
as the actual historical result. For instance, the changes in price for Intel
stock from last
year can be used for a hypothetical. The data obtained can be used to run the
program
while hold trigger price is selected. Next, the data can be run through the
program when
21

CA 02616364 2007-12-27
allow daily rent is selected and then when QuickFlip is selected for the same
period to see
which selection yielded a better return. The user can then compare the results
obtained to
the actual historical yield.
The program may be further modified to access more than one account
simultaneously for covering the cost of purchasing securities. For instance,
if a husband
and wife give each other permission for accessing each other's accounts,
(e.g., IRAs), the
program allows the user to use money from either account, or both accounts to
purchase a
stock. As an example, if the program determines that it needs to purchase two
shares of
stock costing a total of $50.00 for the husband's account, but his account
contains less
than $50.00, the program would automatically check the wife's account to
determine if her
account contained enough money to allow the purchase to take place. If there
is enough
money in the sum of the husband's and the wife's accounts, then the program
makes the
purchase of two shares of stock using the balance of the husband's account and
the
remaining difference from the wife's account. Alternatively, the entire sum
may be
subtracted from the wife's account if it contains enough money. If the sum of
both
accounts is insufficient to allow the purchase, the program aborts the order
and tries again
after a user-defined time period has elapsed.
Reference is now made to FIG. IIA, which is a flow chart illustrating how the
program of the present invention can be modified to access more than one
account
simultaneously for covering the cost of purchasing securities, as described in
the preceding
paragraph. After the program has determined 2502 that there is a need to buy
shares, it
determines 2504 whether an "Allow Buying from Multiple Accounts" (i.e., "Buy
From
Multiple Accounts") box 2506 is checked in an associated user interface pull-
down menu
(see FIG. 11B). If the box 2506 is not checked, then a trade is allowed 2522.
If the box
2506 is checked, the program determines 2508 whether there is a time delay
restriction
(i.e., the user-defined time period for trying to place the order again, as
discussed above)
entered by the user in associated time period boxes 2509 in the user interface
menu (see
FIG. 11 B).
If there is a time delay restriction, then the program determines 2510 whether
the
time delay has expired. If the time delay has not expired (i.e., the time
delay has not
passed), then the trade is denied 2512 and the program examines the next stock
2514. If
there is no time restriction at step 2508, or if the time delay has expired at
step 2510, then
the total cost of the trade is calculated 2516 by multiplying the number of
shares to be
22

CA 02616364 2007-12-27
traded by the price per share, and adding the broker's commission. If the
total cost of the
trade does not exceed the balance available in the husband's account at 2518,
then the
trade is allowed 2522. Otherwise, if the total cost of the trade exceeds the
funds available
in the husband's account, the program determines 2520 whether the total cost
of the trade
also exceeds the balance available in the wife's account. If the total cost of
the trade
exceeds the funds available in both accounts, then the trade is denied 2512
and the
program examines the next stock 2514. If the total cost of the trade does not
exceed the
wife's account balance at 2520, then the trade is allowed 2522.
Reference is now made to FIG. 12, which is a flow chart illustrating another
modification of the inventive program. In this modification, the program
purchases as
many shares as possible using funds from one account, if that account contains
insufficient
funds for purchasing a maximum number of shares. For instance, the program may
determine that two shares of stock are to be purchased for a total of $50.00,
but that the
husband's account only contains $35.00. The modified program purchases the
number of
shares that could be purchased from the husband's account (i.e., one share for
$25.00).
Still referring to FIG. 12, after the program has determined 2502 that there
is a
need to trade shares, it determines 2524 whether an associated "Buy As Many
Shares As
Possible" (i.e., "Buy As Many Shares As Possible If Funds Are Inadequate") box
2525 is
checked in the graphical user interface (see FIG. 1). If the box 2525 is not
checked, then
the trade is allowed 2538. If the box 2525 is checked, then the total cost of
one share is
calculated 2526 by adding the broker's commission to the price per share. If
the total cost
to buy the one share is greater than or equal to the available account balance
at step 2528,
then the trade is denied 2530 and the program examines 2532 the next stock. If
the total
cost to buy one share is less than the available account balance at step 2528,
then the total
cost of the trade is calculated 2534 by multiplying the number of shares to
buy by the price
per share, and adding the broker's commission. If the total cost of the trade
is less than the
available account balance at step 2536, then the trade is allowed 2538. If the
total cost of
the trade is greater than or equal to the available balance, then the
projected number of
shares to buy is calculated 2540 by dividing the available account balance by
the price per
share. Next, the projected total cost of shares is calculated 2542 by
multiplying the
projected number of shares to buy by the price per share. The projected cost
of a trade is
then calculated 2544 by adding the projected cost of shares and a broker's
commission.
The program then determines 2546 whether the total projected cost of the trade
is greater
23

CA 02616364 2007-12-27
than or equal to the available balance. If the total projected cost of the
trade is greater than
or equal to the available balance, the projected number of shares to buy is
subtracted by
one at step 2548 and steps 2542, 2544 and 2546 are repeated. If the total
projected cost of
the trade is less than the available balance, the trade is allowed 2538.
A problem can arise when the program buys shares in multiple stocks in a short
period of time (e.g., one minute). In such circumstances, the program can make
trades
faster than the brokerage may be able to fill and return confirmation of the
trades.
Therefore, it is possible that the program could send multiple orders to buy
stock that total
more money than the user has in their account, which creates unfilled orders.
To correct
this problem, the program may be modified to allow sell orders to be placed
first (i.e.,
before buy orders), so as to maximize the funds available for buying. Once
this step has
been completed, the program can continue to make purchases. The program then
determines the amount of money it needs to buy a stock and adds that amount to
the
broker's commission. The resulting total is subtracted from the available
money in the
user's account before sending a buy order to the broker. If it is determined
that the account
contains adequate money, then the buy order is sent to the broker. Subtracting
the total
cost of the trade from the user's account before sending the buy order to the
broker
verifies that the account balance is up-to-date, thereby assuring the
completion of
subsequent orders, regardless of how quickly they follow previous orders.
Reference is now made to FIG. 13, which is a flow chart illustrating how the
inventive program can be modified to overcome the problem of making trades
faster than
a brokerage may be able to fill and return confirmation of the trades, as
described in the
preceding paragraph. After the program has determined 2502 that there is a
need to buy
shares (i.e., to trade), the program code is set to start 2550 at the
beginning of the list of
stocks to trade. The program searches 2552 the list to find stocks in the long
position that
need to be sold, and sends the sell orders to the broker. Next, the program
returns 2554 to
the beginning of the list of stocks to be traded and searches the list to
determine 2556
whether the broker has confirmed all of the pending orders. If the broker has
not
confirmed all of the pending orders, then the program determines 2558 whether
the time
for receiving confirmations has expired. If the confirmation receipt time has
not expired,
the program returns to searching 2554 through the list of stocks from the
beginning. If the
confirmation receipt time has expired at step 2558, or if the broker has
confirmed all
orders at step 2556, then the program returns to searching 2560 the list of
stocks from the
24

CA 02616364 2007-12-27
beginning. If, after searching the list, the program determines 2562 that
there is no need to
buy shares of the stock, then other stocks are examined. If the program
determines 2562
that there is a need to buy shares of the stock, then the total cost of a
trade is calculated
2566 by multiplying the number of shares by the price per share, and adding
the broker's
commission. If the total cost of the trade exceeds the available account
balance at step
2568, then the trade is aborted and other stocks are examined. If the total
cost does not
exceed the available balance, then an order is sent 2570 to buy shares. The
projected
available account balance is calculated at 2572 by subtracting the total cost
of the trade
from the available account balance. Next, the program determines 2574 whether
this is
the last stock on the list to be traded. If it is not the last stock on the
list, then the program
proceeds with another trade starting at step 2562. Otherwise, the program
continues to
examine other stocks.
Multiple purchases of stock may occur within a few seconds of each other. If
the
user's account contains enough money to support these stock purchases, then
each of the
trades may be executed successfully. The program may be modified to complete
one or
some of the attempted stock purchases when the account does not contain enough
money.
More particularly, the program may be modified to allow the user to create a
hierarchy in
the list of stocks so that one stock may be assigned a higher priority in
being purchased
than others. In such circumstances, the program searches the list of stocks
for multiple
trades that are to be executed within a user- specified period of time. Any
such trades may
then be made according to the user- defined hierarchy.
Reference is now made to FIG. 14, which is a flow chart illustrating how the
inventive program may be modified to allow the user to create a hierarchy in
the list of
stocks, as described in the preceding paragraph. The user may rank 2576 the
stocks by
placing a number next to each stock being traded in a preferential order. The
ranking step
2576 may be performed after the program has determined 2502 that there is a
need to buy
shares, as illustrated in FIG. 14. The ranking step 2576 may also be performed
before the
program determines that there is a need to buy shares (i.e., the ranking step
2576 may be
performed before the step 2502). The program then determines 2578 whether a
"use
hierarchy" box 2580 is checked on the user interface screen (see FIG. 1). If
the use
hierarchy box 2580 is not checked, then trading proceeds 2582 without using
the hierarchy
created at step 2576. If the use hierarchy box 2580 is checked, a hierarchy
variable is
assigned 2584 to the stock with the highest hierarchy (n = 1). Next, the
program

CA 02616364 2007-12-27
determines 2586 whether a stock at hierarchy level "n" needs to be traded. If
the
hierarchy "n" stock needs to be traded, the program determines 2588 whether a
buy order
has been made. If there is an outstanding buy order, then the stock is bought
2590. If
there is no outstanding buy order at step 2588, then the program determines
2592 whether
there is an outstanding sell order. If there is no such sell order, then an
error message is
displayed 2594. If there is an outstanding sell order, then the stock is sold
2596.
If at step 2586, the hierarchy "n" stock does not need to be traded, or if at
either
steps 2590 or 2596, a stock was traded, then the program determines 2598
whether this is
the last stock that can be traded. If it is the last stock, the program
continues to monitor
stocks (see step 2560 in FIG. 13). Otherwise, the hierarchy proceeds to the
next lower
level (i.e., n is incremented) 2602 and at least some of steps 2586-2602 are
repeated.
Another modification to the inventive program allows the user to enter a
"maximum allowable bid/ask spread", which is the maximum allowable difference
between the bid price and the ask price. This maximum allowable spread
functions as a
safety feature by guarding against wide spreads between the bid price and the
ask price of
the stock that can occur during either the extended trading session hours or
regular trading
session hours because of the relatively small trading volume for that stock or
other
possible reasons. For example, a stock trading during regular hours may have a
bid price
of $75.49 and an ask price of $75.51, whereas during non-regular hours the bid
price could
be $0.01 and the ask price $1,000.00. The system must be able to recognize
that the wide
spread between the bid price and ask price are not truly representative of the
actual prices
that are used during normal trading hours. If the user chooses a maximum
allowable
bid/ask spread of $1.00, and the bid price and ask price are $0.01 and
$1,000.00,
respectively, the trade would not be allowed.
Reference is now made to FIG. 15A, which is a flow chart illustrating how the
program of the present invention can be modified to allow the user to enter a
maximum
allowable bid/ask spread, as described in the preceding paragraph. After the
program has
determined 2502 that there is a need to buy shares, it determines 2604 whether
an "Enable
Maximum Spread Protection" (i.e., "Use Bid/Ask Sentry") box 2606 is checked in
an
associated user interface menu (see FIG. 15B). If the box 2606 is not checked,
then the
trade is allowed 2608. If the box 2606 is checked, then the program determines
2610
whether a "Percentage Difference" (i.e., "Use Percentage") box 2612 is checked
in the
user interface menu (see FIG. 15B). If the box 2612 is checked, the percentage
difference
26

CA 02616364 2007-12-27
between the bid and ask prices is calculated 2614. The program then compares
2616 this
percentage difference to the maximum allowable bid/ask percentage spread
selected by the
user in an associated box 2617 in the user interface menu (see FIG. 15B). If
the
percentage difference is greater than the maximum allowable bid/ask percentage
spread,
the trade is denied 2618. If the percentage difference is less than the
maximum allowable
bid/ask percentage spread, the trade is allowed 2608.
If the use percentage box 2612 is not checked at step 2610, then the program
determines 2620 whether a "Number of Cents" (i.e., "Use Dollar Amount") box
2622 is
checked in the user interface menu (see FIG. 15B). If the use dollar amount
box 2622 is
not checked, then an error message is displayed 2624. If the use dollar amount
box 2622 is
checked, the program calculates 2626 a dollar difference between the bid price
and the ask
price. Next, the program compares 2628 the dollar difference calculated at
step 2626 to the
"maximum allowable bid/ask dollar spread" selected by the user in an
associated box 2627
in the user interface menu (see FIG. 15B). If the dollar difference is not
greater than the
maximum allowable bid/ask dollar spread, then the trade is allowed 2608. If
the dollar
difference is greater than the maximum allowable bid/ask dollar spread, then
the trade is
denied 2618 and the program examines 2619 the next stock.
The inventive program can be further modified to allow the user to select the
reference price to be a trading parameter other than the highest asking price.
More
particularly, the reference price may be set to monitor an absolute change or
a percentage
change in the bid, last, or any other suitable calculated price.
Another modification to the inventive program allows a user to specify a
moving
average time delay. For instance, instead of specifying an absolute trading
time delay
after a stock has been sold, a moving average of the stock price may be used
as a substitute
for the actual stock price. For example, the moving average may be calculated
every hour
such that when the moving average time delay is exceeded, the stock trade
takes place.
The user may override this feature.
The inventive program may also be modified such that when a stock is sold, the
price to repurchase the stock may be calculated to allow the repurchase price
to be equal to
a calculated percentage price above the actual sale price or a particular
dollar amount
above the actual sale price. Each of these prices could also trail the
descending stock price
to create a dynamic repurchase price. This method may also be used when the
user wants
27

CA 02616364 2007-12-27
to get into a short position in a stock and wants to trail the ascending stock
price in order
to get into a short position at the best possible price.
Another modification to the inventive program allows users to guard against
rapid
temporary dips in stock prices. There are times when a stock price decreases
rapidly over
a short period of time and then bounces back to a level similar to the price
it was prior to
the rapid decrease. This period of time could range from less than a second to
several
minutes to hours. This can be particularly detrimental to a stockholder who
has a sell order
in place that gets triggered. As an example, the stock price of XYZ is $100.00
at 1:00 PM
and the stockholder has a standing order to sell the stock if the price drops
below $95.00.
The stock price falls suddenly to $93.00 one minute later at 1:01 PM and then
rises to
$100.00 again at 1:02 PM due to normal stock market trading dynamics. To
prevent any
premature loss which such dynamics may cause, the program has a user-defined
input
where the user may create a sell order (or use the existing trigger price) to
sell the stock he
owns, should the stock price fall. The user may also enter a minimum time
period during
which the price of the stock must remain below the price of the sell order in
order to
activate the sell order and sell the stock. These guard features can override
other
parameters used in the program's decision-making, including any time delay
features.
This method could also be used when the user is in a short position and does
not want to
prematurely lose his position. In a short position, the program would protect
the user
against sudden price increases resulting in the activation of established buy
orders.
Reference is now made to FIG. 16A, which is a flow chart illustrating how the
program of the present invention may be modified to allow the user to guard
against rapid
temporary dips in stock prices, as described in the preceding paragraph. After
the program
has determined 2502 that there is a need to buy shares, it determines 2630
whether an
"Allow Protection From Large Price Changes in Short Periods of Time" (i.e.,
"Protect
Against Large Price Changes in Short Periods of Time") box 2632 is checked in
an
associated user interface pull-down menu (see FIG. 16B). If the box 2632 is
not checked,
then the trade is allowed 2634. If the box 2632 is checked, then the program
determines
2636 whether the QuickFlip option is active. If the QuickFlip option is
active, then the
program determines 2638 whether trading is in a long position. If trading is
in a long
position, then the program determines 2640 whether the stock price is less
than the trigger
price. If the stock price is greater than the trigger price, then the trade is
denied 2642 and
the program examines 2643 the next stock. If the stock price is less than the
trigger price,
28

CA 02616364 2007-12-27
then the program determines 2644 whether the stock price has remained less
than the
trigger price for a time longer than that entered by the user in associated
time period boxes
2645 in the user interface menu (see FIG. 16B). If the stock price has not
remained less
than the trigger price for the user-specified time, then the trade is denied
2642 and the
program examines 2643 the next stock. If the stock price has remained less
than the
trigger price for the user-specified time, then the trade is allowed 2646.
If the program determined 2638 that the stock is not in a long position, then
the
program determines 2648 whether the stock is in a short position. If the stock
is not in a
short position, then the trade is allowed 2650. If the stock is in a short
position, the
program determines 2652 whether the stock price is greater than the trigger
price. If the
stock price is not greater than the trigger price, the trade is denied 2654,
and the program
examines 2655 the next stock. If the stock price is greater than the trigger
price, then the
program determines 2656 whether the stock price has remained greater than the
trigger
price for longer than the user-defined time delay entered by the user in
associated time
period boxes 2645 (see FIG. 16B). If the stock price has not remained greater
than the
trigger price for the user-defined time delay, then the trade is denied 2654,
and the
program examines 2655 the next stock. If the stock price has remained greater
than the
trigger price for the user-defined time delay, the trade is allowed 2658.
If the program determined 2636 that the user did not enable the QuickFlip
option,
then the program determines 2660 whether the stock is in a long position. If
the stock is in
a long position, then the program determines 2662 whether the stock price is
less than the
trigger price. If the stock price is not less than the trigger price, then the
trade is denied
2664, and the program examines 2665 the next stock. If the stock price is less
than the
trigger price, the program determines 2666 whether the stock price has
remained below
the trigger price for longer than the user-specified period of time entered in
the time period
boxes 2645 (see FIG. 16B). If the stock price has not remained below the
trigger price for
longer than the user-specified period of time, then the trade is denied 2664,
and the
program examines 2665 the next stock. If the stock price has remained below
the trigger
price for longer than the user-specified period of time, then the trade is
allowed 2668.
If the program determined 2660 that the stock is not in a long position, then
the
program determines 2670 whether the stock is in a short position. If the stock
is not in a
short position, the trade is allowed 2672. If the stock is in a short
position, then the
program determines 2674 whether the stock price is greater than the trigger
price. If the
29

CA 02616364 2007-12-27
stock price is less than the trigger price, then the trade is denied 2676 and
the program
examines 2677 the next stock. If the stock price is greater than the trigger
price, then the
program determines 2678 whether the stock price has remained greater than the
trigger
price for longer than a user-specified time inputted in associated time period
boxes 2657
(see FIG. 16B). If the stock price has not remained greater than the trigger
price for longer
than the user-specified time, then the trade is denied 2676, and the program
examines
2677 the next stock. If the stock price has remained greater than the trigger
price for
longer than the user-specified time, then the trade is allowed 2680.
The inventive program may also be modified to minimize potential losses
associated with a trailing sell stop order. The modified program allows the
user to create a
sell order (a second sell stop) that reduces the potential loss of the
trailing sell stop
percentage. When a stockholder creates a trailing sell stop, a sell order is
established that
is a calculated by multiplying the current stock price by a user-defined
percentage (usually
less than 100%). As the stock price increases, the price of the trailing sell
stop also
increases because it is calculated as a fixed percentage lower than the
current stock price.
However, the value of a trailing sell stop never deceases. A problem can arise
in which
the price of a stock may fall immediately after purchase, wherein the user can
stand to lose
a fixed percentage of his investment. A way to lessen that loss is to allow
the user to
execute a second sell order (sell stop) that sells at a smaller percentage
loss of the original
trailing sell stop percentage. For example, the user can create a second sell
stop whereby
the stock would sell at a price that is only 3% or 4% below the purchase price
instead of an
original sell stop percentage of 7%. Conversely, when the user is trading
short, trailing
buy stops are substituted for trailing sell stops and a buy order is used in
place of a sell
order.
Reference is now made to FIG. 17, which is a flow chart illustrating how the
program of the present invention can be modified to allow a user to minimize
potential
losses associated with a trailing sell stop order, as described in the
preceding paragraph.
The program determines 2682 whether the stock is in a long position. If the
stock is in a
long position, the program determines 2684 whether the stock price is less
than or equal to
the sell stop. If the stock price is greater than the sell stop, then a trade
of the stock is
allowed 2686. If the stock price is less than or equal to the sell stock, then
the trade is
denied 2688. If the stock was determined 2682 not to be in a long position,
then the
program determines 2690 whether the stock is in a short position. If the stock
is not in a

CA 02616364 2007-12-27
short position, then the program examines 2692 the next stock. If the stock is
in a short
position, then the program determines 2694 whether the stock price is greater
than or equal
to the buy stop. If the stock price is greater than or equal to the buy stop,
then the trade is
denied 2698. If the stock price is less than the buy stop, then the trade is
allowed 2696.
A user may initiate an order to trade stock over the Internet to a broker, but
confirmation of the order does not return to the program. In such
circumstance, the
program may be modified to allow a user to enter a "maximum allowable time to
wait for
order confirmation." When that time is exceeded (i.e., a timeout), the program
sends a
request to the broker for a record of recent transactions, which the program
compares with
its own records to determine whether the broker has filled the order. If the
broker has
filled the order, then the program cancels its own standing order and uses the
broker's
record of the trade to finalize the transaction. If the broker's record
indicates that the
broker has not filled the order, then the program automatically resends the
order and waits
the "maximum allowable time to wait for order confirmation." The user may
select and
input a desired number of times that the program is to resend the failed order
before
stopping trade of that stock. The user may override this feature. The program
may be
further modified to check for a pending order (i.e., an order which was placed
and sent to
the broker but for which confirmation has not been received) before sending
out another
order for the same stock. This may apply to any type of order.
Reference is now made to FIG. 18A, which is a flow chart illustrating how the
program of the present invention may be modified to allow a user to enter a
maximum
allowable time to wait for confirmation of an order, as described in the
preceding
paragraph. The program determines 2700 whether there is a pending unfilled
order that
was sent to the broker. If there is no pending unfilled order, then the
program examines
2702 the next stock. If a "Use Maximum Allowable Time to Wait for Order
Confirmation" box 2705 is checked in an associated user interface pull-down
menu (see
FIG. 18B) and there is a pending unfilled order, then the program determines
2704
whether the time that has elapsed since the order was made (i.e., the "real
time") is greater
than a maximum allowable time to wait for an order confirmation, as selected
and entered
by a user. If the elapsed time is less than the maximum allowable order
confirmation wait
time, then the program enters 2706 a wait loop defined by the user in
associated time
period boxes 2707 (see FIG. 18B). If the elapsed time exceeds the maximum
allowable
time, then the program requests 2708 recent trade executions from the broker.
Next, the
31

CA 02616364 2007-12-27
program determines 2710 whether the broker has confirmed the receipt of a
pending
unfilled order. If the broker has confirmed receipt of the order, then the
program
determines 2712 whether the broker has confirmed filling the pending unfilled
order. If the
broker has confirmed filling the order, then the program uses data from the
broker's trade
execution list to complete 2714 the pending trade, and examines 2716 the next
stock. If the
pending unfilled trade was not confirmed by the broker at step 2712, then the
program
sends 2718 the following message to the user: "Since the broker could not fill
the order,
further user input will be needed. This stock will stop trading." The program
then
examines 2716 the next stock.
If the pending unfilled order was not confirmed as received by the broker at
step
2710, then the program determines 2720 whether a box 2721 entitled "Resend
Pending
Unfilled Order" is checked on the user interface menu (see FIG. 18B). If the
resend box
2721 is not checked, then the pending order is cancelled 2722 and the program
examines
2724 the next stock. If the resend box 2721 is checked, then the program
determines 2726
whether the number of times the user allowed orders to be resent, as selected
in an
associated pull-down box 2727 on the user interface (see FIG. 18B), has been
exceeded. If
this number has been exceeded, then the program examines 2724 the next stock.
If the
number has not been exceeded, the order is resent 2728 and the program
examines 2730
the next stock.
To ensure program reliability, the inventive program can be modified to impose
a
user-defined limit on the number of consecutive trades of the same type (i.e.,
buy, sell)
that it will allow without stopping trading for a particular stock. For
example, the user may
input the number of times the program is allowed to send consecutive "buys" or
"sells" to
the broker over a user-defined period of time. If the program gets stuck in a
loop, it cannot
repeatedly send the same "buy" or "sell" order within a user- defined period
of time
without stopping trade of that stock. The user may override this feature. This
feature can
be extended to a "Maximum Daily Trades," which does not restrict the type of
trades that
are monitored, and which is further discussed below.
Reference is now made to FIG. 19A, which is a flow chart illustrating how the
program of the present invention may be modified to allow a user to select and
impose a
limit on the number of consecutive trades of the same type without stopping
trading for a
particular stock, as described in the preceding paragraph. After the program
has
determined 2502 that there is a need to trade shares, the program determines
2732 whether
32

CA 02616364 2007-12-27
an "Allow Consecutive Trades of the Same Type" (i.e., "Don't Allow Consecutive
Trades
of the Same Type") box 2734 is checked in an associated user interface menu
(see FIG.
19B). If the box 2734 has not been checked, then the program determines 2736
whether
the present trade is an order to buy. If the trade is an order to buy, then it
is allowed 2738.
If the present trade is not an order to buy, then the program determines 2740
whether the
trade is an order to sell. If the trade is not an order to sell, then an error
message is
displayed 2742. If the trade is an order to sell, then it is allowed 2744.
If the box 2734 was checked at step 2732, then the program determines 2746
whether the trade is an order to buy. If the trade is a buy order, then the
program
determines 2748 whether the order number exceeds a user-defined limit of
consecutive
buy orders for this stock, as indicated in an associated pull-down menu box
2747 of the
user interface (see FIG. 19B). If the order number does not exceed the limit,
then the trade
is allowed 2750. If the order number exceeds the limit then the trade is
denied 2752 and
the program examines 2754 the next stock. If the trade is not an order to buy
at step 2746,
then the program determines 2756 whether the trade is an order to sell. If the
trade is not a
sell order, then an error message is displayed 2758 to the user. If the trade
is a sell order,
then the program determines 2760 whether the order number exceeds a user-
defined limit
of consecutive sell orders for this stock, as indicated in an associated pull-
down menu box
2761 of the user interface (see FIG. 19B). If the order number does not exceed
the limit,
then the trade is allowed 2762. If the order number exceeds the limit, the
trade is denied
2764 and the program examines 2754 the next stock.
Another modification to the inventive program allows it to maintain a "Running
Share Balance" (RSB), which defines a range of shares that act as lower and
upper
boundaries for the total number of shares that can be traded. Should any
trades be
attempted that would force the actual number of shares to be outside of the
RSB range, the
program would cancel the order. This range may be redefined in the graphical
user
interface. For example, if the user wants to buy 100 shares of stock symbol
XYZ and
trade it long, the program sets up a RSB for XYZ of zero shares to 100 shares.
If all goes
well when the shares are bought, the actual number of shares the user has is
100, which is
within the RSB range. If the shares are sold, the actual number of shares is
now zero,
which is also within the RSB range. If the user were using QuickFlip for
trading, then the
RSB would be -100 shares to +100 shares.
33

CA 02616364 2007-12-27
.,r
Reference is now made to FIG. 20, which is a flow chart illustrating the
initial
start-up procedure for setting up an RSB using the modified program of the
present
invention, as described in the preceding paragraph. After the program
initializes 2765 at
start-up for each stock, the program asks 2766 if the user wants to trade
long. If the input
is "yes", then the program sets 2768 the "Maximum Number of Shares Allowable"
to be
the number of shares which the user has initially set up to trade at the user
interface. Next,
the program sets 2770 the "Minimum Number of Shares Allowable" equal to zero.
The
RSB is then initialized 2772 to zero if there is no current position for a
stock to be traded.
If there is a position for the stock at step 2772, then the RSB is set to the
actual current
number of shares of stock held. The RSB is positive for long positions and
negative for
short positions.
If the user does not want to trade long at step 2766, then the program asks
2774 if
the user wants to trade short. If the input at the user interface is "yes",
then the program
sets 2776 the "Maximum Number of Shares Allowable" to zero. Next, the program
sets
2778 the "Minimum Number of Shares Allowable", which is calculated by
multiplying
the number of shares the user initially set up to trade in the user interface
by negative one
(i.e., -1). The program then initializes the RSB at step 2772, as described
above.
If the user does not want to trade short at step 2774, then the program asks
2780
the user whether the user wants to trade with the QuickFlip option enabled. If
the answer
is no, then an error message is displayed 2782. If the answer is yes, then the
program sets
2784 the "Maximum Number of Shares Allowable" to be the number of shares the
user
initially set up at the user interface. Next, the "Minimum Number of Shares
Allowable" is
calculated 2786 by multiplying the number of shares the user initially set up
to trade in the
user interface by negative one (i.e., -1). The program then initializes the
RSB at step 2772,
as described above.
Reference is now made to FIG. 21, which is a flow chart illustrating the run-
time
procedure during the use of the RSB feature illustrated in the flow chart of
FIG. 20. After
the program has determined 2502 that there is a need to trade shares, the
program
determines 2787 whether there is an order to buy or sell a stock. If there is
a buy order,
then the program determines 2788 whether the sum of the RSB and the number of
shares
to be bought is greater than the Maximum Number of Shares Allowable which was
set
during the start-up procedure. If the sum of the RSB and the number of shares
to be
bought is greater than the Maximum Number of Shares Allowable, then the trade
is denied
34

CA 02616364 2007-12-27
2790, and the program examines 2792 the next stock. If the sum of the RSB and
the
number of shares to be bought is less than the Maximum Number of Shares
Allowable,
then the trade is allowed 2794 and the RSB is re-set 2796 to be the previous
RSB plus the
number of shares bought.
If there is a sell order at step 2787, then the program determines 2798
whether the
RSB, after subtracting the number of shares to be sold ("the Adjusted RSB"),
is less than
the Minimum Number of Shares Allowable which was set during the start-up
procedure.
If the Adjusted RSB is less than the Minimum Number of Shares Allowable, then
the trade
is denied 2800 and the program examines 2802 the next stock. If the Adjusted
RSB is
greater than the Minimum Number of Shares Allowable, then the trade is allowed
2804,
and the RSB is re-set 2806 to be the Adjusted RSB.
In another modification of the program of the present invention briefly
described
above, the user may limit the number of trades made of a particular stock in
one day by
defining a maximum number of trades per day. Reference is now made to FIG.
22A,
which is a flow chart illustrating how the program of the present invention
may be
modified in this way, so as to allow a user to select and impose a limit on
the number of
trades made of a particular stock in one day. After the program has determined
2502 that
there is a need to trade shares, the program determines 2808 whether the order
will exceed
the user-defined limit of number of trades entered in a "Maximum Trades
Allowed Per
Day" pull-down box 2810 on an associated user interface menu (see FIG. 22B).
If the
order does not exceed the user-defined limit, then the trade is allowed 2812.
If the order
does exceed the user-defined limit, then the trade is denied 2814, and the
program
examines 2816 the next stock.
It is understood that the above-described embodiments and modifications have
been presented for the purposes of illustration and description of the present
invention.
Alternative embodiments and further modifications may be devised by those of
ordinary
skill in the art. Such alternatives, as well as others which skill or fancy
may suggest, are
considered to fall within the scope of the current invention, which is solely
defined by the
claims appended hereto.

Representative Drawing
A single figure which represents the drawing illustrating the invention.
Administrative Status

2024-08-01:As part of the Next Generation Patents (NGP) transition, the Canadian Patents Database (CPD) now contains a more detailed Event History, which replicates the Event Log of our new back-office solution.

Please note that "Inactive:" events refers to events no longer in use in our new back-office solution.

For a clearer understanding of the status of the application/patent presented on this page, the site Disclaimer , as well as the definitions for Patent , Event History , Maintenance Fee  and Payment History  should be consulted.

Event History

Description Date
Application Not Reinstated by Deadline 2012-12-27
Time Limit for Reversal Expired 2012-12-27
Inactive: IPC deactivated 2012-01-07
Inactive: IPC expired 2012-01-01
Inactive: First IPC from PCS 2012-01-01
Inactive: IPC from PCS 2012-01-01
Deemed Abandoned - Failure to Respond to Maintenance Fee Notice 2011-12-28
Inactive: Office letter 2010-08-31
Inactive: Corrective payment - Application fee 2010-08-27
Inactive: Entity size changed 2010-08-27
Extension of Time to Top-up Small Entity Fees Requirements Determined Compliant 2010-08-27
Inactive: Correspondence - Formalities 2010-05-07
Small Entity Declaration Request Received 2010-05-07
Small Entity Declaration Determined Compliant 2010-05-07
Inactive: Office letter 2010-03-09
Small Entity Declaration Determined Compliant 2009-07-28
Small Entity Declaration Request Received 2009-07-28
Inactive: Office letter 2009-04-28
Inactive: Correspondence - Formalities 2008-11-03
Application Published (Open to Public Inspection) 2008-06-29
Inactive: Cover page published 2008-06-29
Inactive: First IPC assigned 2008-05-01
Inactive: IPC assigned 2008-05-01
Application Received - Regular National 2008-02-13
Inactive: Filing certificate - No RFE (English) 2008-02-13
Small Entity Declaration Determined Compliant 2007-12-27

Abandonment History

Abandonment Date Reason Reinstatement Date
2011-12-28

Maintenance Fee

The last payment was received on 2010-12-22

Note : If the full payment has not been received on or before the date indicated, a further fee may be required which may be one of the following

  • the reinstatement fee;
  • the late payment fee; or
  • additional fee to reverse deemed expiry.

Patent fees are adjusted on the 1st of January every year. The amounts above are the current amounts if received by December 31 of the current year.
Please refer to the CIPO Patent Fees web page to see all current fee amounts.

Fee History

Fee Type Anniversary Year Due Date Paid Date
Application fee - standard 2007-12-27
MF (application, 2nd anniv.) - standard 02 2009-12-29 2009-12-29
MF (application, 3rd anniv.) - standard 03 2010-12-29 2010-12-22
Owners on Record

Note: Records showing the ownership history in alphabetical order.

Current Owners on Record
THOMAS STARK
Past Owners on Record
None
Past Owners that do not appear in the "Owners on Record" listing will appear in other documentation within the application.
Documents

To view selected files, please enter reCAPTCHA code :



To view images, click a link in the Document Description column. To download the documents, select one or more checkboxes in the first column and then click the "Download Selected in PDF format (Zip Archive)" or the "Download Selected as Single PDF" button.

List of published and non-published patent-specific documents on the CPD .

If you have any difficulty accessing content, you can call the Client Service Centre at 1-866-997-1936 or send them an e-mail at CIPO Client Service Centre.


Document
Description 
Date
(yyyy-mm-dd) 
Number of pages   Size of Image (KB) 
Description 2007-12-26 35 2,095
Claims 2007-12-26 3 128
Abstract 2007-12-26 1 30
Representative drawing 2008-06-02 1 17
Drawings 2007-12-26 35 1,012
Filing Certificate (English) 2008-02-12 1 160
Reminder of maintenance fee due 2009-08-30 1 113
Courtesy - Abandonment Letter (Maintenance Fee) 2012-02-21 1 172
Reminder - Request for Examination 2012-08-27 1 118
Correspondence 2008-11-02 1 37
Correspondence 2009-04-20 1 22
Correspondence 2009-07-27 3 252
Correspondence 2010-03-08 1 15
Correspondence 2010-05-06 1 44
Correspondence 2010-08-26 1 15