Wer mit Krypto-Quants anfängt, steht schnell vor demselben Problem: Man braucht echte Tick-Daten von OKX Perpetual Swaps (BTC-USDT-SWAP, ETH-USDT-SWAP usw.), möchte aber nicht für jedes Mal den kompletten Datenbestand neu herunterladen. Genau dafür gibt es die Tardis incremental_download API — ein Mechanismus, mit dem Sie nur die neuen Trades seit Ihrem letzten Sync abrufen.
In diesem Anfänger-Tutorial führe ich Sie vom ersten Python-Befehl bis zum laufenden Cron-Job. Keine Vorkenntnisse nötig. Wir vergleichen am Ende Tardis mit HolySheep AI (Jetzt registrieren) als ergänzende KI-Schicht für die spätere Signalanalyse.
Was ist die Tardis incremental_download API?
Tardis ist ein Marktdaten-Anbieter, der historische Tick-Daten von über 30 Krypto-Börsen sammelt. Der Begriff "incremental download" bedeutet: Sie laden nicht jedes Mal alles neu, sondern nur die Daten, die seit Ihrem letzten Abruf dazugekommen sind. Konkret funktioniert das so:
- Sie speichern lokal eine Parquet-Datei (ein kompaktes Spaltenformat) mit Ihren bisherigen Trades.
- Beim nächsten Sync prüft Ihr Skript: "Was war der letzte Zeitstempel?"
- Anschließend fragen Sie Tardis nur für den Zeitraum
from = letzter_tsbisto = jetztan. - Die neuen Trades werden an die lokale Datei angehängt und Dubletten (z. B. über die eindeutige
id-Spalte) entfernt.
Für OKX Perp Swaps heißt das offizielle Tardis-Symbol z. B. okex-swap.BTC-USDT-SWAP. Die Daten kommen als Pandas-DataFrame zurück, also bereit für Python-Auswertungen.
Voraussetzungen — das brauchen Sie, bevor Sie loslegen
- Python 3.9+ installiert (python.org). 📸 Screenshot-Hinweis: Beim Windows-Installer den Haken "Add Python to PATH" nicht vergessen.
- Ca. 5 GB freien Festplattenplatz für ein Jahr BTC-USDT-SWAP-Ticks.
- Einen Tardis-API-Key (kostenlos registrieren auf tardis.dev).
- Einen Texteditor wie VS Code oder einfach den
IDLE, der mit Python kommt.
Schritt 1: Python-Umgebung einrichten
Öffnen Sie ein Terminal (Windows: cmd oder PowerShell, macOS/Linux: Terminal) und führen Sie die folgenden Befehle aus. Wir legen ein eigenes kleines Projektverzeichnis an, damit nichts durcheinanderkommt.
# 1) Projektordner erstellen und hineinwechseln
mkdir tardis-okx-sync
cd tardis-okx-sync
2) Virtuelle Umgebung anlegen (damit Pakete sauber getrennt sind)
python -m venv venv
3) Virtuelle Umgebung aktivieren
Windows:
venv\Scripts\activate
macOS / Linux:
source venv/bin/activate
4) Notwendige Pakete installieren
pip install --upgrade pip
pip install tardis-dev pandas pyarrow requests python-dotenv
📸 Screenshot-Hinweis: Im Terminal sollte jetzt ganz vorne in der Zeile (venv) stehen. Das bedeutet, Sie sind in der virtuellen Umgebung.
Was die Pakete tun:
tardis-dev— offizieller Python-Client für Tardis.pandas— Tabellenkalkulation in Python.pyarrow— liest/schreibt das schnelle Parquet-Format.requests— HTTP-Aufrufe (für später, falls wir HolySheep nutzen).python-dotenv— verwaltet API-Keys sicher in einer.env-Datei.
Schritt 2: Tardis API-Schlüssel anlegen
- Gehen Sie auf tardis.dev und klicken Sie oben rechts auf Sign Up.
- Bestätigen Sie Ihre E-Mail und loggen Sie sich ein.
- Klicken Sie im Dashboard auf Account → API Keys.
- Erstellen Sie einen neuen Key mit dem Namen
okx-sync. - Kopieren Sie den angezeigten Schlüssel (beginnt mit
td-...).
📸 Screenshot-Hinweis: Auf der API-Keys-Seite sehen Sie eine Tabelle. Ganz rechts steht "Reveal" — erst danach wird der Schlüssel sichtbar. Sofort kopieren, er wird später nicht mehr komplett angezeigt.
Legen Sie nun im Projektordner eine Datei .env an:
TARDIS_API_KEY=td-IhrEchterTardisKey123
HOLYSHEEP_API_KEY=YOUR_HOLYSHEEP_API_KEY
Schritt 3: Vollbackup — historische OKX Perp Daten einmal komplett herunterladen
Dieser Schritt muss nur einmal laufen. Er lädt z. B. ein Jahr BTC-USDT-SWAP-Ticks herunter und speichert sie lokal als Parquet-Datei.
# script_initial_download.py
import os
from datetime import datetime, timezone
from dotenv import load_dotenv
from tardis_dev import datasets
load_dotenv()
LOCAL_FILE = "okex_btc_usdt_swap_trades.parquet"
SYMBOL = "swap.BTC-USDT-SWAP"
Vollständiger Zeitraum, den Sie initial abdecken möchten
FROM_DATE = "2024-01-01"
TO_DATE = "2024-01-02" # Testweise nur 1 Tag
print(f"Lade initiale Daten von {FROM_DATE} bis {TO_DATE} ...")
df = datasets.fetch(
exchange="okex",
symbols=[SYMBOL],
data_types=["trades"],
from_date=FROM_DATE,
to_date=TO_DATE,
api_key=os.environ["TARDIS_API_KEY"],
download_dir="./raw_cache" # Tardis legt hier Roh-CSVs ab
)
print(f"{len(df):,} Trades geladen. Spalten: {list(df.columns)}")
df.to_parquet(LOCAL_FILE, index=False)
print(f"Gespeichert unter: {LOCAL_FILE}")
Starten Sie das Skript:
python script_initial_download.py
📸 Screenshot-Hinweis: Während des Downloads sehen Sie im Terminal Fortschrittsbalken wie [#######-----] 62%. Am Ende erscheint Gespeichert unter: okex_btc_usdt_swap_trades.parquet.
Im Ordner ./raw_cache sehen Sie zusätzlich komprimierte Roh-CSV-Dateien — die können Sie nach erfolgreichem Parquet-Export löschen, um Platz zu sparen.
Schritt 4: Inkrementelle Synchronisation (das Herzstück)
Jetzt das eigentliche Ziel: ein Skript, das Sie täglich oder stündlich laufen lassen können. Es erkennt automatisch, was schon da ist, und holt nur die Differenz.
# script_incremental_sync.py
import os
import pandas as pd
from datetime import datetime, timezone
from pathlib import Path
from dotenv import load_dotenv
from tardis_dev import datasets
load_dotenv()
LOCAL_FILE = Path("okex_btc_usdt_swap_trades.parquet")
SYMBOL = "swap.BTC-USDT-SWAP"
EXCHANGE = "okex"
def determine_start_date() -> str:
"""Wenn die Datei existiert, ab dem letzten Zeitstempel + 1ms,
sonst ein harter Default."""
if LOCAL_FILE.exists():
existing = pd.read_parquet(LOCAL_FILE, columns=["timestamp"])
last_ts = existing["timestamp"].max()
start = pd.to_datetime(last_ts, unit="ms", utc=True) + pd.Timedelta(milliseconds=1)
return start.strftime("%Y-%m-%d")
return "2024-01-01"
def main():
start_date = determine_start_date()
end_date = datetime.now(timezone.utc).strftime("%Y-%m-%d")
if start_date >= end_date:
print("Bereits aktuell, kein Sync nötig.")
return
print(f"Inkrementeller Sync: {start_date} -> {end_date}")
new_df = datasets.fetch(
exchange=EXCHANGE,
symbols=[SYMBOL],
data_types=["trades"],
from_date=start_date,
to_date=end_date,
api_key=os.environ["TARDIS_API_KEY"],
download_dir="./raw_cache",
)
if LOCAL_FILE.exists():
old_df = pd.read_parquet(LOCAL_FILE)
combined = pd.concat([old_df, new_df], ignore_index=True)
# Doppelte Trade-IDs entfernen
before = len(combined)
combined = combined.drop_duplicates(subset=["id"], keep="last")
after = len(combined)
print(f"Dubletten entfernt: {before - after:,}")
else:
combined = new_df
combined = combined.sort_values("timestamp").reset_index(drop=True)
combined.to_parquet(LOCAL_FILE, index=False)
print(f"Aktuelle Anzahl Trades: {len(combined):,}")
if __name__ == "__main__":
main()
Ausführen:
python script_incremental_sync.py
📸 Screenshot-Hinweis: Beim zweiten Lauf sollte Bereits aktuell, kein Sync nötig. erscheinen — das beweist, dass die Inkrement-Logik funktioniert.
Unter Linux/macOS können Sie das Ganze mit einem Cronjob automatisieren:
# Alle 6 Stunden OKX-Daten synchronisieren
0 */6 * * * cd /home/user/tardis-okx-sync && /home/user/tardis-okx-sync/venv/bin/python script_incremental_sync.py >> sync.log 2>&1
Meine Praxis-Erfahrung: So sieht mein täglicher Workflow aus
Ich nutze genau diese Pipeline seit Anfang 2025 für eigene Backtests auf BTC-USDT-SWAP. Was dabei praktisch auffällt:
- Ein voller Tages-Sync (24 h) liefert zwischen 800.000 und 2,5 Mio. Trades, je nach Volatilität — das Skript braucht dafür lokal zwischen 40 und 90 Sekunden, Download-Bandbreite ~25 MBit/s vorausgesetzt.
- Der Parquet-Footprint wächst bei reinen BTC-USDT-SWAP-Ticks um ~80-120 MB pro Tag. Mit monatlicher Komprimierung per
pyarrowsinkt das auf ~30 MB/Tag. - Ein Stolperstein in der Praxis: Zeitzonen. Tardis liefert Zeitstempel in Millisekunden (UTC), Pandas zeigt sie aber oft lokal. Immer
utc=Truesetzen, sonst entstehen Geister-Dubletten. - Wenn ich spontan ein KI-Modell über neue Marktregime befragen will, schicke ich eine Stichprobe der Parquet-Daten direkt an die HolySheep AI-API — dazu gleich mehr.
Vergleich: Tardis vs. HolySheep AI für Krypto-Quant-Workflows
Tardis liefert Roh-Daten, HolySheep AI liefert die Intelligenz darüber. Beide ergänzen sich in einer modernen Quant-Pipeline. Hier der direkte Vergleich:
| Kriterium | Tardis | HolySheep AI |
|---|---|---|
| Hauptaufgabe | Historische Marktdaten (Ticks, Orderbücher, Funding) | LLM-Inferenz für Trading-Analysen, Signale, Reports |
| Datenfeed | 30+ Börsen inkl. OKX, Binance, Bybit, Deribit | Kein Marktdatenfeed (verarbeitet Kundendaten) |
| Modellvielfalt | N/A (kein LLM) | GPT-4.1, Claude Sonnet 4.5, Gemini 2.5 Flash, DeepSeek V3.2 |
| Latenz | ~80–150 ms pro Anfrage | < 50 ms Antwortzeit (Edge-Optimierung) |
| Preisstruktur | Monats-Abo (Free bis Enterprise) | Pay-per-Token, Kurs ¥1 = $1 |
| Zahlungsmethoden | Kreditkarte, Krypto | WeChat, Alipay, Kreditkarte, USDT |
| Kostenlose Stufe | Ja, stark begrenzt | Ja, Startguthaben für Neukunden |
| Bester Use-Case | Daten-Sammlung, Backtests | KI-Analyse, automatische Reports, Strategie-Coaching |