QLNet.YoYInflationCouponPricer.optionletPrice C# (CSharp) Метод

optionletPrice() защищенный Метод

protected optionletPrice ( Option optionType, double effStrike ) : double
optionType Option
effStrike double
Результат double
        protected virtual double optionletPrice(Option.Type optionType, double effStrike)
        {
            Date fixingDate = coupon_.fixingDate();
            if (fixingDate <= Settings.evaluationDate())
            {
                // the amount is determined
                double a, b;
                if (optionType == Option.Type.Call)
                {
                    a = coupon_.indexFixing();
                    b = effStrike;
                }
                else
                {
                    a = effStrike;
                    b = coupon_.indexFixing();
                }
                return Math.Max(a - b, 0.0) * coupon_.accrualPeriod() * discount_;

            }
            else
            {
                // not yet determined, use Black/DD1/Bachelier/whatever from Impl
                if (capletVolatility().empty())
                    throw new ApplicationException("missing optionlet volatility");

                double stdDev =
                    Math.Sqrt(capletVolatility().link.totalVariance(fixingDate, effStrike));

                double fixing = optionletPriceImp(optionType,
                                                  effStrike,
                                                  adjustedFixing(),
                                                  stdDev);
                return fixing * coupon_.accrualPeriod() * discount_;

            }
        }