Nichts passiert je: Ein Bot, der in nicht-sportbezogenen Polymarket-Märkten immer „No“ kauft
(github.com/sterlingcrispin)- 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/undtests/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 wirdPaperExchangeClientverwendet
Sicherheitsmodell
- Für das Senden echter Orders müssen die folgenden drei Umgebungsvariablen alle gesetzt sein
BOT_MODE=liveLIVE_TRADING_ENABLED=trueDRY_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_KEYFUNDER_ADDRESS(für Signaturtyp 1 und 2)DATABASE_URLPOLYGON_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.jsonenthält keine geheimen Laufzeiteinstellungen,.enventhält geheime Schlüssel und Ausführungs-Flags- Die Laufzeitkonfiguration befindet sich unter
strategies.nothing_happens; über die UmgebungsvariableCONFIG_PATHkann eine andere Konfigurationsdatei angegeben werden
Lokale Ausführung
- Lokal kann mit dem Befehl
python -m bot.maingestartet werden - Das Dashboard wird an die Umgebungsvariable
$PORToderDASHBOARD_PORTgebunden
Heroku-Deployment-Workflow
- In der Heroku-Umgebung wird
HEROKU_APP_NAMEverwendet oder ein expliziter App-Name als Argument übergeben - Bereitgestellte Skripte:
alive.sh: App-Status prüfenlogs.sh: Logs abrufenlive_enabled.sh/live_disabled.sh: Live-Trading-Modus umschaltenkill.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>:mainheroku ps:scale web=1 worker=0
- Umgebungsvariablen setzen (
- Der
worker-Prozess ist so ausgelegt, dass er bei unbeabsichtigter Ausführung schnell fehlschlägt
Tests
- Für Unit- und Regressionsprüfungen wird
pytestverwendet - 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_URLoder aus einer Heroku-App
- Exportiert Tabellen aus
-
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
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
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
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
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
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
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
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
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
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
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
Als verwandte Forschung gibt es Prediction Market Microstructure
(Frühere Diskussion: HN-Link)
Ich denke, der Markt hat das bereits eingepreist
Siehe diesen Tweet
Referenzlink
Letztlich liegt die realisierte Volatilität im Zeitverlauf tendenziell unter der impliziten Volatilität
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
Allerdings sind solche ineffizienten Märkte klein und selten, sodass man am Ende vielleicht zwar Münzen aufsammelt, aber eben auch nur Münzen
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