chore(sim): gas-budgeted micro-trade scenario and support doc
Made-with: Cursor
This commit is contained in:
33
config/scenarios/micro_support_usd_wrappers_1_56_137.json
Normal file
33
config/scenarios/micro_support_usd_wrappers_1_56_137.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"scenario": "micro_support_usd_wrappers_1_56_137",
|
||||
"graphMode": "design",
|
||||
"topology": "full_quote",
|
||||
"chainsIncluded": ["1", "56", "137"],
|
||||
"tokensIncluded": ["cWUSDT", "cWUSDC"],
|
||||
"epochBlocks": 300,
|
||||
"epochs": 720,
|
||||
"orderflowModel": {
|
||||
"distribution": "uniform",
|
||||
"volumeMinUnits": 1000,
|
||||
"volumeMaxUnits": 80000,
|
||||
"tradesPerEpoch": 35
|
||||
},
|
||||
"microTradePolicy": {
|
||||
"enabled": true,
|
||||
"tokens": ["cWUSDT", "cWUSDC"],
|
||||
"quoteTokens": ["USDT", "USDC"],
|
||||
"preferMatchedQuote": true,
|
||||
"mode": "inventory_or_alternate",
|
||||
"tradeSizeUnits": 250,
|
||||
"tradesPerEpoch": 8,
|
||||
"gasCostPerTradeUnits": 2,
|
||||
"gasBudgetPerEpochUnits": 16,
|
||||
"inventoryBandFraction": 0.05,
|
||||
"maxFractionOfTarget": 0.0025
|
||||
},
|
||||
"oracleModel": "static",
|
||||
"latencyModel": {
|
||||
"finalityBlocksPerChainPair": {},
|
||||
"rhoPerBlockBps": 0.5
|
||||
}
|
||||
}
|
||||
58
docs/15-gas-budgeted-micro-trade-support.md
Normal file
58
docs/15-gas-budgeted-micro-trade-support.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# Gas-Budgeted Micro-Trade Support
|
||||
|
||||
Use a small, explicit gas budget to run **tiny support trades** in the most important wrapped USD rails:
|
||||
|
||||
- `cWUSDC` against `USDC`
|
||||
- `cWUSDT` against `USDT`
|
||||
- fallback to the chain hub stable only when the matched rail is unavailable
|
||||
|
||||
## What this is for
|
||||
|
||||
The goal is to give wrapped assets:
|
||||
|
||||
- observable turnover
|
||||
- fresher route discovery
|
||||
- tighter quote confidence
|
||||
- inventory-sensitive support when a pool drifts away from target stock
|
||||
|
||||
This is a **liquidity and price-discovery support lane**. It does **not** create reserve backing or intrinsic value on its own.
|
||||
|
||||
## Operating rule
|
||||
|
||||
Use the support lane only when all of these remain true:
|
||||
|
||||
- the trades stay **micro** relative to `I_T^*`
|
||||
- gas is capped per epoch or time window
|
||||
- matched rails are preferred: `cWUSDC/USDC`, `cWUSDT/USDT`
|
||||
- inventory correction happens first
|
||||
- alternating buys/sells are allowed only inside a small inventory band
|
||||
|
||||
## Suggested control surface
|
||||
|
||||
Model or enforce these knobs:
|
||||
|
||||
- `tradeSizeUnits`
|
||||
- `tradesPerEpoch`
|
||||
- `gasCostPerTradeUnits`
|
||||
- `gasBudgetPerEpochUnits`
|
||||
- `inventoryBandFraction`
|
||||
- `maxFractionOfTarget`
|
||||
- `preferMatchedQuote`
|
||||
|
||||
## Recommended interpretation
|
||||
|
||||
Think of this as paying a small amount of gas to keep the wrapper corridor **economically live**:
|
||||
|
||||
- If pool inventory is too low, sell a tiny amount of cW into the pool.
|
||||
- If pool inventory is too high, buy a tiny amount of cW from the pool.
|
||||
- If inventory is already near target, allow only very small alternating trades, still under the gas cap.
|
||||
|
||||
## Scenario
|
||||
|
||||
The repo includes a ready-made scenario for the first three high-signal public rails:
|
||||
|
||||
```bash
|
||||
node scripts/run-scenario.cjs micro_support_usd_wrappers_1_56_137
|
||||
```
|
||||
|
||||
This runs on chains `1`, `56`, and `137` with `cWUSDT` and `cWUSDC`, full-quote topology, and a separate micro-trade policy budget.
|
||||
Reference in New Issue
Block a user