I built a lightweight Go service that watches Polymarket prediction markets and pushes Telegram alerts when probability shifts are worth paying attention to.
The core is a four-factor composite score: KL(p_new ∥ p_old) × log_volume_weight × historical_SNR × trajectory_consistency. KL divergence captures asymmetric probability moves well (a shift from 5%→10% is much louder than 50%→55% at the same absolute delta), but it blows up near the tails, so markets below a configurable min_base_prob are filtered out before scoring. The detection window is rolling across multiple polling intervals to reduce false positives from transient noise.
Per-cycle flow: fetch events from Polymarket’s Gamma + CLOB APIs → snapshot probabilities to disk → score changes → deduplicate against recent notifications → deliver top-K groups to Telegram.
Configurable sensitivity, categories, volume thresholds, and cooldown deduplication. Docker + systemd deployment included.
GitHub:
https://github.com/rewired-gh/polyoracle