1 Punkte von GN⁺ 15 일 전 | 1 Kommentare | Auf WhatsApp teilen
  • Ein asynchroner Python-Bot, der in nicht-sportbezogenen Ja/Nein-Märkten auf Polymarket automatisch nur „No“-Positionen kauft, bereitgestellt zu Unterhaltungszwecken
  • Unterscheidet zwischen Paper-Trading- und Live-Trading-Modus; für den Live-Betrieb sind mehrere Umgebungsvariablen und Private-Key-Einstellungen zwingend erforderlich
  • Über eine Dashboard-Oberfläche lässt sich der Status überwachen; wenn das Senden von Orders aktiviert ist, wird der Live-Recovery-Status gespeichert
  • Enthält Heroku-Deployment-Skripte, die Statusprüfung der App, Log-Abfrage, Umschalten auf Live-Trading und Beenden von Prozessen automatisieren
  • Test- und Datenverwaltungswerkzeuge sind enthalten, sodass Ausführung und Verifikation sowohl lokal als auch in Cloud-Umgebungen sicher möglich sind

Überblick

  • Nothing Ever Happens ist ein asynchroner, Python-basierter Bot, der auf der Polymarket-Plattform in nicht-sportbezogenen Ja/Nein-Märkten immer „No“-Positionen kauft
  • Er wird zu Unterhaltungszwecken bereitgestellt und läuft ohne Gewähr oder Haftung auf eigenes Risiko des Nutzers
  • Das Repository ist in die Verzeichnisse bot/, scripts/ und tests/ gegliedert, die jeweils Trading-Logik, Betriebsskripte und Testcode enthalten

Laufzeitarchitektur

  • Zur Laufzeit werden eigenständige Märkte gescannt und „No“-Einträge unterhalb einer konfigurierten Preisobergrenze gesucht, um Positionen zu verfolgen
  • Über das Dashboard wird der Status angezeigt; wenn das Senden von Orders aktiviert ist, wird der Live-Recovery-Status gespeichert
  • Das Ausführungsmodul ist nothing_happens; im inaktiven Modus wird PaperExchangeClient verwendet

Sicherheitsmodell

  • Für das Senden echter Orders müssen die folgenden drei Umgebungsvariablen alle gesetzt sein
    • BOT_MODE=live
    • LIVE_TRADING_ENABLED=true
    • DRY_RUN=false
  • Fehlt auch nur eine dieser Bedingungen, wird in den Paper-Trading-Modus gewechselt
  • Im Live-Trading-Modus werden zusätzlich die folgenden Umgebungsvariablen benötigt
    • PRIVATE_KEY
    • FUNDER_ADDRESS (für Signaturtyp 1 und 2)
    • DATABASE_URL
    • POLYGON_RPC_URL (für Proxy-Wallet-Genehmigungen und Rückzahlungen)

Einrichtung und Konfiguration

  • Die Installation erfolgt mit pip install -r requirements.txt; anschließend wird eine Beispiel-Konfigurationsdatei kopiert und als lokale Konfiguration verwendet
  • config.json enthält keine geheimen Laufzeiteinstellungen, .env enthält geheime Schlüssel und Ausführungs-Flags
  • Die Laufzeitkonfiguration befindet sich unter strategies.nothing_happens; über die Umgebungsvariable CONFIG_PATH kann eine andere Konfigurationsdatei angegeben werden

Lokale Ausführung

  • Lokal kann mit dem Befehl python -m bot.main gestartet werden
  • Das Dashboard wird an die Umgebungsvariable $PORT oder DASHBOARD_PORT gebunden

Heroku-Deployment-Workflow

  • In der Heroku-Umgebung wird HEROKU_APP_NAME verwendet oder ein expliziter App-Name als Argument übergeben
  • Bereitgestellte Skripte:
    • alive.sh: App-Status prüfen
    • logs.sh: Logs abrufen
    • live_enabled.sh / live_disabled.sh: Live-Trading-Modus umschalten
    • kill.sh: Prozess beenden
  • Ein typischer Deployment-Ablauf sieht wie folgt aus
    • Umgebungsvariablen setzen (BOT_MODE, DRY_RUN, LIVE_TRADING_ENABLED, PRIVATE_KEY, FUNDER_ADDRESS, POLYGON_RPC_URL, DATABASE_URL)
    • git push heroku <branch>:main
    • heroku ps:scale web=1 worker=0
  • Der worker-Prozess ist so ausgelegt, dass er bei unbeabsichtigter Ausführung schnell fehlschlägt

