Neural network inputs; multiple vs. single neural networks

1 view (last 30 days)
Hi,
I am building a neural network for stock selection. So far, my approach has been to have a single NN to which I feed data from all stocks. In that case, the NN doesn't know the data is from different stocks.
I am considering these other approaches:
1. Somehow telling the NN when it is being fed a different stock (I'm not sure how I would do this, but I could for example have a number for each stock and then use a radial basis network which would allow it to detect each stock number. It seems unworkable with thousands of stocks though.) I wonder if there is a way to do this?
2. Running multiple NN's on groups of stocks depending on stock characteristics. For example, I could group stocks based on industry, based on earnings growth rate or based on return on capital. Or, I could group stocks based on the known effectiveness of certain inputs. For example, if I know an indicator is highly predictive for a certain set of stocks and not another set of stocks, I could have one NN for the set for which it is highly predictive and another for where it is not. (Note, I asked a related question on the subject of input effectiveness a few minutes ago.)
3. I could sort of combine #1 and #2 above, sending the NN a number or indicator based on the "grouping" of a stock. Grouping would be similar to #2 above.
The idea of running a separate NN for every stock occurred to me, but doesn't seem like a good one to me as the idea is to generalize across stocks and time periods. If I use specific stocks for each NN, the output will be very biased by that stock's particular history as opposed to being representative of what to expect in the future (at least, that is my opinion until now).
If anybody has ideas as to what might make the most sense, I would greatly appreciate. Thanks in advance.
Regards, Mike

Accepted Answer

Greg Heath
Greg Heath on 3 Aug 2014
There are several basic types of neural nets on which to concentrate. All are well described in the MATLAB documentation:
1. Unsupervised Clustering): Divide unlabeled input data into groups
a. Fixed number of groups (lookfor kmeans)
b. Self determining number of groups
2. Supervised regression and/or function-fitting (lookfor fitnet):
-Use labeled input/target pairs to design nets that will estimate
target-like outputs given similar inputs
3. classification/pattern-recognition (e.g., lookfor patternnet)
-Use labeled input/class pairs to design nets that will assign
unlabeled inputs to labeled classes
4. timeseries (lookfor narxnet, narnet and/or timedelaynet)
- Use past time-series (time-ordered data) to predict future series
I can see using all of them. Search the NEWSGROUP and ANSWERS using
neural stocks
Hope this is helpful.
Thank you for formally accepting my answer
Greg
  2 Comments
Greg Heath
Greg Heath on 3 Aug 2014
Before creating nonlinear models, it is best to try to get a good understanding of the data. For example:
1. Create characteristic input and output vectors for each stock
2. Normalize characteristics to mitigate scaling biases of importance.
3. Detect, modify or remove outliers (plots help).
4. Cluster to see which stocks naturally belong together
5. Identify very strong and very weak correlations
6. Use PCA(inputs) and/or PLS(inputs+outputs) to reduce dimensionality
7. Obtain significant lags of auto and cross correlation functions.
8. Investigate linear models first.

Sign in to comment.

More Answers (0)

Categories

Find more on Sequence and Numeric Feature Data Workflows in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!