My experience with SOINN
For those who are not familiar with SOINN, I’ll say that this is a relatively new type of neural network called Self Organizing Incremental Neural Network - a self-organizing, growing neural network.
Engaged in algorithmic trading, for quite a long time I built trading robots based on classical indicators and technical analysis methods. Along the way, while reading various articles, I came across references to neural networks that traders use to varying degrees of success for trading. This topic fascinated me.
The breath away from the very possibility of using AI in trade.
I re-read everything I could find on neural networks, then installed the NeuroSolution package, and at the same time TraidingSolution, and began to choose a villa on the Cote d'Azur ...
However, everything was not as simple and fast as I imagined. Firstly, I ran into the problem of presenting data for the network. It’s not even a matter of how to scale them, but what kind of data to represent the network so that it can use them to find the points that interest me on the price change chart.
By and large, this is the first and most important task that must be solved before using any network. Otherwise, we will encounter the classic situation - “garbage at the entrance - garbage at the exit”.
On the way to solving this problem, I had to try a large number of different ways and types of data representation for the network. Ultimately, such a method was found. I will not go into details, I can only say that to prepare the data for the network I had to write a rather complicated program that was in no way connected with the implementation of the network itself.
Next went training. Classic networks were used on a small number of neurons. In the end, I came across the fact that the new data presented for training the network pushes the old.
And then I came across an article by Japanese / Chinese scientists about SOINN. Moreover, the article indicated that on the Hasegawa laboratory website the code for an example implementation of a single-layer SOINN in C ++ was posted. I rushed to this site, but by then the example had already been removed from there.
But praise Runet! On a robotics site, one of our enthusiasts posted a cleaned-up SOINN example from Hasegawa, and even his own example of use.
I really liked the idea of a self-developing network, which is not “dumb” as I gain new knowledge. I took as a basis the laid out library and wrote my SOINN implementation, “sharpened” for my tasks.
The first tests were encouraging. I used the method of teaching the network "with a teacher." The network very quickly (compared to classical networks) studied and found patterns of interest to me in the source data.
I note that SOINN is a network that, by definition, is designed to classify (cluster) data. Therefore, from previously solved tasks of the data prediction (predicting the direction of the price chart), I refused. Now the problem of pattern recognition, or finding the right patterns, was being solved. Immediately make a reservation that we are not talking about recognizing the shape of the graph. The pattern that the network is looking for is the aggregate of a rather large set of data characterizing the most successful points for selling or buying.
However, the SOINN example, which was laid out by the authors, contained a variant of a single-layer SOINN, although the classic SOINN should contain two layers. In addition, apparently to simplify the example, some parts of the algorithm described in its mathematical description were not implemented in the code. Therefore, I had to supplement some modules with my own functions and implement a two-layer learning algorithm.
Currently, a trading robot based on trained SOINN is at the completion stage. Preliminary results are encouraging.
I cannot but note the usefulness and completeness of the article on SOINN from zkolenko. Having found it earlier, I would have saved a lot of time studying SOINN and everything connected with it.
Engaged in algorithmic trading, for quite a long time I built trading robots based on classical indicators and technical analysis methods. Along the way, while reading various articles, I came across references to neural networks that traders use to varying degrees of success for trading. This topic fascinated me.
The breath away from the very possibility of using AI in trade.
I re-read everything I could find on neural networks, then installed the NeuroSolution package, and at the same time TraidingSolution, and began to choose a villa on the Cote d'Azur ...
However, everything was not as simple and fast as I imagined. Firstly, I ran into the problem of presenting data for the network. It’s not even a matter of how to scale them, but what kind of data to represent the network so that it can use them to find the points that interest me on the price change chart.
By and large, this is the first and most important task that must be solved before using any network. Otherwise, we will encounter the classic situation - “garbage at the entrance - garbage at the exit”.
On the way to solving this problem, I had to try a large number of different ways and types of data representation for the network. Ultimately, such a method was found. I will not go into details, I can only say that to prepare the data for the network I had to write a rather complicated program that was in no way connected with the implementation of the network itself.
Next went training. Classic networks were used on a small number of neurons. In the end, I came across the fact that the new data presented for training the network pushes the old.
And then I came across an article by Japanese / Chinese scientists about SOINN. Moreover, the article indicated that on the Hasegawa laboratory website the code for an example implementation of a single-layer SOINN in C ++ was posted. I rushed to this site, but by then the example had already been removed from there.
But praise Runet! On a robotics site, one of our enthusiasts posted a cleaned-up SOINN example from Hasegawa, and even his own example of use.
I really liked the idea of a self-developing network, which is not “dumb” as I gain new knowledge. I took as a basis the laid out library and wrote my SOINN implementation, “sharpened” for my tasks.
The first tests were encouraging. I used the method of teaching the network "with a teacher." The network very quickly (compared to classical networks) studied and found patterns of interest to me in the source data.
I note that SOINN is a network that, by definition, is designed to classify (cluster) data. Therefore, from previously solved tasks of the data prediction (predicting the direction of the price chart), I refused. Now the problem of pattern recognition, or finding the right patterns, was being solved. Immediately make a reservation that we are not talking about recognizing the shape of the graph. The pattern that the network is looking for is the aggregate of a rather large set of data characterizing the most successful points for selling or buying.
However, the SOINN example, which was laid out by the authors, contained a variant of a single-layer SOINN, although the classic SOINN should contain two layers. In addition, apparently to simplify the example, some parts of the algorithm described in its mathematical description were not implemented in the code. Therefore, I had to supplement some modules with my own functions and implement a two-layer learning algorithm.
Currently, a trading robot based on trained SOINN is at the completion stage. Preliminary results are encouraging.
I cannot but note the usefulness and completeness of the article on SOINN from zkolenko. Having found it earlier, I would have saved a lot of time studying SOINN and everything connected with it.