Skip to main content

Target Rate Policy

The Target Rate Policy implements a multi-kink auction rate curve. It extends the Morpho V2 To Morpho V2 Policy base contract.

Rate Curve

Target policy

The rate increases linearly to a target rate, maintains that rate for a period, then increases linearly again to a maximum rate where it plateaus.

How It Works

1. Set Policy Parameters

The policy owner (via timelock) can configure:

  • kink1: When target rate is reached (as % of auction duration)
  • kink2: When target rate plateau ends (as % of auction duration)
  • kink3: When max rate is reached (as % of auction duration)
  • targetRate: Intermediate rate level (max 100% APR)
  • maxRate: Maximum acceptable rate (max 100% APR)
  • fee: Percentage fee charged based on duration between terms (max 100% APR)
  • feeRecipient: Address that receives fees from rolls

2. Rate Calculation

During a roll, getRate() calculates the auction rate based on elapsed time:

  • 0% to kink1: Rate increases linearly from 0% to targetRate
  • kink1 to kink2: Rate remains at targetRate
  • kink2 to kink3: Rate increases linearly from targetRate to maxRate
  • kink3 to maturity: Rate remains at maxRate

The roller contract compares this rate with the user's maxRate and uses the lower value.

3. Fee Execution

The policy charges fees based on the duration between source and target terms:

  • beforeRoll: Calculates fee, snapshots fee recipient balance, returns borrowedAmount = repaidDebt + feeAmount
  • afterRoll: Validates that the fee recipient received the expected fee amount