Inventory-aware volume and liquidity bot for pons tokens on Robinhood Chain (4663).
The bot monitors Uniswap V3 pools, derives a fair price, publishes bid/ask quotes, and executes bounded swaps through the official pons router. Trades, inventory, gas, and PnL are persisted in SQLite.
Repository: github.com/SoladLabs/pons-volume-bot
For education, testing, research, and authorized liquidity provision only. This is not financial advice. Newly launched tokens are volatile and illiquid. Never commit private keys or fund a wallet you cannot afford to lose.
- Launch detection — register a target token or watch pons factories for new launches
- Pool monitoring — read Uniswap V3 swaps, spot price, and buy/sell volume
- Fair-price engine — moving-average reference price with a configurable window
- Inventory-aware quotes — bid/ask spread that widens with volatility and inventory
- Bounded execution — swaps via the official router with Quoter V2 and slippage limits
- Risk controls — position caps, trade cooldown, liquidity floor, daily-loss halt
- Analytics — realized/unrealized PnL, gas spend, and volume in SQLite
- Safety-first runtime — dry-run by default; live trading requires explicit confirmation
- Operator dashboard — periodic console snapshot of quotes, inventory, and PnL
Robinhood Chain RPC
|
v
Launch Detection --> Token Registry
|
v
Pool Monitor --> Price Engine --> Quote Engine
| | |
+--------------+---------------+
|
v
Inventory + Risk
|
v
Trade Executor (Swap Router)
|
v
Reconciliation + SQLite
Official pons contracts (docs):
| Contract | Address |
|---|---|
| Active factory | 0xA5aAb3F0c6EeadF30Ef1D3Eb997108E976351feB |
| Swap router | 0xCaf681a66D020601342297493863E78C959E5cb2 |
| Quoter V2 | 0x33e885eD0Ec9bF04EcfB19341582aADCb4c8A9E7 |
| WETH | 0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73 |
- Python 3.11+
- Network access to Robinhood Chain RPC
- For live trading only: a funded wallet (ETH for gas, WETH for buys)
git clone https://github.com/SoladLabs/pons-volume-bot.git
cd pons-volume-bot
python -m venv .venvActivate the virtual environment:
# Linux / macOS
source .venv/bin/activate
# Windows PowerShell
.\.venv\Scripts\Activate.ps1
# Windows Command Prompt
.\.venv\Scripts\activate.batOn Windows, if python is not found, use the launcher instead: py -m venv .venv and py main.py ....
pip install -r requirements.txt
cp .env.example .envLeave .env in dry-run mode for the first run. A private key is not required until you enable live trading.
Verify RPC connectivity:
python main.py --connect| Command | Purpose |
|---|---|
python main.py --reference |
Dry-run against the official PONS reference token |
python main.py --token 0xYourToken |
Target a specific pons token |
python main.py |
Auto-detect new launches |
python main.py --scan-only |
Discover launches without trade decisions |
python main.py --config path/to.yaml |
Load an alternate config file |
Stop the process with Ctrl+C.
In dry-run, intended swaps are logged as [DRY RUN] and no transactions are submitted.
Strategy and chain settings live in config/default.yaml. Environment variables in .env override selected fields at runtime.
| Parameter | Default | Description |
|---|---|---|
strategy.base_spread |
0.025 |
Base bid/ask spread (2.5%) |
strategy.price_window |
10 |
Recent spot samples used for fair price and volatility |
strategy.max_inventory_tokens |
10000 |
Maximum token inventory |
strategy.max_trade_eth |
0.005 |
Maximum WETH per buy |
strategy.trade_cooldown_s |
60 |
Minimum seconds between trades |
risk.max_daily_loss_eth |
0.1 |
Halt if realized daily loss reaches this amount |
execution.max_slippage |
0.02 |
Maximum acceptable slippage |
| Variable | Purpose |
|---|---|
RH_RPC_URL |
RPC endpoint |
PRIVATE_KEY |
Trading wallet (live only) |
DRY_RUN |
true / false |
CONFIRM_LIVE_TRADING |
Must be YES to send live transactions |
TARGET_TOKEN |
Token address override |
BOT_ENABLED |
Emergency stop (false halts trading) |
Live execution requires all three:
DRY_RUN=falseCONFIRM_LIVE_TRADING=YESPRIVATE_KEYset in.env
If any condition is missing, the bot logs intended actions only. BOT_ENABLED=false is an immediate kill switch.
├── main.py CLI entry point
├── config/default.yaml Strategy and chain configuration
├── bot/
│ ├── engine.py Main loop
│ ├── blockchain/ Web3 client
│ ├── pons/ Launch detection and pool monitoring
│ ├── market/ Price, quotes, and liquidity
│ ├── trading/ Executor, risk, inventory, slippage
│ ├── analytics/ PnL and volume
│ └── storage/ SQLite persistence
└── tests/
pytest tests/ -vTelegram: @vladmeer