什么都不会发生:Polymarket 机器人,始终在非体育市场买入“否”。
Nothing Ever Happens: Polymarket bot that always buys No on non-sports markets

原始链接: https://github.com/sterlingcrispin/nothing-ever-happens

这个Python机器人是为Polymarket设计的,专门用于自动购买独立、非体育类“否”期权——**仅供娱乐,风险自负。** 它采用“什么都不会发生”策略,扫描低于设定价格的“否”选项。 该机器人包含一个监控仪表盘,持久化状态以便恢复,并跟踪持仓。它可以运行于模拟交易或实盘交易模式,后者需要API密钥、钱包地址和数据库/RPC URL的环境变量。 配置通过`config.json`(运行时设置)和`.env`(密钥)进行管理。部署针对Heroku,并提供用于管理应用程序、访问日志和检查数据库信息的脚本。关键脚本允许进行数据库导出、钱包历史分析和日志解析。本地配置和部署工件被版本控制有意忽略。

相关文章

原文

Focused async Python bot for Polymarket that buys No on standalone non-sports yes/no markets.

FOR ENTERTAINMENT ONLY. PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE AT YOUR OWN RISK. THE AUTHORS ARE NOT LIABLE FOR ANY CLAIMS, LOSSES, OR DAMAGES.

Dashboard screenshot

  • bot/: runtime, exchange clients, dashboard, recovery, and the nothing_happens strategy
  • scripts/: operational helpers for deployed instances and local inspection
  • tests/: focused unit and regression coverage

The bot scans standalone markets, looks for NO entries below a configured price cap, tracks open positions, exposes a dashboard, and persists live recovery state when order transmission is enabled.

The runtime is nothing_happens.

Real order transmission requires all three environment variables:

  • BOT_MODE=live
  • LIVE_TRADING_ENABLED=true
  • DRY_RUN=false

If any of those are missing, the bot uses PaperExchangeClient.

Additional live-mode requirements:

  • PRIVATE_KEY
  • FUNDER_ADDRESS for signature types 1 and 2
  • DATABASE_URL
  • POLYGON_RPC_URL for proxy-wallet approvals and redemption
pip install -r requirements.txt
cp config.example.json config.json
cp .env.example .env

config.json is intentionally local and ignored by git.

The runtime reads:

  • config.json for non-secret runtime settings
  • .env for secrets and runtime flags

The runtime config lives under strategies.nothing_happens. See config.example.json and .env.example.

You can point the runtime at a different config file with CONFIG_PATH=/path/to/config.json.

The dashboard binds $PORT or DASHBOARD_PORT when one is set.

The shell helpers use either an explicit app name argument or HEROKU_APP_NAME.

export HEROKU_APP_NAME=<your-app>
./alive.sh
./logs.sh
./live_enabled.sh
./live_disabled.sh
./kill.sh

Generic deployment flow:

heroku config:set BOT_MODE=live DRY_RUN=false LIVE_TRADING_ENABLED=true -a "$HEROKU_APP_NAME"
heroku config:set PRIVATE_KEY=<key> FUNDER_ADDRESS=<addr> POLYGON_RPC_URL=<url> DATABASE_URL=<url> -a "$HEROKU_APP_NAME"
git push heroku <branch>:main
heroku ps:scale web=1 worker=0 -a "$HEROKU_APP_NAME"

Only run the web dyno. The worker entry exists only to fail fast if it is started accidentally.

Script Purpose
scripts/db_stats.py Inspect live database table counts and recent activity
scripts/export_db.py Export live tables from DATABASE_URL or a Heroku app
scripts/wallet_history.py Pull positions, trades, and balances for the configured wallet
scripts/parse_logs.py Convert Heroku JSON logs into readable terminal or HTML output

Local config, ledgers, exports, reports, and deployment artifacts are ignored by default.

联系我们 contact @ memedata.com