> ## Documentation Index
> Fetch the complete documentation index at: https://docs.meteora.ag/llms.txt
> Use this file to discover all available pages before exploring further.

# Rebalance Crank

> How Dynamic Vault strategy actions update liquidity, locked profit, losses, and LP-token performance fees.

A rebalance crank is a strategy transaction submitted by the vault admin or operator. The vault program exposes two normal rebalance actions:

* `deposit_strategy(amount)`
* `withdraw_strategy(amount)`

Both actions use the same accounting wrapper after the strategy handler runs.

## Required Constraints

Before a rebalance can complete:

* the vault must be a rebalance vault
* the signer must be the vault admin or operator
* the strategy must already be listed on the vault
* the token vault, LP mint, and fee vault must match the vault
* the reserve and collateral vault must match the strategy
* the strategy handler must support the strategy type

In the current source, the implemented external lending handler is `JupLend`.

## Accounting Flow

<Steps>
  <Step title="Record before state">
    The program records token vault liquidity, strategy current liquidity, vault total amount, unlocked amount, and LP supply.
  </Step>

  <Step title="Run strategy action">
    For deposits, tokens move from the token vault into the strategy. For withdrawals, strategy collateral is converted back into underlying tokens.
  </Step>

  <Step title="Convert collateral to liquidity">
    The strategy handler calculates current underlying liquidity from the strategy's collateral amount and exchange rate.
  </Step>

  <Step title="Update total amount">
    The program updates `total_amount` from before and after token-vault and strategy-liquidity values.
  </Step>

  <Step title="Apply gain or loss">
    Gain is added to locked profit. Loss is reported and reduces locked profit first.
  </Step>

  <Step title="Mint performance-fee LP tokens">
    If gain is positive, the program calculates the 5% performance fee and mints LP tokens to the configured fee vault when the result is nonzero.
  </Step>
</Steps>

## Total Amount Update

```math theme={"system"}
\text{newTotalAmount}
=
\text{oldTotalAmount}
+ \text{tokenVaultAfter}
+ \text{strategyLiquidityAfter}
- \text{tokenVaultBefore}
- \text{strategyLiquidityBefore}
```

Gain or loss is then measured from `oldTotalAmount` and `newTotalAmount`.

## Why Locked Profit Changes During Rebalance

Strategy actions are when the vault observes updated strategy value. If a strategy action increases total vault value, that gain is not made fully withdrawable immediately. It is added to locked profit and unlocks over time.

If the strategy action reports a loss, that loss reduces remaining locked profit before affecting future unlocked value.

## Fee Behavior

The program charges a 5% performance fee only on positive gain. The fee is represented by newly minted vault LP tokens sent to the configured fee vault. Underlying tokens remain inside the vault system.

See [Dynamic Vault Formulas](/legacy-products/dynamic-vault/formulas#performance-fee) for the exact fee minting formula.

<Warning>
  Rebalance transactions are not free-form transfers. They are constrained strategy actions. However, connected strategy behavior, available liquidity, exchange-rate conversions, and operator timing still affect the realized result.
</Warning>
