# Bot Policy (What It Actually Does) ## Inputs (per pool) - **Oracle price** `P_oracle(T)` — target peg: 1.00 for USD stables; FX for EUR tokens - **Pool mid price** `P_pool(T)` - **Deviation**: `δ = (P_pool - P_oracle) / P_oracle` - **Inventory imbalance** on cW side (how much of your token remains vs baseline) - Public chain liquidity/volatility conditions - Bridge backlog / mint-burn queue status (if available) ## Actions ### 1. Tight-peg maintenance trades - If `P_pool(T) > P_oracle + band` → bot **sells** `T` into pool (adds T inventory / absorbs quote) - If `P_pool(T) < P_oracle - band` → bot **buys** `T` from pool (removes T inventory / spends quote) ### 2. Inventory re-centering - If pool is “too drained” of T (or too full), bot adjusts by: - Adding/removing single-sided liquidity on T side - Optionally bridging more T from ChainID 138 or redeeming back ### 3. Cross-pool routing When multiple quotes exist (USDT/USDC/DAI), the bot routes to the best edge: - Trade where slippage + fee is lowest - Optionally rebalance quote asset via existing DEX routes (USDC ↔ USDT ↔ DAI) ### 4. Bridge-aware throttling - If the bridge is congested or risk flags trip, bot widens bands / reduces exposure ## Peg bands See [../config/peg-bands.json](../config/peg-bands.json) and [05-oracles.md](05-oracles.md). Summary: - **USD-pegged**: Normal ±10–25 bps; stress ±50–150 bps; circuit break >2% - **EUR-pegged**: Normal ±25–50 bps; stress ±100–250 bps; anchor via EURUSD oracle State machine and pseudo-code: [../spec/bot-state-machine.md](../spec/bot-state-machine.md), [../spec/bot-pseudo-code.md](../spec/bot-pseudo-code.md).