Replace hardcoded anchorWidth=100 with dynamic calculation that uses staking data as a decentralized oracle. Changes: - Add _calculateAnchorWidth() function to Optimizer.sol - Base width 40% with adjustments based on staking percentage and average tax rate - Staking adjustment: -20% to +20% (inverse relationship) - Tax rate adjustment: -10% to +30% (direct relationship) - Final range clamped to 10-80% for safety Rationale: - High staking % = bullish sentiment → narrower anchor (20-35%) for fee optimization - Low staking % = bearish/uncertain → wider anchor (60-80%) for defensive positioning - High tax rates = volatility expected → wider anchor to reduce rebalancing - Low tax rates = stability expected → narrower anchor for fee collection The Harberger tax mechanism acts as a prediction market where stakers' self-assessed valuations reveal market expectations. Tests: - Add comprehensive unit tests in test/Optimizer.t.sol - Add mock contracts for testing (MockStake.sol, MockKraiken.sol) - Manual verification confirms all scenarios calculate correctly Documentation: - Add detailed analysis of anchorWidth price ranges - Add staking-based strategy recommendations - Add verification of calculation logic 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| helpers | ||
| .gitignore | ||
| AnalysisVisualizer.py | ||
| anchor-width-calculations.md | ||
| ImprovedFuzzingAnalysis.s.sol | ||
| README.md | ||
| RecordedFuzzingAnalysis.s.sol | ||
| replay-scenario.sh | ||
| requirements.txt | ||
| run-fuzzing.sh | ||
| run-recorded-fuzzing.sh | ||
| scenario-visualizer.html | ||
| staking-based-anchor-width.md | ||
| verify_anchor_width_logic.md | ||
| view-scenarios.sh | ||
KRAIKEN Fuzzing Analysis Tools
This directory contains tools for fuzzing the KRAIKEN LiquidityManager to identify potential profitable trading scenarios.
Quick Start
# Run fuzzing with default settings (50 runs, 20 trades)
./run-fuzzing.sh BullMarketOptimizer
# Run with custom parameters
./run-fuzzing.sh WhaleOptimizer runs=100 trades=50
# Clean up generated files
./clean.sh
Files
Core Scripts
FuzzingAnalysis.s.sol- Main Solidity fuzzing script that tests trading scenariosrun-fuzzing.sh- Shell script to orchestrate multiple fuzzing runsclean.sh- Cleanup script to remove generated files
Helpers
helpers/SwapExecutor.sol- Handles swap execution through Uniswaphelpers/CSVManager.sol- CSV generation utilitieshelpers/CSVHelper.sol- CSV formatting helpers
Visualization
AnalysisVisualizer.py- Python script to generate charts from CSV datascenario-visualizer.html- Interactive web visualizationview-scenarios.sh- Quick script to launch web server for visualization
Available Optimizers
BullMarketOptimizer- Aggressive parameters for bull market conditionsNeutralMarketOptimizer- Balanced parametersBearMarketOptimizer- Conservative parameters for bear market conditionsWhaleOptimizer- Simulates large position dominanceMockOptimizer- Standard mock with configurable parametersRandomScenarioOptimizer- Randomized parameters for each run
Usage
Running Fuzzing Campaigns
# Basic usage
./run-fuzzing.sh <optimizer_class> [runs=N] [trades=N]
# Examples
./run-fuzzing.sh BullMarketOptimizer # Uses defaults
./run-fuzzing.sh WhaleOptimizer runs=100 # 100 runs
./run-fuzzing.sh BearMarketOptimizer trades=50 # 50 trades per run
./run-fuzzing.sh NeutralMarketOptimizer runs=25 trades=30 # Both params
Parameters:
optimizer_class- Required. The optimizer class to useruns=N- Optional. Number of fuzzing runs (default: 50)trades=N- Optional. Trades per run (default: 20, actual will be ±5)
Output
Each fuzzing campaign creates a timestamped directory with:
- Individual run logs (
run_N.log) - Merged CSV of profitable scenarios
- Summary report with statistics
- Configuration file for reproducibility
Visualization
To visualize results:
# Start local web server
./view-scenarios.sh
# Or use Python directly
python3 -m http.server 8000
# Then open http://localhost:8000/scenario-visualizer.html
Cleanup
Remove all generated files:
./clean.sh
Environment Variables
The fuzzing script supports these environment variables:
FUZZING_RUNS- Number of runs (overridden by script parameter)OPTIMIZER_CLASS- Optimizer to use (overridden by script parameter)TRADES_PER_RUN- Trades per run (overridden by script parameter)TRACK_POSITIONS- Enable detailed position tracking (default: false)
Development
To add a new optimizer:
- Create the optimizer contract in
../test/mocks/ - Import it in
FuzzingAnalysis.s.sol - Add it to the
_getOptimizerByClassfunction - Update this README
Notes
- Each run deploys a fresh Uniswap V3 environment
- Gas limit is set to 200M for --via-ir compilation
- Results are deterministic based on the seed
- The fuzzer tests random buy/sell patterns with periodic recenters