Class PermanentImpactNoArbitrage


public class PermanentImpactNoArbitrage
extends ParticipationRateLinear
PermanentImpactNoArbitrage implements the Linear Permanent Market Impact with Coefficients that have been determined empirically by Almgren, Thum, Hauptmann, and Li (2005), using the no Quasi-Arbitrage Criterion identified by Huberman and Stanzl (2004). The References are:

  • Almgren, R., and N. Chriss (2000): Optimal Execution of Portfolio Transactions Journal of Risk 3 (2) 5-39
  • Almgren, R. (2003): Optimal Execution with Nonlinear Impact Functions and Trading-Enhanced Risk Applied Mathematical Finance 10 (1) 1-18
  • Almgren, R., and N. Chriss (2003): Bidding Principles Risk 97-102
  • Almgren, R., C. Thum, E. Hauptmann, and H. Li (2005): Equity Market Impact Risk 18 (7) 57-62
  • Huberman, G., and W. Stanzl (2004): Price Manipulation and Quasi-arbitrage Econometrics 72 (4) 1247-1275


Author:
Lakshmi Krishnamurthy
  • Constructor Details

    • PermanentImpactNoArbitrage

      public PermanentImpactNoArbitrage​(AssetFlowSettings afp) throws java.lang.Exception
      PermanentImpactNoArbitrage Constructor
      Parameters:
      afp - The Asset Flow Parameters
      Throws:
      java.lang.Exception - Thrown if the Inputs are Invalid
  • Method Details

    • liquidityFactor

      public double liquidityFactor()
      Retrieve the Liquidity Factor
      Returns:
      The Liquidity Factor
    • assetFlowParameters

      public AssetFlowSettings assetFlowParameters()
      Retrieve the Asset Flow Parameters
      Returns:
      The Asset Flow Parameters
    • regularize

      public double regularize​(double dblTradeInterval) throws java.lang.Exception
      Description copied from class: TransactionFunction
      Regularize the Input Function using the specified Trade Inputs
      Overrides:
      regularize in class ParticipationRateLinear
      Parameters:
      dblTradeInterval - The Trade Interval
      Returns:
      The Regularize Input
      Throws:
      java.lang.Exception - Thrown if the Inputs are Invalid
    • modulate

      public double modulate​(double dblTradeInterval) throws java.lang.Exception
      Description copied from class: TransactionFunction
      Modulate/Scale the Impact Output
      Overrides:
      modulate in class ParticipationRateLinear
      Parameters:
      dblTradeInterval - The Trade Interval
      Returns:
      The Modulated Output
      Throws:
      java.lang.Exception - Thrown if the Inputs are Invalid
    • slope

      public double slope()
      Description copied from class: ParticipationRateLinear
      Retrieve the Linear Market Impact Slope Parameter
      Overrides:
      slope in class ParticipationRateLinear
      Returns:
      The Linear Market Impact Slope Parameter
    • offset

      public double offset()
      Description copied from class: ParticipationRateLinear
      Retrieve the Offset Market Impact Parameter
      Overrides:
      offset in class ParticipationRateLinear
      Returns:
      The Offset Market Impact Parameter
    • evaluate

      public double evaluate​(double dblNormalizedX) throws java.lang.Exception
      Description copied from class: R1ToR1
      Evaluate for the given variate
      Overrides:
      evaluate in class ParticipationRateLinear
      Parameters:
      dblNormalizedX - Variate
      Returns:
      Returns the calculated value
      Throws:
      java.lang.Exception - Thrown if evaluation cannot be done
    • derivative

      public double derivative​(double dblNormalizedX, int iOrder) throws java.lang.Exception
      Description copied from class: R1ToR1
      Calculate the derivative as a double
      Overrides:
      derivative in class ParticipationRateLinear
      Parameters:
      dblNormalizedX - Variate at which the derivative is to be calculated
      iOrder - Order of the derivative to be computed
      Returns:
      The Derivative
      Throws:
      java.lang.Exception - Thrown if Inputs are Invalid