コード例 #1
0
        private static double[] toDoubles(DateTime tradeDate, bool protectionFromStartOfDay, Enums.DayCount accrualDCC, Enums.DayCount curveDCC,
                                          params DateTime[] premDates)
        {
            DateTime accStart    = premDates[0];
            DateTime accEnd      = premDates[1];
            DateTime paymentDate = premDates[2];
            DateTime effStart    = protectionFromStartOfDay ? accStart.AddDays(-1) : accStart;
            DateTime effEnd      = protectionFromStartOfDay ? accEnd.AddDays(-1) : accEnd;

            double[] res = new double[5];
            // *@param protectionFromStartOfDay true if protection is from the start of day (true for standard CDS)
            //    *@param accrualDCC The day - count - convention used for calculation the accrual period(ACT / 360 for standard CDS)
            //        *@param curveDCC The day - count - convention used for converting dates to time intervals along curves - this should be ACT / 365F

            Actual365 dc          = new Actual365();
            Actual360 accrualDCC_ = new Actual360();

            res[0] = DateTime.Compare(effStart, tradeDate) < 0 ? -dc.YearFraction(effStart, tradeDate) : dc.YearFraction(tradeDate, effStart);
            res[1] = dc.YearFraction(tradeDate, effEnd);
            res[2] = dc.YearFraction(tradeDate, paymentDate);
            res[3] = accrualDCC_.YearFraction(accStart, accEnd);
            res[4] = res[3] / dc.YearFraction(accStart, accEnd);
            return(res);
        }