Rien ne se passe jamais : un bot qui achète toujours « No » sur les marchés Polymarket non sportifs
(github.com/sterlingcrispin)- Bot Python asynchrone qui n’achète automatiquement que des positions « No » sur les marchés Polymarket binaires non sportifs, fourni à des fins de divertissement
- Distingue le mode de trading simulé du mode réel ; en mode réel, plusieurs variables d’environnement et paramètres de clé privée sont indispensables
- Permet de surveiller l’état via une interface de tableau de bord et, lorsque l’envoi d’ordres est activé, enregistre l’état de reprise en temps réel
- Inclut des scripts de déploiement Heroku pour automatiser la vérification de l’état de l’application, la consultation des logs, le basculement en mode réel et l’arrêt des processus
- Comprend des outils de test et de gestion des données, permettant une exécution et une validation sûres en environnement local comme dans le cloud
Aperçu
- Nothing Ever Happens est un bot asynchrone en Python qui achète toujours des positions « No » sur les marchés Polymarket binaires non sportifs
- Il est fourni à des fins de divertissement et s’exécute aux risques et périls de l’utilisateur, sans garantie ni responsabilité
- Le dépôt est structuré en répertoires
bot/,scripts/,tests/, qui contiennent respectivement la logique de trading, les scripts d’exploitation et le code de test
Architecture d’exécution
- À l’exécution, le bot analyse des marchés indépendants et repère les entrées « No » sous un plafond de prix défini afin de suivre les positions
- Il affiche l’état via un tableau de bord et, si l’envoi d’ordres est activé, enregistre l’état de reprise en temps réel
- Le module d’exécution est
nothing_happenset, en mode inactif, il utilise PaperExchangeClient
Modèle de sécurité
- Pour envoyer de vrais ordres, les trois variables d’environnement suivantes doivent toutes être définies
BOT_MODE=liveLIVE_TRADING_ENABLED=trueDRY_RUN=false
- Si l’une de ces conditions manque, le bot bascule en mode de trading simulé
- En mode réel, les variables d’environnement supplémentaires suivantes sont aussi requises
PRIVATE_KEYFUNDER_ADDRESS(pour les types de signature 1 et 2)DATABASE_URLPOLYGON_RPC_URL(pour l’approbation du portefeuille proxy et le rachat)
Installation et configuration
- L’installation se fait avec
pip install -r requirements.txt, puis en copiant le fichier de configuration d’exemple pour l’utiliser comme configuration locale config.jsoncontient la configuration d’exécution non secrète, tandis que.envcontient les clés secrètes et les drapeaux d’exécution- La configuration d’exécution se trouve sous
strategies.nothing_happens, et la variable d’environnementCONFIG_PATHpermet d’indiquer un autre fichier de configuration
Exécution en local
- En local, le lancement se fait avec la commande
python -m bot.main - Le tableau de bord est lié à la variable d’environnement
$PORTouDASHBOARD_PORT
Workflow de déploiement Heroku
- En environnement Heroku, on utilise
HEROKU_APP_NAMEou on passe explicitement le nom de l’application en argument - Scripts fournis :
alive.sh: vérifie l’état de l’applicationlogs.sh: affiche les logslive_enabled.sh/live_disabled.sh: bascule le mode de trading réelkill.sh: arrête les processus
- Procédure de déploiement typique :
- définir les variables d’environnement (
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
- définir les variables d’environnement (
- Le processus
workerest conçu pour échouer rapidement s’il est lancé par inadvertance
Tests
- Les tests utilisent
pytestpour les vérifications unitaires et de régression - Commande :
python -m pytest -q
Scripts inclus
-
scripts/db_stats.py- vérifie le nombre de tables de la base de données en temps réel et l’activité récente
-
scripts/export_db.py- exporte les tables depuis
DATABASE_URLou depuis une application Heroku
- exporte les tables depuis
-
scripts/wallet_history.py- affiche les positions, transactions et soldes du portefeuille configuré
-
scripts/parse_logs.py- convertit les logs JSON Heroku en format terminal ou HTML
Gestion du dépôt
- Les configurations locales, registres, données exportées, rapports, artefacts de déploiement, etc. sont exclus de git par défaut
- Le dépôt est organisé de manière à séparer clairement l’environnement de production et l’environnement local
1 commentaires
Avis sur Hacker News
Ce tweet précise qu’aucun rendement ni remboursement n’est garanti
Cela ressemble simplement à un projet fait pour le fun avec du code inspiré d’un mème. Plus qu’une arnaque, ça donne l’impression d’une expérience amusante
Il existe une statistique selon laquelle environ 73 % des marchés Polymarket se terminent effectivement par « No »
Si vous vous intéressez à l’analyse de données, le dataset Hugging Face vaut le détour
À cause du biais d’optimisme humain, le camp du « Yes » peut être surévalué, mais Polymarket est déjà surveillé par des traders, donc les prix restent globalement réalistes
S’il était possible de parier contre des coins en baisse, ce serait intéressant, mais même ce type de marché finirait par être ajusté efficacement
Le fait que ce projet vise les marchés non sportifs est intéressant
Dans les paris sportifs aussi, on dit souvent que le côté « No » offre généralement un meilleur rendement, parce que le « Yes » est plus excitant et attire davantage de monde
Au final, les « paris ennuyeux » ont peut-être plus de chances d’offrir de meilleurs rendements sur le long terme
Ce type d’enseignements de l’économie comportementale accumulés dans les paris sportifs pourrait aussi s’appliquer aux marchés non sportifs
Il se crée alors une boucle de rétroaction où les prix reviennent à leur niveau d’équilibre
C’est pourquoi, si l’on découvre une stratégie réellement rentable, il vaut mieux ne jamais la publier en open source et la faire tourner discrètement
L’idée de « toujours parier sur No » est amusante, mais il faut vérifier dans quelle mesure elle est réellement rentable
Dans la réalité, la liquidité est faible, et une seule perte peut effacer plusieurs gains
Les marchés sportifs sont au contraire plus prévisibles grâce à une échéance claire et à de gros volumes d’échange
Plutôt que de miser simplement sur No partout, on pourrait obtenir des gains assez stables en misant sur No sur des éléments liés à une actualité au moment même où elle commence à émerger
J’y vois une forme d’arbitrage sur l’imagination humaine
Les gens aiment les scénarios sensationnels, mais la réalité est la plupart du temps ennuyeuse
J’ai moi-même profité de ce schéma pendant la crise financière et le Covid
Aujourd’hui, je m’inquiète de la bulle IA, mais je pense qu’elle se dégonflera lentement plutôt que de s’effondrer brutalement, donc j’ai augmenté ma part d’obligations et de liquidités
Certains soutiennent que parier sur « No » revient en fait à parier « Yes » sur tous les autres résultats
La documentation Polymarket contient des calculs liés à ce point
Cette stratégie ressemble à ramasser des pièces devant un train
On répète de petits gains jusqu’à ce qu’un seul événement de longue traîne fasse tout perdre
Il existe aussi l’étude Prediction Market Microstructure
(discussion précédente : lien HN)
À mon avis, le pricing est déjà entièrement intégré par le marché
Voir ce tweet associé
Lien de référence
Au final, la volatilité réalisée tend avec le temps à ressortir plus bas que la volatilité implicite
Bien sûr, quand ça explose, les pertes peuvent être importantes
Le simple fait que « No » sorte dans 70 % des cas ne signifie pas qu’on gagne de l’argent
C’est une forme classique de mauvais raisonnement mathématique. Une stratégie du type « ramasser des pièces devant un rouleau compresseur »
Cela dit, ce genre de marché inefficace est petit et rare, donc on risque au final de « ramasser des pièces, mais seulement des pièces »
Même en suivant le critère de Kelly, parier au hasard finit souvent par épuiser le capital. Une analyse approfondie (DD) est nécessaire pour chaque marché