* [1]1. Introduction * [2]2. Related works + [3]2.1. Cryptocurrency. Definition of the concept + [4]2.2. Price formation in the cryptocurrency market + [5]2.3. Arbitration. Features of Arbitration in the cryptocurrency market o [6]2.3.1. Spatial arbitration o [7]2.3.2. Intra-exchange arbitration o [8]2.3.3. Statistical arbitration + [9]2.4. Automated trading. Overview of existing trading systems o [10]2.4.1. Arby.Trade o [11]2.4.2. Blackbird o [12]2.4.3. Gekko o [13]2.4.4. Zenbot * [14]3. Material and methods + [15]3.1. System analysis of the research object + [16]3.2. Software tools for solving the problem o [17]3.2.1. Comparison of Node.js and Python o [18]3.2.2. Using auxiliary modules o [19]3.2.3. Atom development environment o [20]3.2.4. Postman testing software o [21]3.2.5. Technical characteristics of the selected development software tools * [22]4. Experiments, results and discussion + [23]4.1. Description of the created software application + [24]4.2. User manual * [25]5. Conclusions * [26]6. References Intelligent System for Arbitrage Situations Searching in the Cryptocurrency Market Roman Levus 1 , Andrii Berko 1 , Lyubomyr Chyrun 2 , Valentyna Panasyuk 3 and Mykhailo Hrubel 4 1 Lviv Polytechnic National University, S. Bandera street, 12, Lviv, 79013, Ukraine 2 Ivan Franko National University of Lviv, University street, 1, Lviv, 79000, Ukraine 3 West Ukrainian National University, Lvivska Street, 11, Ternopil, 46004, Ukraine 4 Hetman Petro Sahaidachnyi National Army Academy, Heroes of Maidan Street, 32, Lviv, 79012, Ukraine Abstract This paper contains research work and development details of an information system for finding and executing arbitrage opportunities in the cryptocurrency market. In particular, the cryptocurrencies concept and its functional aspects are reviewed. Furthermore, the factors regarding price formation, the idea of arbitrage and its methods in the cryptocurrency market are presented. During the design of the system described in this paper, a comparative analysis of analogue systems and systems similar to the designed one is performed. The advantages of those systems have been taken into consideration during the software development of the projected system and the found solutions of identified problems of such systems. The most optimal type of system using the methods of system analysis is determined for the designed one among the chosen analogues, for which a tree of goals was built as well as to highlight the main goals and specific actions for each stage of system development to fully perform, selected evaluation criteria, etc. Data-flow diagrams have been created to describe the primary process that runs in the system and smaller ones, which do a necessary job for the successful functioning of the immediate circle and the system in general. Also, a diagram of the hierarchy of tasks is built. Before the direct development of the software of the designed system, a comparative analysis is performed to determine which programming language is best suited for such system, necessary frameworks and libraries to use, integrated development environment and other software to be used in the development of the system. As a result of the development of the system, a client-server architecture application running on the Node.js platform is created. The main task that solves the developed software is finding and executing arbitrage opportunities in the cryptocurrency market among a wide range of popular cryptocurrency exchanges. The server component of the system performs data processing and computing of all the necessary tasks. The system is managed via a web page or bot in Telegram messenger. The paper contains user instructions regarding the usage of the developed software, its primary purpose, available functionality, logical structure, features, etc. Keywords 1 The cryptocurrency market, information system, arbitrage opportunity, arbitrage transaction, arbitrage situation, projected strategy, software solution, API key, cryptocurrency exchange, telegram messenger, web application, hierarchy analysis method MoMLeT+DS 2021: 3 rd International Workshop on Modern Machine Learning Technologies and Data Science, June 5, 2021, Lviv-Shatsk, Ukraine EMAIL: romanlevus@gmail.com (R. Levus); Andrii.Y.Berko@lpnu.ua (A. Berko); Lyubomyr.Chyrun@lnu.edu.ua (L. Chyrun); v.panasiuk@tneu.edu.ua (V. Panasyuk); m.g.grybel@gmail.com (M. Hrubel) ORCID: 0000-0002-4855-1472 (R. Levus); 0000-0001-6756-5661 (A. Berko); 0000-0002-9448-1751 (L. Chyrun); 0000-0002-5133-6431 (V. Panasyuk); 0000-0002-4820-6935 (M. Hrubel)  2021 Copyright for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0). CEUR Workshop Proceedings (CEUR-WS.org) 1. Introduction Arbitrage is a logical sequence of actions on a particular asset, leading to an increase in its number. For example, this happens if the same asset is traded at different prices in different markets. The concept of arbitration is far from new and has existed for an extended period. Banks and other financial institutions worldwide have been using this practice in the stock markets, Forex and others for decades. The cryptocurrency market is no exception to the existence of arbitrage opportunities. Features of the functioning of cryptocurrencies, the youth of the market, and many trading platforms make it particularly attractive for financial speculators and traders. Binance, Coinbase, Kraken, Bittrex are just a few of the list of popular cryptocurrency exchanges that are unique platforms for trading cryptocurrencies. These exchanges provide their users with the opportunity to apply a software solution for conducting trading. Each user has access to the API, which is a set of methods for interacting with the exchange. Thus, the trader can receive and analyze data from the business and conduct various operations in automatic mode, having compiled and programmed an algorithm for performing actions. Therefore, it is possible and appropriate to create an information system that can identify arbitrage opportunities in the cryptocurrency market and conduct them independently. With the rapid development and popularization of cryptocurrencies in recent years, many new stories of virtual money have appeared, which has led to the emergence of a large number of cryptocurrency exchanges. The phenomenon of decentralization of cryptocurrencies, the lack of proper regulation by the state, high volatility, etc. – all these factors create challenging conditions for the existence of a single price and, accordingly, form many arbitrage opportunities in the cryptocurrency market. The purpose of the work is to create an information system that identifies arbitrage opportunities in the cryptocurrency market among a wide range of exchanges and has the functionality to automatically conduct such transactions with the userʼs consent and report on completed transactions. The task of the work is to analyze literature and other sources closely related to the subject, disclose the main concepts and terms; describe arbitration methods, in particular in the cryptocurrency market; conduct a comparative analysis of existing trading systems, highlight the main advantages and disadvantages, implement their strengths and solve the identified problems during the development of a software solution for the system. The object of research is the phenomenon of Arbitration in the cryptocurrency market. The subject of the study is methods of finding, conducting and eliminating arbitrage opportunities in the cryptocurrency market. The practical significance of the results consists of applying data obtained based on collection and analysis by the system for information or management purposes with the possibility of automatic arbitration transactions by the user. 2. Related works 2.1. Cryptocurrency. Definition of the concept Throughout its history, money had changed a lot and has gone through many stages of development: starting with its very appearance, when its function was performed by various kinds of items: shells, precious metals or stones and the banal conduct of barter, exchange of one product for another, to a significant displacement of cash from circulation and the transition to contactless payments. Today, the rapid development of Information Technologies has given an impetus to the next stage of changing money and even the beginning of transforming the economic system as a whole. One reason for such significant changes is the emergence of electronic money and cryptocurrencies [1]. The first cryptocurrency to be born is Bitcoin. The concept of cryptocurrency is usually defined as a virtual currency that works on encryption methods for generating monetary units, verifying its transfer. It does not depend on a central management body, such as a bank [2]. One of the main features of cryptocurrency is its decentralization due to blockchain technology and the absence of the need to attract third parties to conduct transactions since the network ensures equality of all participants (peer- to-peer technology) [3]. However, cryptocurrency cannot be classified as a classic category of money due to the lack of legal status in many countries [4]. In October 2008, a developer or group of developers (unknown for sure) under the pseudonym Satoshi Nakamoto presented the so-called White Paper, which described the concept of the Bitcoin network and aspects and principles of its functioning. In early 2009, the first version of the source code of this system was published on the Internet and subsequently, the first transaction was successfully carried out. The transfer of funds in the network is carried out using special software and the principle of asymmetric encryption. The public key is the wallet address, a generated string of characters and numbers that does not require input identification data from the user, thus ensuring anonymity. Thanks to blockchain technology, transaction transparency is also provided: you can track all wallet operations, but it is pretty challenging to establish a connection with the owner. The number of new address generations per user is unlimited. Transactions on the network are irreversible [5]. With the advent of the first cryptocurrency, other projects soon appeared. Since the source code of the Bitcoin network is freely available, some are almost a complete copy of the so-called fork. However, some cryptocurrencies are radically different in architecture. An example of such a network can be considered Ethereum, which occupies the second line among the popularity and capitalization of the cryptocurrency market. Ethereum is an open software platform based on blockchain technology that allows you to create decentralized applications, implement so-called smart contracts, which is a specific contract, the execution, modification or termination of which is carried out only with the help of pre- defined software tools. Such instructions are created using the Solidity programming language, similar to JavaScript [6]. 2.2. Price formation in the cryptocurrency market Before the appearance of money in the form in which it exists today, without performing the function of a "measure" of value, the value of goods was determined in specific equivalent values of another commodity. Today, the purchasing power of money depends on the specifics of the sphere of circulation, where it is used and can be exchanged for authentic goods. The principle of supply and demand determines the price of a particular cryptocurrency and any other physical or virtual asset. Pricing is affected by the need for people to exchange cryptocurrencies for other goods. Since virtual assets do not directly depend on a particular countryʼs economic processes or policies, a significant factor affecting its price is the interest of people. Public interest in new, decentralized money and contactless payment is growing every year. Distrust of the government, political instability, significant loss of purchasing power of fiat currencies against the background of economic crises – all these factors force people to look for an alternative and diversify their assets, particularly by investing in cryptocurrencies [7]. Attractive features of many cryptocurrencies, in particular Bitcoin, for ordinary users are conducting transactions on the network without intermediaries and a limited number of units in circulation, which means the almost complete absence of inflation. The maximum number of coins is 21,000,000. The first cryptocurrency is mined by mining – a process in which the user uses specific equipment to solve a cryptographic equation. For this, he receives a reward in the form of a certain amount of BTC. Every four years, the value of the prize drops, and mining becomes more complex, which in theory should stimulate the growth of the price of cryptocurrencies. The direct factor for price formation is the mining of Bitcoin itself (the cost of equipment and its efficiency, electricity, reward value, etc.). So, by analogy with precious metals and minerals, the first cryptocurrency is also characterized by a limited resource. Thus, Bitcoin is a kind of "digital gold"[8]. Just over a year after the launch of the Bitcoin network, the first recorded exchange of cryptocurrency for a physical commodity took place: this happened on May 22, 2010, in Florida, USA. A local programmer paid 10,000 BTC for two pizzas. This event later went down in history under the name "Bitcoin Pizza Day" [9]. Today, cryptocurrencies are already accepted by thousands of establishments and services worldwide. Their number is growing every day: restaurants, cafes, gas stations, electronics stores and online game purchases, hosting services, mobile phone replenishment, and so on. There are already thousands of cryptocurrency conversion points and terminals in the world that can be used to purchase cryptocurrency for cash. In particular, many of them are already located on the territory of Ukraine. Also, payment card systems are developing that work like regular bank cards, converting from the userʼs account the amount in the selected cryptocurrency, equivalent to the payment value, into fiat money, allowing you to pay in any store where regular bank cards are accepted [10]. The beginning of the formation of the cryptocurrency market began with the appearance of the first cryptocurrency – Bitcoin. Although it was difficult to estimate its value at first due to the then low prevalence, the price did not exceed a few cents. Bitcoin experienced significant changes in the price a year after the networkʼs launch, with the appearance of the first cryptocurrency exchange – Mt.Gox. And already in early 2011, the cost of the first cryptocurrency crossed the mark of 1 US dollar. Over time, Bitcoin has become widespread, and since 2012, more and more retailers have started implementing cryptocurrency payments as an alternative payment method. At the end of 2013, the price of 1 BTC crossed the 1,000$ mark for the first time, thanks to the popularization of Bitcoin in China, the opening of new exchanges and the beginning of cryptocurrency mining on an industrial scale. The cryptocurrency market has experienced many ups and downs in its history. In the beginning, the cryptocurrency industry was subjected to numerous attacks that significantly affected pricing. So, in 2014, due to the lack of a proper security system and proper management, the most popular exchange at that time, Mt.Gox, filed for bankruptcy due to the theft of about 850,000 BTC. This is the most significant cryptocurrency theft in history. Users are still trying to get their funds back today. After these events, the price for 1 Bitcoin dropped to 580$ and continued its prolonged fall for almost two years to 315$. In early 2017, the price of Bitcoin returned to 1,000$. The emergence and development of new projects, such as Litecoin, Ripple, Ethereum and others, the boom of the so-called initial coin offering (English ICO – initial coin offering) - a form of attracting initial investment in a project similar to the initial public offer of shares on the stock market, contributed to another rapid growth in the capitalization of the cryptocurrency market. Over the years, interest in cryptocurrencies has grown not only among ordinary users but also among financial institutions worldwide. A significant event was introducing Bitcoin futures contracts on the Chicago Mercantile Exchange, which made it possible to attract traders from traditional stock and Forex markets to the cryptocurrency market and significantly increase trading volumes. In December 2017, the cryptocurrency marketʼs capitalization reached a peak, and the price for 1 Bitcoin reached almost 20,000$ – its historical maximum [11]. Today, more and more countries are trying to legally regulate and legalize working with cryptocurrencies and their legal status, and financial institutions from different parts of the world are developing and implementing systems that would enable ordinary users to invest in cryptocurrencies and use them. The emergence of hundreds of cryptocurrency exchanges, margin trading, futures, derivatives and other trading instruments indicates an increase in public interest in cryptocurrencies. In recent years, there has been a correlation with stock indexes of securities, which means the arrival of investors and traders from traditional markets. The cryptocurrency marketʼs capitalization as of the end of April 2020 is about 265 billion US dollars [12]. Projects of state-owned digital currencies are emerging, and testing of the national cryptocurrency has even begun in China, which indicates the inevitable transformation of the global economic system using digital money. 2.3. Arbitration. Features of Arbitration in the cryptocurrency market Eliminating the price difference with profit extraction by performing a specific sequence of actions that start and end with the same asset, which, if completed, leads to its increase at the end of this sequence, is called arbitrage. For example, if we buy share A for 10$ on exchange X and sell it on exchange Y for.10.30$, we will get 0.30$ in profit, excluding commissions [13]. The concept of arbitrage is not new, and various types of price discrepancies exist in all financial markets, including stock exchanges and currency markets. This trading principle has been used for many years by banks and other financial institutions around the world. For example, currency arbitrage involves buying and selling currency pairs from different brokers to take advantage of the price difference to make a profit [14]. The cryptocurrency market is no exception to Arbitration, where these discrepancies are even more significant compared to traditional markets. Today, there are about 4,000 cryptocurrencies. A side effect of this was a similar increase in the number of cryptocurrency exchanges. Binance, Coinbase, Kraken, Bitfinex, Bittrex are just a few of the many popular businesses that exist. Low level of state regulation, decentralization, a large number of speculators seeking to make money, high volatility – all these factors create difficult conditions for the existence of a single price and make arbitration in the cryptocurrency market particularly attractive [15]. Arbitrage in the cryptocurrency market almost entirely works on the same principles as in traditional markets, but with a different asset. Significant price discrepancies between exchanges, on a large scale, often occur against the background of political instability. So, in August 2019, in Argentina, against the backdrop of a sharp drop in the national currency, the price for 1 Bitcoin was 4% higher than on international platforms in terms of US dollars. But even if you remove extreme economic and political events, price differences among exchanges occur more often than they seem. There are many reasons for arbitrage situations in the cryptocurrency market: from a sharp collapse or increase in prices on one of the exchanges, the price reaction to the news, to the so-called "fat-finger error", when a user accidentally entered incorrect data from the keyboard or mistakenly clicked the mouse, which led to the execution of an order at an undesirable price or volume [16]. Operations related to crypto fraud trading are conducted on unique platforms – cryptocurrency exchanges (or crypto exchanges). A crypto exchange operates similarly to a currency or stock exchange [17]. Discussions introduce the concept of a currency pair – a pair consisting of two currencies that are traded against each other. The first currency is usually called the base currency, and the second – the quota [18]. For example, if you want to buy BTC for USD, you need to find the BTC/USD pair. In addition to cryptocurrency/fiat currency pairs, cryptocurrency/cryptocurrency pairs are also popular on most exchanges, which are often even more in demand than fiat money pairs due to certain features of this market. All user requests fall into the so-called "exchange glass" - a list of recommendations for buying and selling a particular cryptocurrency, organized by price level. Such a list lists the amount of a particular cryptocurrency that is sold or offered for purchase at each price, forming the depth of the market [19]. The critical feature of cryptocurrency exchanges is that users can easily quickly access the vast majority of them. At minimal cost, transfer the purchased cryptocurrency to their wallet for storage, thereby not depending on third parties or another exchange, which brokers and currency exchanges or stock exchanges cannot boast of, due to high commissions, lack of decentralization of traded assets, a fixed work schedule and a long transaction time. Arbitration methods that can be applied in the cryptocurrency market are presented in the paragraphs below. 2.3.1. Spatial arbitration This technique involves extracting profit from the difference in prices for buying and selling a particular cryptocurrency traded on two different exchanges. For example, if exchange a can offer BTC for 6,500$ and the price on sale B reaches.6,700$, a trader can take advantage of this 200$ by buying on exchange A and selling on exchange B – effectively moving funds from one platform to another. Given the degree of decentralization in cryptocurrencies, such disagreements may occur more often than you might think. Do not forget about the commission for conducting trading operations and transaction costs for withdrawing cryptocurrency from exchanges, the time of cryptocurrency transfer is also essential. The longer it is, the more risky the opportunity to make a profit is [20]. An example of performing spatial arbitration is shown in Fig. 1. Figure 1: Example of spatial arbitration 2.3.2. Intra-exchange arbitration A special feature of this method is that it occurs within only one exchange. Its principle is to conduct a sequence of trading operations starting and ending with the same currency. For example, in three markets traded on the exchange, with different quotas, the following rates are: BTC/USD = 6726.94, ETH/USD = 141.58 and ETH/BTC = 0.0214. We sell 1 BTC for USD, get 6726.94 USD, for the received USD, we buy 47.5133 ETH and sell ETH for BTC – get 1.0167 BTC, the profit is 0.0167 BTC. This type of arbitration is also called "Triangular" (Fig. 2) [21]. Figure 2: Example of intra-exchange arbitration It is worth noting that this method of arbitration requires speedy data collection and analysis and, accordingly, the execution of all necessary trading operations. It is also essential to take into account trading commissions and types of order execution. To find such arbitrage situations, various algorithms are often used to find the shortest path in a weighted graph, from one vertex to all the others. 2.3.3. Statistical arbitration This method of arbitrage is considered a high-tech strategy, usually involving mathematical modelling. This type of arbitration is based on maintaining a historical ratio between the value of identical or similar assets on different trading platforms. This method does not require the transfer of cryptocurrency from one exchange to another, thereby reducing the time for performing arbitrage operations by several times, and works as follows: when the price difference between two exchanges is higher than their historical ratio, two functions will be performed simultaneously: selling on the first exchange and buying on the second, and vice versa – when the price difference is lower than the historical ratio. When the price ratio approaches its typical values, positions are closed. Using this method, market risks are almost nonexistent since the aggregate function consists of multidirectional parts on the same asset, which protects against unpredictable market fluctuations. The only risk of such a strategy is a change in the historical ratio value between instruments [22]. It should be noted that arbitration in the cryptocurrency market is a rather risky type of earnings, which depends on financial literacy, user skills in working with cryptocurrency, experience, speed of action, and often even banal luck [23]. 2.4. Automated trading. Overview of existing trading systems At the end of the last century, with the development of Information Technologies, the sphere of trading on the stock and foreign exchange markets also underwent computerization. As a result, almost all trading operations are carried out using electronic means: personal computers, tablets, smartphones, etc. Today, the user can perform all trading operations using the web interface of a broker or exchange, use special trading terminals with extensive functionality, or develop their software that will serve the algorithm of actions specified by the user without his participation. At the beginning of the XXI century, automated trading, or the so-called "robot trading", began to develop rapidly. The Trader no longer has to monitor changes in the price and sit on the charts for days because it is possible to implement his strategy using unique trading systems. Such automated systems collect data from exchanges. Then, according to pre-set instructions, they perform a specific algorithm that serves the entire sequence of actions instead of the user, according to pre-set instructions [24]. The advantages of this approach to trading are the ability to obtain and analyze a massive amount of data and check many market conditions in seconds, which is beyond the power of a person. At the same time, the risk of manual errors when performing trading operations is also reduced. Most importantly, this eliminates the emotional impact on the trading process, which often leads to losses. Thus, algorithmic trading provides a systematic and unchanging approach to active trading, compared to a person. Today, many automated trading systems allow users to create their algorithms for trading to make a profit. Such procedures cover the performance of a specific sequence of actions, depending on the results of volume calculations using complex mathematical formulas and initial rapid receipt and processing of the necessary information. In particular, the use of such a system will be effective in finding and executing arbitrage opportunities in the cryptocurrency market. Access to the required data and the ability to automate trading operations is provided by cryptocurrency exchanges using the API (Application Programming Interface) – an application software interface that is a set of methods for working with the business [25]. Several popular trading systems for the cryptocurrency market are presented in the paragraphs below. 2.4.1. Arby.Trade Search service for arbitrage situations in the cryptocurrency market. It helps beginners and advanced users find the most profitable and reliable arbitrage opportunities. The system collects up-to-date and necessary search data online (prices, trading volumes, technical characteristics of currencies, etc.) from the most popular crypto exchanges, analyzes them and offers users the most favourable options for arbitrage transactions. The result of the system is displayed in the form of a table in which the user can set their parameters for the search – profit, transaction volume, transaction time, degree of reliability of the operation, as well as develop a list of exchanges where you need to search for transactions. The service provides search for spatial and intra-exchange arbitrage situations. The system is implemented as a web service that offers cross-platform performance. It is possible to send notifications about the discovery of arbitrage opportunities. Conducting arbitrage situations automatically and the possibility of implementing your trading algorithms is absent [26]. The main service page is shown in Fig. 3. Figure 3: Arby.Trade interface 2.4.2. Blackbird A trading system is written in C++ that detects arbitrage situations on more than five crypto exchanges and automatically executes them. The systemʼs main task is to find and eliminate price differences in the market by selling cryptocurrencies on one exchange and buying on another. A low- market risk strategy is used, similar to statistical arbitrage, which involves trading activities involving parallel purchases and sales on two different exchanges without the need to transfer cryptocurrency from business to exchange. There is a minimal graphical interface. The main number of instructions from the user comes via the command line. [27]. 2.4.3. Gekko A free and open-source trading system is that supports several popular cryptocurrency exchanges. It is written in JavaScript and runs on Node.js. The main task of the plan is to automate your trading strategies. Gekko provides an opportunity to create trading strategies using popular technical analysis indicators or use ready-made ones. To check and identify the optimal strategy, it is possible to simulate trading using historical market data. There is also a system of plugins that allows you to add your functionality [28]. A view of the system interface is shown in Fig. 4. Figure 4: Gekko Interface. Checking your strategy based on historical data 2.4.4. Zenbot The trading robot is written in JavaScript and runs on the Node platform.js using the MongoDB database. Implemented support for a wide range of functionality is for use among more than 12 cryptocurrency exchanges. The system provides an opportunity to create your trading strategies based on technical analysis. The plugin support architecture offers the ability to add new discussions independently and develop new functionality and process. Zenbot provides the ability to create buy or sell orders with many configurations, which allows the system to work as a trading terminal. It is possible to conduct trading simulations to test strategies based on historical data. The system works according to the userʼs instructions via the terminal [29]. Most of the existing systems are paid to use, with the need for a monthly subscription fee. Some works allow you to develop, test and implement your trading strategies. However, few systems can identify or execute arbitrage opportunities in the market and even collect all the necessary data to implement such operations successfully. Also, there is no technical implementation of the transfer of cryptocurrencies from exchange to exchange automatically in any of the systems, which excludes the possibility of conducting classical spatial arbitration. The disadvantages of the designs are also a small number of supported exchanges and a fixed list of cryptocurrency pairs, which reduces the number of arbitrage opportunities found. Critical for arbitrage search systems is sending notifications about such situations and managing the system remotely. Based on the conducted comparative analysis of trading systems for the cryptocurrency market, it can be concluded that the current system for finding and executing arbitrage transactions will be a cross- platform system with support for a wide range of exchanges and all possible cryptocurrency pairs, with the possibility of remote management, user notifications about such found situations, with the possibility of their settings, and most importantly with a component for automating the execution of a sequence of operations, which will fully collect information for successful arbitrage. Furthermore, implementing your custom and trading strategies is not mandatory since the method of spatial arbitration in the cryptocurrency market is chosen for the projected system. Table 1 Comparison of system capabilities Functionality / System name Arby.Trade Gekko Blackbird Zenbot Collecting data on prices and volumes Yes Yes Yes Yes Collecting technical data on cryptocurrencies Yes No No No Search for arbitration situations Yes No Yes Yes Ability to perform arbitrage transactions No No Yes Yes Ability to implement your trading algorithms No Yes No Yes Cross-platform Yes Yes Yes Yes Push notifications Yes Using plugins No Using plugins In the first chapter, information about the system being projected was reviewed and analyzed, which is the first step for its future development. The concept of cryptocurrency, principles and aspects of its functioning are revealed. The factors influencing price formation and the role of cryptocurrencies in everyday life are considered. The features of conducting arbitration in the cryptocurrency market are displayed, and popular methods are described. Existing trading systems are analyzed, their capabilities and functionality are reviewed, and strengths and weaknesses are highlighted. Based on the analysis, the necessary functionality and problems that the developed information system should solve are determined. 3. Material and methods 3.1. System analysis of the research object To start developing an information system, it is necessary to analyze the research object, identify and classify several current problems, and find solutions. One of the methods for solving such problems is to build a goal tree. A goal tree is a hierarchical diagram consisting of relationships and subordinates of the systemʼs goals, which reflect the distribution of the systemʼs goals into sub-goals and tasks or individual actions. This method is based on decomposition and is universal, and is one of the main ones in systems analysis. Decomposition is a way of dividing a system into its components. The goal tree method is used to establish the relationship between the main goal and the ways to achieve it, which are presented in specific actions or tasks. The main principle of building a goal tree is to simplify a complex process to its elementary components. To comply with this rule, follow the following approach:  a goal located at the highest level is the basis and a kind of reference point for separating goals situated at the lowest level;  goals that are at the lowest level are means of implementing the task at the highest level and are presented so that their unification provides for the fulfilment of the main goal [30]. The result of building a system goal tree is shown in Fig. 5. Figure 5: Goal tree The main goal specified by the goal tree construction method is to create an information system for searching for arbitrage situations in the cryptocurrency market. This problem can only be solved after all its sub-goals are completed. Therefore, the constructed tree has four levels: the primary goal, sub- goals, tasks that need to be completed, and criteria for evaluating the quality of execution. As a result of creating the goal tree, the following sub-goals were formed:  Collection and processing of information;  Application of system analysis methods;  Developing a software solution for the system. Consider the first sub-goal - "Collecting and processing of information". At this stage, the analysis of requirements and relationships between the components of the system is carried out, an analytical review of the literature and other sources related to the subject area and the projected plan of direction is carried out. Based on the analysis, several such tasks were identified:  Research of arbitration methods. To create an information system for searching for arbitration situations, correctness, completeness and accuracy of calculations in such a system, itʼs needed to familiarize yourself with the very concept of Arbitration, possible methods of conducting it and its features in the cryptocurrency market;  Collecting data on working with exchanges. This task provides for familiarization with the principle of operation on cryptocurrency exchanges, analysis of the technical documentation of the API of exchange methods for the successful creation of appropriate modules, high-quality typing and implementation in the system;  Analysis of existing solutions. To create a high-quality and multifunctional product, itʼs needed to analyze existing software solutions that solve similar problems or are close to the projected system. Highlight their strengths and weaknesses, functionality, and so on. Create the correct functional model of the projected system, use the analyzed systemsʼ found advantages, solve the found problems, and present their solutions in your system. For the first sub-goal, we selected such quality assessment parameters as relevance and usefulness, which are the main properties for collecting and analyzing information. The second sub-goal is"Application of system analysis methods". Before creating an information system, you need to select alternative systems, determine the optimal information system among them, and design its central processes, functions, and tasks to solve. The result of this sub-goal is to determine the type of information system that is being projected and a series of diagrams to explain the processes that are taking place. This sub-goal provides for solving several such tasks:  It is determining the type of Information System. This task involves applying the hierarchy analysis method. By performing paired comparisons of the values of quality ratings among alternative systems, the most optimal version of the system is selected;  Building a context diagram. To display the primary process or function of the system and its details, itʼs needed to create a context diagram DFD or IDEF0;  Building process decomposition diagrams. Based on the context diagram, you need to decompose it to create subsequent charts that specify lower-level processes and details of their implementation. Optimality and adaptability were chosen as the criteria for evaluating this sub goal. The last sub-goal for achieving the main goal is "Developing a software solution for the system", which includes performing the following actions and tasks:  Selection of software implementation tools for the system. Based on the prototype of the system, itʼs needed to choose the development environment and software implementation tools that are best suited for its development to meet the requirements and tasks that this system should perform;  Creating a software component of the system. This task consists of writing the code of the necessary modules for the full functioning of the system using pre-selected software implementation tools;  Performing tests and troubleshooting. This task involves checking and debugging identified problems in the software development process;  Support for system updates. It is necessary to provide the information system with support for the software product and its updating, which is extremely necessary in cases of changes in the operation of exchanges or the emergence of new arbitration methods, ideas for expanding the functionality to ensure the relevance of the system, and so on. Also, do not forget about the possibility of anomalies during the systemʼs operation, which must be detected and eliminated. The selected criteria for evaluating the quality of execution of this sub-goal are scalability and performance because these properties play a crucial role during the systemʼs functioning and for its further development in the future. The hierarchy analysis method is chosen to determine the type of Information System. This method is used to solve many practical problems at different stages of system design. The essence of the process is to use paired comparisons of criteria for evaluating the quality of execution of sub-goals to select priority solutions. Three types of information systems were chosen as alternatives:  Information and management (A1);  Information and search engine (A2);  Information and reference system (A3). Determining the most optimal type of Information System be projected is carried out by using pre- selected six quality criteria:  Relevance (C1);  Usefulness (C2);  Optimality (C3);  Adaptability (C4);  Scalability (C5);  Performance (С6). Since the systemʼs goal tree has already been constructed, it is now necessary to create a matrix of paired comparisons of criteria and determine the values of eigenvalues (HF) and eigenvectors (HV) used in the following analysis. Calculating the importance of priorities will be determined by finding the relationships of criteria using scores to evaluate them ranging from 1 to 9, where 1 is the equilibrium criteria, and 9 is the absolute advantage of one standard over another. The values of eigenvalues are calculated using the Formula 1:         , (1) where:  – is several criteria;   – is a relation of specific criteria;      – is a product of all relations of a specific criterion with other criteria. The values of eigenvectors of criteria can be calculated using Formula 2:         , (2) where:   – is an eigenvalue value of a particular criterion;      – is a sum of the eigenvalues of all criteria. Table 2 below shows the values of paired comparison matrices for the relations of each of the criteria. Table 2 Matrix of paired comparisons Criteria C1 C2 C3 C4 C5 C6 HF HV C1 1.00 0.50 0.25 0.33 0.25 0.14 0.34 0.04 C2 2.00 1.00 0.25 2.00 0.33 0.16 0.61 0.07 C3 4.00 4.00 1.00 3.00 0.50 0.33 1.41 0.17 C4 3.00 0.50 0.33 1.00 0.25 0.20 0.54 0.07 C5 4.00 3.00 2.00 4.00 1.00 0.33 1.78 0.22 C6 7.00 6.00 3.00 5.00 1.00 1.00 3.52 0.43 The next step in the hierarchy analysis method is to construct paired comparison matrices for the selected alternatives A1, A2, and A3, for each criterion and relative to the general goal. The values are calculated using the same principle and formulas as for the matrix of paired comparisons. The calculations for each of the criteria and the general goal are presented in the corresponding tables below. Table 3 Matrix of paired comparisons of alternatives relevance A1 A2 A3 HF HV A1 1.00 0.50 0.33 0.55 0.16 A2 2.00 1.00 0.50 1.00 0.30 A3 3.00 2.00 1.00 1.82 0.54 usefulness A1 A2 A3 HF HV A1 1.00 3.00 2.00 1.82 0.54 A2 0.33 1.00 0.50 0.55 0.16 A3 0.50 2.00 1.00 1.00 0.30 optimality A1 A2 A3 HF HV A1 1.00 4.00 6.00 2.88 0.70 A2 0.25 1.00 2.00 0.79 0.19 A3 0.16 0.50 1.00 0.43 0.10 adaptability A1 A2 A3 HF HV A1 1.00 2.00 3.00 1.82 0.54 A2 0.50 1.00 2.00 1.00 0.30 A3 0.33 0.50 1.00 0.55 0.16 scalability A1 A2 A3 HF HV A1 1.00 6.00 5.00 3.11 0.75 A2 0.16 1.00 0.20 0.32 0.08 A3 0.20 2.00 1.00 0.74 0.18 performance A1 A2 A3 HF HV A1 1.00 7.00 8.00 3.83 0.83 A2 0.14 1.00 3.00 0.75 0.16 A3 0.13 0.33 1.00 0.04 0.01 general goal A1 A2 A3 HF HV A1 1.00 0.33 2.00 0.87 0.23 A2 3.00 1.00 5.00 2.47 0.65 A3 0.50 0.20 1.00 0.46 0.12 Based on the obtained results of calculations of eigenvalues and eigenvectors for alternatives, it is necessary to construct the following generalized matrix of their comparisons and determine the most optimal information system for searching for arbitrage situations in the cryptocurrency market. The alternative comparison matrix is shown in Table 4. Table 4 Generalized alternative comparison matrix Criteria and alternatives C1 C2 C3 C4 C5 C6 Priority value A1 0.16 0.54 0.70 0.54 0.75 0.23 0.49 A2 0.30 0.16 0.19 0.30 0.08 0.65 0.28 A3 0.54 0.30 0.10 0.16 0.18 0.12 0.23 Using the hierarchy analysis method, the most optimal type of Information System with the highest coefficient of 0.49 was determined – information and management, which most corresponds to the type of system being projected. To specify the functioning of the projected system, itʼs needed to build a contextual diagram. Such a diagram is created according to the IDEF0 standard and is used for the most general description of processes in the system. A characteristic feature of such a diagram model is the emphasis on the hierarchical structure of representation of system objects and the definition of logical relationships between processes, which gives a better understanding of the project being developed [31]. The context diagram for the projected system (shown in Fig. 6) describes the systemʼs most general and essential process – conducting an arbitration transaction. The user initially provides API keys to their exchange accounts to the system so that a particular component of the system can perform the actions necessary to execute an arbitrage transaction successfully. Also, when selecting an arbitrage situation to fulfil, the user provides its identification code and indicates the desired transaction volume by clicking on the corresponding button. After constructing a context diagram describing the most general process of the system, you need to perform a functional decomposition process to separate the individual components of the system. The result of this process will be the first-level decomposition diagram shown in Fig. 7. According to some rules, the process of "Generate data to search for arbitrage opportunities" involves collecting the necessary data from exchanges and converting it to the desired form in JSON format, according to some rules, for further transmission to the next process "Search and detect arbitrage opportunities". The resulting data is analyzed in this process, resulting in an array of data with the found arbitrage capabilities. The last process, "Perform a series of actions to make an arbitrage transaction", receives data from the previous method that will be used for the final stage of the primary system process. This process involves several smaller tasks related to performing manipulations on the userʼs exchange accounts. Again, the userʼs choice with the identification code and transaction volume is taken into account. This process will be the formation of data on the conduct and completion of an arbitration transaction. After performing the first-level decomposition, each process obtained in this way can be divided into smaller ones, resulting in second-level decomposition diagrams. A diagram of this type for the "Generate data to search for arbitrage opportunities" process is shown in Fig. 8. The second-level decomposition diagram for the "Search and detect arbitrage opportunities" function is shown in Fig. 9. Figure 6: Context diagram Figure 7: First-level decomposition diagram Figure 8: The decomposition diagram for "Generate data to search for arbitrage opportunities" Figure 9: The decomposition diagram for the "Search and detect arbitrage opportunities" process The process of "Perform a series of actions to make an arbitration transaction" involves several small functions. These processes perform manipulations with the userʼs account and transmit intermediate data, the results of performing certain operations, among themselves. The input data for the following action is the output data of the previous one. At the end of the process, the arbitration transaction is generated, and a notification is sent to the user. The second-level decomposition diagram for the "Perform a series of actions to perform an arbitrage transaction" process is shown in Fig. 10. Figure 10: The decomposition for "Perform a series of actions to make an arbitrage transaction" By constructing a hierarchy of processes of the projected system, its hierarchical structure is reflected, and various tasks are demonstrated. The process hierarchy diagram shows all the tasks necessary for the full functioning of the system and their relationships with each other. The main goal in this diagram is the main task of the system "Conduct an arbitration transaction", which is divided into three smaller tasks that are the main components of the system: generate data to search for arbitration opportunities, search for and identify arbitration opportunities, perform several actions to make an arbitration transaction. The tasks listed above apply a certain number of necessary functions for the entire operation of the system. The first task, "Generate data to search for arbitrage opportunities", performs the tasks of collecting data from exchanges, analyzing them, and generating data in the necessary, structured form. The second task, "Search and detect arbitrage opportunities", takes the generated data obtained to solve the previous problem as input and analyses it. The result of this analysis is an array of data with the arbitrage capabilities found. The third task, "Perform a series of actions for the implementation of an arbitration transaction", involves obtaining data from the previous component and the user, after which, following specific instructions, it manipulates exchange accounts, which ultimately leads to the completion of the arbitration transaction, the result is formed with detailed data. Finally, a notification about the product is sent to the user, which is the designed systemʼs general goal. In this chapter, we performed system analysis methods for the projected system. A goal tree is built, the general goal and sub-goals are defined, and individual actions and tasks that need to be performed to complete the main goal successfully are defined. Several alternative systems were selected, and the most optimal type of Information System was determined among them, using the analytical hierarchy method, by constructing matrices of paired comparisons of criteria for evaluating sub-goals and alternatives. The best option for the designed system is an information and management system. Figure 11: Task hierarchy diagram for the projected system A context diagram is constructed depicting the primary relationships in the system. Then, its decomposition of two levels is carried out to display more detailed data on small actions and processes occurring in the design, creating a task hierarchy diagram for the projected plan. 3.2. Software tools for solving the problem One of the most important decisions before starting software development, which should be made as soon as possible, is the choice of software tools that will be used to create the system. Software tools include the programming language itself (or languages, if there are several of them), libraries and frameworks, the operating system, the development environment, testing software, and so on. The most important factor influencing the choice of programming language is directly the projected system itself, for whom it is created and what tasks it should solve and what to work. The next factor is the type of system in which it should be implemented: mobile application, console application, browser extension, web application, website, etc. An equally important factor to consider when choosing a programming language is the popularity of the selected language. It is closely related to the number of available frameworks and libraries, language support, and future development. Choosing a popular programming language will make it easier to update and develop the projected system. In addition to selecting a programming language, you should choose a set of necessary tools for software construction: the development environment and other software used in the project creation process. 3.2.1. Comparison of Node.js and Python Before we talk about Node.js, it is necessary to mention the JavaScript programming language itself directly. JavaScript is a programming language created by Netscape Communications in 1995. During these years, there was a need to make web pages dynamic for implementing animations, interacting with the user, etc. So, there was a need to create a scripting programming language for solving such problems. The similar syntax and rapid growth in the popularity of Java have given the programming language an appropriate name. But JavaScript was very slow compared to traditional compiled programming languages. Years of research and development have taken the programming language to a new level and made it possible to create large-scale applications such as Google Maps. For a long time, JavaScript was executed only in the browser. However, in 2009, a framework called Node.js appeared, which allowed you to play JavaScript code on the server. Node.js is a platform written in C++ that will enable you to execute JavaScript files. It allowed JavaScript to use this platform to perform several actions, such as performing activities on system files that are not available in the browser version. Node.js is based on the V8 engine developed by Google. It is a fast and progressive virtual machine with a built-in interpreter that compiles JavaScript to native code. Unlike programming languages such as C++, C#, Java, Python, etc., JavaScript on the Node.js platform is an event-driven programming language that provides asynchronous input and output capabilities. Each process is called when a specific event occurs, which means that none of the methods blocks the flow. Because JavaScript code is executed outside of the browser on the Node.js platform, the performance of this programming language becomes significantly higher, as the V8 engine allows you to use resources more efficiently. In addition, the event-driven, flow-free platform architecture will enable you to process multiple requests simultaneously, which positively affects efficiency and speeds up code execution. Syntax in Node.js is almost no different from browser-based JavaScript. Also, Node.js provides the ability to use heavily typed TypeScript. In Node.js, when developing an application, it is preferable to create a set of modules and microservices that communicate with each other using a specific mechanism and perform their processes separately. It makes the Node.js platformʼs development process quite flexible since there is no need to create a monolithic system, and you can always easily add a new module. An active and numerical community creates a significant advantage for Node.js - the availability of tens of thousands of modules and libraries to facilitate work and solve various publicly available tasks. In Node.js, modules are managed using the npm package manager, where instructions are executed by entering specific commands in the terminal. Scope of application of Node.js is basically the development of the server-side of web applications. However, the platform provides all the opportunities for creating mobile applications, desktop applications, cloud services, solutions for the Internet of Things segment, etc. Also, a significant advantage of Node.js is cross-platform, meaning the created application will run on such popular operating systems as Windows, Linux, Mac, etc. [32]. The development of the Python programming language began at the end of 1989, when Guido van Rossum, a Dutch programmer from the Center for mathematics and computer science (CWI) in Amsterdam, started working on the project. Initially, development was considered a hobby, and the software solution itself was intended to solve existing problems and become a successor to the ABC Language. The first version, 0.9.0, of the Python programming language was published in 1991. It differs significantly from languages such as Java or C++. The main task during its development was to create a language whose code is straightforward to read. In 2000, Python 2.0 was released. With the release of this version, the functionality of the programming language was quite expanded: a garbage collector appeared, which automatically performed operations on Ram, Unicode support, and so on. Today, Python is a high-level open-source programming language. The latest version of the language at the time of writing is Python 3.8. Python is a reasonably popular language and has an active audience. Because of this, there are also many open-access libraries for solving various tasks. The installation and management of additional packages and libraries in Python are managed by a system that runs on the command line and is called pip. Applications created in Python will run on major popular operating systems, as the language is cross-platform. It can be used for both server-side and client-side tasks. One of the most important advantages and features of the Python programming language is its syntax. The language is relatively concise and straightforward and does not require square brackets but instead correct tabs or spaces. Because of these features in the languageʼs syntax, it is elementary for specialists of various levels to read and understand. The design of the Python language involves the use of a monolithic model in development. Of course, by using specific libraries and packages, you can build applications that allow you to write asynchronous code and manage events in the program. But this is not a native solution for the language, and debugging, in this case, takes quite a long time. The Python programming language is an interpreted programming language and is slower than traditional languages whose code compiles. This language does not support multithreading, but only works with one thread, due to the technical features of the language. However, again, using a certain number of libraries, you can reproduce certain multithreading functionality. Still, the interpreter – Gil mechanism that uses Python does not allow you to perform specific tasks simultaneously but will enable you to perform operations on only one thread at a time [33]. Table 5 Comparative characteristics of Node.js and Python Criteria Node.js Python Architecture Event-driven doesnʼt block the flow Synchronous code execution blocks the flow Performance Multithreading support Single-threading Syntax Similar to browser-based JavaScript Concise, tab-based, and easy to read Scalability Easily scalable, microservices model Hard-to-scale, monolithic model Libraries Large number Large number Versatility Ability to develop web applications, desktop and mobile applications Ability to build web applications, desktop and mobile applications Popularity and community High High Application Complex single-page web applications, Internet of things, real-time operation Big data, 3D modelling, artificial intelligence When choosing the programming language that will be used to develop the software solution of the projected system, preference was given to JavaScript. Thanks to the features of the Node.js architecture, this platform, because it is event-based, is best suited for developing applications that will frequently perform numerous parallel queries and communicate between the client and the server in real-time. Although the JavaScript and Python languages are dynamically typed, however, using the microservices approach in Node.js, unlike the monolithic model in Python, is a more appropriate option for the scalability of the developed system. Furthermore, this approach will be better for developing extensible projects, making it easier to work, and giving you a better understanding of the system when it is maintained. The Node.js platform, unlike Python, is multithreaded, and requests are processed much faster, which makes this platform, due to better performance, a favourite choice for creating a web system [34]. 3.2.2. Using auxiliary modules Express.js. Express.js is one of the most popular server frameworks for the Node.js platform used in web application development. It is a kind of "backbone" in development when creating the server part of a web system. Provides a wide range of features for creating single-and multi-page web applications. This framework is flexible and does not impose any specific correct way to perform a particular task. This module allows you to quickly develop an application software interface (API) and create mechanisms for processing various query methods, such as GET, POST, PUT, DELETE, and others [35]. Request. Request module for Node.js is in demand when working with HTTP requests. Although it is a wrapper around the native HTTP module Node.js, it is much easier to operate. The module provides the ability to send different types of requests, use proxies, other network adapters when sending requests, TSL/SSL, and choose different configurations. Given its functionality, this module is a good solution for implementing data collection methods by the server and creating an API for the client part of the system [36]. Fs. The fs module (from the file system) is one of the most basic and necessary Node.js modules. This library of functions is used when working with operating system files. The set of methods in this module allows you to perform various manipulations with files and with the computerʼs file system: read, write, supplement the File, Create, Edit and delete directories, and so on. Each method has two versions to work with: synchronous and asynchronous, depending on the need. With even such a concise set of plans, this module provides the program with the ability to perform all basic operations on operating system files or their directories [37]. 3.2.3. Atom development environment Creating and editing code- Atom, the development environment for creating the projected information system, was chosen as a text editor. The first version of this software appeared in 2014 and has undergone several updates, and has gained considerable popularity since then. The program is developed by one of the largest software development communities – GitHub. This software product is completely free and can be used on operating systems such as Windows, Linux, Mac and others. The main advantage of Atom is the ability to install third-party packages that significantly modify the editor, making it a full-fledged development environment. Today, there are about 9,000 modules for Atom in the public domain, helping developers solve various tasks and software development. In addition, the editor can also directly modify any developer settings because the program is open-source and written using technologies such as JavaScript, CSS, and HTML. This program is suitable for developing a graphical user interface and creating the server part of web applications. Atom already has a basic wide range of valuable tools and functions and the ability to create your functionality or add existing ones by installing the necessary package. Atom provides the ability to easily and quickly navigate through project files, use auto-completion technology (also known as IntelliSense) for popular programming languages, quickly edit HTML and CSS files and view changes on the page in real-time, edit many files at the same time, execute console commands and run programs without leaving the program environment, etc. [38]. For example, the program interface is shown in Fig. 12. Figure 12: Atom development environment interface 3.2.4. Postman testing software Since the software solution of the projected system provides for the availability and development of an application software interface API, sending many requests, there is a need to use software for testing for such tasks. Postman was chosen as such software – a program that is a good tool for testing ready- made or personally created APIs. The main number of necessary functions in this software is free of charge. The program provides a user-friendly interface with extensive functionality that allows you to conduct testing over the API, namely, send HTTP requests without first writing program code. The principle of operation in Postman is quite simple: type the link to which the request will be sent, select a method, fill out the form or headers if necessary, and send a proposal that will return the status code, response time, and response from the server with detailed data. It is also possible to install monitoring [39]. The program interface is shown in Fig. 13. Figure 13: Postman program interface 3.2.5. Technical characteristics of the selected development software tools The JavaScript programming language and Node.js platform were chosen to develop a software solution for the arbitrage search information system [40-42], which is the most optimal choice based on the analysis performed. The system will be implemented as a web application with a client-server architecture. Asynchronous code execution capability, event-driven platform environment, high performance in real-time client-server communication tasks, and support for node platform multithreading.js make it the best choice for software implementation of the system. A significant advantage is also the popularity of the language and the size of its community, which ensures further updates and the availability of a large number of ready-made solutions in the public domain [43-47]. The following main modules were selected to work with [48-55]:  express – to create an application software interface and provide communication between the client and server;  request – for sending and processing submissions by the server part of the system;  fs – for working and manipulating operating system files. Atom, a free and open-source text editor from GitHub with the ability to install additional packages, was chosen as the software development environment. This program provides all the necessary functionality for developing and partially debugging the server component of the system, the ability to auto-complete code, easy navigation through the project, creating web pages and viewing their changes in real-time, and so on. To conduct testing on personally designed application interfaces of the program and check sending requests to existing third-party APIs, The Postman program was chosen, the free functionality of which fully copes with the tasks set. In this chapter, comparative analysis and chapter of the programming language for its further application in creating a software solution of the system were carried out. The type of architecture of the projected system was selected – a client-server web application. The necessary modules and frameworks for the chosen programming language that will be used during development are established. Finally, the development environment is selected, and its primary functions and advantages are described. 4. Experiments, results and discussion 4.1. Description of the created software application The software solution of the information system for searching for arbitrage situations in the cryptocurrency market is called "arbitrage". The source code of the developed software is contained in a folder with the appropriate name. The project is written in JavaScript and runs on the Node.js platform v8. 11. 3. the operating system used in the test operation is Microsoft Windows [Version 10.0.17134.407]. The main tasks of the developed software are to collect, analyze and process data from a wide range of exchanges, identify arbitrage opportunities based on the study of pre-generated data, and conduct arbitrage transactions. Thus, the created system is both informational and managerial: the existing functionality provides tools for searching and selecting arbitrage situations in the cryptocurrency market for further analysis and can automate such transactions with the userʼs approval. The software solution is presented in a web system written in JavaScript and running on the Node.js platform using several frameworks and libraries. Partial functionality and system management are also available via the Telegram messenger, with the appropriate user settings. Figure 14: Project structure The software structure looks like this:  arbitrage – the projectʼs root folder contains all the necessary components of the developed software;  automation – a folder containing all the files required to ensure the operation of the module for automating arbitrage transactions (methods for working with private APIs of exchanges, program instructions for conducting arbitrage transactions, a file with the values of API keys from the userʼs exchange accounts);  data – folder with saved data (results of specific processes), which are output, in JSON format;  exchanges – this folder contains definitions of exchange objects and their methods necessary for data collection, processing, analysis, and generation;  modules – folder containing self-written modules for system operation;  node_modules – folder containing libraries and frameworks for system operation;  public – a folder containing Cascading Style Sheet files, HyperText Markup files, fonts, and JavaScript scripts to enable client-server interaction;  app.js – the main file that is the entry point of the system, which is used to launch it;  index.html – HyperText Markup file for the system home page;  package.json – a file containing metadata about the project: application name, description, version, list of dependent modules, and so on. The developed system can be divided into four main components::  Data collection and processing component;  Analytical and computational part;  Arbitrage transaction component;  GUI and user interaction component. The first component is responsible for receiving, analyzing, and processing data coming from exchanges. The result of this component is filling exchange objects with data. This process for each sale starts with executing the Exchange.build() method. This method sends a certain number of requests (on average from 2 to 5) for each object (exchange) to the servers of the related businesses to receive data. This data includes the values of the exchangeʼs trading commissions, available markets for trading, a list of available cryptocurrency pairs, prices, technical data on the specifics of depositing and withdrawing cryptocurrencies from exchanges, and so on. After successful receipt of the response, i.e. arrays or objects of the required data, they are converted to JSON format (if necessary) and converted to a general structured form, which is the same for all exchanges. Example of the object structure of one of the exchanges: { "name": "Bittrex", "url": "https://bittrex.com/", "apiPublicURL": "https://bittrex.com/api/v1.1/public/", "marketURL": "https://bittrex.com/Market/Index?MarketName=", "tradeFee": 0.25, "minTradeSize": 0.0005, "quotes": [ "BTC", "ETH", "USDT", "USD"], "assets": [], "exceptions": { "BITS": "Bitswift", "MOC": "Mossland", "SLT": "Smartlands", "GTO": "GTO_ERC-20" }, "disabledWallets": [ "EMC2", "GRIN", "IOTA" ], "disabledMarkets": [ "BTC-GRIN", "USDT-GRIN", "BTC-CPT*" ], "timeStamp": "2020-03-07T16:02:00.870Z", "readinessStatus": true, "requests": 3, "responses": 3, "responsesData": {} } The "assets" property, exchange objects, contains an array of things filled with data about the technical features of a particular cryptocurrency on the corresponding exchange. Namely: ticker, the full name of the currency, the number of confirmations in the network for crediting the deposit, the value of the withdrawal Commission, minimum deposit, the minimum and maximum amount for withdrawal, data on the operability of the withdrawal or deposit of cryptocurrency, particular information messages, a list of pairs against which the cryptocurrency is traded, the purchase and sale price and the last operation performed, links to trades, etc. The structure of such objects looks like this: { "id": "LTC", "ticker": "LTC", "name": "Litecoin", "depositConfirmations": 4, "txFee": 0.002, "minDeposit": 0, "withdrawalPrecision": 8, "minWithdrawal": 0.004, "maxWithdrawal": 150, "depositsEnabled": true, "withdrawalsEnabled": true, "markets": { "BTC": {"isTraded": true, "marketName": "LTC-BTC", "marketURL": "https://crex24.com/exchange/LTC-BTC", "isActive": true, "timeStamp": "2020-03-07T16:02:04Z", "ask": 0.00688, "bid": 0.00687, "last": 0.00688, "orderBook": { "buy": [], "sell": [] }, "minTradeSizeBase": 0.001 }, "USD": { "isTraded": false, "orderBook": { "buy": [], "sell": [] } } } } The second analytical and computational component is necessary for analyzing the data obtained due to the operation of the first component. Analysis of this data involves searching for similar cryptocurrencies and their trading pairs on different exchanges. After this search, a particular cryptocurrency pairʼs purchase and sale prices are compared on the deals where matches were found. If a higher purchase price and a lower sale price are detected on different exchanges, the system performs the following action – the so-called "in-depth" analysis. This method sends two requests for detailed data on buy and sells orders on the two corresponding exchanges, containing the price and volume of transactions. After receiving and processing this data, the calculation process is carried out – the result is information about the maximum amount of cryptocurrency that can be purchased on the exchange, how much quota currency is needed, potential profit, and so on. The results are displayed on the main page of the web system. In addition, they can be sent to the Telegram messenger immediately after the analysis, provided that the system user has the appropriate settings. An object that contains data on the results of calculations and performing several studies has the following structure: { "id": 1588999027620 "done": true, "success": true, "responses": 2, "currentResult": { "changePercents": "2.82", "exchangeToBuy": { "name": "Bittrex", "asset": { "ticker": "SOLVE", "name": "Solve.Care", "status": "Online", "txFee": 1.25 }, "market": { "URL": "https://bittrex.com/Market/Index?MarketName=BTC-SOLVE", "ask": "0.00000888", "base": "BTC", "status": "Online" } }, "exchangeToSell": { "name": "HitBTC", "asset": { "ticker": "SOLVE", "name": "Solve", "status": "Online", "depositConfirmations": 20 }, "market": { "URL": "https://hitbtc.com/exchange/SOLVE-to-BTC", "bid": "0.00000917", "base": "BTC", "status": "Unknown" } } }, "profitByVolume": [ { "quoteQuantity": 0.09519300000007454, "quoteQuantityInUSD": 685.3896000005367, "assetQuantity": 10689.786877642566, "assetQuantityReceived": 10688.536877642566, "quoteQuantityReceived": 0.0978830878942926, "profitQuote": 0.0026900878942180684, "profitUSD": 19.368632838370093, "profitPercentage": 2.825930366955518, "firstPrice": 0.00000888, "lastPrice": 0.00000892 }, { "quoteQuantity": 0.07037200000004971, "quoteQuantityInUSD": 506.67840000035795, "assetQuantity": 7908.925225230812, "assetQuantityReceived": 7907.675225230812, "quoteQuantityReceived": 0.07242185464070117, "profitQuote": 0.0020498546406514523, "profitUSD": 14.758953412690456, "profitPercentage": 2.912883875191838, "firstPrice": 0.00000888, "lastPrice": 0.00000888 } ] } The arbitrage transaction component automates the sequence of actions required to eliminate the price difference between two exchanges. The input data of this component is the results of calculations and analysis obtained as a result of the operation of the previous element. This data provides instructions on how to perform the arbitrage transaction module. The process of conducting an arbitration transaction is started exclusively by the system user. On the main page of the web system, in the section with the found arbitrage capabilities, there is an interface for conducting a transaction. The user "gives the go-ahead" to complete the selected transaction and specifies the desired volume. Starting this process, with the appropriate settings, is also available via the Telegram messenger: the user receives a notification about finding an arbitration situation with an interface that provides the ability to "respond": start the execution process, or they ignore a specific arbitration situation for a selected period. This component performs several actions that are necessary for a full-fledged arbitration transaction, namely: checking balances on exchange accounts, obtaining an address for depositing cryptocurrency on an exchange with a higher price, creating and cancelling purchase and sale orders, sending cryptocurrencies, transferring funds between accounts of one exchange account, conducting interim settlements, and so on. Upon completion of an arbitration transaction, the object with all data on its conduct has the following structure: { "id": 1589147511273, "code": "STEX:PART/BTC-HitBTC:PART/BTC", "stage": "SELL_ORDER_CALCULATED", "time": { "start": "2020-05-10T21:56:27.074Z", "end": "2020-05-10T22:07:44.356Z" }, "exchangeToBuy": { "name": "STEX", "balances": { "quote": { "ticker": "BTC", "name": null, "beforeBuy": 0.09863381, "afterBuy": 0.09243302, "spent": 0.006200789999999998 }, "base":{"ticker":"PART","name":"Particl","beforeBuy":0,"afterBuy":154.0 1681657, "bought": 154.01681657, } }, "order": { "id": 239086323, "filled": true, "canceled": false }, "withdrawal": { "id": 1303657, "success": true } }, "exchangeToSell": { "name": "HitBTC", "balances": { "trade": { "quote": { "beforeSell": 0.09769798088, "afterSell": 0.10413836945 }, "base": { "beforeTransfer": 0, "afterTransfer": 154.00681657, "transferred": 154.00681657, "beforeSell": 154.00681657, "afterSell": 0 } }, "main": { "base": { "beforeDeposit": 0, "afterDeposit": 154.00681657 } }, "quote": { "ticker": "BTC", "name": null, "beforeSell": 0.09769798088, "afterSell": 0.10413836945, "received": 0.006440388570000011 }, "base": { "ticker": "PART", "name": "Particl", "depositAddress": { "address": "Pe1747PokyVHULxz7Tecy29Kog5KtsESmg", "paymentIdRequired": false, "addressGenerationRequired": false, "generationRequestSent": false, "addressGenerated": false}, "beforeDeposit": 0, "afterDeposit": 154.00681657, "received": 154.00681657, "transferred": 154.00681657, "afterSell": 0.00681657, "sold": 154.00681657 } }, "transfer": { "id": "50ee9ed5-660e-4654-843c-7ee862bf8b9b", "success": true }, "order": { "id": "fda3563905d917f5ebbf9a7b5bda02ca", "filled": true, "canceled": false } }, } The last component concerns the GUI and user interaction. It contains instructions on how the client part interacts with the server part. Implemented functionality is for data transfer and system management using created APIs. The developed software product is intended for use on servers or personal computers. The software will run on all operating systems that support the Node platform.js (Linux, Windows, Mac, and others). Since the software tool sends requests for information at very short intervals and is faced with processing a large amount of data, the systemʼs speed on which the software will run plays a significant role. Recommended technical requirements:  Processor: 4 GHz;  Amount of RAM: 16 GB;  The presence or absence of a graphics module does not affect the operation of the system;  Free disk space: 32 GB;  Internet connection: 50 Mbps and low latency. The source files of the system software are located in the "arbitrage" folder. Before launching the software solution of the information system for searching for arbitrage situations in the cryptocurrency market, you must install the Nod.js platform version 8.11.3 or later. To start the system, go to the projectʼs root folder and in the console and run the command " node app.js». At the first launch, all the necessary modules will be installed to work (if required). After that, it will be launched. There are no system inputs because the entire sequence of actions is set in the systemʼs program code, and other processes are automated. Therefore, only API keys from exchanges and the created bot in the Telegram Messenger are input data. The user must generate them on the corresponding sales in the Settings section to get these keys, granting certain access rights necessary to execute an arbitrage transaction successfully. Also, the input data can be System Settings-Filters for searching for arbitrage situations, which the user sets. The source data in the program are messages received in the Telegram messenger and located on the main page of the system, exchange objects, copies of which are stored in a file containing the results of calculations and the results of an arbitration transaction. In addition, files are stored in the data folder with specific system settings. 4.2. User manual The developed software product is designed to find and perform arbitrage opportunities in the cryptocurrency market among several popular exchanges. The created application was called "arbitrage" and written in JavaScript running on the Node.js platform. Several popular frameworks are used, including request, express, fs, and others. The system was created using the Atom development environment. The developed software implementation of the program can be used as an information system for searching and analyzing arbitrage opportunities in the cryptocurrency market among a wide range of exchanges and as a management system – for automating and monitoring or reporting on arbitrage transactions. To use this system, namely the component for automating arbitrage transactions, you must provide API keys from exchanges with permission to conduct trading, check balances, generate and receive addresses for depositing cryptocurrency, and consent to withdraw funds from the sale. You can also manage the system using third – party software-The Telegram messenger, after creating a bot in it and providing the system with its API key. To understand the ongoing processes and manage the system, you need basic knowledge about the specifics of the principles of functioning of cryptocurrencies and a minimal understanding of the operation of trading markets in general. The software runs on such operating systems as Windows, Linux, Mac and all others that support installing the Node.js platform. The created software solves several tasks, resulting in identifying arbitrage situations in the cryptocurrency market among a certain number of exchanges, and it is also possible to automatically conduct such transactions. After the user starts the system, the program makes a series of requests to the servers of exchanges to collect the necessary information, which will be used in the formation of a structured data set that will contain information about price changes in the cryptocurrency market on each of the exchanges presented in the system, technical data on the features of cryptocurrencies on these exchanges, and so on. Then, based on the previously described data, they are analyzed by one of the system components, which is the identification of arbitrage opportunities. When the user agrees, the system executes the found arbitrage transactions and notifies the user about their progress, from start to finish, in a detailed form by sending informational notifications. Special features of the program are that it can work in two modes:  As an information system;  As an information and management system. In the first case, the system works purely as an information system when the user does not provide API keys from exchanges. Then the software only provides the user with the ability to view the found arbitrage opportunities and other data that can be used for any purpose. In the second case, the system provides the same functions as in the first case. Still, if you provide API keys from exchanges, the user can automatically conduct arbitrage transactions, thus managing the process and performing operations on their exchange accounts. Furthermore, the system checks whether actions are performed correctly by the system itself. If an error occurs, the system user will receive a detailed information message with its description. The user himself can practically not influence the programʼs correct operation in any way since the input data and certain functionality do not affect the principles of operation of the system. To use this software, itʼs needed a device running on Windows, Linux, Mac, or any other operating system that supports the Node.js platform. As for the technical requirements, for the productive functioning of the system, it is necessary to have a device with a sufficient amount of RAM and a modern processor to ensure fast calculation of operations, processing and analysis of information. In addition, it is essential to have high-speed internet access, without which the system will not receive data and find solutions to tasks and will generally be useless. Before starting the system itself, if you use a module that automates arbitrage transactions, the user must provide the system with API keys to their exchange accounts with permissions to conduct a certain number of operations (the ability to conduct trades, receive account information, withdraw cryptocurrencies) and an API key from the previous created bot in the Telegram messenger, for the possibility of notifications and remote management of the system. API keys are stored in the arbitrage/automation/keys file.json (Fig. 15). Figure 15: Structure of the file containing API keys Next, itʼs needed to install the Node.js platform version 8.11.3 or later. Then, the system itself is started using the console. Itʼs required to go to the projectʼs root folder (arbitrage) and run the command "node app.js". If necessary, the system will load all the necessary modules for its functioning at the first launch. After their successful installation, the system itself starts working directly. Immediately after its launch, the system sends requests (Fig. 16) to the exchangesʼ servers to obtain the necessary data and further analysis and processing. The corresponding objects of sales will be generated. After that, the data contained in the exchange objects are analyzed, and price differences are searched. The next step is to run the analysis "in-depth" and generate the results of the work. The output of messages about the application of this analysis is shown in Fig. 17. Figure 16: Sending requests by the system Figure 17: Performing deep analysis by the system The results are presented on the main page of the system, located at 127.0.0.1:3000 (Fig. 18). On the main page, the user can disable or enable periodic data updates, hide the result of calculations "in- depth", and set filters: select a list of exchanges for buying and selling, set the status of cryptocurrency wallets of businesses, the ability to conduct trading, select quota currencies, etc. (Fig. 19). Figure 18: System home page Figure 19: Filters for selecting results (the wallet status filter is open) Below on the page, there is an arbitration table (Fig. 20). It provides data on the found arbitrage situations, without analyzing "in-depth", without considering the volumes, but only the lowest selling price and the highest buying price in the stock exchange glass. Figure 20: Arbitration table The type of presentation of data on the found arbitration situations with "in-depth" analysis is shown in Fig. 21. Figure 21: Search result Figure 22: Telegram Messenger interface Such a message consists of: the name of the cryptocurrency pair, the names of exchanges for buying and selling, the terms of cryptocurrencies on various exchanges and their tickers, a direct link to trading on these exchanges, the volume that can be purchased, the amount of purchase and sale, potential profit, the approximate time of the transaction and the number of necessary confirmations in the cryptocurrency network required by the exchange, where it is transferred, and so on. When you provide an API key to the bot in the Telegram messenger, the user immediately receives notifications about finding an arbitration situation based on pre-set criteria. The message being sent (Fig. 22) is identical to the information provided on the systemʼs main page. Sending notifications to the messenger eliminates the need for the user to constantly be at the monitor screen to wait for the arbitrage transaction to be found. Both on the systemʼs web page and with the help of a bot in the Telegram messenger, the user can conduct an arbitration transaction. It is done by clicking the corresponding button located under the message. You can also ignore a specific transaction. For one reason or another, an arbitrage opportunity with the specified parameters will be missed by searching for the selected period. Provided that the user has decided to conduct an arbitration transaction and clicked on the corresponding button, the messenger receives a message about its successful acceptance for processing by the system (Fig. 23). The following notification to the user is a notification about the volume of purchased cryptocurrency and the quota currency spent (Fig. 24). Figure 23: Notification of acceptance Figure 24: Notification of purchased cryptocurrency The last notification is the result of an arbitrage transaction (Fig. 25). The message consists of the following data: transaction ID, name of the cryptocurrency, its ticker, terms of exchanges for buying and selling, realized profit, conversion of realized profit to the dollar (at the current rate or rate specified in the system code), the percentage change in balance, amount of purchased cryptocurrency, amount of received quota, amount of cryptocurrency that was not sold, transaction time, initial parameters for buying and selling, etc. If an error occurs at any stage of the transaction, the user receives a message with a detailed description of it (Fig. 26). Figure 25: Notification of the completion Figure 26: Notification when an error occurs You can terminate the program by pressing Ctrl + C in the console with the system running. This chapter describes the developed software solution of the information system for searching for arbitrage situations in the cryptocurrency market. According to the requirements, the description of the software implementation is carried out according to the standard (GOST 19.402-78). The programming language used in system development, frameworks, development environment, and other technologies used in system development are specified. Technical requirements for the installation and proper functioning of the developed system are defined. A user manual has been created that contains the necessary information about the operation features of this software. The functionality of the developed system, principles and elements of operation, and its purpose are considered. The input and output files, contents, and the structure of intermediate data used by the system in the main processes are described. A control example of using the program is given, and the process of starting and installing the system is considered. The work aims to create an information system for finding arbitrage situations in the cryptocurrency market. The systemʼs main task is to collect, process, and analyze data from a wide range of cryptocurrency exchanges. The software product under development aims to find arbitrage opportunities in the cryptocurrency market and access this data conveniently to the user. In addition to the search function, the system can perform a management function with the userʼs consent: conduct arbitrage transactions automatically and notify about their execution results. During its history, money has undergone many stages of change: once its role was played by random, today almost priceless items, and now we can observe how even cash is gradually disappearing from circulation, as contactless payments are gaining more and more popularity. The rapid development of Information Technologies, which gave an impetus to drastic changes in the global economy, also showed its impact on the financial sector. A significant event, in particular, is the emergence of electronic money and cryptocurrencies. Cryptocurrency is usually called a virtual currency that works using cryptography methods and blockchain technology. A characteristic feature of most cryptocurrencies is decentralization. To conduct transactions on the network, you do not need to contact a third party or a central management body, such as a bank, since the system ensures equal rights for all its participants. Due to the lack of a legal framework and the low degree of settlement by the state, cryptocurrency cannot be attributed to the classic concept of money in this sense. Although for almost ten years, cryptocurrency as an alternative payment method has been accepted by hundreds of institutions and services worldwide. The first cryptocurrency was Bitcoin, which appeared in early 2010. Soon there were many other projects related to the development of cryptocurrencies. Today there are more than several thousand of them. This number of projects has also led to the rapid growth of unique trading platforms – crypto exchanges. The growing popularity of the market, a large number of businesses and projects, the lack of a legal component for proper settlement, the phenomenon of decentralization of cryptocurrencies, high volatility, etc. – all these reasons contribute to the emergence of Arbitration situations in the cryptocurrency market. Arbitrage refers to performing a sequence of actions to eliminate profit when one asset is traded on two different platforms at different prices. Arbitration in the cryptocurrency market, compared with traditional markets, does not differ in the method of conducting and is even more attractive in the emerging market. So, this topic is relevant today. Therefore, there is a need to create a system for finding arbitrage opportunities in the cryptocurrency market. The software solution will be helpful for both experienced traders and beginners in this field. 5. Conclusions In this paper, research, project and development of a software solution for the information system for finding arbitrage situations in the cryptocurrency market were conducted. The analysis of literature and other sources closely related to the subject area of the projected system was carried out. The concept of cryptocurrencies, features of their operation and aspects of functioning are revealed. The factors influencing pricing in the cryptocurrency market are described and evaluated. The idea of Arbitration and the basis of its methodology are considered, and examples are given. The features of conducting arbitration in the cryptocurrency market are also described. A comparative analysis of existing trading systems is carried out, their weaknesses and strengths are highlighted. A number of problems were found, the solution of which was presented in the designed system and the useful functionality of existing systems implemented during development was determined. An information system for searching for arbitrage situations in the cryptocurrency market was designed by conducting a system analysis. One of the most critical methods of system analysis was used – the goal tree. Using the constructed tree, the systemʼs primary goal, its sub-goals, and specific actions that must be performed to solve all tasks and implement the system in full successfully are defined. Criteria for assessing the systemʼs quality are highlighted, with the help of which, and by applying the hierarchy analysis method, a comparison was made, and the most optimal type of information system was selected among the previously proposed alternatives. A contextual diagram has been created to specify the functioning of the projected system and the most general description of processes. The first and second levels of the designed system are decomposed to divide it into separate components and specify the functions. A hierarchy of tasks is constructed to structure the process of implementing the projected system and determine the main functionality that should be created in the software solution. The systemʼs leading tools for software implementation are identified: the programming language, auxiliary libraries, the development environment, and other software used during development. A comparative analysis was carried out, based on which the previously proposed software tools for implementing the development of the projected system were selected. The technical characteristics of the selected software tools and their features are described, and their application in specific cases is considered. The client-server architecture is preferred. The developed software is described in accordance with the standard. General information about the program and its purpose is provided. The logical structure, input and output data are described. A user manual has been created to help you operate the system and understand the features and flow of the designed software product. The features of the developed software solution are considered, and an example of application is given with an analysis of the results, which proves the legal capacity of the system. The costs of developing a design solution for an information system for searching for arbitrage situations in the cryptocurrency market are calculated, and its economic feasibility is proved. 6. References [1] V. Lytvyn, V. Vysotska, V. Kuchkovskiy, I. Bobyk, O. Malanchuk, Y. Ryshkovets, I. Pelekh, O. Brodyak, V. Bobrivetc, V. Panasyuk, Development of the system to integrate and generate content considering the cryptocurrent needs of users, volume 1(2-97) of Eastern-European Journal of Enterprise Technologies, 2019, pp. 18-39. DOI: 10.15587/1729-4061.2019.154709 [2] J. Frankenfield. Cryptocurrency. Investopedia: Sharper insight, better investing. 2019. URL: https://www.investopedia.com/terms/c/cryptocurrency.asp. [3] N. Reiff. Blockchain Explained. Investopedia: Sharper insight, better investing. 2020. URL: https://www.investopedia.com/terms/b/blockchain.asp. [4] A. Berko, M. Bublyk, L. Chyrun, Y. Matseliukh, R. Levus, V. Panasyuk, O. Brodyak, L. Dzyubyk, O. Garbich-Moshora, Models and Methods for E-Commerce Systems Designing in the Global Economy Development Conditions Based on Mealy and Moore Machines, volume Vol-2870of CEUR Workshop Proceedings, 2021, pp. 1574-1593. [5] A. Antonopoulos, Mastering Bitcoin: Unlocking Digital Cryptocurrencies. OʼReilly Media, 2014. [6] A. M. Antonopoulos, G. Wood, Mastering Ethereum: Building Smart Contracts and DApps. OʼReilly Media, 2018. [7] YU. V. Fedorova Kryptovalyuty ta yikh mistse u finansoviy systemi. URL: http://www.economyandsociety.in.ua/journal/15_ukr/116.pdf. [8] Lee A. Smales, Bitcoin as a Safe Haven: Is It Even Worth Considering? URL: http://dx.doi.org/10.2139/ssrn.3204237. [9] W. Suberg, Bitcoin Pizza Day 2018: Community Celebrates a Takeout Order Now Worth $82 mln. URL: https://cointelegraph.com/news/bitcoin-pizza-day-2018-community-celebra tes-a-takeout- order-now-worth-82-mln. [10] YE. O. Halushka, O. D. Pakon, Sutnistʹ kryptovalyut ta perspektyvy yikh rozvytku. URL: http://nbuv.gov.ua/UJRN/molv_2017_4_149. [11] J. Edwards, Bitcoinʼs Price History. Investopedia: Sharper insight, better investing. 2020. URL: https://www.investopedia.com/articles/forex/121815/bitcoins-price-histo ry.asp. [12] Top 100 Cryptocurrencies by Market Capitalization. URL: https://coinmarketcap.com/. [13] V. D. Bazylevych, et al., Sutʹ ta osoblyvosti provedennya arbitrazhu. Kyiv: Znannya, 2015. [14] R. Veysveller Arbitrazh. Vozmozhnosti i tekhnika operatsiy na finansovykh i tovarnykh rynkakh. Moscwa: Tserikh-PE, 1995. [15] S. Krückeberg, P. Scholz, Decentralized Efficiency? Arbitrage in Bitcoin Markets, in: Financial Analysts Journal, 2020. URL: https://doi.org/10.1080/0015198X.2020.1733902. [16] Matt Levine, Crypto Bots Feast on Your Typos. Bloomberg. 2019. URL: https://www.bloomberg.com/opinion/articles/2019-04-16/crypto-bots-feast -on-your-typos. [17] K. Egorova, Crypto Exchanges, Explained. Cointelegraph Bitcoin & Ethereum Blockchain News. 2018. URL: https://cointelegraph.com/explained/crypto-exchanges-explained. [18] J. Chen. Currency Pair Definition. Investopedia: Sharper insight, better investing. 2019. URL: https://www.investopedia.com/terms/c/currencypair.asp#what-is-a-currenc y-pair. [19] W. Kenton. Order Book. Investopedia: Sharper insight, better investing. 2020. URL: https://www.investopedia.com/terms/o/order-book.asp. [20] C. Blenkinsop, Arbitrage Trading in Crypto, Explained. Cointelegraph Bitcoin & Ethereum Blockchain News. 2019. URL: https://cointelegraph.com/explained/arbitrage-trading-in-crypto- explained. [21] Triangular arbitrage. URL: https://en.wikipedia.org/wiki/Triangular_arbitrage. [22] T. G. Fischer, C. Krauss, A. Deinert, Statistical Arbitrage in Cryptocurrency Markets, volume 12(1) of Journal of Risk and Financial Management, MDPI AG, 2019. URL: https://www.mdpi.com/1911-8074/12/1/31. [23] A Brief Look At Crypto Arbitrage Trading. Steemit. 2016. URL: https://steemit.com/cryptocurrency/@scrawl/a-brief-look-at-crypto-arbit rage-trading. [24] Sangeet Moy Das, Algo Trading 101 for Dummies like Me. Towards Data Science. 2019. URL: https://towardsdatascience.com/algo-trading-101-for-dummies-like-me-b39 38725d184. [25] C. Pauna, Arbitrage Trading Systems for Cryptocurrencies. Design Principles and Server Architecture, volume 22(2) of Informatică economică. Inforec Association, 2018, pp. 35-42. URL: https://ideas.repec.org/a/aes/infoec/v22y2018i2p35-42.html. [26] Arby About. 2020. URL: https://arby.trade/about-project. [27] Blackbird. The worldʼs leading software development platform GitHub. 2018. URL: https://github.com/butor/blackbird. [28] About Gekko. Open source bitcoin trading bot platform. 2020. URL: https://gekko.wizb.it/docs/introduction/about_gekko.html. [29] Zenbot. The worldʼs leading software development platform GitHub. 2020. URL: https://github.com/DeviaVir/zenbot. [30] Y. Matseliukh, V. Vysotska, M. Bublyk, T. Kopach, O. Korolenko, Network Modelling of Resource Consumption Intensities in Human Capital Management in Digital Business Enterprises by the Critical Path Method, volume Vol-2851 of CEUR Workshop Proceedings, 2021, pp. 366- 380. [31] V. Vysotska, A. Berko, M. Bublyk, L. Chyrun, A. Vysotsky, K. Doroshkevych, Methods and tools for web resources processing in e-commercial content systems, in: IEEE 15th International Scientific and Technical Conference on Computer Sciences and Information Technologies, CSIT 2020, pp. 114-118. DOI: 10.1109/CSIT49958.2020.9321950 [32] S. Peyrott, A Brief History of JavaScript. Auth0: Identity is Complex. Deal with it. 2017. URL: https://auth0.com/blog/a-brief-history-of-javascript/. [33] J. Wolfe, A Brief History of Python. Medium – Get smarter about what matters to you. 2018. URL: https://medium.com/@johnwolfe820/a-brief-history-of-python-ca2fa1f2e99e . [34] O. Romanyuk, NodeJS vs Python: How to Choose the Best Technology to Develop Your Web Appʼs Back End. freeCodeCamp.org: Learn to code at home. 2020. URL: https://www.freecodecamp.org/news/nodejs-vs-python-choosing-the-best-te chnology-to- develop-back-end-of-your-web-app/. [35] Express/Node introduction. MDN Web Docs. 2020. URL: https://developer.mozilla.org/en- US/docs/Learn/Server-side/Express_Nodejs/Introduction. [36] S. Robinson, The Node.js Request Module. Stack Abuse. 2019. URL: https://stackabuse.com/the- node-js-request-module/. [37] J. Hall. Introduction to the fs Module in Node.js. DigitalOcean – The developer cloud. 2019. URL: https://www.digitalocean.com/community/tutorials/nodejs-intro-to-fs-mod ule. [38] Sejal Jaiswal, Overview of Atom IDE. DataCamp. 2018. URL: https://www.datacamp.com/community/tutorials/ide-atom. [39] Ankit Muchhala, UI Testing with Postman. Medium – Get smarter about what matters to you. 2019. URL: https://medium.com/better-practices/ui-testing-with-postman-df713eb9788 c. [40] V. Vysotska, R. Hasko, V. Kuchkovskiy, Process analysis in electronic content commerce system, in: Proceedings of the International Conference on Computer Sciences and Information Technologies, CSIT, 2015, pp. 120-123. DOI: 10.1109/STC-CSIT.2015.7325447 [41] I. Moskovchenko, A. Kuznetsov, S. Kavun, B. Akhmetov, I. Bilozertsev, S. Smirnov, Heuristic methods for the design of cryptographic Boolean functions, volume 18(3) of International Journal of Computing, 2019, pp. 265-277. [42] L. Chyrun, P. Kravets, O. Garasym, A. Gozhyj, I. Kalinina, Cryptographic information protection algorithm selection optimization for electronic governance IT project management by the analytic hierarchy process based on nonlinear conclusion criteria, volume 2565 of CEUR Workshop Proceedings, 2020, pp. 205-220. [43] M. Bublyk, V. Vysotska, L. Chyrun, V. Panasyuk, O. Brodyak, Assessing Security Risks Method in E-Commerce System for IT Portfolio Management, volume Vol-2853 of CEUR Workshop Proceedings, 2021, pp. 462-479. [44] V. Lytvyn, V. Vysotska, Designing architecture of electronic content commerce system. In: Computer Science and Information Technologies, in: Proceedings of the International Conference on Computer Sciences and Information Technologies, CSIT, 2015, pp. 115-119. DOI: 10.1109/STC-CSIT.2015.7325446 [45] V. Vysotska, I. Rishnyak, L. Chyrun, Analysis and evaluation of risks in electronic commerce, in: Proceedings of the 9th International Conference on CAD Systems in Microelectronics, 2007, pp. 332-333. DOI: 10.1109/CADSM.2007.4297570 [46] V. Vysotska, L. Chyrun, L. Chyrun, Information Technology of Processing Information Resources in Electronic Content Commerce Systems, in: Proceedings of the International Conference on Computer Sciences and Information Technologies, CSIT, 2016, pp. 212-222. DOI: 10.1109/STC- CSIT.2016.7589909 [47] V. Vysotska, L. Chyrun, Methods of information resources processing in electronic content commerce systems, in: Proceedings of 13th International Conference: The Experience of Designing and Application of CAD Systems in Microelectronics, CADSM, 2015. [48] V. Andrunyk, L. Chyrun, V. Vysotska, Electronic content commerce system development, in: Proceedings of 13th International Conference: The Experience of Designing and Application of CAD Systems in Microelectronics, CADSM, 2015. [49] K. Alieksieieva, A. Berko, V. Vysotska, Technology of commercial web-resource processing, in: Proceedings of 13th International Conference: The Experience of Designing and Application of CAD Systems in Microelectronics, CADSM, 2015. [50] A. Gozhyj, I. Kalinina, V. Vysotska, S. Sachenko, R. Kovalchuk, Qualitative and Quantitative Characteristics Analysis for Information Security Risk Assessment in E-Commerce Systems, volume Vol-2762 of CEUR Workshop Proceedings, 2020, pp. 177-190. [51] V. Vysotska, A. Berko, M. Bublyk, L. Chyrun, A. Vysotsky, K. Doroshkevych, Methods and tools for web resources processing in e-commercial content systems, in: IEEE 15th International Scientific and Technical Conference on Computer Sciences and Information Technologies, CSIT, 2020, pp. 114-118. DOI: 10.1109/CSIT49958.2020.9321950 [52] L. Chyrun, The E-Commerce Systems Modelling Based on Petri Networks, volume Vol-2870 of CEUR Workshop Proceedings, 2021, pp. 1604-163. [53] A. Berko, V. Andrunyk, L. Chyrun, M. Sorokovskyy, O. Oborska, O. Oryshchyn, M. Luchkevych, O. Brodovska, The Content Analysis Method for the Information Resources Formation in Electronic Content Commerce Systems, volume Vol-2870 of CEUR Workshop Proceedings, 2021, pp. 1632-1651. [54] V. Kuchkovskiy, V. Andrunyk, M. Krylyshyn, L. Chyrun, A. Vysotskyi, S. Chyrun, N. Sokulska, I. Brodovska, Application of Online Marketing Methods and SEO Technologies for Web Resources Analysis within the Region, volume Vol-2870 of CEUR Workshop Proceedings, 2021, pp. 1652-1693. [55] A.Demchuk, et al., Commercial content distribution system based on neural network and machine learning, volume Vol-2516 of CEUR Workshop Proceedings, 2019, pp. 40–57. References Visible links: 1. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf2 2. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf2 3. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf2 4. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf3 5. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf4 6. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf5 7. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf5 8. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf6 9. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf6 10. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf7 11. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf7 12. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf8 13. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf8 14. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf9 15. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf9 16. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf11 17. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf11 18. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf13 19. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf14 20. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf14 21. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf15 22. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf16 23. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf16 24. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf1a 25. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf1f 26. file:///mnt/c/Users/chade/Projects/lucite/state/downloads/Evaluating Crypto.html#pf20 Hidden links: 28. https://www.scopus.com/record/display.uri?eid=2-s2.0-85062261988&origin=resultslist&sort=plf-f&src=s&sid=5657d5d0b12ae65f033eefde63fc718d&sot=autdocs&sdt=autdocs&sl=18&s=AU-ID%2824484045400%29&relpos=32&citeCnt=0&searchTerm= 29. https://www.scopus.com/record/display.uri?eid=2-s2.0-85062261988&origin=resultslist&sort=plf-f&src=s&sid=5657d5d0b12ae65f033eefde63fc718d&sot=autdocs&sdt=autdocs&sl=18&s=AU-ID%2824484045400%29&relpos=32&citeCnt=0&searchTerm= 30. https://www.scopus.com/sourceid/21100450083?origin=resultslist 31. https://www.scopus.com/sourceid/21100450083?origin=resultslist 32. https://www.investopedia.com/terms/c/cryptocurrency.asp 33. https://www.investopedia.com/terms/b/blockchain.asp 34. http://www.economyandsociety.in.ua/journal/15_ukr/116.pdf 35. http://dx.doi.org/10.2139/ssrn.3204237 36. https://cointelegraph.com/news/bitcoin-pizza-day-2018-community-celebrates-a-takeout-order-now-worth-82-mln 37. https://cointelegraph.com/news/bitcoin-pizza-day-2018-community-celebrates-a-takeout-order-now-worth-82-mln 38. http://nbuv.gov.ua/UJRN/molv_2017_4_149 39. https://www.investopedia.com/articles/forex/121815/bitcoins-price-history.asp 40. https://coinmarketcap.com/ 41. https://doi.org/10.1080/0015198X.2020.1733902 42. https://www.bloomberg.com/opinion/articles/2019-04-16/crypto-bots-feast-on-your-typos 43. https://cointelegraph.com/explained/crypto-exchanges-explained 44. https://www.investopedia.com/terms/c/currencypair.asp#what-is-a-currency-pair 45. https://www.investopedia.com/terms/o/order-book.asp 46. https://cointelegraph.com/explained/arbitrage-trading-in-crypto-explained 47. https://cointelegraph.com/explained/arbitrage-trading-in-crypto-explained 48. https://en.wikipedia.org/wiki/Triangular_arbitrage 49. https://www.mdpi.com/1911-8074/12/1/31 50. https://steemit.com/cryptocurrency/@scrawl/a-brief-look-at-crypto-arbitrage-trading 51. https://towardsdatascience.com/algo-trading-101-for-dummies-like-me-b3938725d184 52. https://ideas.repec.org/a/aes/infoec/v22y2018i2p35-42.html 53. https://arby.trade/about-project 54. https://github.com/butor/blackbird 55. https://gekko.wizb.it/docs/introduction/about_gekko.html 56. https://github.com/DeviaVir/zenbot 57. https://auth0.com/blog/a-brief-history-of-javascript/ 58. https://medium.com/@johnwolfe820/a-brief-history-of-python-ca2fa1f2e99e 59. https://www.freecodecamp.org/news/nodejs-vs-python-choosing-the-best-technology-to-develop-back-end-of-your-web-app/ 60. https://www.freecodecamp.org/news/nodejs-vs-python-choosing-the-best-technology-to-develop-back-end-of-your-web-app/ 61. https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/Introduction 62. https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/Introduction 63. https://stackabuse.com/the-node-js-request-module/ 64. https://stackabuse.com/the-node-js-request-module/ 65. https://www.digitalocean.com/community/tutorials/nodejs-intro-to-fs-module 66. https://www.datacamp.com/community/tutorials/ide-atom 67. https://medium.com/better-practices/ui-testing-with-postman-df713eb9788c 68. http://ceur-ws.org/Vol-2870/paper120.pdf 69. http://ceur-ws.org/Vol-2870/paper120.pdf 70. http://ceur-ws.org/Vol-2870/paper121.pdf 71. http://ceur-ws.org/Vol-2870/paper121.pdf 72. https://www.scopus.com/authid/detail.uri?authorId=57204568083