CryptoGraphArb icon indicating copy to clipboard operation
CryptoGraphArb copied to clipboard

Using graph algorithms to find arbitrage opportunities

CryptoGraphArb

This is the supporting code for my post on using graph theory to discover arbitrage opportunities in a cryptocurrency market.

Getting started

To run it, first sign up to CryptoCompare to get a free API key. Then, you can either replace it after the equals sign at the top of cryptocompare_scraper.py, or create a new text file named API_KEY.txt and paste it there directly.

Then, install dependencies with:

pip install -r requirements.txt

Lastly, run the code:

python cryptocompare_scraper.py
python graph_arbitrage.py

Overview

  • cryptocompare_scraper.py downloads the raw data, creating pairs_list.json, binance_data/ and snapshot.csv.
  • graph_arbitrage.py processes this data and puts it into a graph, before running Bellman-Ford to find arbitrage opportunities.

Your turn

Here's a brief list of a few ways that you could extend this project. Some are trivial, some are not!

  • Model transaction fees. This is literally one line of code, multiplying the arbitrage value by e.g 0.999 for each element in the path.
  • Download data from more exchanges. graph_arbitrage.py operates completely independently of the data collection, it just needs an adjacency matrix.
  • Automatically run the code at fixed intervals to continuously look for arbitrage.
  • Modify the Bellman-Ford so that it doesn't have to recompute everything when some weights change.