Powerpoint Presentation

Download Report

Transcript Powerpoint Presentation

A Neural Network Approach to
Predicting Stock Performance
John Piefer
ECE/CS 539
Project Presentation
Presentation Outline
• Introduction
• Problem Description
• Neural Network Design
– Data Format
– Program Description (code in Appendix B of report)
– Default Network Parameters
• Selected Results
• Discussion
– Limitations of my model
– Comparison with model from www.stock100.com
• Conclusion
Introduction
• Predicting stock performance is a very large
and profitable area of study
• Many companies have developed stock
predictors based on neural networks
• This technique has proven successful in
aiding the decisions of investors
• Can give an edge to beginning investors
who don’t have a lifetime of experience
Problem Description
•
•
•
•
Collect a sufficient amount of historical stock data
Using this data, train a neural network
Once trained, the neural network can be used to predict stock behavior
Need to some way to gauge value of results – I will compare with
www.stock100.com as well as compare with what actually happened
• Advantages
– Neural network can be trained with a very large amount of data.
Years, decades, even centuries
– Able to consider a “lifetime” worth of data when making a
prediction
– Completely unbiased
• Disadvantages
– No way to predict unexpected factors, i.e. natural disaster, legal
problems, etc.
Neural Network Design
• I will use back propagation learning on a MLP with one hidden layer
– This decision is based on previous success
– Due to time restraints, fairly easy to use
• This will be approached as an approximation problem, but with
classification in mind
– I will predict an exact value, but we really care about whether the
network predicts the general behavior correctly because that is how we
make or lose money
– I believe the actual output will give a better idea of what to expect. If
it is close to 0, that doesn’t tell us much. But if it is +5, that gives a
better indication that it will increase – the network is more “sure”
• Training will be done using matlab programs, including a modified version
of ‘bpappro.m’ written by professor Yu Hen Hu
• Network will have one output: the predicted value for the next day
Data Format
• Stock data for various companies will be downloaded from
the S&P 500 data page
– I will write a C++ program (datagen.cpp) to put the data into
matrix form to be used by matlab (See Appendix A of report for
code)
• Only the stock price will be considered
• The data will be input as the change in stock price from
open to close
– Ex: $5 open, $6 close  +1 is the actual value used
– Ex: $5 open, $4 close  -1 is the actual value used
• A certain number of samples will be used as inputs, e.g. 20
samples, user can specify in datagen.cpp
Data Format, cont’d
• The target value will be the last column,
corresponding to the change in price the next day
• Target values will become inputs in subsequent
samples as follows
– Ex: [+1 -1 +0.5 -2]  -2 is target
– next sample is [-1 +0.5 -2 +3]
– next sample is [+0.5 –2 +3 …] etc
• This allows for more training samples (apx. 250
for one year worth of data)
Default Network Parameters
• These are the default network parameters,
determined by running experiments
Hidden Neurons (H): 18
Learning Rate (alpha): 0.4
Momentum Constant (mom): 0.75
Max Epochs (nepoch): 2000
Epoch Size (K): 24
Program Description – pred.m
• Built on ‘bpappro.m’ by Yu Hen Hu
• Trains neural network and predicts the next day(s), giving an exact
value for each prediction
– Usage: [Predicted,flagpct,flag1,flag2] = pred(Stockdata, H, alpha, mom, nepoch, K,
days)
– Predicted: vector of the predictions - [day1 day2 …]
– flagpct: the percent of times it predicted the wrong behavior on the training set
– flag1: the number of “type 1 flags” – predicted an increase but it actually decreased
the next day
– flag2: the number of “type 2 flags” – predicted a decrease but it actually increased
the next day
– Stockdata: the matrix generated by datagen.cpp
– days: the number of days to predict (default: 1)
– All other intputs are the network parameters specified on the previous page
• Also outputs some statistics about the training set
Program Description – sp.m
• Driver program that calls ‘pred’
• User inputs the number of trials to run, sp
calls pred that many times, each time
getting a new prediction
• Outputs some statistics about all the trials to
be used for making the decision
– Also important to look at results from
individual trials for any odd behavior
Selected Results
• Walmart (actual next day: -1.375)
–
–
–
–
–
Over 50 trials, I predicted increases 32 times
Overall average of +0.6727
Type 1 flags: 12.3065% of the time
Type 2 flags: 6.2137% of the time
Discussion
• I would have recommended investing based on these results – would
have lost money
• AT&T Corp (actual next day: +1.875)
–
–
–
–
–
Over 40 trials, I predicted increases 29 times
Overall average of +0.8563
Type 1 flags: 9.5959% of the time
Type 2 flags: 8.4884% of the time
Discussion
• I would have recommended investing based on these results – would
have made money
Selected Results, cont’d
• America Online (actual next day: -1.125)
– Over 50 trials, I predicted increases 25 times and decreases 25
times
– Overall average value of +0.6429
– Type 1 flags: 5.2618% of the time
– Type 2 flags: 8.051% of the time
• This is a very good overall classification rate (86.6872%)
– Discussion
• Not consistent enough to make a decision
• No majority of predicted increases or decreases
• Overall value is close to 0, could easily drop below 0
• See report for six more companies and more detailed analysis of results
• Also see Appendix A of report for sample graphs for each company
Discussion
• Overall results
– Predictions were generally not uniform over all trials, less
consistent means the models are not very “sure” based on data
• This leads to more risky decisions
– Shows a lot of promise - good classification rates (predicted
increases/decreases correctly)
– Showed a tendency to predict more increases, even when actual
behavior was a decrease (see report for more discussion on this)
• Limitations of my model
– Only considers stock price, and only one year’s worth of data
– Only one output, maybe better to predict more than one day ahead
• Comaprison with www.stock100.com
– Walmart: both predicted increase, actually decreased
– AOL: I said uncertain, they predicted increase
– AT&T: both predicted increase, actually increased
Conclusion
• My model shows promise, but needs improvement
before becoming an effective aid
– Needs more data, possibly more types of data
• No human or computer can perfectly predict the
volatile stock market
• Under “normal” conditions, in most cases, a good
neural network will outperform most other current
stock market predictors and be a very worthwhile,
and potentially profitable aid to investors
• Should be used as an aid only!