godeye-tracker
A Telegram channel posts whenever a whale places a bet on Polymarket, but never says whether the bet paid off. This is the missing scoreboard, and it can copy the signals that hold up.
What it does#
Every signal is saved the moment it arrives, matched to the real Polymarket market, then resolved once that market settles. A dashboard shows which whales are actually good and what a given strategy would have returned. Signals passing a filter can be traded automatically.
The harder question is whether a tip is fast enough to be worth acting on. By the time you see the post, the price has moved. Slippage is measured on every signal, so “is copy-trading viable here?” gets answered with data.
How it’s built#
Python: three processes over one SQLite database (a Telethon listener, a scheduled resolver, a Streamlit dashboard), plus a FastAPI backend and a React/TypeScript frontend for trading controls. Runs on a Raspberry Pi under systemd. ~10k lines, 206 tests, all offline.
Decisions worth noting#
- Separate processes. The listener never blocks on an external API, so a flaky Polymarket endpoint can’t cost you messages.
- Idempotent everywhere. Re-running any stage is a no-op on data it has already seen, so crashes and restarts are safe.
- One state machine.
pending → open → resolved / unmatched / voided. Only resolved bets count toward win rates. - Leak-free backtest. A whale’s record at any moment uses only bets that had already settled by then. Easy to get wrong, and getting it wrong makes any strategy look brilliant.
- Layered trading safety. Kill switch, a hard position cap that lives in an env file rather than the UI, and auto-shutoff after repeated failed orders.
Working end to end on live signals. Live trading is built but gated behind manual opt-in; current work is replacing the Streamlit dashboard with the React frontend.