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); }