How To Perform Crypto Arbitrage Between Prices Across Exchanges

The following post is based on a trading experiment we performed earlier in the week, using price differences between Binance and Poloniex on the BTC/ZRX pairing, to make three risk-free trades, and increase our bitcoin stack by 0.0068.

This is by no means a huge amount of money. Based on the Bitcoin price at the time, it was about $120.

So this post isn’t designed to be one of those “Look at us ballers and how much money we earned” posts. It’s designed to highlight a few things, that you can take action on and replicate yourself to make more money:

The crypto space is still pretty immature compared to traditional stocks. As such, there are a lot of arbitrage opportunities.

You can make a decent amount of money off this if you put in the time.

Companies working on trading tools and algorithms to automate this will do well.

This is also the first in a series of posts we’ll do. Subscribe for free to receive the next ones when they come out.

First off, here’s a bit of context and a hat tip where it’s due.

We first heard about these arbitrage opportunities by watching a few videos from CoinFi about the signals they’re building. There are a few videos on their blog that introduced us to the same strategies we’re going to teach you today.

So a big thanks to the CoinFi team for making us aware of this, and we’re excited about the tools they are building.

Here’s the TL:DR of the strategy:

You look for price gaps between exchanges with high liquidity for your chosen pairings. In our case, we had a lot of ZRX spare, and noticed they were trading in good volumes on Poloniex and Binance.

You spread your supply of the tokens evenly across both exchanges (So we had 5,500 ZRX on Polo and 5,500 on Binance).

You also have BTC spread across both exchanges as well. We had about 0.08 BTC on each. This would be enough to buy 5,500 ZRX.

When the gap is in your favor, you sell on one exchange, buy on the other, and pocket the difference.

You can then transfer ZRX and BTC again to balance them out, and rinse and repeat until the opportunity is gone.

Even with trading fees and transfer fees, we still came out ahead.

In total, it took us three trades spread across a 4 hour period to make 0.0068 BTC profit, which is pretty good considering the small amount of funds we were playing with.

So let’s dig deeper and share some of the nuances of the case study, so you can learn how to replicate it.

Step One: Patience

When we first heard about this strategy, we wanted to put it to the test right away, but we actually couldn’t see many opportunities. They are there all the time, but they’re often only open for minutes at a time, which means you have to spot them quickly, and execute on them quickly too.

Since we’ve got a lot of different tokens lying around from the large amount of ICO’s we invested in this summer, it gave us more options. We just checked all our main holdings several times per day, until we found an opportunity.

Eventually, the ZRX/BTC pairing presented itself well.

So here’s how it looked before setup:

As mentioned, we had an equal amount of ZRX spread across Binance and Poloniex (the two biggest exchanges trading ZRX) and an equal amount of BTC to cover them.

The trick with this technique is to be able to buy on one exchange within moments of selling on the other, so you still come out with the same size stack of ZRX and a larger stack of BTC.

If you were to try a different kind of arbitrage, such as buying ZRX on one exchange, then transferring it across and selling it on another for a higher price, you run the risk of missing out, or even decreasing your stack.

Step Two: Execute

So in our case, the first thing we did was make sure the pricing was in our favor, and when we were confident it was, we hit the sell button on Poloniex.

As you can see, we sold 5500 ZRX for between 0.00001477 and 0.00001479.

We then switched tabs and bought them back at Binance for a cheaper price:

We were able to buy them back for a price of between 0.00001400 and 1398, which is a lot cheaper than we sold for on Poloniex.

As you can see from the timestamps in the screenshots, these trades took place over the course of about 30 seconds.

Here’s how our stacks looked after:

So we had reduced our overall ZRX supply by 5.50 tokens, but had increased our BTC by 0.0041, (which was worth well more than the 5.50 ZRX we’d lost).

Even with the trading fees, we’d made a nice profit on an *almost* risk-free trade. We say risk-free, because if you do it wrong, you could end up reducing your stack or making another mistake, which we’ll go into below.

After making that initial trade, we sent half our BTC back to Binance and half our ZRX back to Poloniex, and rinsed and repeated 2 more times. Since that day, we’ve seen a few other opportunities as well.

Oh, we also want to point out that we had to pay small transfer fees to send the coins back to their respective exchanges, but it was a minimal amount each time. About 0.0001 BTC and 10 ZRX. Not enough to negate our profits.

Step Three: Don’t Mess It Up

Next, we’ll go into some important tips for you to follow.

Doing the above methods manually can lead to a few mistake, so it’s vital you consider some of the following things.

1.) Make sure you check the buy and sell prices manually on both exchanges.

Don’t just rely on the average price shown at Coinmarketcap.

For example:

Now in this screenshot, it looks like there’s an arbitrage opportunity between Binance and Poloniex (and there was), but you can’t just rely on this price. You need to verify manually by logging into both exchanges and seeing what the actual order books are doing.

Which brings us onto point two.

2.) Make sure there is actually enough liquidity and volume at the price you want to sell.

Sometimes one person places a buy or sell price well above or below what everyone else is doing, and it might only be for a few tokens. If you want to sell 5,500 for example, you need to see what the best price you could get is.

For example:

In this screenshot, the “Highest Bid” is shown as 0.00002180 but that is just for 108 ZRX. If you want to sell 5,500, you’ll likely be selling for a lower price of 0.00002170. That’s a huge difference, and it can make a big difference to the arbitrage’s success.

If the other exchange is showing the “Best Ask” price as 0.00002170 then you might think you’ve got an opportunity when you really don’t. Make sure you double check this.

3.) Make sure you have enough BTC to cover buying back to same amount you sell.

This one sounds obvious but is very easy to get wrong! We almost did this on our third trade, because we got complacent.

When we first started this, 0.077 BTC was enough to buy 5,500 ZRX, so we made sure we had 0.08 on each exchange. However, when we did it again several hours later, you needed 0.081 to buy them. If we hadn’t checked this, we’d have sold 5,500 on Poloniex and then only been able to buy about 5,300 back on Binance.

We’d have still ended up making profit, but by reducing our ZRX stack, we wouldn’t have been able to call it a risk-free arbitrage.

If we tried doing it now, we’d only be able to buy half the amount of ZRX back, since the price has soared these last two days.

Before you execute the trade, make sure you have enough BTC on the “Buy” exchange to cover the amount you want to sell on the other. If you don’t have enough, just sell a smaller amount.

4.) These opportunities exist with many different coins.

If you try chasing opportunities for coins you don’t already own, it may prove problematic, unless you have a lot of BTC lying around that you don’t mind spending on picking up some low priced alts.

In our case, we only monitor the ones we already have a decent amount of, because we can just spread them around 2 exchanges and wait for opportunities.

One of the best ones we’ve seen is Bitcoin Gold, which is usually $5 different between Bittrex and Binance. It also has a larger spread though, so make sure you check the real prices.

Manually Doing This Is Possible, But Automation Is Much Better

The fact we’ve been able to do this trade more than once in a single day shows the opportunity that is out there, but it’s a huge timesink to keep checking the exchanges all day long and then executing the trades.

There are definitely things that can be done to automate it though, such as:

Having a signal to notify you when an opportunity exists

Having an algorithm to perform the trade for you (or a bot, if you want to call it that).

Having a bunch of people working together to notify one another.

So that brings us back to CoinFi, who first introduced us to this opportunity and taught us how to trade it.

They’re working on not only building these signals out (and more), but also helping to create the bots as well. This is Wall Street caliber stuff, and the sooner us everyday traders get access to them, the better.