harb/onchain/analysis/README.md

92 lines
3.4 KiB
Markdown
Raw Normal View History

# KRAIKEN Liquidity Analysis
2025-07-06 11:20:35 +02:00
Analysis tools for testing the three-position anti-arbitrage strategy using random fuzzing to discover profitable trading scenarios.
2025-07-06 11:20:35 +02:00
## Quick Start
2025-07-06 11:20:35 +02:00
1. **Run the analysis** (includes parameter validation + random fuzzing):
```bash
forge script analysis/SimpleAnalysis.s.sol --ffi --via-ir
```
2025-07-06 11:20:35 +02:00
2. **Start visualization server**:
```bash
cd analysis && python3 -m http.server 8000
```
2025-07-06 11:20:35 +02:00
3. **View results** at `http://localhost:8000/scenario-visualizer.html`
## How It Works
The analysis script uses **random fuzzing** like the historical `testScenarioFuzz` function to discover profitable trading scenarios:
- **Random Parameters**: Generates random trading amounts, frequencies, and sentiment parameters
- **Historical Logic**: Uses exact trading logic from the working historical tests
- **Early Exit**: Stops immediately after finding the first profitable scenario
- **CSV Generation**: Creates detailed trading sequence data for visualization
## Analysis Commands
### Full Analysis (Recommended)
```bash
forge script analysis/SimpleAnalysis.s.sol --ffi --via-ir
```
Runs both parameter validation and random fuzzing analysis.
### Parameter Validation Only
Modify the `run()` function to comment out `runSentimentFuzzingAnalysis()` if you only want to test parameter configurations.
2025-07-06 11:20:35 +02:00
## Files
2025-07-06 11:20:35 +02:00
- `SimpleAnalysis.s.sol` - Main analysis script with random fuzzing
- `scenario-visualizer.html` - Web-based position visualization
- `profitable_scenario.csv` - Generated when profitable scenarios are found
- `view-scenarios.sh` - HTTP server launcher (alternative to python server)
2025-07-06 11:20:35 +02:00
## Analysis Output
2025-07-06 11:20:35 +02:00
### Console Output
- Parameter validation results for bull/neutral/bear market conditions
- Random fuzzing attempts with generated parameters
- Profitable scenario detection and stopping logic
### CSV Data
When profitable scenarios are found, generates `profitable_scenario.csv` containing:
- Trading sequence (buy/sell/recenter actions)
- Position data (Floor/Anchor/Discovery liquidity amounts)
- Price tick information
- Token distribution across positions
### Visualization
Interactive HTML dashboard showing:
- Position ranges and token distributions
- Uniswap V3 liquidity calculations
- Trading sequence progression
- Anti-arbitrage strategy effectiveness
## Random Fuzzing Details
The script generates random parameters for each test:
- **Actions**: 6-12 trading actions per scenario
- **Frequency**: 1-5 recenter frequency
- **Amounts**: 50-255 basis values (scaled to ether)
- **Sentiment**: Random capital inefficiency, anchor share, width, discovery depth
This approach mirrors the historical `testScenarioFuzz` function that successfully found profitable scenarios in the original codebase.
## Troubleshooting
### No Profitable Scenarios Found
- The anti-arbitrage protection is working effectively
- Try increasing `maxAttempts` in `runSentimentFuzzingAnalysis()` for more fuzzing attempts
- Check console output for parameter validation results
### Script Execution Issues
- Ensure you're using the full script command (not `-s` function selection)
- The `setUp()` function is required for proper contract initialization
- Use `--via-ir` flag for complex contract compilation
### Visualization Issues
- Start the HTTP server from the `analysis/` directory
- Check that `profitable_scenario.csv` exists before viewing
- Browser security may block local file access - use the HTTP server