Matador Docs
Asset Management

Recipe - Target Weight Rebalance

A policy to maintain a fixed portfolio allocation.

Recipe: Target Weight Rebalance

This policy allows a manager to rebalance a portfolio to match a target allocation (e.g., 50% WBTC, 50% USDC), but only if the trade reduces the "drift" (deviation from target).

The Strategy

Goal: Maintain 50/50 split.

Constraint: Only allow the rebalance direction chosen by your off-chain logic.

Safety: Prevent "churning" by requiring a minimum drift before rebalancing (calculated off-chain).

Off-chain logic stays bounded

The policy encodes the minimum drift threshold and permitted token pair, preventing discretionary drift trades.

The Policy

import "abis/UniswapRouter.json" as Uniswap;

permission TargetWeightRebalance -> 1.0.0 {
    parameters: {
        router: address,
        tokenIn: address,
        tokenOut: address,
        minDriftBps: uint256,
        driftBps: uint256
    }

    when: {
        context.target == parameters.router,
        parameters.driftBps >= parameters.minDriftBps,
        Uniswap.exactInputSingle(params: tuple),
        calldata.params.tokenIn == parameters.tokenIn,
        calldata.params.tokenOut == parameters.tokenOut
    }
}

Integration

This policy turns a dumb wallet into a Smart Index Fund. The manager can execute the rebalance, but they cannot:

  • Trade outside the token pair specified in the policy parameters.
  • Rebalance unless the drift threshold is met (as calculated off-chain).

On this page