public SABRWrapper(double t, double forward, List <double?> param) { t_ = t; forward_ = forward; params_ = param; Utils.validateSabrParameters(param[0].Value, param[1].Value, param[2].Value, param[3].Value); }
public SabrSmileSection(Date d, double forward, List <double> sabrParams, DayCounter dc = null) : base(d, dc ?? new Actual365Fixed()) { forward_ = forward; alpha_ = sabrParams[0]; beta_ = sabrParams[1]; nu_ = sabrParams[2]; rho_ = sabrParams[3]; Utils.QL_REQUIRE(forward_ > 0.0, () => "at the money forward rate must be: " + forward_ + " not allowed"); Utils.validateSabrParameters(alpha_, beta_, nu_, rho_); }
public SabrSmileSection(double timeToExpiry, double forward, List <double> sabrParams) : base(timeToExpiry) { forward_ = forward; alpha_ = sabrParams[0]; beta_ = sabrParams[1]; nu_ = sabrParams[2]; rho_ = sabrParams[3]; Utils.QL_REQUIRE(forward_ > 0.0, () => "at the money forward rate must be: " + forward_ + " not allowed"); Utils.validateSabrParameters(alpha_, beta_, nu_, rho_); }
public SabrSmileSection(Date d, double forward, List <double> sabrParams, DayCounter dc = null, VolatilityType volatilityType = VolatilityType.ShiftedLognormal, double shift = 0.0) : base(d, dc ?? new Actual365Fixed(), null, volatilityType, shift) { forward_ = forward; shift_ = shift; volatilityType_ = volatilityType; alpha_ = sabrParams[0]; beta_ = sabrParams[1]; nu_ = sabrParams[2]; rho_ = sabrParams[3]; Utils.QL_REQUIRE(volatilityType == VolatilityType.Normal || forward_ + shift_ > 0.0, () => "at the money forward rate +shift must be: " + forward_ + shift_ + " not allowed"); Utils.validateSabrParameters(alpha_, beta_, nu_, rho_); }
// public SabrSmileSection(Date d, double forward, List<double> sabrParameters, DayCounter dc = Actual365Fixed()); public SabrSmileSection(Date d, double forward, List <double> sabrParams, DayCounter dc) : base(d, dc) { forward_ = forward; alpha_ = sabrParams[0]; beta_ = sabrParams[1]; nu_ = sabrParams[2]; rho_ = sabrParams[3]; if (!(forward_ > 0.0)) { throw new ApplicationException("at the money forward rate must be: " + forward_ + " not allowed"); } Utils.validateSabrParameters(alpha_, beta_, nu_, rho_); }
public SabrSmileSection(double timeToExpiry, double forward, List <double> sabrParams) : base(timeToExpiry) { forward_ = forward; alpha_ = sabrParams[0]; beta_ = sabrParams[1]; nu_ = sabrParams[2]; rho_ = sabrParams[3]; if (!(forward_ > 0.0)) { throw new Exception("at the money forward rate must be: " + forward_ + " not allowed"); } Utils.validateSabrParameters(alpha_, beta_, nu_, rho_); }
public SABRWrapper(double t, double forward, List <double?> param, List <double?> addParams) { t_ = t; forward_ = forward; params_ = param; shift_ = addParams == null ? 0.0 : addParams[0]; volatilityType_ = addParams == null ? VolatilityType.ShiftedLognormal : (addParams[1] > 0.0 ? VolatilityType.Normal : VolatilityType.ShiftedLognormal); approximationModel_ = addParams == null ? SabrApproximationModel.Hagan2002 : (SabrApproximationModel)addParams[2]; if (volatilityType_ == VolatilityType.ShiftedLognormal) { Utils.QL_REQUIRE(forward_ + shift_ > 0.0, () => "forward+shift must be positive: " + forward_ + " with shift " + shift_.Value + " not allowed"); } Utils.validateSabrParameters(param[0].Value, param[1].Value, param[2].Value, param[3].Value); }