harb/onchain/analysis/PARAMETER_SEARCH_RESULTS.md

362 lines
15 KiB
Markdown
Raw Normal View History

# KRAIKEN Parameter Search Results
## Objective
Find optimizer parameters where the LiquidityManager NEVER loses ETH regardless of trade sequence.
## Methodology
- **Mode**: boundary
- **Runs per parameter combination**: 5
- **Trades per run**: 30
- **Uncapped swaps**: true (trades push through position boundaries)
- **Trade size range**: 20-80 ETH (vs 100 ETH LM balance)
- **VWAP accumulation**: Environment reused across runs per combo
- **Buy biases tested**: 80%
- **Total combinations tested**: 252
- **Elapsed time**: 64s
### Parameters Searched
| Parameter | Values | Description |
|-----------|--------|-------------|
| capitalInefficiency | 0%, 30%, 50%, 80% | Capital buffer (0=aggressive, 1e18=conservative) |
| anchorShare | 10.0%, 20.0%, 30.0%, 40.0%, 50.0%, 70.0%, 100.0% | ETH allocation to anchor vs floor |
| anchorWidth | 30,50,80 | Anchor position width (1-100) |
| discoveryDepth | 20%, 50%, 100% | Discovery liquidity density |
| buyBias | 80% | Adversarial trade mix (80=buy-heavy, 100=buy-only) |
### Key Metrics
- **Trader PnL < 0**: LM gained ETH (SAFE). Trader lost money.
- **Trader PnL > 0**: LM lost ETH (UNSAFE). Trader extracted ETH.
## Results Summary
- **Safe combinations**: 1 / 252
- **Unsafe combinations**: 251 / 252
## UNSAFE Parameters (Trader Profited = LM Lost ETH)
| CI | AnchorShare | AnchorWidth | DiscoveryDepth | BuyBias | Worst Trader PnL (ETH) |
|-----|-------------|-------------|----------------|---------|------------------------|
| 0% | 10.0% | 30 | 20% | 80 | +44.4865 |
| 0% | 10.0% | 30 | 50% | 80 | +167.0544 |
| 0% | 10.0% | 30 | 100% | 80 | +173.8168 |
| 0% | 10.0% | 50 | 20% | 80 | +195.4837 |
| 0% | 10.0% | 50 | 50% | 80 | +151.0647 |
| 0% | 10.0% | 50 | 100% | 80 | +32.3425 |
| 0% | 10.0% | 80 | 50% | 80 | +194.9101 |
| 0% | 10.0% | 80 | 100% | 80 | +142.8975 |
| 0% | 20.0% | 30 | 20% | 80 | +155.1874 |
| 0% | 20.0% | 30 | 50% | 80 | +163.5719 |
| 0% | 20.0% | 30 | 100% | 80 | +165.1913 |
| 0% | 20.0% | 50 | 20% | 80 | +160.7820 |
| 0% | 20.0% | 50 | 50% | 80 | +45.7948 |
| 0% | 20.0% | 50 | 100% | 80 | +158.7578 |
| 0% | 20.0% | 80 | 20% | 80 | +194.8064 |
| 0% | 20.0% | 80 | 50% | 80 | +195.2834 |
| 0% | 20.0% | 80 | 100% | 80 | +111.9274 |
| 0% | 30.0% | 30 | 20% | 80 | +151.7137 |
| 0% | 30.0% | 30 | 50% | 80 | +159.1207 |
| 0% | 30.0% | 30 | 100% | 80 | +171.0853 |
| 0% | 30.0% | 50 | 20% | 80 | +129.2839 |
| 0% | 30.0% | 50 | 50% | 80 | +141.0922 |
| 0% | 30.0% | 50 | 100% | 80 | +153.9969 |
| 0% | 30.0% | 80 | 20% | 80 | +194.9104 |
| 0% | 30.0% | 80 | 50% | 80 | +167.4619 |
| 0% | 30.0% | 80 | 100% | 80 | +98.0605 |
| 0% | 40.0% | 30 | 20% | 80 | +150.5747 |
| 0% | 40.0% | 30 | 50% | 80 | +156.1247 |
| 0% | 40.0% | 30 | 100% | 80 | +164.0883 |
| 0% | 40.0% | 50 | 20% | 80 | +101.9849 |
| 0% | 40.0% | 50 | 50% | 80 | +93.0508 |
| 0% | 40.0% | 50 | 100% | 80 | +146.2112 |
| 0% | 40.0% | 80 | 20% | 80 | +195.2850 |
| 0% | 40.0% | 80 | 50% | 80 | +126.8223 |
| 0% | 40.0% | 80 | 100% | 80 | +103.2776 |
| 0% | 50.0% | 30 | 20% | 80 | +160.1651 |
| 0% | 50.0% | 30 | 50% | 80 | +165.6169 |
| 0% | 50.0% | 30 | 100% | 80 | +167.6367 |
| 0% | 50.0% | 50 | 20% | 80 | +137.2574 |
| 0% | 50.0% | 50 | 50% | 80 | +150.7772 |
| 0% | 50.0% | 50 | 100% | 80 | +154.5785 |
| 0% | 50.0% | 80 | 20% | 80 | +195.4837 |
| 0% | 50.0% | 80 | 50% | 80 | +181.7083 |
| 0% | 50.0% | 80 | 100% | 80 | +147.8093 |
| 0% | 70.0% | 30 | 20% | 80 | +172.0906 |
| 0% | 70.0% | 30 | 50% | 80 | +170.8340 |
| 0% | 70.0% | 30 | 100% | 80 | +167.3951 |
| 0% | 70.0% | 50 | 20% | 80 | +156.1362 |
| 0% | 70.0% | 50 | 50% | 80 | +163.3642 |
| 0% | 70.0% | 50 | 100% | 80 | +169.0484 |
| 0% | 70.0% | 80 | 20% | 80 | +120.1484 |
| 0% | 70.0% | 80 | 50% | 80 | +127.5211 |
| 0% | 70.0% | 80 | 100% | 80 | +142.2562 |
| 0% | 100.0% | 30 | 20% | 80 | +159.4093 |
| 0% | 100.0% | 30 | 50% | 80 | +162.4528 |
| 0% | 100.0% | 30 | 100% | 80 | +159.8911 |
| 0% | 100.0% | 50 | 20% | 80 | +164.0498 |
| 0% | 100.0% | 50 | 50% | 80 | +166.4621 |
| 0% | 100.0% | 50 | 100% | 80 | +163.1331 |
| 0% | 100.0% | 80 | 20% | 80 | +139.6734 |
| 0% | 100.0% | 80 | 50% | 80 | +142.3217 |
| 0% | 100.0% | 80 | 100% | 80 | +147.6998 |
| 30% | 10.0% | 30 | 20% | 80 | +90.1073 |
| 30% | 10.0% | 30 | 50% | 80 | +115.8428 |
| 30% | 10.0% | 30 | 100% | 80 | +119.9304 |
| 30% | 10.0% | 50 | 20% | 80 | +126.4138 |
| 30% | 10.0% | 50 | 50% | 80 | +121.1845 |
| 30% | 10.0% | 50 | 100% | 80 | +103.7924 |
| 30% | 10.0% | 80 | 20% | 80 | +71.6892 |
| 30% | 10.0% | 80 | 50% | 80 | +113.3565 |
| 30% | 10.0% | 80 | 100% | 80 | +110.1272 |
| 30% | 20.0% | 30 | 20% | 80 | +99.5726 |
| 30% | 20.0% | 30 | 50% | 80 | +109.5590 |
| 30% | 20.0% | 30 | 100% | 80 | +102.5265 |
| 30% | 20.0% | 50 | 20% | 80 | +120.0764 |
| 30% | 20.0% | 50 | 50% | 80 | +88.3542 |
| 30% | 20.0% | 50 | 100% | 80 | +105.7466 |
| 30% | 20.0% | 80 | 20% | 80 | +115.8770 |
| 30% | 20.0% | 80 | 50% | 80 | +112.3954 |
| 30% | 20.0% | 80 | 100% | 80 | +102.0245 |
| 30% | 30.0% | 30 | 20% | 80 | +88.9205 |
| 30% | 30.0% | 30 | 50% | 80 | +97.1584 |
| 30% | 30.0% | 30 | 100% | 80 | +102.9767 |
| 30% | 30.0% | 50 | 20% | 80 | +113.3466 |
| 30% | 30.0% | 50 | 50% | 80 | +81.5380 |
| 30% | 30.0% | 50 | 100% | 80 | +91.2719 |
| 30% | 30.0% | 80 | 20% | 80 | +113.7442 |
| 30% | 30.0% | 80 | 50% | 80 | +105.2492 |
| 30% | 30.0% | 80 | 100% | 80 | +98.0605 |
| 30% | 40.0% | 30 | 20% | 80 | +80.5371 |
| 30% | 40.0% | 30 | 50% | 80 | +87.1861 |
| 30% | 40.0% | 30 | 100% | 80 | +89.2654 |
| 30% | 40.0% | 50 | 20% | 80 | +101.9849 |
| 30% | 40.0% | 50 | 50% | 80 | +93.0508 |
| 30% | 40.0% | 50 | 100% | 80 | +82.1692 |
| 30% | 40.0% | 80 | 20% | 80 | +112.1467 |
| 30% | 40.0% | 80 | 50% | 80 | +98.4444 |
| 30% | 40.0% | 80 | 100% | 80 | +81.6585 |
| 30% | 50.0% | 30 | 20% | 80 | +81.1150 |
| 30% | 50.0% | 30 | 50% | 80 | +87.9297 |
| 30% | 50.0% | 30 | 100% | 80 | +85.4227 |
| 30% | 50.0% | 50 | 20% | 80 | +64.9790 |
| 30% | 50.0% | 50 | 50% | 80 | +82.5178 |
| 30% | 50.0% | 50 | 100% | 80 | +85.9601 |
| 30% | 50.0% | 80 | 20% | 80 | +106.5547 |
| 30% | 50.0% | 80 | 50% | 80 | +104.7799 |
| 30% | 50.0% | 80 | 100% | 80 | +99.1856 |
| 30% | 70.0% | 30 | 20% | 80 | +81.5207 |
| 30% | 70.0% | 30 | 50% | 80 | +79.0134 |
| 30% | 70.0% | 30 | 100% | 80 | +72.5387 |
| 30% | 70.0% | 50 | 20% | 80 | +69.8455 |
| 30% | 70.0% | 50 | 50% | 80 | +80.6623 |
| 30% | 70.0% | 50 | 100% | 80 | +86.1583 |
| 30% | 70.0% | 80 | 20% | 80 | +65.6840 |
| 30% | 70.0% | 80 | 50% | 80 | +58.3039 |
| 30% | 70.0% | 80 | 100% | 80 | +65.6792 |
| 30% | 100.0% | 30 | 20% | 80 | +48.0308 |
| 30% | 100.0% | 30 | 50% | 80 | +46.0619 |
| 30% | 100.0% | 30 | 100% | 80 | +45.0256 |
| 30% | 100.0% | 50 | 20% | 80 | +61.2679 |
| 30% | 100.0% | 50 | 50% | 80 | +64.0892 |
| 30% | 100.0% | 50 | 100% | 80 | +54.6580 |
| 30% | 100.0% | 80 | 20% | 80 | +59.1616 |
| 30% | 100.0% | 80 | 50% | 80 | +54.4745 |
| 30% | 100.0% | 80 | 100% | 80 | +58.5477 |
| 50% | 10.0% | 30 | 20% | 80 | +44.4865 |
| 50% | 10.0% | 30 | 50% | 80 | +36.2061 |
| 50% | 10.0% | 30 | 100% | 80 | +39.7368 |
| 50% | 10.0% | 50 | 20% | 80 | +78.7116 |
| 50% | 10.0% | 50 | 50% | 80 | +74.2340 |
| 50% | 10.0% | 50 | 100% | 80 | +32.3425 |
| 50% | 10.0% | 80 | 20% | 80 | +72.2638 |
| 50% | 10.0% | 80 | 50% | 80 | +72.8687 |
| 50% | 10.0% | 80 | 100% | 80 | +63.3909 |
| 50% | 20.0% | 30 | 20% | 80 | +31.0651 |
| 50% | 20.0% | 30 | 50% | 80 | +30.5473 |
| 50% | 20.0% | 30 | 100% | 80 | +29.6514 |
| 50% | 20.0% | 50 | 20% | 80 | +75.2892 |
| 50% | 20.0% | 50 | 50% | 80 | +45.7948 |
| 50% | 20.0% | 50 | 100% | 80 | +27.4948 |
| 50% | 20.0% | 80 | 20% | 80 | +72.8613 |
| 50% | 20.0% | 80 | 50% | 80 | +67.6330 |
| 50% | 20.0% | 80 | 100% | 80 | +61.9827 |
| 50% | 30.0% | 30 | 20% | 80 | +34.5388 |
| 50% | 30.0% | 30 | 50% | 80 | +27.1038 |
| 50% | 30.0% | 30 | 100% | 80 | +35.0315 |
| 50% | 30.0% | 50 | 20% | 80 | +70.7938 |
| 50% | 30.0% | 50 | 50% | 80 | +45.1601 |
| 50% | 30.0% | 50 | 100% | 80 | +32.2557 |
| 50% | 30.0% | 80 | 20% | 80 | +70.9767 |
| 50% | 30.0% | 80 | 50% | 80 | +62.9839 |
| 50% | 30.0% | 80 | 100% | 80 | +60.1060 |
| 50% | 40.0% | 30 | 20% | 80 | +35.6779 |
| 50% | 40.0% | 30 | 50% | 80 | +30.1036 |
| 50% | 40.0% | 30 | 100% | 80 | +22.1643 |
| 50% | 40.0% | 50 | 20% | 80 | +66.2748 |
| 50% | 40.0% | 50 | 50% | 80 | +62.6375 |
| 50% | 40.0% | 50 | 100% | 80 | +40.0414 |
| 50% | 40.0% | 80 | 20% | 80 | +67.5835 |
| 50% | 40.0% | 80 | 50% | 80 | +61.6885 |
| 50% | 40.0% | 80 | 100% | 80 | +54.1124 |
| 50% | 50.0% | 30 | 20% | 80 | +26.0875 |
| 50% | 50.0% | 30 | 50% | 80 | +20.6095 |
| 50% | 50.0% | 30 | 100% | 80 | +18.6159 |
| 50% | 50.0% | 50 | 20% | 80 | +48.9952 |
| 50% | 50.0% | 50 | 50% | 80 | +35.4577 |
| 50% | 50.0% | 50 | 100% | 80 | +31.6740 |
| 50% | 50.0% | 80 | 20% | 80 | +70.3513 |
| 50% | 50.0% | 80 | 50% | 80 | +68.3633 |
| 50% | 50.0% | 80 | 100% | 80 | +62.8821 |
| 50% | 70.0% | 30 | 20% | 80 | +14.6729 |
| 50% | 70.0% | 30 | 50% | 80 | +15.8832 |
| 50% | 70.0% | 30 | 100% | 80 | +19.7497 |
| 50% | 70.0% | 50 | 20% | 80 | +30.1163 |
| 50% | 70.0% | 50 | 50% | 80 | +22.8615 |
| 50% | 70.0% | 50 | 100% | 80 | +17.2041 |
| 50% | 70.0% | 80 | 20% | 80 | +56.9112 |
| 50% | 70.0% | 80 | 50% | 80 | +55.4916 |
| 50% | 70.0% | 80 | 100% | 80 | +43.9963 |
| 50% | 100.0% | 30 | 20% | 80 | +14.4888 |
| 50% | 100.0% | 30 | 50% | 80 | +17.3528 |
| 50% | 100.0% | 30 | 100% | 80 | +20.0627 |
| 50% | 100.0% | 50 | 20% | 80 | +22.2027 |
| 50% | 100.0% | 50 | 50% | 80 | +19.7685 |
| 50% | 100.0% | 50 | 100% | 80 | +23.5007 |
| 50% | 100.0% | 80 | 20% | 80 | +44.1949 |
| 50% | 100.0% | 80 | 50% | 80 | +41.6010 |
| 50% | 100.0% | 80 | 100% | 80 | +38.5527 |
| 80% | 10.0% | 30 | 20% | 80 | +36.9053 |
| 80% | 10.0% | 30 | 50% | 80 | +19.1955 |
| 80% | 10.0% | 30 | 100% | 80 | +13.3382 |
| 80% | 10.0% | 50 | 20% | 80 | +38.0580 |
| 80% | 10.0% | 50 | 50% | 80 | +36.8523 |
| 80% | 10.0% | 50 | 100% | 80 | +32.3425 |
| 80% | 10.0% | 80 | 20% | 80 | +22.1459 |
| 80% | 10.0% | 80 | 50% | 80 | +22.4193 |
| 80% | 10.0% | 80 | 100% | 80 | +17.4677 |
| 80% | 20.0% | 30 | 20% | 80 | +31.0651 |
| 80% | 20.0% | 30 | 50% | 80 | +22.6756 |
| 80% | 20.0% | 30 | 100% | 80 | +21.0613 |
| 80% | 20.0% | 50 | 20% | 80 | +32.2943 |
| 80% | 20.0% | 50 | 50% | 80 | +31.7863 |
| 80% | 20.0% | 50 | 100% | 80 | +27.4948 |
| 80% | 20.0% | 80 | 20% | 80 | +23.7564 |
| 80% | 20.0% | 80 | 50% | 80 | +22.6200 |
| 80% | 20.0% | 80 | 100% | 80 | +18.4964 |
| 80% | 30.0% | 30 | 20% | 80 | +27.9013 |
| 80% | 30.0% | 30 | 50% | 80 | +27.1038 |
| 80% | 30.0% | 30 | 100% | 80 | +15.1672 |
| 80% | 30.0% | 50 | 20% | 80 | +31.9832 |
| 80% | 30.0% | 50 | 50% | 80 | +28.1646 |
| 80% | 30.0% | 50 | 100% | 80 | +25.4829 |
| 80% | 30.0% | 80 | 20% | 80 | +23.0357 |
| 80% | 30.0% | 80 | 50% | 80 | +29.0780 |
| 80% | 30.0% | 80 | 100% | 80 | +18.5361 |
| 80% | 40.0% | 30 | 20% | 80 | +26.2602 |
| 80% | 40.0% | 30 | 50% | 80 | +23.8902 |
| 80% | 40.0% | 30 | 100% | 80 | +22.1643 |
| 80% | 40.0% | 50 | 20% | 80 | +28.8204 |
| 80% | 40.0% | 50 | 50% | 80 | +24.2234 |
| 80% | 40.0% | 50 | 100% | 80 | +23.4347 |
| 80% | 40.0% | 80 | 20% | 80 | +31.4300 |
| 80% | 40.0% | 80 | 50% | 80 | +28.4225 |
| 80% | 40.0% | 80 | 100% | 80 | +26.1570 |
| 80% | 50.0% | 30 | 20% | 80 | +20.1297 |
| 80% | 50.0% | 30 | 50% | 80 | +17.7192 |
| 80% | 50.0% | 30 | 100% | 80 | +18.6159 |
| 80% | 50.0% | 50 | 20% | 80 | +21.8346 |
| 80% | 50.0% | 50 | 50% | 80 | +20.5705 |
| 80% | 50.0% | 50 | 100% | 80 | +19.6272 |
| 80% | 50.0% | 80 | 20% | 80 | +30.2614 |
| 80% | 50.0% | 80 | 50% | 80 | +25.7402 |
| 80% | 50.0% | 80 | 100% | 80 | +24.5946 |
| 80% | 70.0% | 30 | 20% | 80 | +9.4713 |
| 80% | 70.0% | 30 | 50% | 80 | +10.6575 |
| 80% | 70.0% | 30 | 100% | 80 | +19.7497 |
| 80% | 70.0% | 50 | 20% | 80 | +14.8283 |
| 80% | 70.0% | 50 | 50% | 80 | +12.9254 |
| 80% | 70.0% | 50 | 100% | 80 | +12.3710 |
| 80% | 70.0% | 80 | 20% | 80 | +23.0548 |
| 80% | 70.0% | 80 | 50% | 80 | +21.2336 |
| 80% | 70.0% | 80 | 100% | 80 | +18.9539 |
| 80% | 100.0% | 30 | 20% | 80 | +12.7994 |
| 80% | 100.0% | 30 | 50% | 80 | +13.8975 |
| 80% | 100.0% | 30 | 100% | 80 | +16.5736 |
| 80% | 100.0% | 50 | 20% | 80 | +7.8091 |
| 80% | 100.0% | 50 | 50% | 80 | +7.6161 |
| 80% | 100.0% | 50 | 100% | 80 | +18.5219 |
| 80% | 100.0% | 80 | 20% | 80 | +18.8946 |
| 80% | 100.0% | 80 | 50% | 80 | +18.7205 |
| 80% | 100.0% | 80 | 100% | 80 | +16.0340 |
## SAFE Parameters
All tested parameter combinations where the LM never lost ETH:
### Safe Ranges by Buy Bias
- **BuyBias=80%**: 1/252 safe
### Top 20 Safest Combinations (most negative trader PnL = hardest to exploit)
| CI | AnchorShare | AnchorWidth | DiscoveryDepth | BuyBias | Worst Trader PnL (ETH) |
|-----|-------------|-------------|----------------|---------|------------------------|
| 0% | 10.0% | 80 | 20% | 80 | -114.4822 |
## Exploitation Mechanism
### Where Trader Profit ETH Comes From
The trader's profit WETH is extracted from the Uniswap pool's liquidity, which is backed by
the LM's positions. Since the LM is the sole liquidity provider:
1. Trader buys KRAIKEN: sends WETH to pool, receives KRAIKEN from LM's positions
2. Recenter fires: LM scrapes positions, repositions at new price, mints fresh KRAIKEN
3. Trader sells KRAIKEN: receives WETH from pool (from LM's repositioned liquidity)
4. Net: trader extracts WETH from LM's position value
This is **impermanent loss (IL)** from dynamic liquidity management. Each recenter
repositions liquidity at the current price, "absorbing" the price impact. The trader
exploits this by pushing price, triggering recenter, then reversing.
### VWAP is NOT the Attack Vector
VWAP tracks historical anchor prices weighted by ETH fee volume. `getAdjustedVWAP(CI)`
returns `(70% * VWAP) + (CI * VWAP)`, which places the floor BELOW average prices
when CI is low (bull) and ABOVE when CI is high (bear). VWAP **anchors the floor to
history** — it is a safety mechanism that prevents the floor from chasing price up,
not an exploitation surface.
### Measurement Notes
- **Trader PnL** is the reliable safety metric: WETH balance before vs after trading+liquidation
- **lm_eth_delta** in the CSV uses `lm_balance + pool_WETH` as a rough proxy for total LM ETH.
This metric is noisy because pool WETH mixes LM position ETH with trader buy WETH in transit.
It is informational only — trader PnL is the authoritative signal.
### Confirmed: Capped Swaps Prevent Exploitation
With LiquidityBoundaryHelper caps enabled (production behavior): trader ALWAYS loses money.
Capped swaps prevent the trader from pushing through position boundaries, eliminating the
IL-based extraction. The question is whether caps restrict legitimate large trades.
## Recommendations
**251 of 252 tested parameter combinations are UNSAFE with uncapped swaps.**
The exploitation stems from the LM acting as a repositioning market maker: each recenter
resets position geometry around the current price, allowing a trader to repeatedly extract
IL by moving the price and triggering repositioning.
### capitalInefficiency Effect
| CI | Unsafe Rate | Avg Trader Profit |
|----|-------------|-------------------|
| 0% (bull) | 98% | ~100+ ETH |
| 30% | 100% | ~85 ETH |
| 50% | 100% | ~40 ETH |
| 80% (bear) | 100% | ~22 ETH |
CI reduces exploitation magnitude but does not eliminate it.
### Mitigation Directions (Require Code Changes)
1. **Keep swap caps**: LiquidityBoundaryHelper prevents exploitation entirely
2. **Recenter cooldown**: Prevent rapid buy→recenter→sell→recenter cycles
3. **Price impact detection**: Detect when recenter is triggered by a single actor's trades
4. **Position geometry hardening**: Widen positions to increase slippage cost of round-trips
---
*Generated: 2026-02-07*