# Lightning Fee Optimizer An intelligent Lightning Network channel fee optimization agent that analyzes your channel performance and suggests optimal fee strategies to maximize returns. ## Features - **Real-time Data Analysis**: Ingests comprehensive channel data from LND Manage API - **Intelligent Optimization**: Uses machine learning-inspired algorithms to optimize fees based on: - Channel flow patterns - Historical earnings - Balance distribution - Demand elasticity estimation - **Multiple Strategies**: Conservative, Balanced, and Aggressive optimization approaches - **Detailed Reporting**: Rich terminal output with categorized recommendations - **Risk Assessment**: Confidence levels and impact projections for each recommendation ## Installation ```bash # Clone the repository git clone cd lightning-fee-optimizer # Create virtual environment python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # Install dependencies pip install -r requirements.txt ``` ## Requirements - **LND Manage API**: Running at `http://localhost:18081` (or configured URL) - **Python 3.8+** - **Synced Lightning Node**: Must be synced to the blockchain ## Quick Start 1. **Test the connection**: ```bash python test_optimizer.py ``` 2. **Run analysis only** (no recommendations): ```bash python -m src.main --analyze-only ``` 3. **Generate optimization recommendations**: ```bash python -m src.main --dry-run ``` 4. **Save recommendations to file**: ```bash python -m src.main --output recommendations.json ``` ## Command Line Options ```bash python -m src.main [OPTIONS] Options: --api-url TEXT LND Manage API URL [default: http://localhost:18081] --config PATH Configuration file path --analyze-only Only analyze channels without optimization --dry-run Show recommendations without applying them --verbose, -v Enable verbose logging --output, -o PATH Output recommendations to file --help Show this message and exit ``` ## Configuration Create a `config.json` file to customize optimization parameters: ```json { "api": { "base_url": "http://localhost:18081", "timeout": 30 }, "optimization": { "min_fee_rate": 1, "max_fee_rate": 5000, "high_flow_threshold": 10000000, "low_flow_threshold": 1000000, "high_balance_threshold": 0.8, "low_balance_threshold": 0.2, "fee_increase_factor": 1.5 }, "dry_run": true } ``` ## How It Works ### 1. Data Collection - Fetches comprehensive channel data via LND Manage API - Includes balance, flow reports, fee earnings, and policies - Collects 7-day and 30-day historical data ### 2. Channel Analysis The system calculates multiple performance metrics: - **Profitability Score**: Based on net profit and ROI - **Activity Score**: Flow volume and consistency - **Efficiency Score**: Earnings per unit of flow - **Flow Efficiency**: How balanced bidirectional flow is - **Overall Score**: Weighted combination of all metrics ### 3. Channel Categorization Channels are automatically categorized: - **High Performers**: >70 overall score - **Profitable**: Positive earnings >100 sats - **Active Unprofitable**: High flow but low fees - **Inactive**: <1M sats monthly flow - **Problematic**: Issues requiring attention ### 4. Optimization Strategies #### Conservative Strategy - Minimal fee changes - High flow preservation weight (0.8) - 20% maximum fee increase #### Balanced Strategy (Default) - Moderate fee adjustments - Balanced flow preservation (0.6) - 50% maximum fee increase #### Aggressive Strategy - Significant fee increases - Lower flow preservation (0.3) - 100% maximum fee increase ### 5. Recommendation Generation For each channel category, different optimization approaches: **High Performers**: Minimal increases to test demand elasticity **Underperformers**: Significant fee increases based on flow volume **Imbalanced Channels**: Fee adjustments to encourage rebalancing **Inactive Channels**: Fee reductions to attract routing ## Example Output ``` Lightning Fee Optimizer Checking node connection... ๐Ÿ“ฆ Current block height: 906504 Fetching channel data... Found 41 channels ๐Ÿ”ฌ Analyzing channel performance... Successfully analyzed 41 channels โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Network Overview โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚ Total Channels: 41 โ”‚ โ”‚ Total Capacity: 137,420,508 sats โ”‚ โ”‚ Monthly Earnings: 230,541 sats โ”‚ โ”‚ Monthly Costs: 15,230 sats โ”‚ โ”‚ Net Profit: 215,311 sats โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ High Performers: 8 channels โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”“ โ”ƒ Channel โ”ƒ Alias โ”ƒ Score โ”ƒ Profit โ”ƒ Flow โ”ƒ โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”ฉ โ”‚ 779651x576x1 โ”‚ WalletOfSatoshiโ”‚ 89.2 โ”‚ 36,385 โ”‚158.8M โ”‚ โ”‚ 721508x1824x1 โ”‚ node_way_jose โ”‚ 87.5 โ”‚ 9,561 โ”‚ 65.5M โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ Generating fee optimization recommendations... โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Fee Optimization Results โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚ Total Recommendations: 23 โ”‚ โ”‚ Current Monthly Earnings: 230,541 sats โ”‚ โ”‚ Projected Monthly Earnings: 287,162 sats โ”‚ โ”‚ Estimated Improvement: +24.6% โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ ``` ## Data Sources The optimizer uses the following LND Manage API endpoints: - `/api/status/` - Node status and health - `/api/channel/{id}/details` - Comprehensive channel data - `/api/channel/{id}/flow-report/last-days/{days}` - Flow analysis - `/api/node/{pubkey}/details` - Peer information ## Integration with Balance of Satori If you have Balance of Satori installed, you can use the recommendations to: 1. **Manually apply fee changes**: Use the recommended fee rates 2. **Rebalancing decisions**: Identify channels needing liquidity management 3. **Channel management**: Close underperforming channels, open new ones ## Safety Features - **Dry-run by default**: Never applies changes automatically - **Conservative limits**: Prevents extreme fee adjustments - **Confidence scoring**: Each recommendation includes confidence level - **Impact estimation**: Projected effects on flow and earnings ## Contributing 1. Fork the repository 2. Create a feature branch 3. Add tests for new functionality 4. Submit a pull request ## Troubleshooting **Connection Issues**: - Verify LND Manage API is running - Check API URL configuration - Ensure node is synced **No Recommendations**: - Verify channels have sufficient historical data - Check that channels are active - Review configuration thresholds **Performance Issues**: - Reduce the number of channels analyzed - Use configuration to filter by capacity - Enable verbose logging to identify bottlenecks ## License MIT License - see LICENSE file for details.