
Nothing Ever Happens
github.com/sterlingcrispin/nothing-ever-happens- Category
- Crypto
- Rank
- No. 1353Tools index
- Pricing
- Open Source
- Type
- TOOL
- Builder
- @sterlingcrispin
- GitHub
- 986 stars
- Date
About
An automated trading bot for Polymarket that systematically bets "No" on standalone yes/no prediction markets (excluding sports). Built with Python and includes safety features, dashboard monitoring, and paper trading mode for entertainment purposes.
What it does
It watches eligible market prices, enters positions only beneath a configurable price ceiling, sizes purchases from available cash or a fixed amount, and keeps portfolio state current. A browser dashboard reports positions, balances, profit and loss, trade history, and market resolutions.
Why it's ranked here
The project treats unattended trading as an operations problem, not merely a betting rule. Paper mode is the fallback, live transmission needs three explicit switches, configuration is validated, and live recovery requires durable storage. That care is compelling, though operating it still means trusting money to exchange, database, wallet, and blockchain integrations.
What's good
The safety gate fails closed into simulated trading unless every live switch agrees. Live mode also demands database-backed recovery. The async supervisor restarts failed feeds, handles shutdown signals, and records heartbeats. Position redemption, ambiguous-order recovery, structured latency logs, and focused tests show attention to failures beyond the happy path.
Tradeoffs
Setup carries substantial operational weight: live use needs wallet secrets, a database, a Polygon RPC endpoint, and signature-specific funding configuration. The dashboard exposes monitoring but rejects its shown position-target control message. Dependencies install from a requirements file rather than a packaged command, and the stated strategy scope excludes sports and non-binary markets.
How to use it well
Start in paper mode, tune entry price, sizing, polling, slippage, retries, and position limits, then inspect dashboard and ledger behavior before considering live transmission. It suits Python operators comfortable managing secrets, PostgreSQL, Heroku, and wallet infrastructure. It does not provide broad strategy selection, sports coverage, or an interactive dashboard for changing position targets.
Technical notes+
bot/main.py runs an asyncio supervisor, selects PaperExchangeClient unless all live flags agree, requires DATABASE_URL for live sending, launches strategy, recovery, redemption, dashboard, and heartbeat tasks, and patches the CLOB client's HTTP timeout. bot/config.py combines config.json with environment overrides and validates intervals, sizing, prices, slippage, retries, concurrency, and position limits. bot/db.py defines SQLAlchemy tables for orders, fills, positions, state, trade events, pending settlements, and ambiguous orders; bot/store.py handles idempotent fill recording, status normalization, position accounting, and realized profit and loss. bot/dashboard.py serves aiohttp and WebSocket monitoring, while rejecting position-target changes. bot/redeemer.py queries redeemable positions and submits Polygon redemption transactions with retry, cooldown, nonce, and gas checks. Installation uses requirements.txt, and the documented entry point is python -m bot.main.
Observed
- Primary language
- Python
- Install surface
- Dependencies install with pip from requirements.txt; configuration is copied from JSON and environment examples.
- Runtime interface
- Command-line module entry point: python -m bot.main
- Monitoring interface
- aiohttp browser dashboard with WebSocket updates for portfolio, trades, balances, profit and loss, and resolutions
- Deployment support
- Local execution and a documented Heroku web-dyno workflow
- Persistence
- SQLAlchemy storage backed by DATABASE_URL, with PostgreSQL driver included
- Test structure
- The repository documentation identifies a tests directory with unit and regression coverage.
Read from README.md, requirements.txt, bot/db.py, bot/main.py, bot/store.py, bot/utils.py, bot/config.py, bot/market.py, bot/models.py, bot/latency.py, bot/__init__.py, bot/redeemer.py, bot/dashboard.py, bot/reconcile.py, bot/time_utils.py.
What it can do
Scan Polymarket for standalone yes/no prediction markets
Polymarket API data → List of eligible non-sports prediction markets
Place automated 'No' bets on prediction markets
Market data and price thresholds → Executed trades on Polymarket
Monitor trading activity through dashboard
Bot trading data and market status → Real-time dashboard interface showing bot performance
Execute paper trading simulations
Market data and trading parameters → Simulated trading results without real money
Persist and recover bot state
Trading session data → Saved bot state for session recovery
Filter out sports-related markets
All available Polymarket prediction markets → Non-sports prediction markets only
Apply safety controls and price caps
Trading parameters and market prices → Risk-controlled trading decisions
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.