Introduction to Neural Networks

Parent Previous Next

What is a neural network (NN)?


A neural network (NN) is an interconnected group of artificial neurons that uses a mathematical or computational model for information processing based on a connectionistic approach to computation. In most cases an NN is an adaptive system that changes its structure based on external or internal information that flows through the network. (Wikipedia)


In more practical terms neural networks are non-linear statistical data modeling or decision making tools. They can be used to model complex relationships between inputs and outputs or to find patterns in data.


The Neural Networks in this toolbox learn relationships between the input data supplied and the target output data using a learning algorithm called Back Propagation. There are many different learning algorithms for neural networks but the most affective one for trading is backpropagation because of the slower and more stable learning. This leads to less curve fitting and better out of sample performance.

Neural networks consist of an input layer, one or more hidden layers and an output layer.



In each layer you can have as many neurons as you want. The more hidden layers and neurons in those layers a neural network has, the more complicated a function they can model. Having too many neurons in a neural network has many pitfalls the biggest of which is curve fitting where the neural network simply memorizes the desired outputs for certain inputs. This is something that must be avoided at all costs as out of sample performance will be far worse than in sample performance.


Limitations?


At first it may seem that you can simply plug in any kind of input into the neural network and expect them to find an accurate prediction for your chosen output data. This is not true and one must understand that neural networks are not magical tools and garbage in garbage out rules apply. To use neural networks affectively one must understand that if there is a relationship between the inputs and the outputs supplied then they will find a relationship between the two, so it is up to the user to find the right inputs and outputs.


Neural networks only understand data between 0 and 1. So how can we predict price data which has arbitrarily large values between more then 1 or less then 0? The answer lies in data normalization and by default the neural networks in the toolbox normalize and scale the data presented to it. If you are creating a prediction for a the close of a stock this can cause some problems because in the beginning the stock may have traded for $0.10 and now it is worth more then $30 dollars. The neural networks will happily normalize this data and give you a prediction but this prediction will not be very reliable because the price data is all over the place. It would be far better to use the percent change of the Close instead of the actual Close price as the percent change will most likely have a uniform distribution and provide a far better and more reliable prediction of the price.