bitcoin-arbitrage-bot

Bitcoin Arbitrage Bot

Kauft Bitcoin auf einer Börse (Kraken) zum Börsenkurs und verkauft sie auf einem Peer-to-Peer-Marktplatz (Peach) mit Aufpreis an Privatpersonen. Angebote, Escrow und Preisanpassung laufen automatisch, die Zahlungsprüfung bleibt manuell. Gesteuert per Telegram, dazu ein kleines Web-Dashboard.

Python License

Die Idee in einfachen Worten

Auf P2P-Marktplätzen kaufen Leute Bitcoin direkt von anderen Personen, ohne Konto bei einer Börse. Dafür zahlen sie einen Aufpreis gegenüber dem Börsenkurs, typischerweise ein paar Prozent. Der Bot nutzt diese Differenz.

Der Gewinn ist der Aufpreis abzüglich Gebühren – Börse, Auszahlung, Blockchain-Transaktion und Plattform.

Was es macht

  1. Kaufen – Marktorder auf Kraken, Auszahlung der BTC in eine eigene Wallet.
  2. Anbieten – Verkaufsangebot auf Peach mit Aufpreis (die Plattform erlaubt seit September 2026 bis +21 %).
  3. Absichern – die BTC gehen in ein Escrow, ein Treuhandkonto auf der Blockchain, damit der Käufer sicher sein kann, dass die Coins da sind.
  4. Nachsteuern – findet ein Angebot nach 24 Stunden keinen Käufer, senkt der Bot den Aufpreis schrittweise bis zu einer Untergrenze.
  5. Freigeben – meldet ein Käufer die Zahlung, schickt der Bot eine Telegram-Nachricht mit Betrag und Konto. Bestätigt wird von Hand, dann gehen die BTC aus dem Escrow an den Käufer.

Jeder Trade wird mit allen Gebühren in einer SQLite-Datenbank erfasst.

Beispiel

/status

Status ▶️ (3d 4h)
Spot: 84'200 CHF

Plattformen
  peach: ok

Exchanges
  kraken: ok

Offers: 2 pending, 1 funded
Heute: 1'250'000 sats

(Beispiel mit erfundenen Zahlen.)

Architektur

flowchart LR
    K["Kraken<br/>Börsenkurs"] --> W["eigene Wallet"]
    W --> P["Peach<br/>Angebot + Escrow"]
    P --> B(["Käufer"])
    B -->|Zahlung| M["manuelle Prüfung"]
    M -->|bestätigt| P
    P --> DB[("SQLite<br/>Trades + Gebühren")]
    TG(["Telegram"]) <--> P

Mehr Details: docs/architecture.md

Zusätzlich gibt es eine Version des Diagramms.

Technisch interessante Teile

Module

├── core/
│   ├── engine.py          # Hauptschleife (alle ~30 s)
│   ├── models.py          # Datenmodelle (Angebot, Vertrag …)
│   ├── hd_keys.py         # Schlüsselableitung aus der Seed-Phrase (BIP32/39)
│   ├── taproot.py         # Taproot-Adressen und Schnorr-Signaturen (BIP340/341)
│   ├── offer_sizing.py    # Angebotsgrössen aus dem CHF-Limit
│   ├── pricing.py         # Aufpreis-Berechnung aus den Konkurrenzangeboten
│   └── trade_logger.py    # Trade-Datenbank (SQLite)
├── exchanges/             # Kraken, Bitvavo
├── platforms/             # Peach
├── notifications/         # Telegram-Befehle und Meldungen
├── dashboard.py           # Web-Dashboard (Flask)
└── run.py                 # Startpunkt

Setup

pip install -r requirements.txt

cp config.example.json config.json
# config.json mit API-Keys, Seed-Phrase und Zahlungsdaten ausfüllen

python run.py

Braucht Python 3.11+, ein Kraken-Konto, ein Peach-Konto und einen Telegram-Bot (via @BotFather). Seed-Phrase und Zahlungsdaten gehören in die lokale config.json und nie ins Repo.

Designentscheide

Hinweis zum Umfang

Der Bot läuft produktiv. Dieses Repo zeigt den Code als Portfolio-Projekt, nicht als fertige Lösung zum Nachbauen.

Veröffentlicht: Taproot-Implementierung, Schlüsselableitung, Angebotsgrössen, Preisberechnung, Anbindung an Kraken und Peach, Datenmodell, Datenbank, Telegram-Bot und Dashboard.

Nicht veröffentlicht: die eigentliche Handelslogik, das Bauen der Wallet-Transaktionen und der Umgang mit Zahlungsdaten. In core/engine.py stehen diese Funktionen als dokumentierte Hüllen, damit der Ablauf nachvollziehbar bleibt.

Nutzung auf eigenes Risiko.

Lizenz

MIT – siehe LICENSE.