DeFi Liquidity Monitoring Bot Development
Uniswap v3 made liquidity management an active endeavor. An LP position in the $1800-$2200 range on ETH/USDC worked fine for a week — until the price went out of range, and the position stopped earning fees, converting entirely to one asset. Without monitoring, such a situation can go unnoticed for days. That's direct loss from missed fees and impermanent loss. Each hour of inaction can cost tens of dollars. We develop liquidity monitoring bots that solve this: subscription to on-chain events, real-time Telegram notifications — delivered up to 50x faster than manual checks. Order a custom bot — from a basic solution for one pool to a multi-chain system with historical metrics. Our experience: 5+ years in blockchain development, 30+ DeFi projects. Each project comes with a quality guarantee and technical documentation.
Why Liquidity Monitoring is Critical?
A few hours delay in rebalancing can cost hundreds of dollars in lost profit, especially in volatile markets where price can move 10-15% in an hour. For a $50k position, just 2 hours out-of-range can mean $200 in missed fees — that's $1,200 over a month. An automated Telegram alert gives you a 30-60 minute head start to decide. Reducing impermanent loss through timely actions can reach 20-30%.
What Really Needs Monitoring in DEX Pools
Uniswap v3: Position Activity and Out-of-Range Events
Each Uniswap v3 position is defined by (tokenId, tickLower, tickUpper). The pool stores the current tick — logarithmic price. As soon as currentTick < tickLower or currentTick > tickUpper the position is out of range, fees stop accruing.
The Swap event in the pool emits a new tick. The bot subscribes to Swap via WebSocket (eth_subscribe("logs", {address: poolAddress, topics: [Swap.topic]})), decodes the tick from the event data, and compares it to tickLower/tickUpper of all tracked positions. Latency from event to notification: 100-500ms, sufficient for LP notification.
Additionally, tracking Mint and Burn events is useful — they show when large LPs enter or leave a range, often preceding price movements.
Curve: Pool Imbalance and De-Peg Monitoring
In Curve StableSwap pools, the pool is considered balanced when asset shares are close to target (usually equal). With a strong imbalance (e.g., 90% USDT and 10% USDC in 3pool), swap slippage sharply increases and effective APY for LPs drops.
Metric to monitor: deviation of current balances from ideal. Call get_balances() + compare with total_supply() / N. If one asset exceeds 70% — alert. This happened with 3pool during depegging events (USDC briefly traded at $0.87 on Curve).
The Graph for Historical Data
We use the Uniswap v3 The Graph subgraph (subgraph id: 5zvR82QoaXYFyDEKLZ9t6v9adgnptxYpKpSbxtgVENFV) for real-time TVL and volume monitoring. A GraphQL query every 60 seconds returns pool.totalValueLockedUSD, pool.volumeUSD, pool.feesUSD. This is sufficient for large pools (>$10M TVL). For small pools with rapid changes, direct WebSocket events are more reliable.
How the Monitoring Bot Works
A typical monitoring system consists of three components:
| Component | Technology | Task |
|---|---|---|
| Event listener | ethers.js / viem WebSocket | Subscribe to on-chain events |
| State aggregator | Node.js / Python | Aggregate and compare thresholds |
| Alert dispatcher | Telegram Bot API / PagerDuty | Send notifications via channels |
The event listener subscribes via WebSocket to pools from a configurable list. When an event is received, it decodes data via ABI and publishes to a queue (Redis Pub/Sub or in-memory queue).
The state aggregator reads the queue, updates pool state (current tick, balances, TVL), and checks alert conditions. Periodic polling (every 30-60 seconds) for metrics that don't emit events (e.g., accumulated fees via NonfungiblePositionManager.collect).
The alert dispatcher deduplicates alerts (one alert per 5 minutes per position), formats the message, and sends via Telegram or webhook. For production systems — PagerDuty with severity levels.
Calculating Accumulated Fees Without a Transaction
Current accumulated fees of an LP position can be computed off-chain without calling collect (which costs gas). Formula from the Uniswap v3 whitepaper using feeGrowthInside:
fees0 = liquidity * (feeGrowthInside0 - feeGrowthInside0Last) / 2^128 fees1 = liquidity * (feeGrowthInside1 - feeGrowthInside1Last) / 2^128 feeGrowthInside is obtained from pool tick data via static calls — not a transaction. Showing users real-time accumulated fees helps in rebalancing decisions.
Example fee calculation for a test position
For an ETH/USDC position with liquidity=10^18, feeGrowthInside0=0.0005, feeGrowthInside0Last=0.0004, fees0 = 10^18 * (0.0005 - 0.0004) / 2^128 ≈ 0.004 ETH. Similarly for the second asset.Stack and Integrations
We use viem (TypeScript) for on-chain interaction — typed calls, built-in ABI decoder, multicall support for batching. The Graph for historical data and aggregated metrics. Redis for state persistence across restarts and deduplication. Telegram Bot API as the primary notification channel.
For multi-chain monitoring (Ethereum + Arbitrum + Optimism), parallel WebSocket connections feed one aggregator. Uniswap v3 is deployed on all three chains; pool addresses differ but ABI is identical.
Notification Channel Comparison
| Channel | Latency | Reliability | Cost |
|---|---|---|---|
| Telegram Bot | 100-500ms | High | Free |
| PagerDuty | 1-5 sec | Very high | Subscription |
| Discord Webhook | 200-1000ms | Medium | Free |
What's Included in the Work
- Repository with bot source code.
- Deployment and configuration documentation.
- Telegram bot for receiving alerts.
- 1 month of technical support after launch.
- Optional: Grafana metrics dashboard, PagerDuty integration.
Our team has delivered 30+ DeFi monitoring solutions with 5+ years of blockchain expertise, ensuring a quality guarantee on every project.
Process and Pricing
Configuration (1 day). List of pools, positions, thresholds for alerts.
Development (3-5 days). Event listener + state aggregator + Telegram/webhook integration. Test on testnet (Sepolia with forked Uniswap v3 state via Foundry vm.createFork).
Deployment. VPS with at least 2 CPU / 4GB RAM, dedicated full node or Alchemy/QuickNode WebSocket endpoint. Monitoring the bot via pm2 + health check endpoint.
How to Set Up Monitoring in 5 Steps
- Specify pool and position addresses in the configuration file.
- Set thresholds for out-of-range and imbalance.
- Launch the event listener with a WebSocket provider.
- Connect the Telegram bot via BotFather.
- Test alert on testnet — then deploy to mainnet.
Timeline and Cost Estimates
Basic bot (one DEX, Telegram alerts): 3-5 days, starting from $500. Multi-chain system with historical metrics and dashboard: 2-3 weeks, starting from $2,000. Project cost is calculated individually based on complexity, number of chains, and required integrations. The bot quickly pays for itself by preventing impermanent loss losses — often saving $1,200/year or more for a $50k position. For pools with large liquidity, savings can be thousands of dollars per month. Contact us — we will help you choose the optimal configuration for your scenario. Get a consultation — we will prepare a commercial proposal within 1 business day.







