Skip to main content

Python client for tardis.dev - historical tick-level cryptocurrency market data replay API.

Project description

tardis-client

PyPi Python Code style: black

Python client for tardis.dev - historical tick-level cryptocurrency market data replay API. Provides fast, high level and developer friendly wrapper for more low level HTTP API with local file based caching build in.

Installation

Requires Python 3.7.0+ installed.

pip install tardis-client

Usage

import asyncio
from tardis_client import TardisClient, Channel

async def replay():
    tardis_client = TardisClient()

    # replay method returns Async Generator
    # https://rickyhan.com/jekyll/update/2018/01/27/python36.html
    messages = tardis_client.replay(
        exchange="bitmex",
        from_date="2019-06-01",
        to_date="2019-06-02",
        filters=[Channel(name="trade", symbols=["XBTUSD","ETHUSD"]), Channel("orderBookL2", ["XBTUSD"])],
    )

    # this will print all trades and orderBookL2 messages for XBTUSD
    # and all trades for ETHUSD for bitmex exchange
    # between 2019-06-01T00:00:00.000Z and 2019-06-02T00:00:00.000Z (whole first day of June 2019)
    async for local_timestamp, message in messages:
        # local timestamp is a Python datetime that marks timestamp when given message has been received
        # message is a message object as provided by exchange real-time stream
        print(message)

asyncio.run(replay())

Try on repl.it

API

tardis-client package provides TardisClient and Channel classes.

from tardis_client import TardisClient, Channel

TardisClient

Optional client constructor parameters.

name type default value description
api_key (optional) string "" optional string containing API key for tardis.dev API. If not provided only first day of each month of data is accessible (free access)
cache_dir (optional) string <os.tmpdir>/.tardis-cache optional string with path to local dir that will be used as cache location. If not provided default temp dir for given OS will be used.

Example:

# creates new client instance with access only to sample data (first day of each month)
tardis_client = TardisClient()

# creates new client with access to all data for given API key
tardis_client = TardisClient(api_key="YOUR_API_KEY")

# creates new client with custom cache dir
tardis_client = TardisClient(cache_dir="./cache")
  • tardis_client.clear_cache()

    Removes local file cache dir and it's contents.

    Example:

    tardis_client = TardisClient()
    
    tardis_client.clear_cache()
    
  • tardis_client.replay(exchange, from_date, to_date, filters=[])

    Replays historical market data messages for given replay arguments.

    Returns Async Generator with named tuples (namedtuple("Response", ["local_timestamp", "message"])).

    • local_timestamp is a Python datetime object specyfying when message has been received from the exchange real-time data feed.

    • message is Python dict with parsed JSON that has exactly the same format as message provided by particular exchange's real-time data feed.

      replay method parameters:

      name type default value description
      exchange string - requested exchange name - see allowed exchanges list
      from_date string - requested UTC start date of data feed - valid ISO date string, eg: 2019-04-05 or 2019-05-05T00:00:00
      to_date string - requested UTC end date of data feed - valid ISO date string, eg: 2019-04-05 or 2019-05-05T00:00:00
      filters (optional) List[Channel] [] optional filters of requested data feed. Use /exchanges/:exchange API call to get allowed channel names and symbols for requested exchange
      Channel class

      Channel class constructor parameters.

      name type description
      name string Use /exchanges/:exchange API call to get allowed channel names and symbols for requested exchange
      symbols List[string] Use /exchanges/:exchange API call to get allowed channel names and symbols for requested exchange
      Channel(name="trade", symbols=["XBTUSD","ETHUSD"])
      Channel("orderBookL2", ["XBTUSD"])
      

FAQ

How to debug it if something went wrong?

tardis-client uses Python logging on DEBUG level for that purpose. In doubt please create issue in this repository with steps how to reproduce the issue.

Where can I find more details about tardis.dev API?

Check out API docs.

License

MPL-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tardis_dev-2.1.2.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tardis_dev-2.1.2-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file tardis_dev-2.1.2.tar.gz.

File metadata

  • Download URL: tardis_dev-2.1.2.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.12.4 Darwin/24.5.0

File hashes

Hashes for tardis_dev-2.1.2.tar.gz
Algorithm Hash digest
SHA256 0ab3da0713d5894db75c7a8c4604ca1b134a38a5b7e8936169d5e38e687af420
MD5 d2838ab514cae4429963ce518f3f5c62
BLAKE2b-256 53de5ee67e26d110f76b8ad6e9164670c4e5957fa4187670bf66da5ad3fc0a7c

See more details on using hashes here.

File details

Details for the file tardis_dev-2.1.2-py3-none-any.whl.

File metadata

  • Download URL: tardis_dev-2.1.2-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.12.4 Darwin/24.5.0

File hashes

Hashes for tardis_dev-2.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 afd22faadac01e51f91249f5050f5a404d41d26fdfb9d45bd8136cc33fc24331
MD5 a110f0f9369448c498591948aacfd13b
BLAKE2b-256 47777b8af5f391bc232614c04e2804f9fe144d76b9663cd590446cbb13f8d157

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page