# Exposure Protector Defensive rebalancer that trims skew and protects exposure. ## Best Used When - one side of the book dominates the account - Hermes wants to reduce imbalance - the market is still tradable, but caution is needed - controlled rebalancing is more important than new alpha ## Avoid When - the market is thin or chaotic - the venue is unstable - Hermes wants a pure entry strategy - frequent churn would be too expensive ## How It Works - The strategy watches wallet drift and chooses the side needed to move the wallet back toward the target ratio. - `rebalance_target_ratio` is a value-share target for base, not a price target. - `rebalance_step_ratio` controls how far the strategy moves per action, but the actual side choice also depends on the current drift and hysteresis. - `min_rebalance_seconds` blocks repeat actions for a minimum wall-clock period. - `min_price_move_pct` blocks a new order if price has not moved enough since the last one. - `trail_distance_pct` sets the limit order distance from the current price once a side has been chosen. - `report()` and `render()` show the live drift, anchor, and cooldown state. ## Parameters - `trail_distance_pct`: Distance from the current price for the rebalance limit order. - `rebalance_target_ratio`: Target base value share between `0.0` and `1.0`. `0.5` means balanced by value. - `rebalance_step_ratio`: Fractional move size per action. Larger values rebalance faster but can churn more. - `min_order_notional_quote`: Minimum quote notional for one action. - `max_order_notional_quote`: Optional hard cap on quote notional for one action. - `order_spacing_ticks`: Declared in the schema, but currently not referenced by the execution path. - `cooldown_ticks`: Tick-based pause after a successful order. - `min_rebalance_seconds`: Wall-clock cooldown between rebalance actions. - `min_price_move_pct`: Minimum price movement required before the strategy will place another order. - `balance_tolerance`: Allowed deviation from the target before the strategy considers the wallet meaningfully out of balance. - `debug_orders`: Enables order-placement debug logging. ## Hermes Policy Mapping - `risk_posture` controls caution vs aggression. - `priority` controls urgency and cadence. - In current code, `apply_policy()` rewrites `trail_distance_pct`, `rebalance_step_ratio`, `min_rebalance_seconds`, and `min_price_move_pct`. ## Notes - This strategy is passive until Hermes enables it. - It should protect and rebalance, not decide regime. - Trader derives concrete execution values from policy. - `report().supervision` should be interpreted as a defensive attachment signal, not as a preferred replacement for a healthy grid during persistent trend continuation unless imbalance is genuinely severe. - live fee rates are used directly, and quote notional is the canonical sizing unit. - rebalance sizing now uses the shared strategy sizing helper so fee-aware quote bounds behave consistently with the other strategies. ## Useful Example ```json { "trail_distance_pct": 0.025, "rebalance_target_ratio": 0.55, "rebalance_step_ratio": 0.2, "min_order_notional_quote": 15, "max_order_notional_quote": 60, "order_spacing_ticks": 1, "cooldown_ticks": 2, "min_rebalance_seconds": 120, "min_price_move_pct": 0.004, "balance_tolerance": 0.04, "debug_orders": false } ``` This is a conservative rebalancer that moves in smaller chunks, waits between actions, and only reacts when price has moved enough to justify another trim.