In this chapter, the structure of the system will be analyzed, as well as all its subsystems and how they work. This system should be completely independent of the person. With regards to goals, the system provides for the collection of the specified data with subsequent processing and analysis, verification of the received test models, creation of a strategy and trading. All system algorithms and those blocks that are necessary for analysis are implemented in Python 2.7 using various specialized libraries. The database in which the archiving and storage of historical data is implemented is implemented on SQL Server 2016. The user part of the application is implemented using C#.

The system can be conditionally divided into three subsystems (see Figure 3): client application, analysis subsystem, and data archiving subsystem. Figure 3. General scheme of the system. The client application is responsible for receiving requests from the user, executing user commands, displaying relevant data on the created models, their tests, trading strategies, and displaying the constructed charts. The analysis subsystem contains the most important elements from the point of view of analysis. This block is responsible for working with data: loading and processing; for setting model parameters and building these models; testing the constructed models on specialized data sets; checking the quality of models by evaluating the predicted values; formation of strategies based on certain rules. This subsystem consists of several blocks, each of which implements a particular function.

The last subsystem is related to data archiving. This subsystem is supportive for the system in the sense that all data and tests that are carried out are stored in a special database. Moreover, this database stores the values of all quality criteria of all models for each test, which makes it possible to evaluate the stability of a particular model. If you understand the structure of the system in more detail, then a number of blocks can be distinguished in the system (see Figure 4), namely, a block for working with data, a block for working with a database, a block for visualization or working with charts, a trading block, an analytical block, a block evaluation of the quality of work, block of interaction with the user. Let's analyze the essence of the work of each block in more detail. Figure 4. Components of the system.

2.1.2 Data Acquisition Block The first block that was listed in the list of all components of the system is the data acquisition block. The presence of this block is a catalyst for the operation of the system, because without data, there will be nothing to analyze and it will not be possible to build models. The initial data that the system receives is in the form of a two-dimensional array, where the columns are the date, the opening price, the closing price, the highest and lowest prices for the trading day, the adjusted price and volume, and the rows are the days and values on that day. The number of rows depends on the time period for which the data is requested. Target structures can be divided into two categories: the first are structures that contain values in real terms, and the second are in percentage terms.

The structures of the first group have the following structure: index - date, the first value - volume, the second value - one of 5 types of prices (opening, closing, highest, lowest, adjusted close), then there are values of this price indicator for several previous days. The second category of target structures has a similar structure to the first, but all values are expressed as a percentage of the previous value. Moreover, the second column has a column reflecting the direction of price movement compared to the previous day. The operation algorithm of this subsystem is quite transparent and simple (see Figure 5). First, the user enters the name of the stock of interest, the beginning and end of the period on the basis of which the model will be built. This information is requested on the site. Then the received data is processed and transformed for further analysis.

Figure 5. Algorithm for obtaining and processing data. In the description of this block, it is worth including another question about why this particular service was chosen to access data. One of the reasons in favor of Yahoo was the fact that it is one of the most popular services, which has earned the trust of many professional financiers for its accuracy and stability. yahoo has never had any access issues during the whole project. The data that was received always had a clear structure. I would also like to note the high speed of processing a request and receiving data, compared to other resources.