{"skill":{"slug":"defi-trading-engine","displayName":"Defi Trading Engine","summary":"DeFi Trading Engine - Autonomous DeFi trading bot with self-improving review system for OpenClaw agents. Use when setting up DeFi trading, crypto trading bot...","description":"---\nname: defi-trading-engine\ndescription: DeFi Trading Engine - Autonomous DeFi trading bot with self-improving review system for OpenClaw agents. Use when setting up DeFi trading, crypto trading bot, automated trading, Base chain trading, Bankr integration, trading engine, self-improving bot, or trading strategy execution.\n---\n\n# DeFi Trading Engine\n\nAutonomous DeFi trading bot with self-improving review system. Scans for opportunities, executes trades, logs performance, and learns from mistakes.\n\n## When to Use\n\nApply this skill when:\n- Setting up automated crypto trading on Base or other EVM chains\n- Building a self-improving trading system\n- Implementing systematic DeFi trading strategies\n- Executing DCA, momentum, or mean reversion strategies\n- Reviewing and optimizing trading performance\n- Managing trading risk (position sizing, drawdown limits)\n- Integrating with Bankr CLI or other DEX tools\n\n## Architecture\n\n**Self-Improvement Loop:**\n\n```\nscan → evaluate → execute → log → review → patch params → repeat\n```\n\n**Components:**\n1. **Token Scanner** (`scan-tokens.py`) — Finds trading opportunities\n2. **Risk Manager** (`risk-manager.py`) — Enforces position limits and risk rules\n3. **Trade Executor** (`trade-executor.py`) — Executes trades via Bankr CLI\n4. **Daily Review** (`daily-review.py`) — Analyzes performance and suggests improvements\n5. **Config File** (`trading-config.json`) — Central configuration for all parameters\n\n## Quick Start\n\n### 1. Setup\n\nCreate workspace:\n\n```bash\nmkdir -p ~/trading-bot/{trades,reviews}\ncd ~/trading-bot\n```\n\nCopy skill scripts:\n\n```bash\ncp ~/.openclaw/skills/defi-trading-engine/scripts/* .\n```\n\n### 2. Configure\n\nCreate `trading-config.json`:\n\n```json\n{\n  \"risk\": {\n    \"max_position_size_usd\": 40,\n    \"take_profit_pct\": 4,\n    \"stop_loss_pct\": 8,\n    \"max_active_positions\": 5,\n    \"max_daily_trades\": 8,\n    \"cooldown_minutes\": 30,\n    \"max_drawdown_pct\": 15\n  },\n  \"strategy\": {\n    \"type\": \"momentum_swing\",\n    \"entry_signal\": \"volume_spike_and_price_up\",\n    \"exit_signal\": \"take_profit_or_stop_loss\",\n    \"timeframe\": \"15min\"\n  },\n  \"bankr\": {\n    \"chain\": \"base\",\n    \"wallet\": \"trading-wallet\",\n    \"slippage_pct\": 1.5\n  },\n  \"data_sources\": {\n    \"use_coingecko_trending\": true,\n    \"use_dexscreener\": true,\n    \"min_liquidity_usd\": 50000,\n    \"min_volume_24h_usd\": 100000\n  }\n}\n```\n\n### 3. Setup Bankr (if needed)\n\nSee `references/bankr-setup.md` for Bankr CLI setup.\n\n### 4. Run the Trading Loop\n\n**Manual execution:**\n\n```bash\n# 1. Scan for opportunities\npython3 scan-tokens.py --output candidates.json\n\n# 2. Review candidates\ncat candidates.json\n\n# 3. Execute a trade (after risk check)\npython3 trade-executor.py --symbol SOL --action buy --amount 40\n\n# 4. Run daily review\npython3 daily-review.py\n```\n\n**Automated loop (cron):**\n\n```bash\n# Run scanner every 30 minutes\n*/30 * * * * cd ~/trading-bot && python3 scan-tokens.py --output candidates.json\n\n# Run daily review at 23:00\n0 23 * * * cd ~/trading-bot && python3 daily-review.py\n```\n\n## Core Scripts\n\n### scan-tokens.py\n\nScans for trading opportunities using free APIs.\n\n**Data Sources:**\n- CoinGecko trending coins\n- Volume spikes (24h volume vs 7d average)\n- Price momentum (1h, 4h, 24h trends)\n- Liquidity and market cap filters\n\n**Output (`candidates.json`):**\n```json\n[\n  {\n    \"symbol\": \"SOL\",\n    \"name\": \"Solana\",\n    \"price\": 145.5,\n    \"volume_24h\": 2800000000,\n    \"volume_spike_ratio\": 1.8,\n    \"price_change_1h_pct\": 2.5,\n    \"price_change_24h_pct\": 5.2,\n    \"liquidity_usd\": 850000000,\n    \"score\": 8.5,\n    \"signals\": [\"trending\", \"volume_spike\", \"momentum_up\"]\n  }\n]\n```\n\n**Usage:**\n```bash\npython3 scan-tokens.py --output candidates.json --min-score 7.0\n```\n\n---\n\n### risk-manager.py\n\nEnforces risk limits before every trade. Acts as the gatekeeper.\n\n**Checks:**\n- Position size within limit\n- Max active positions not exceeded\n- Daily trade limit not exceeded\n- Cooldown period respected\n- Max drawdown not breached\n\n**Usage:**\n```bash\npython3 risk-manager.py --action check --symbol SOL --amount 40\n```\n\n**Exit Codes:**\n- `0` — Trade approved\n- `1` — Trade denied (prints reason)\n\n**Example Output:**\n```\n✅ Risk check passed\n  - Position size: $40 (limit: $40)\n  - Active positions: 3 (limit: 5)\n  - Daily trades: 5 (limit: 8)\n  - Cooldown: OK (35 minutes since last trade)\n  - Drawdown: 8.5% (limit: 15%)\n```\n\n---\n\n### trade-executor.py\n\nExecutes trades via Bankr CLI (or generic DEX interface).\n\n**Supported Actions:**\n- `buy` — Market buy\n- `sell` — Market sell\n- `limit_buy` — Limit order buy\n- `limit_sell` — Limit order sell\n- `set_stop_loss` — Stop-loss order\n- `set_take_profit` — Take-profit order\n\n**Usage:**\n```bash\n# Market buy\npython3 trade-executor.py --symbol SOL --action buy --amount 40\n\n# Sell with stop-loss\npython3 trade-executor.py --symbol SOL --action sell --stop-loss-pct 8\n```\n\n**Trade Log (`trades/YYYY-MM-DD.json`):**\n```json\n[\n  {\n    \"timestamp\": \"2026-03-13T15:45:00Z\",\n    \"symbol\": \"SOL\",\n    \"action\": \"buy\",\n    \"amount_usd\": 40,\n    \"price\": 145.5,\n    \"quantity\": 0.275,\n    \"tx_hash\": \"0xabc123...\",\n    \"status\": \"success\",\n    \"take_profit_price\": 151.32,\n    \"stop_loss_price\": 133.86\n  }\n]\n```\n\n---\n\n### daily-review.py\n\nAnalyzes trade history, calculates P&L, identifies weaknesses, and suggests parameter adjustments.\n\n**Metrics Calculated:**\n- Total P&L (realized + unrealized)\n- Win rate (% of profitable trades)\n- Average win vs average loss\n- Sharpe ratio (if enough data)\n- Max drawdown\n- Best/worst trades\n\n**Output (`reviews/review-YYYY-MM-DD.md`):**\n\n````markdown\n# Trading Review — 2026-03-13\n\n## Performance Summary\n- **Total P&L:** +$42.50 (+5.3%)\n- **Trades:** 8 (6 wins, 2 losses)\n- **Win Rate:** 75%\n- **Avg Win:** $9.20\n- **Avg Loss:** -$5.80\n- **Max Drawdown:** 8.5%\n\n## Top Performers\n1. SOL: +$18.50 (+12.7%)\n2. LINK: +$12.20 (+8.1%)\n\n## Worst Performers\n1. UNI: -$8.50 (-5.7%)\n\n## Pattern Analysis\n- ✅ Momentum trades (4/5 profitable)\n- ⚠️ Low liquidity tokens (1/3 profitable)\n- ❌ Entries during high volatility (0/2 profitable)\n\n## Recommended Adjustments\n1. Increase `min_liquidity_usd` from $50k to $100k (low liquidity trades underperformed)\n2. Add volatility filter (skip trades when VIX > 30)\n3. Tighten stop-loss to 6% (avg loss exceeds target)\n\n## Next Actions\n- [ ] Update `trading-config.json` with new parameters\n- [ ] Backtest on last 30 days with new rules\n- [ ] Monitor performance for 1 week before further changes\n````\n\n**Usage:**\n```bash\npython3 daily-review.py --start-date 2026-03-01 --end-date 2026-03-13\n```\n\n---\n\n## Configuration Reference\n\n### Risk Parameters\n\n| Parameter | Default | Purpose |\n|-----------|---------|---------|\n| `max_position_size_usd` | 40 | Max $ per trade |\n| `take_profit_pct` | 4 | Exit when +4% gain |\n| `stop_loss_pct` | 8 | Exit when -8% loss |\n| `max_active_positions` | 5 | Max concurrent positions |\n| `max_daily_trades` | 8 | Max trades per day |\n| `cooldown_minutes` | 30 | Wait time between trades |\n| `max_drawdown_pct` | 15 | Stop trading if down 15% |\n\n### Strategy Parameters\n\n| Parameter | Options | Purpose |\n|-----------|---------|---------|\n| `type` | `momentum_swing`, `mean_reversion`, `dca`, `asymmetric` | Strategy type |\n| `entry_signal` | `volume_spike_and_price_up`, `oversold`, `breakout` | Entry condition |\n| `exit_signal` | `take_profit_or_stop_loss`, `reversal`, `time_based` | Exit condition |\n| `timeframe` | `5min`, `15min`, `1h`, `4h` | Trading timeframe |\n\n### Bankr Integration\n\n| Parameter | Default | Purpose |\n|-----------|---------|---------|\n| `chain` | `base` | EVM chain (base, ethereum, polygon) |\n| `wallet` | `trading-wallet` | Bankr wallet name |\n| `slippage_pct` | 1.5 | Max acceptable slippage |\n\n---\n\n## Strategy Templates\n\nSee `references/strategies.md` for detailed strategy implementations:\n\n1. **DCA (Dollar-Cost Averaging)** — Buy fixed amount on schedule\n2. **Momentum Swing** — Ride short-term momentum with tight stops\n3. **Mean Reversion** — Buy dips, sell rallies\n4. **Asymmetric Bets** — Small positions on high-upside opportunities\n\n---\n\n## Risk Management Rules\n\nThe risk manager enforces these rules:\n\n### Position Sizing\n```\nPosition size ≤ max_position_size_usd\n```\n\n### Active Position Limit\n```\ncount(open_positions) < max_active_positions\n```\n\n### Daily Trade Limit\n```\ncount(trades_today) < max_daily_trades\n```\n\n### Cooldown Period\n```\ntime_since_last_trade ≥ cooldown_minutes\n```\n\n### Max Drawdown Circuit Breaker\n```\nif current_drawdown ≥ max_drawdown_pct:\n  halt_all_trading()\n  send_alert()\n```\n\nWhen max drawdown is hit, **all trading stops** until manually reset.\n\n---\n\n## Self-Improvement Process\n\nThe bot learns from performance:\n\n**1. Daily Review**\nRun `daily-review.py` to analyze trades.\n\n**2. Pattern Recognition**\nIdentify which setups worked:\n- Entry conditions with >70% win rate\n- Tokens with consistent performance\n- Timeframes with best risk/reward\n\n**3. Parameter Adjustment**\nUpdate `trading-config.json` based on findings:\n- Tighten filters if win rate < 60%\n- Adjust position size if drawdown too high\n- Change timeframe if signals lag\n\n**4. Backtest Changes**\nTest new parameters on historical data (manual or automated).\n\n**5. Monitor**\nRun new parameters for 7 days, then review again.\n\n**Cycle:** Weekly reviews → Parameter tweaks → Monitor → Repeat\n\n---\n\n## Safety Features\n\n✅ **DO:**\n- Start with small position sizes ($40 default)\n- Use stop-losses on every trade\n- Respect cooldown periods (avoid overtrading)\n- Run daily reviews to catch bad patterns early\n- Keep max drawdown limit low (15% default)\n- Paper trade first (simulate without real funds)\n\n❌ **DON'T:**\n- Disable risk manager checks\n- Increase position size without testing\n- Remove stop-losses (\"this time is different\")\n- Trade during network congestion (high gas fees)\n- Ignore max drawdown signals\n- Use leverage (this engine is spot-only by design)\n\n---\n\n## Monitoring & Alerts\n\nTrack bot health:\n\n**Check active positions:**\n```bash\njq '.[] | select(.status == \"open\")' trades/*.json\n```\n\n**Check today's P&L:**\n```bash\npython3 daily-review.py --start-date $(date +%Y-%m-%d) --end-date $(date +%Y-%m-%d)\n```\n\n**Alert on max drawdown:**\n```bash\n# Add to cron (every hour)\npython3 risk-manager.py --action check_drawdown && echo \"Trading halted: max drawdown exceeded\"\n```\n\n---\n\n## Troubleshooting\n\n**Problem:** Risk manager denies all trades\n\n**Solution:** Check `trading-config.json` limits. May have hit daily trade limit or max drawdown.\n\n---\n\n**Problem:** Trades execute but P&L is negative\n\n**Solution:** Run `daily-review.py` to identify losing patterns. Tighten entry filters or adjust stop-loss.\n\n---\n\n**Problem:** Bankr CLI errors\n\n**Solution:** Check wallet balance, network connection, and gas fees. See `references/bankr-setup.md`.\n\n---\n\n**Problem:** Scanner returns no candidates\n\n**Solution:** Lower `min_score` threshold or relax liquidity filters.\n\n---\n\n## Advanced Features\n\n### Paper Trading Mode\n\nTest strategies without real funds:\n\n```json\n{\n  \"mode\": \"paper\",\n  \"paper_balance_usd\": 1000\n}\n```\n\nAll trades simulate execution, no real transactions.\n\n### Multi-Strategy Support\n\nRun multiple strategies in parallel:\n\n```json\n{\n  \"strategies\": [\n    {\n      \"name\": \"momentum\",\n      \"allocation_pct\": 60,\n      \"config\": { ... }\n    },\n    {\n      \"name\": \"mean_reversion\",\n      \"allocation_pct\": 40,\n      \"config\": { ... }\n    }\n  ]\n}\n```\n\n### Backtesting\n\nTest parameters on historical data (requires historical price data):\n\n```bash\npython3 backtest.py --start 2026-01-01 --end 2026-03-01 --config trading-config.json\n```\n\n*(Backtest script not included — implement based on your data source)*\n\n---\n\n## Resources\n\n- **Bankr Setup:** `references/bankr-setup.md`\n- **Strategy Templates:** `references/strategies.md`\n- **CoinGecko API:** https://www.coingecko.com/en/api/documentation\n- **Base Chain Docs:** https://docs.base.org\n\n---\n\n**Version:** 1.0\n**Last Updated:** 2026-03-13\n**Security Note:** Store API keys and wallet private keys securely. Never commit to Git.\n","tags":{"automated":"1.0.1","bankr":"1.0.1","base":"1.0.1","bot":"1.0.1","crypto":"1.0.1","defi":"1.0.1","latest":"1.0.1","trading":"1.0.1"},"stats":{"comments":0,"downloads":881,"installsAllTime":2,"installsCurrent":2,"stars":0,"versions":2},"createdAt":1773419301139,"updatedAt":1779078124706},"latestVersion":{"version":"1.0.1","createdAt":1773420009497,"changelog":"Tested release. All scripts verified. Config defaults to dry-run. Missing config no longer crashes.","license":"MIT-0"},"metadata":null,"owner":{"handle":"avmw2025","userId":"s17egj3n0bkjmcbp94en1t8jb5884m8x","displayName":"Elway Botty","image":"https://avatars.githubusercontent.com/u/214021893?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1780089872377}}