ticktracer
ticktracer is a simple Python application that allows you to trace your latency to crypto exchanges, and was developed to run on Alibaba Cloud ECS and analyze the shortest latency for exchanges hosted on Alibaba Cloud. However, any cloud provider can be used.
When the machine running ticktracer and the target exchange use the same NTP service, we can safely assume that the any clock skew between the two instances is negligible. If your instance has chronyc installed, you can verify the time synchronization status of the machine through the command chronyc sources.
Currently only websocket data feed latency can be extracted. It works by establishing a websocket connection to a crypto exchange API endpoint, decrypting the session with Wireshark, and comparing the arrival timestamp of packets with the payload timestamps provided by the exchange itself. Packet timestamps are received by libpcap from the kernel and are not generated by ticktracer itself, unlike other projects. See here for more information.
Supported Exchanges
- Binance
- Bybit
- OKX
Requirements
Ticktracer has been tested on the following operating systems:
- macOS >= 14.0
- Debian >= 12.0
- Ubuntu >= 22.0
In addition, the following external dependencies are required:
wiresharkortshark>= 4.0.7libssl-devfor Debian-based systems oropensslfor MacOS
Installation
MacOS
Install dependencies
brew install wireshark openssl
Install ticktracer with pipx (recommended)
brew install pipx
pipx ensurepath
pipx install ticktracer
Install ticktracer with pip
Install ticktracer with pip:
python3 -m pip install ticktracer
Linux (Debian)
Install dependencies
sudo apt update && sudo apt install -y tshark libssl-dev
Install ticktracer with pipx (recommended)
sudo apt install pipx
pipx ensurepath
pipx install ticktracer
Install ticktracer with pip
python3 -m pip install ticktracer
Root permissions
Note that Wireshark requires the user to either have root privileges or to be part of the wireshark group in order to trace packets. To enable non-root access to wireshark, run the following command and select yes:
sudo dpkg-reconfigure wireshark-common
To add your user to the wireshark group, run the following command:
sudo adduser <YOUR-USER> wireshark
Create a new session in your terminal, and verify that you are part of the wireshark group with the following command:
groups
Automated environments
For automated environments, like a userdata script, use the following commands to install wireshark:
export DEBIAN_FRONTEND=noninteractive
apt update && apt install -y libssl-dev tshark
Usage
usage: ticktracer [-h] -e EXCHANGE -p PAIR -d DURATION [-i INTERFACE]
options:
-h, --help show this help message and exit
-e, --exchange_id {okx,binance,bybit}
The exchange to connect with.
-p, --pair PAIR The trading pair to monitor. Look up the specific format on the exchange's API documentation.
-d, --duration DURATION
Duration in seconds to monitor.
-i, --interface INTERFACE
The network interface to listen on. Default is eth0 for Linux or en0 for macOS.
Example: ticktracer -e okx -p BTC/USDT -d 60
After the monitoring duration has elapsed, the script will output the latency in milliseconds across different percentiles:
Total samples taken: 11567
Latency report:
+------------+-------------------------+
| Percentile | Latency in milliseconds |
+------------+-------------------------+
| MIN | 3.104 |
| 25% | 9.151 |
| 50% | 10.401 |
| 75% | 11.762 |
| 90% | 13.08 |
| 95% | 14.102 |
| 99% | 19.474 |
| 99.9% | 32.975 |
| MAX | 48.023 |
+------------+-------------------------+
Metadata
Release files for ticktracer 0.0.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ticktracer-0.0.6.tar.gz | 16.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ticktracer-0.0.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.6 kB
Release files / ticktracer-0.0.6.tar.gz
| Download URL | ticktracer-0.0.6.tar.gz |
|---|---|
| Size | 16.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
640d55382c7d47721aded5d008e3b9ee325a2efb94dcd8c4812b895494424011
|
|
BLAKE2b-256 checksum How to use checksums |
efd0c031654d03ce10926bfd32a2144fb953c4170700b3ba4673469ec2907b59
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.13.0
|
Release files / ticktracer-0.0.6-py3-none-any.whl
| Download URL | ticktracer-0.0.6-py3-none-any.whl |
|---|---|
| Size | 14.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f0fd8ea8ed9c9303d2a29cdc1a4861e79a5b36d861645d4c89976942b4028b73
|
|
BLAKE2b-256 checksum How to use checksums |
03b69f11023c715d3fcc86a54d22b9f5ed926673df084bcd86badf556c0dd82a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.13.0
|