computePriceImpact function

Percent computePriceImpact(
  1. Price midPrice,
  2. CurrencyAmount inputAmount,
  3. CurrencyAmount outputAmount
)

Returns the percent difference between the mid price and the execution price, i.e. price impact. @param midPrice mid price before the trade @param inputAmount the input amount of the trade @param outputAmount the output amount of the trade

Implementation

Percent computePriceImpact(
    Price midPrice, CurrencyAmount inputAmount, CurrencyAmount outputAmount) {
  final inputAmountFraction = Fraction(inputAmount.raw);
  final outputAmountFraction = Fraction(outputAmount.raw);
  var exactQuote = midPrice.raw.multiply(inputAmountFraction);
  var slippage = (exactQuote.subtract(outputAmountFraction).divide(exactQuote));
  return Percent(slippage.numerator, denominator: slippage.denominator);
}