Notional Liquidation Fee Floor

v0.8.6 adds a second minimum liquidation fee based on position notional, preventing high leverage from reducing LF to a very small share of market exposure.

Summary

The existing minAcceptablePortionLF protects the liquidation fee (LF) relative to PartyA's locked collateral. The new minAcceptableNotionalLFRate protects the same fee relative to the position's notional value. A quote must satisfy both limits.

How the two floors work

For this calculation, CVA is the credit valuation adjustment and partyAmm is PartyA maintenance margin. Those two amounts and LF make up the PartyA collateral locked for the quote.

collateralFloor = minAcceptablePortionLF × (CVA + partyAmm + LF)
notional = quantity × price
notionalFloor = minAcceptableNotionalLFRate × notional
requiredLF = max(collateralFloor, notionalFloor)

Both rates use 1e18 precision. The notional and notional-floor calculations round upward, so integer division cannot leave LF below the configured minimum.

Symbol configuration

  • setSymbolMinAcceptableNotionalLFRate(0, rate) sets the live default for all symbols without an override.
  • setSymbolMinAcceptableNotionalLFRate(symbolId, rate) sets an explicit per-symbol override. Zero is a valid override and disables the notional floor for that symbol.
  • clearSymbolMinAcceptableNotionalLFRateOverride(symbolId) restores inheritance from symbol 0.
  • getSymbolMinAcceptableNotionalLFRate(symbolId) returns the effective rate and whether the symbol has an override.

Core configuration uses the existing SYMBOL_MANAGER_ROLE. The SymmioSymbolManager batch setters use SYMBOL_MIN_ACCEPTABLE_VALUES_MANAGER_ROLE. They also count each updated symbol against the existing acceptableValues limit for that 24-hour period. The initial default is zero, so the new floor becomes active only after governance configures symbol 0 or an override.

Quote and open checks

  • Quote creation checks the requested quantity and price against the current effective rate.
  • Position opening rechecks the filled quantity at the actual open price.
  • An uncancelled partial-fill remainder is rechecked at its requested price.

The open-time checks use the current configuration. Raising a default or override can stop an existing locked quote from opening when its LF no longer satisfies the new floor.