back to portfolio


Dec 2017, 2 months


Python developer


Resolve errors and performance issues
Creating design specifications based on requirements for new and existing products
Constant evaluation, optimization and enhancement of existing functionalities
Share knowledge and support
Proof of concept and prototyping


Project description

The project was requested as the PoC of the client's idea on covering the crypto exchanges inefficiency in the times where those boomed massively.

The main idea was to cover the differences in the exchange rates of the currencies inside of the exchange. The orders were supplied in the chain, so the starting currency would go through multiple conversions, hoping based on the forecast, that due to the absence of direct regulation mechanics and lags, the outcome of such a loop would be positive.

crypto currency exchange rate visualized

The idea did not prove itself as sustainable, but it was using the most advanced techniques from the technological perspective.

In the first phase we found out, that as much the crypto exchanges still had their technical problems and also suffering under huge load caused by huge demand, most of them were not able to deliver data realtime. A generic exchange api library ccxt and recently matured python asyncio enabled us fast and effective research, which of the exchanges offer the biggest exchange graph and simultaneously support modern real time delivery based on websockets. At the end we decided to stick to binance api.

Binance API is based on twisted though, which has enabled the async programming in python years before python started supporting it natively, yet till the very recent time the python2 support was an essential advantage. In my very humble opinion, the API twisted is offering, is way cleaner and easier to understand, so it's no wonder python-binance decided to use it.

The main data the exchanges work with are the real time data streams, meaning the data has to flow in both directions. The legacy and more widely spread apis among the traders on classical instruments use a TCP connection, which is logically not suitable for restful apis, at least not out of the box, so binance and many others offer websocket based api.