Exemple #1
0
 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);
 }
Exemple #2
0
        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_);
        }
Exemple #3
0
        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_);
        }
Exemple #4
0
        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_);
        }
Exemple #5
0
        // 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_);
        }
Exemple #6
0
        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_);
        }
Exemple #7
0
        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);
        }