Price impact and trading fees are incurred whenever an account's position changes.
Settlement Fee
The settlement fee is charged anytime the position changes – this is a fixed amount set by the settlementFee parameter and is used to cover the oracle keeper fee.
settlementFee=settlementFee
Taker Price Impact
With v2.3 the trade fees are separated from the linear fee to simplify and standardize the subtractive fee logic.
notional → abs(positionDelta * latest price)
signedNotional → positionDelta * latest price
takerLinearFee → riskParameter.takerFee.linearFee
takerProportionalFee → riskParameter.takerFee.proportionalFee
takerAdiabaticFee → riskParameter.takerFee.adiabaticFee
takerScale → riskParameter.takerFee.scale
makerLinearFee → riskParameter.makerFee.linearFee
makerProportionalFee → riskParameter.makerFee.proportionalFee
makerScale → riskParameter.makerFee.scale
takerFee → marketParameter.takerFee
makerFee → marketParameter.makerFee
skew → (long - short)
takerTotal → globalOrder.takerTotal() – including the new order to be computed
makerTotal → globalOrder.makerTotal() – including the new order to be computed
Price Impact Vs Fee
The cascade of market fees has changed to decouple risk and oracle fees since the oracle fees are now set by the oracle instead of via the market parameters.
positionDeltaAbs → absolute value long or short position delta
Fee Split
All collected fees are split between the Makers (and in rare cases takers), Perennial treasury, and the respective Product owner's treasury.
This allows market owners (whether individual organization or DAOs / protocols) to collect revenue directly from the administration of the Products and their parameters.