Real-time trading dashboard for detecting market maker manipulation patterns on Hyperliquid perpetual markets. Tracks MM counter-trading signals using OBV, delta flow, funding rates, and technical indicators across 200+ tokens.
- Real-time WebSocket Data Collection - Streams candle data, orderbook depth, funding rates, and open interest from Hyperliquid
- MM Counter-Trading Signals - Detects 4 signal types:
- Buy Dip - Post-shakeout entry opportunities (MM dumps to shake weak hands)
- Fade Pump - Reversal traps (engineered pumps before rug pulls)
- Spoof Alert - Liquidity manipulation (MM spoofs breakout then pulls bids)
- Exit/Accum - Cycle ending signals (trailing stop or DCA zones)
- Signal Strength Visualization - 2-4 confirmation bars based on multiple indicator convergence
- OBV Z-Score Normalization - Relative volume intensity highlighting across tokens
- Interactive Dashboard - Real-time filtering, search, and signal breakdown
- Production-Ready Deployment - Docker Compose orchestration with auto-restart
- Backend: Python 3.11, FastAPI, PostgreSQL 15
- Frontend: Vanilla JavaScript, HTML5, CSS3
- Data Collection: WebSockets, Hyperliquid Python SDK
- Analysis: NumPy, Pandas (technical indicators: RSI, MACD, EMA, OBV, Delta)
- Deployment: Docker, Docker Compose
- Database: PostgreSQL with time-series optimizations
┌─────────────────┐
│ Hyperliquid │
│ WebSocket API │
└────────┬────────┘
│
▼
┌─────────────────┐ ┌──────────────┐
│ Collector │─────▶│ PostgreSQL │
│ (WebSocket) │ │ Database │
└─────────────────┘ └──────┬───────┘
│
┌───────────────────────┼───────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Metrics Analyzer│ │ FastAPI │ │ Dashboard │
│ (Every 15 min) │ │ REST API │ │ (Static HTML) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
- Docker & Docker Compose
- 2GB RAM minimum (4GB recommended)
- Port 8000 available
git clone https://github.com/eullrich/hyperliquid-mm-counter.git
cd hyperliquid-mm-countercp .env.example .env
# Edit .env to set your DB_PASSWORDdocker compose up -dOpen http://localhost:8000 in your browser.
Initial data collection takes ~15 minutes for the first candles to close and signals to compute.
# Run collector only
docker compose up -d postgres collector
# Run metrics analyzer manually
python metrics_analyzer.py
# Access database
docker compose exec postgres psql -U hyperliquid -d hyperliquid_dataSee DEPLOYMENT.md for detailed production deployment instructions.
Recommended specs:
- $12/month droplet: 2GB RAM, 1 vCPU, 50GB SSD
- Ubuntu 24.04 LTS
- Docker + Docker Compose
- Price below 20 EMA
- OBV > 0 (volume supporting upside)
- RSI < 30 (oversold)
- Funding rate < -0.01% (shorts paying longs)
- Price above 20 EMA
- OBV < 0 (volume divergence)
- RSI > 70 (overbought)
- Funding rate > 0.01% (longs paying shorts)
- Delta imbalance > 5% (orderbook skew)
- Price deviation from EMA > 2%
- Volume spike (2x+ average)
- Neutral zone (no strong directional bias)
- Low volatility (RSI 30-70)
- Use for trailing stops or DCA
Query latest metrics with filtering:
curl "http://localhost:8000/api/metrics?interval=5m&sort_by=signal&limit=50"Dashboard summary statistics:
curl http://localhost:8000/api/statsService health check:
curl http://localhost:8000/api/health- candles - OHLCV data (5m, 1h, 4h intervals)
- orderbook_depth - Best bid/ask snapshots
- funding_rates - 8-hour funding rates
- open_interest - Per-token OI
- metrics_snapshot - Computed signals and indicators
See migrations/ for full schema evolution.
Edit config.py for:
- Database connection (uses env vars in Docker)
- Candle intervals (default: 5m, 1h, 4h)
- Signal thresholds (RSI, funding, OBV)
- Data retention periods (default: 2 days for 5m, 90 days for 4h)
docker compose psdocker compose logs -f collector
docker compose logs -f metrics_analyzer
docker compose logs -f api# Recent signals
docker compose exec postgres psql -U hyperliquid -d hyperliquid_data -c \
"SELECT coin, signal, price FROM latest_metrics WHERE signal != 'none' LIMIT 10;"
# Token count
docker compose exec postgres psql -U hyperliquid -d hyperliquid_data -c \
"SELECT COUNT(DISTINCT coin) FROM candles;"pip install -r requirements.txt# Start PostgreSQL first
createdb hyperliquid_data
psql hyperliquid_data < db_schema.sql
# Run collector
python collector.py
# Run API
uvicorn api:app --reload
# Run metrics analyzer
python metrics_analyzer.py# Apply migrations manually
ls migrations/*.sql | sort | while read f; do
psql hyperliquid_data < "$f"
done- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Supabase integration for serverless deployment
- Real-time dashboard updates (WebSocket)
- Additional signals (liquidation cascades, whale tracking)
- Mobile-responsive UI improvements
- Backtesting framework
- Trading bot integration (demo mode)
This project is licensed under the MIT License - see the LICENSE file for details.
This software is for educational and informational purposes only. Not financial advice. Trading cryptocurrencies carries significant risk. Use at your own discretion.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Hyperliquid for the excellent API
- Built with Claude Code