textfiles/programming/AI/stockpre.pro

265 lines
15 KiB
Prolog
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

1-17-90
Predicting the Stock Market with Neural Networks
by Jeannette Lawrence
Choosing a stock to buy and deciding when to buy or sell can be a
complicated and time-consuming activity. Investment experts study the
market for years to learn to see the patterns and make accurate
predictions. They use a combination of pattern recognition and their
experience from observing cause-and-effect: "I've seen this scenario
before and I know what usually happens." The experts have of various
methods to choose a good stock to buy, sometimes involving many
calculations before making any decisions. Not all experts agree as to
what information is important in making a determination.
There are also more than 250 programs available to assist you in making
decisions. Traditionally, these computer programs have used
mathematical methods such as linear regression and moving averages to
make predictions. Unfortunately, these methods cannot take anything
subjective into consideration and financial trends are often affected by
situations that are not easily reduced to equations (for example, how
foreign relations can affect the price of crude oil).
An ideal computer tool would look at the statistics as well as the
subjective aspects and give you financial advice, such as whether or not
a stock is a good buy. It would operate in real-time, and be inexpensive
and easy to use. Now there is a computing tool that accomplishes all
that: a neural network. You can purchase a neural network program that
runs on a PC for less than $200.
Neural networks may be the best computer approach to predicting the
stock market yet. They learn to predict based upon experience, just
like the experts. They are shown many examples of what has happened in
the past and they find the patterns and trends without formulas, rules
or complex programming.
Neural networks are a new kind of computing tool which simulate the
brain's structure and operation. The brain is composed of hundreds of
billions of nerve cells (neurons) which have multitudinous connections
to each other. Recently biologists have learned that it is the way the
cells are connected which provides us with intelligence, rather than
what's in the cells. Neural networks mimic many of the brain's most
powerful abilities, including pattern recognition, association and the
ability to generalize by observing data.
In this article you'll learn how neural networks operate and get a look
at a sample neural networks which predicts stock peaks and lows. Other
common uses for neural network include corporate bond evaluation,
medical diagnostic systems, insurance claim evaluation, sports event
predictions, loan risk evaluation, and business analysis and decision
making.
Life as a Neural Network
A new neural network starts out with a "blank mind". The network is
taught about a specific problem, such as predicting a stock's price,
using a technique called training. Training a neural network is like
teaching a small child. To teach a child to recognize the letters of
the alphabet, you might first show him a picture of the letter "A" and
ask him what letter he's looking at. If he doesn't guess right, you
tell him he is looking at an "A". Next, you could show him a "B" and
repeat the process. You would do this for all the letters of the
alphabet, then start over. Eventually he will learn to recognize all of
the letters correctly.
The network is shown some historical data and it guesses what the result
is. When the network is wrong, it is corrected. The next time it sees
that data, it will guess more accurately. The network is shown lots of
data, over and over until is learns all the data and results. Like a
person, a trained neural network can generalize, making a reasonable
guess from data which is different from any it has seen before.
Just how does correcting the network cause it to learn? It's all in the
connections between the neurons. The connections allow the neurons to
communicate with each other and form answers. When the network makes a
wrong guess, an adjustment is made to the way neurons are connected,
thus it is able to learn. With most commercially available neural
network programs (such as BrainMaker, the one used in the stock
predicting example) training adjustments are performed automatically by
the neural network program itself; all you have to do is provide the
data and the expected results for training.
A Neural Network Creates Its Own Working Model
When choosing a stock to buy, the experts do not agree as to what
information is important. The performance of some stocks are tied to
the strength of the economy and may react strongly to government
economic news releases. Some experts believe the price to earning ratio
(P/E) is most important. Some say "free" cash-flow (operating cash flow
minus expenditures) has more effect on stock prices than P/E ratios.
Others believe in the share price-to-book value ratio. This is probably
meaningful only when comparing stocks within the same industry. Still
others think that you should compare the P/E, yield, and price-to-book
value of the potential buy to Standard & Poor Industrials. Another
method is to use the price-to-net working capital ratio.
With a neural network, you don't need to worry about which theory to
follow or perform endless calculations for comparison. You can include
information for any or all the theories plus some subjective item such
as the quality of foreign affairs. The network will figure out what
information correlates to what. It creates its own internal
representation of the problem during training based upon whatever
information you decide to give it. People rarely use all the
information available because it's just too much to keep track of, but
neural networks do not get overwhelmed by detail. If some piece of
information you provide turns out to be unimportant, the network will
just learn to ignore it. Mathematical programs are not this flexible.
Designing a Neural Network
Designing a neural network is a simple process. The first thing you do
is decide what you want the network to tell you and what information it
will use to derive the answer. For example, suppose you want to make a
network which will predict what the Dollar to Yen ratio will be next week.
We will use a very simple design just to summarize the process. Let's
choose some indicators upon which the network will base its result:
* The change in London Gold from 2 weeks ago to 1 week ago (LG2_1)
* The change in London Gold from 1 week ago to today (LG1_0)
* Yen/Dollar exchange rate from 2 weeks ago to 1 week ago (YD2_1)
* Yen/Dollar exchange rate from 1 week ago to today (YD1_0)
* Deutche Mark/Dollar exchange from 2 weeks ago to 1 week ago (DM2_1)
* Deutche Mark/Dollar exchange from 1 week ago to today (DM1_0)
* Sterling/Dollar exchange from 2 weeks ago to 1 week ago (SD2_1)
* Sterling/Dollar exchange from 1 week ago to today (SD1_0)
* Dow Jones Average from 2 weeks ago to 1 week ago (D2_1)
* Dow Jones Average from 1 week ago to today (D1_0)
* New York Stock Exchange Volume from 2 weeks ago to 1 week ago (NYSE2_1)
* New York Stock Exchange Volume from 1 week ago to today (NYSE1_0)
The output will be the change in the Yen/Dollar exchange rate between
this week and the next:
* Yen/Dollar exchange rate next week (YD_out)
You cannot teach a neural network trends by simply presenting the values
for each type of input, one fact after another, in order of time. You
cannot tell it that fact #1 is month 1, fact #2 is month 2, etc. It
will not pick up the trend. That is why we are showing it historical
information.
Now we must collect our historical data. An easy way to do this is to
look through back issues of the Wall Street Journal, or get the
information from a financial database service. The data goes into a
file that the neural network program reads in.
In addition you can use traditional mathematical methods with neural
networks. For example, to a trend-analyzing network you can add
information based upon moving averages. Creating moving averages helps
build networks that depend on current numbers and past numbers, but
ignore extremely short small changes. For example, assume you want to
predict how the price of a stock will move, but in a general sort of way
in a bigger time frame. Based on what the average stock price has been
from week to week during this month and last, the network can predict
what the average stock price is going to be each week for the next
month. NetMaker (a data manipulation program provided with BrainMaker)
automates this task for you.
After you have your data ready (including the output), BrainMaker
program will create and train the new network for you. With some
programs, you can watch the training on your screen, edit and test the
network using pop-up menus, print out the results, graph trends, etc.
You can set the level of accuracy that you need from the network. After
the network is trained, you can give the network current information and
get a prediction of next week's change in the Yen/Dollar ratio.
The network would look like this:
Inputs: Output:
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
London Gold change 2 weeks-1 week <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ <20>
London Gold 1 week -today <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ <20>
Yen/Dollar exchange rate change 2 weeks-1 week <20><><EFBFBD><EFBFBD><EFBFBD>Ĵ <20>
Yen/Dollar exchange rate 1 week -today <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ <20>
Deutche Mark/Dollar exchange change 2 weeks-1 week <20>Ĵ The <20>
Deutche Mark/Dollar exchange 1 week -today <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ Neural <20><><EFBFBD> Yen/Dollar
Sterling/Dollar exchange change 2 weeks-1 week <20><><EFBFBD><EFBFBD><EFBFBD>Ĵ Network <20> change one
Sterling/Dollar exchange 1 week -today <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ <20> week later
Dow Jones Average change 2 weeks-1 week <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ <20>
Dow Jones Average 1 week -today <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ <20>
NY Stock Exchange Volume change 2 weeks-1 week <20><><EFBFBD><EFBFBD><EFBFBD>Ĵ <20>
NY Stock Exchange Volume 1 week -today <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ <20>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Each type of input information is assigned to a certain input neuron.
Each output (result) is assigned an output neuron. What's in the box in
between? This is where all the internal, or hidden, neurons are kept.
This is the area where connections are modified during training by the
program.
A Stock Predicting Application
Once you have decided on a stock to buy, you need to know when to buy
it, and then later when to sell it. This application pinpoints when a
particular stock has reached either a long-term peak or a long-term low
in value.
Some-company has used BrainMaker to create a series of trained neural
networks for people interested in investing in the stock market. Their
system determines when a particular stock price is as high, or as low,
as it will be for a long time. The investor can then buy those stocks
which are ready to rise and sell (or sell short) stocks which have
reached their peak.
A separate network was trained for each stock being predicted. Each of
the ten current networks was trained with price data taken over the last
two years. Long-term highs and lows for training were chosen by the
resident experts. Once trained, the network detected 70% to 90% of the
actual highs and lows when it was shown data it had never seen before.
This compares very favorably with the 50% results which standard
technical analysis had been providing. In addition, intermediate highs
and lows less extreme than the ones the network had been trained to spot
were also found. In each of these intermediate cases, the appropriate
neurons fired to indicate the presence of a high or low, but they did
not fire as strongly as when indicating a long-term high or low. There
were very few cases of the network mistakenly predicting a high or low
when not even an intermediate high or low was present. In the words of
a Brainmaker user, "you're making more money with it than without it...
It's definitely picking up the trends, which in the stock market is all
you need."
Each network is organized as follows: the closing prices of a particular
stock for the twenty days up to the day you're interested in are the
inputs (the information the network uses to make its prediction). The
outputs indicate if the stock is near a high or low, and they're
organized as follows: there are thirteen outputs, each one corresponding
to a different circumstance. One output indicates that the stock is not
nearing either a high or a low; this is by far the most common case.
Six of the outputs correspond to a stock nearing a high; one of these
means the high is today; the others indicate a high in one to five days
from now, respectively. Similarly, there are six outputs indicating
that the stock is nearing a low, in either one to five days, or today.
The output neuron corresponding to today's condition is assigned a value
of 1; the other 12 are given value 0.
Some-company currently has networks trained to locate trends in AT&T,
Mobil, Boeing, and seven other major corporations. As their service
grows, they plan to expand to the entire Standard & Poor's 100, and
eventually the S & P 500.
This is a particularly well-designed network because it utilizes a real
neural network strength, namely noticing hard-to-find patterns in large
amounts of data, without requiring a high degree of numerical accuracy.
Summary
People have successfully designed and trained neural networks to predict
the stock market. Neural networks function by finding patterns in the
examples which you provide. These patterns become a part of the network
during training. You only need to provide the data upon which you want
the network to base its predictions. Neural networks operate at
lightning speed, are inexpensive and run on PC's.
The network described above was created with the BrainMaker Neural
Network Software System. BrainMaker is available from California
Scientific Software, 10141 Evening Star Dr. #6, Grass Valley, CA
95945-9051, and includes a 255-page "Introduction to Neural Networks"
and a 422-page User's Guide. The price is $195.00.
Note: Some-company has asked to have their name withheld except by
special permission.