Beispiel #1
0
        // ***********************************
        // EXTRACTING DIVIDEND TERM STRUCTURE
        // ***********************************

        public Handle <YieldTermStructure> dividend_FwdCrv()
        {
            YieldTermStructure crv;

            if (_isNewFormat == false)
            {
                QLNet_Results res = dividend.GetDividendDF_TermStructure(impliedSpot, forward.data, DF.data);
                crv = new InterpolatedDiscountCurve <Cubic>(res.timeStamps(), res.dataPoints(), dayCounter()); //InterpolatedDiscountCurve<Cubic>
            }
            else
            {
                QLNet_Results res = dividend.GetDividendDF_TermStructure_NewFormat();
                crv = new InterpolatedZeroCurve <Linear>(res.timeStamps(), res.dataPoints(), _dayCounter, _calendar); //InterpolatedZeroCurve<Linear>

                //(res.timeStamps(), res.dataPoints(), dayCounter());
            }



            return(new Handle <YieldTermStructure>(crv));
        }
Beispiel #2
0
        private YieldTermStructure Discountcurve(List <Date> dates, List <double> dfs, DayCounter dayCounter)
        {
            YieldTermStructure yieldts;

            switch (_interpolationMethod)
            {
            case InterpolationMethod.Linear:
                yieldts = new InterpolatedDiscountCurve <Linear>(dates, dfs, dayCounter, new Linear());
                break;

            case InterpolationMethod.LogLinear:
                yieldts =
                    new InterpolatedDiscountCurve <LogLinear>(dates, dfs, dayCounter, new LogLinear());
                break;

            case InterpolationMethod.NaturalCubic:
                yieldts = new InterpolatedDiscountCurve <Cubic>(
                    dates, dfs, dayCounter, new Cubic(CubicInterpolation.DerivativeApprox.Kruger, true, CubicInterpolation.BoundaryCondition.SecondDerivative, 0.0, CubicInterpolation.BoundaryCondition.SecondDerivative, 0.0));
                break;

            case InterpolationMethod.FinancialCubic:
                yieldts = new InterpolatedDiscountCurve <Cubic>(
                    dates, dfs, dayCounter,
                    new Cubic(CubicInterpolation.DerivativeApprox.Kruger, true, CubicInterpolation.BoundaryCondition.SecondDerivative, 0.0, CubicInterpolation.BoundaryCondition.FirstDerivative, 0.0));
                break;

            case InterpolationMethod.ConvexMonotone:
                yieldts = new InterpolatedDiscountCurve <ConvexMonotone>(dates, dfs, dayCounter);
                break;

            default:
                Utils.QL_FAIL("Interpolation method not recognised.");
                throw new Exception();
            }
            return(yieldts);
        }
Beispiel #3
0
        // ************************************************************
        // METHODS : EXTRACTING TERM STRUCTURES FOR QLNET USAGE
        // ************************************************************

        #region


        // ***********************************
        // EXTRACTING RISK FREE TERM STRUCTURE
        // ***********************************

        public Handle <YieldTermStructure> riskFree_FwdCrv()
        {
            InterpolatedDiscountCurve <Cubic> crv = new InterpolatedDiscountCurve <Cubic>(DF.Dates(), DF.Points(), dayCounter());

            return(new Handle <YieldTermStructure>(crv));
        }