Exemple #1
0
        public double volatility(double x)
        {
            switch (volatilityType_)
            {
            case VolatilityType.ShiftedLognormal:
                return(Utils.shiftedSabrVolatility(x, forward_, t_, params_[0].Value, params_[1].Value, params_[2].Value, params_[3].Value, shift_.Value, approximationModel_));

            case VolatilityType.Normal:
                return(Utils.shiftedSabrNormalVolatility(x, forward_, t_, params_[0].Value, params_[1].Value, params_[2].Value, params_[3].Value, shift_.Value));

            default:
                return(Utils.sabrVolatility(x, forward_, t_, params_[0].Value, params_[1].Value, params_[2].Value, params_[3].Value));
            }
        }
Exemple #2
0
        protected override double volatilityImpl(double strike)
        {
            double vol;

            if (volatilityType_ == VolatilityType.ShiftedLognormal)
            {
                vol = Utils.shiftedSabrVolatility(strike, forward_, exerciseTime(), alpha_, beta_, nu_, rho_, shift_);
            }
            else
            {
                vol = Utils.shiftedSabrNormalVolatility(strike, forward_, exerciseTime(), alpha_, beta_, nu_, rho_, shift_);
            }

            return(vol);
        }