🇰🇭Phnom Penh--:--:--UTC --:-- · Paris --:-- · ET --:--|
↻ 30s ·
Trades --:--:-- ·
Calc --:--:-- ·
Sport --:--:-- ·
Surveillance --:--:--
Window
Category
Strategy
Platform
💵 Trades réels
P&L net réalisé
–
— wins / — losses · — pending
dry-run : –
P&L en attente
–
si Yes résout (upper bound)
dry-run : –
Bankroll requis
–
in_play × safety
Investi total
–
— trades total
Capital en cours
–
trades non résolus
Win rate
–
sur résolus
ROI réalisé
–
P&L / Investi résolu
📊 P&L par type de trade
Décomposition Limit (above/below avec strike) vs Up/Down (5min Binance candles).
Chaque type a son propre cap (Limit $50, Up/Down $5 actuellement).
Type
Trades
Wins
Losses
Pending
Win rate
Investi
P&L
ROI
loading…
🚀 Liste des trades
Tous les trades exécutés ou tentés. Badge RÉEL = vraie monnaie engagée.
Badge DRY_RUN = simulation seulement.
Expired ratio24h: —·7j: —·30j: —
When (PP)
Mode
Type
Marché
Résolution
Size
Prix
Profit espéré (si Yes)
Outcome
Truth live
P&L réel
Status
loading…
💰 Redeem winnings
Réclamer les positions gagnantes on-chain. Polymarket auto-redeem la plupart des hourly markets ~30-60 min après résolution,
mais ce panneau est utile pour les marchés NegRisk longs, les zombies, ou si le bot Polymarket plante.
Toujours simuler d'abord (dry-run) pour vérifier qu'aucune simulation eth_call ne revert, puis passer en live.
Total redeemed à date
–
– claims · since –
Reste à redeem
–
– positions ≥ $0.10
Dernier redeem
–
–
Résultat de redeem affiché ici après run.
Historique des redeems (30 derniers)
Date (PP)
USDC
Marché
loading…
🧮 Calculateur P&L par bet size
Projections basées sur les vrais trades observés (table executions).
Pour chaque bet size, on calcule : combien de trades par jour, profit espéré, ROI, et bankroll requis.
Bankroll = peak concurrent in-play × bet × safety_factor (5x) — couvre le pic d'investissement
simultané + une marge pour absorber les pertes.
⏱️ Combien de temps pour scaler à $1 000/trade ?
Compounding sans retrait. La bankroll croît chaque jour du profit, ce qui permet
de bumper le bet (= bankroll / 12), ce qui augmente le profit, etc.
Jour
Date
Bankroll
Bet possible
Profit/jour
Capture
Note
Lance le simulateur
🏀 Sports — passive simulation (Phase 1)
Mode collecte de données — AUCUN argent engagé.
Les signaux sport sont logués en kind=sports_sim avec dry_run=1 forcé.
Quand on aura ≥200 signaux résolus, on aura un win rate fiable et on pourra décider d'activer
le trading réel sport (= Phase 3).
Pour activer la collecte sur prod : SPORTS_SIM_ENABLED=1 dans
/opt/polymarket/.env, puis restart scanner. Seuils par défaut :
last_price≥0.85, bid≥0.80.
Filtre horizon
Quel horizon (= minutes_to_expiry au moment du signal) aurait matché ce trade ?
Signaux collectés
–
— markets uniques
Win rate observé
–
— résolus
P&L hypothétique ($10/trade)
–
si on avait tradé
ROI hypothétique
–
sur capital engagé
Distribution par horizon (= time-to-resolve au signal)
Horizon
Markets uniques
loading…
Distribution par bucket d'ask
Ask range
Markets uniques
loading…
Derniers markets sport détectés
When (PP)
Horizon
Event
Market
Ask
Bid
Last px
Status
Loading… Si vide après plusieurs heures, vérifier que SPORTS_SIM_ENABLED=1 sur prod.
🛡️ Surveillance & Sécurité
Vue temps-réel de la santé du système, des risques détectés, et des actions recommandées.
Données rafraîchies à chaque clic sur refresh. Watchdog tourne toutes les 6h en arrière-plan (cron).
⛔ Circuit breakers
Loading…
Trigger
Seuil
État live
Diagnostic
loading…
Historique des déclenchements
Quand
Trigger
Strategy
Message
Résolu
Aucun événement encore (= très bonne nouvelle).
ⓘStatus du process scanner sur le VPS Helsinki. Un cycle = 1 boucle complète qui interroge l'API Gamma de Polymarket et détecte les mispricings. Un cycle prend ~2s. Sain = cycles > 0 sur la dernière heure et erreurs < cycles. Si cycles = 0, le scanner est mort → SSH + journalctl.
Scanner
–
– cycles · – errors · – ms avg
ⓘMode RÉEL = chaque signal détecté déclenche un VRAI ordre on-chain (Polygon, USDC engagé). DRY_RUN = simulation seulement, rien envoyé à Polymarket.
bet $X = montant fixé par trade (env EXECUTOR_BET_PER_TRADE_USD). daily limit $Y = perte cumulée max sur 24h avant que le circuit breaker arrête tout (env EXECUTOR_MAX_DAILY_LOSS_USD). Si la perte du jour dépasse Y, l'executor refuse tout nouvel ordre — il faut investiguer puis reset manuellement.
Executor mode
–
bet $– · daily loss $–
ⓘKill switch = arrêt d'urgence. Si le fichier /tmp/polymarket-kill existe sur le VPS, l'executor refuse de placer le moindre ordre (mais le scanner continue de détecter, juste sans trader).
Pour activer : ssh root@VPS && touch /tmp/polymarket-kill Pour désactiver : rm /tmp/polymarket-kill (uniquement après avoir compris ce qui a déclenché).
Utile pour : maintenance, flash crash crypto, soupçon de bug, départ vacances.
Kill switch
–
/tmp/polymarket-kill
ⓘWatchdog = script qui tourne toutes les 6h via cron sur le VPS et fait 11 checks (GitHub V3, USDC depeg, depth book, win rate, disk, etc.). Envoie une alerte Telegram (@hermessjabot) si un signal se déclenche.
OK = run récent (<8h). STALE = pas tourné depuis >8h, vérifier le cron : cat /etc/cron.d/polymarket-watchdog.
État dans /opt/polymarket/data/watchdog_state.json.
Watchdog
–
last run: –
ⓘP&L cumulé depuis le début = profit/perte total réalisé sur l'ensemble de l'historique du bot (depuis sa première execution réelle). Inclut TOUS les trades fillés, exclut les phantoms (expired_no_fill).
ROI = P&L / capital total investi. Indique l'efficacité globale.
Aujourd'hui : P&L jour utilisé pour le circuit breaker (kill auto si perte ≥ EXECUTOR_MAX_DAILY_LOSS_USD).
P&L cumulé (depuis début)
–
– trades · ROI –% · jour: –
ⓘWin rate cumulé = pourcentage de trades RÉELS résolus en "Yes" depuis le début (= sur l'intégralité de l'historique, pas une fenêtre). Affiché seulement si on a ≥1 trade résolu, sinon "–".
Vert ≥95% (sain). Bleu 90-95% (acceptable mais surveille). Rouge <90% (anomalie : front-run MEV ou bug détecteur).
Sous 90%, le watchdog déclenche une alerte Telegram et tu dois mettre EXECUTOR_DRY_RUN=true le temps d'investiguer.
Win rate cumulé
–
trades réels résolus
ⓘDepth book moyenne = combien de USDC sont dispo au best ask sur les markets éligibles, en moyenne, sur les 7 derniers jours. C'est le signal n°1 de la santé de notre niche.
Si la depth est haute (>$1 000), peu de bots concurrents → on a de la place pour des bets gros. Si elle baisse drastiquement (par exemple $1 500 → $400), c'est qu'il y a une arrivée massive de bots qui mangent la liquidité avant nous.
Baseline 30j = depth moyenne sur les 30j précédents (= valeur de référence stable). Le watchdog alerte si la 7j chute de ≥50% vs baseline.
"Dispo après 30j d'historique" signifie qu'on n'a pas encore 30 jours de data dans la DB — la baseline sera utilisable une fois qu'on aura assez d'historique (= ~3 semaines à compter de maintenant).
Depth récente (7j)
–
vs baseline 30j
ⓘDisk usage sur la partition /opt/polymarket/data/ où vit la SQLite (signals.db). La DB grossit ~10 MB/jour (signals + executions + outcomes). À 80%, le watchdog alerte. À 95%, le scanner peut crasher silencieusement.
Pour faire la place : cd /opt/polymarket && sqlite3 data/signals.db 'VACUUM;' (réorganise et compresse) + nettoyage logs journalctl --vacuum-size=200M.
Disk usage
–
– GB free
ⓘMarkets exploitables maintenant = combien de markets "Bitcoin/Ethereum above ___ on X, YH ET?" sont actuellement en horizon (-10min → +4h) avec un best_ask < 0.99.
Si 0 depuis plusieurs heures = soit Polymarket a réduit le nombre de strikes par heure, soit les bots arbitrageurs sont devenus trop rapides. Le scanner ne peut plus trader.
Vert ≥ 5 · Bleu 1-4 · Rouge 0.
Markets éligibles (above-format)
–
– sur – en horizon · ask < –
ⓘListe des markets en horizon avec leur ask actuel. Permet de voir d'un coup d'œil pourquoi le scanner ne trade pas (tous à 1.00, etc.).
Sample des markets en horizon
–
🚨 Risques détectés & actions
Liste des signaux qui appellent une attention. Trié par sévérité (critical → medium).
Si vide = tout est sain.
loading…
📊 Catalogue complet des risques
Inventaire exhaustif. Status temps réel pour les risques surveillés automatiquement.
OK = surveillé, sain.
WARN = surveillé, attention.
ALERT = surveillé, déclenché.
MANUAL = non auto, à ta vigilance.
🌍 Risques externes (hors de notre contrôle)
Risque
Impact
Probabilité 12m
Délai réaction
Mitigation
Surveillance
Status
loading…
🛠️ Risques internes (sous notre contrôle)
Risque
Impact
Probabilité 12m
Délai réaction
Mitigation
Surveillance
Status
loading…
💼 Risques business / personnels
Risque
Impact
Probabilité 12m
Délai réaction
Mitigation
Surveillance
Status
loading…
📋 Playbook — décisions par scénario
Mémo des actions par situation. Référence rapide quand un risque se déclenche.
Scénario observé
Signal mesurable
Action recommandée
Migration CLOB V3 sur Polymarket
Tag v3.x apparaît sur GitHub Polymarket/py-clob-client
1. Lire le changelog · 2. pip install py-clob-client-v3 en venv test · 3. Adapter executor.py · 4. Phase dry_run 24h avant prod
Geoblock élargi (Helsinki blacklisté)
HTTP 403 sur /order dans logs
Migrer VPS vers une autre région autorisée (Mexico, Sydney). Pré-build une image Hetzner ailleurs.
Saturation niche (>100 bots competition)
Depth 7j ≤ $400 (vs baseline $1 500)
1. Pivot sport (NBA, soccer) · 2. Limitless on Base · 3. WebSocket pour latency · 4. Réduire bet_per_trade