// private constructor private SabrExtrapolationRightFunction(double forward, SabrFormulaData sabrData, double cutOffStrike, double timeToExpiry, double mu, VolatilityFunctionProvider <SabrFormulaData> volatilityFunction) { ArgChecker.notNull(sabrData, "sabrData"); ArgChecker.notNull(volatilityFunction, "volatilityFunction"); this.sabrFunction = volatilityFunction; this.forward = forward; this.sabrData = sabrData; this.cutOffStrike = cutOffStrike; this.timeToExpiry = timeToExpiry; this.mu = mu; if (timeToExpiry > SMALL_EXPIRY) { parameter = computesFittingParameters(); } else { // Implementation note: when time to expiry is very small, the price above the cut-off strike and its derivatives should be 0 (or at least very small). parameter = new double[] { SMALL_PARAMETER, 0.0, 0.0 }; parameterDerivativeForward = new double[3]; //JAVA TO C# CONVERTER NOTE: The following call to the 'RectangularArrays' helper class reproduces the rectangular array initialization that is automatic in Java: //ORIGINAL LINE: parameterDerivativeSabr = new double[4][3]; parameterDerivativeSabr = RectangularArrays.ReturnRectangularDoubleArray(4, 3); } }
/// <summary> /// Obtains an instance with volatility provider specified. /// </summary> /// <param name="forward"> the forward </param> /// <param name="sabrData"> the SABR formula data </param> /// <param name="cutOffStrike"> the cut-off-strike </param> /// <param name="timeToExpiry"> the time to expiration </param> /// <param name="mu"> the mu parameter </param> /// <param name="volatilityFunction"> the volatility function </param> /// <returns> the instance </returns> public static SabrExtrapolationRightFunction of(double forward, SabrFormulaData sabrData, double cutOffStrike, double timeToExpiry, double mu, VolatilityFunctionProvider <SabrFormulaData> volatilityFunction) { return(new SabrExtrapolationRightFunction(forward, sabrData, cutOffStrike, timeToExpiry, mu, volatilityFunction)); }