Defensive rebalancer that trims skew and protects exposure.
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.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.risk_posture controls caution vs aggression.priority controls urgency and cadence.apply_policy() rewrites trail_distance_pct, rebalance_step_ratio, min_rebalance_seconds, and min_price_move_pct.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.{
"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.