Tests

  • Für Unit- und Regressionsprüfungen wird pytest verwendet
  • Befehl: python -m pytest -q

Enthaltene Skripte

  • scripts/db_stats.py

    • Prüft die Anzahl der Live-Datenbanktabellen und die jüngste Aktivität
  • scripts/export_db.py

    • Exportiert Tabellen aus DATABASE_URL oder aus einer Heroku-App
  • scripts/wallet_history.py

    • Fragt Positionen, Trades und Guthaben der konfigurierten Wallet ab
  • scripts/parse_logs.py

    • Wandelt Heroku-JSON-Logs in Terminal- oder HTML-Format um

Repository-Verwaltung

  • Lokale Konfigurationen, Ledger, exportierte Daten, Berichte und Deployment-Artefakte sind standardmäßig von Git ausgeschlossen
  • Das Repository ist so organisiert, dass Produktions- und lokale Umgebungen klar getrennt sind

1 Kommentare

 
GN⁺ 15 일 전
Hacker-News-Kommentare
  • Wenn man sich diesen Tweet ansieht, steht dort ausdrücklich, dass weder Rendite noch Rückerstattung versprochen werden
    Es wirkt einfach wie ein Projekt, das zum Spaß als meme-basierter Code gebaut wurde. Eher ein lustiges Experiment als ein Betrug

    • Stimmt. Der Bot hat überhaupt kein Risikomanagement, und auf GitHub steht auch klar, dass es ein Meme ist
      Es gibt eine Statistik, wonach etwa 73 % der Polymarket-Märkte tatsächlich mit „No“ enden
      Wer sich für Datenanalyse interessiert, kann sich das Hugging-Face-Dataset ansehen
    • Dann heißt das aber auch, dass es keine wirklich brauchbare Trading-Strategie ist
      Wegen des menschlichen Optimismus-Bias könnte die „Yes“-Seite überbewertet sein, aber Polymarket wird bereits von Tradern genau beobachtet, sodass die Preise realistisch gebildet werden
      Wenn man auf fallende Coins wetten könnte, wäre das interessant, aber auch so ein Markt würde am Ende effizient bepreist werden
    • Wenn Leute eine wirklich profitable Strategie finden, teilen sie sie normalerweise nicht bereitwillig
    • Der Ausdruck „meme-basierter Code“ ist einfach zu gut. Wahrscheinlich hat genau diese nerdige Spielerei die Diskussion explodieren lassen
    • Viele Märkte sind miteinander verknüpft, daher ist es nur natürlich, dass häufiger „No“ herauskommt. Wenn es zum Beispiel 10 Kandidaten gibt, enden 9 mit „No“
  • Interessant ist, dass dieses Projekt für Nicht-Sport-Märkte gedacht ist
    Auch bei Sportwetten gilt weithin, dass die „No“-Seite meist die höhere Rendite hat. „Yes“ ist spannender und zieht deshalb mehr Leute an
    Am Ende könnten also die „langweiligen Wetten“ langfristig die bessere Rendite liefern
    Solche verhaltensökonomischen Erkenntnisse aus Sportwetten könnten sich auch auf Nicht-Sport-Märkte übertragen lassen

    • Wegen der Backend-Struktur von Polymarket sind selbst Sportwetten im Grunde ebenfalls in Yes/No-Form aufgebaut, daher ist die Abgrenzung unscharf
    • Solche Strategien können anfangs einen positiven Erwartungswert (EV) haben, aber sobald die Leute das merken, passt sich der Markt effizient neu an
      Dadurch entsteht letztlich eine Feedback-Schleife, in der die Preise wieder an ihren Platz zurückfinden
      Wenn man also eine wirklich profitable Strategie findet, ist es klüger, sie keinesfalls Open Source zu veröffentlichen, sondern sie still für sich laufen zu lassen
  • Die Idee „immer auf No setzen“ ist unterhaltsam, aber wie profitabel sie wirklich ist, müsste erst verifiziert werden

    • Ich habe auch einen Backtest gemacht, und obwohl es wie 100 % APR aussah, war dabei ein Teil hineingeschummelt, weil der Zeitpunkt des Ergebnisses im Voraus bekannt war
      In der Realität ist die Liquidität gering, und ein einziger Verlust kann mehrere Gewinne zunichtemachen
      Sportmärkte sind wegen klarer Endzeitpunkte und hoher Handelsvolumina eher besser vorhersehbar
    • Ich mag Prognosemärkte ebenfalls und habe schon verschiedene Strategien ausprobiert; entscheidend ist das Timing
      Statt einfach auf alles „No“ zu setzen, könnte es ziemlich stabile Gewinne bringen, auf verwandte Einträge „No“ zu setzen, sobald die ersten Nachrichten dazu auftauchen
  • Ich sehe das als Arbitrage der Vorstellungskraft
    Menschen mögen aufregende Szenarien, aber die Realität ist meistens langweilig

    • Menschen unterschätzen Black-Swan-Ereignisse, reagieren aber übermäßig, wenn sie dann tatsächlich eintreten
      Ich habe dieses Muster sowohl in der Finanzkrise als auch während Corona genutzt, um Gewinne zu machen
      Im Moment mache ich mir Sorgen über die AI-Blase, aber statt eines Crashs erwarte ich eher ein langsames Abkühlen und habe deshalb meinen Anteil an Anleihen und Cash erhöht
    • Wenn so ein Bot aber auf militärische oder politische Ereignisse angewendet würde, könnte das einen Anreiz schaffen, „Yes“ tatsächlich Wirklichkeit werden zu lassen
    • Genau deshalb werden Märkte nicht gleichmäßig bepreist
    • Das Problem ist, dass diese Logik als echte Strategie in der Praxis nicht besonders gut funktioniert
  • Es wird behauptet, auf „No“ zu wetten sei im Grunde dasselbe, wie bei allen anderen Ergebnissen auf „Yes“ zu setzen
    In der Polymarket-Dokumentation gibt es dazu passende Berechnungen

    • Das ist aber ein Missverständnis. Zum Beispiel sind „Joe Dart wird Präsident Y/N“ und „Cory Wong wird Präsident Y/N“ voneinander unabhängig
    • Genau. Die einzelnen Ergebnisse sind nicht miteinander verknüpft
  • Diese Strategie ist wie Münzen vor einem Zug aufsammeln
    Man macht immer wieder kleine Gewinne und verliert dann alles durch ein einziges Long-Tail-Ereignis

    • Der Autor hat das wohl auch nicht als ernsthafte Strategie gemeint, sondern eher als Meme-Projekt
    • Wenn man nicht das gesamte Kapital auf ein einzelnes Ereignis setzt, ist der Verlust auf den Einsatz begrenzt
  • Als verwandte Forschung gibt es Prediction Market Microstructure
    (Frühere Diskussion: HN-Link)

  • Ich denke, der Markt hat das bereits eingepreist

    • Der Autor erwähnt selbst, dass man „langfristig unter 0,73 kaufen“ sollte
      Siehe diesen Tweet
    • Aber schon die bloße Existenz eines Marktes kann die Verfügbarkeitsheuristik triggern und Menschen dazu bringen, Wahrscheinlichkeiten zu überschätzen
      Referenzlink
    • „Nichts passiert“ trifft es ziemlich genau
    • Benjamin — eine interessante Erwähnung
  • Letztlich liegt die realisierte Volatilität im Zeitverlauf tendenziell unter der impliziten Volatilität

    • Menschen zahlen zu viel für Skew-Schutz, und wer diesen verkauft, kann beständig Gewinne machen
      Natürlich kann ein einziger Ausbruch dann auch große Verluste verursachen
  • Nur weil „No“ in 70 % der Fälle herauskommt, heißt das noch nicht, dass man damit Geld verdient
    Das ist typische schlechte Mathematik. Eine Strategie wie Münzen vor einer Dampfwalze aufsammeln

    • Ich glaube nicht, dass hier jemand getäuscht wird. Der Autor scheint das einfach als Witz gebaut zu haben
    • Ohne Leverage ist das Risiko einer solchen Strategie begrenzt
      Allerdings sind solche ineffizienten Märkte klein und selten, sodass man am Ende vielleicht zwar Münzen aufsammelt, aber eben auch nur Münzen
    • Ob man Gewinne macht, hängt von Variablen wie Einstiegspreis, Erwartungswert und Restlaufzeit ab
      Selbst wenn man dem Kelly-Kriterium folgt, ist es bei zufälligen Wetten wahrscheinlich, dass das Kapital irgendwann aufgezehrt wird. Für jeden Markt ist eine gründliche Due Diligence (DD) nötig