>Neural nets


Finally, a discovery

After months of reading through articles online and searching for books in the public library, I finally hit upon a book that explains neural nets to me in a manner that I understand and can implement. It explained things to me in a clear manner, and I finally got it. This book is “Artificial Intelligence” by Michael Negnevitsky, and I recommend it to anyone interested in learning about implementing neural nets.

Another book that I found and bought online is “Building neural networks” by David M. Skapura. This book too explains how to build neural nets and doesn’t get too far into the jargon that I was facing up against in the other books that I read. Other books would dive into the math and not give me a clear picture as to how to implement the nets, while these 2 (Particularly the former) do. My thanks to both the authors.

Progress is easy when you have a map

And quick, too. In the last 2 weeks since discovering and assimilating only parts of these 2 books, I have a working neural net for prediction of the change in price 5 periods into the future. The model that I’ve made is a basic (2-2-1) backpropagation network. Its not complicated at all (Of course, nothing is complicated once you understand it). I also know how much training to do and how to avoid overtraining of the model through the use of a validation set in addition to a training set. This is very exciting, and I’m happy about my progress. The months of searching are beginning to pay off.

Using the statistical profiler of SBCL, I can see that the code that I’ve written so far is quite efficient. This makes me happy too. Right now I am considering adding more nodes to the hidden layer and progressively testing the performance of the network against the validation set to ensure that I know when to stop. I should also consider adding another input vector in the hopes that it increases the performance. One step at a time.

Looking for additional help

Now that I know I’m not barking up a wrong tree, I feel comfortable with finding people who are able to help me with what I’m doing. I’ve spoken to a few people, but the response has not been great. I’ve been reading the 21st-century edition of Napoleon Hill’s “Think and grow rich”. Its a personal success book, and Mr. Hill states that a “definite purpose” is one of the major determinants of success in life. I have been looking for a passion for the past 1.5 years, and in the last <2 months, I've found it. I've finally embraced the fact that I like programming and that it is my calling in life. Lisp is a great programming language, and it allows me to express myself happily. I was thinking of learning Python about a month ago, mainly for the plethora of built-in functionality it offers (That, as I see it, is its main advantage over Lisp). I've decided against it now. I can do anything I want in Lisp, and I will move on to something else only when it is necessary to do so.

I should get back to topic, though. Having a definite purpose and a plan to acheive it makes me feel like I’m the master of my own fate. It makes me feel powerful. I like this. Now if only I could get people to piggy-back upon my purpose while they search for their own, and help me in the meantime. I know people who have the ability to help me, if not the interest. The lack of help doesn’t stop me by any means; it only slows me down. 2 heads are better than 1, as they say.

The best thing I can think of right now is to keep talking to my friends about it in the hopes that they come aboard. Eventually, I hope to be able to make enough money to pay them to partake in this venture.

Current status

As the net stands right now, the average error in predicting the closing price 5 periods in the future is 44 pips, while the greatest error is 272 pips. This is when the average of the ATR(20) in the validation set is 27 pips (& 35 pips in the training set).

Using another part of the data (Farther away from the training and validation sets) I find that the average error in prediction is 48 pips. The average ATR(20) for this region of time is 20 pips, and the average per-period movement is 19 pips.

Now we have a clear definition of what the goal is. Currently the ratio of average-error-in-prediction compared to average-movement-per-period is high (= 48/19 = 2.53). The lower this ratio is, the better our predictions are.

Leave a Reply