public ResponseDiscountsList CalculateInflationRateList(InflationCurveSnapshot ycd, DateTime settlementDate, HashSet <DateTime> discountDates, bool ifToDraw) { ResponseDiscountsList result = new ResponseDiscountsList(); result.ifToDraw = ifToDraw; try { //CalculateInflationRate1b is working for europe QuantLibAdaptor.IterativeInflationCurveCalculation(ycd, discountDates.ToList(), result.discountPoints); // result.entryPoints = Repository.GetInflationCurveEntryData(ycd.Id, settlementDate); result.YcId = ycd.Id; } catch (Exception ex) { while (ex.InnerException != null) { ex = ex.InnerException; } result.Error = new CustomException(); result.Error.Message = ex.Message + ex.StackTrace; } return(result); }
public ResponseDayCounterData GetDayCounterDic() { ResponseDayCounterData result = new ResponseDayCounterData(); try { var dc = DataLayer.Repository.GetDayCounters(); foreach (DayCounter i in dc) { if (i != null && !String.IsNullOrEmpty(i.ClassName) && QuantLibAdaptor.GetDayCounterInformation(i) ) { result.DayCounterDic[i.Id] = i; } } DataLayer.Repository.DayCounterDic = result.DayCounterDic; } catch (Exception ex) { while (ex.InnerException != null) { ex = ex.InnerException; } result.Error = new CustomException(); result.Error.Message = ex.Message + ex.StackTrace; } return(result); }
ResponseDiscountedData CalculateDiscountedData(YieldCurveDefinition ycDef, DateTime settlementDate, List <EntryPoint> entryPoints, List <DateTime> discountDates) { ResponseDiscountedData result = new ResponseDiscountedData(); try { YieldCurveData tmp = new YieldCurveData(); tmp.settlementDate = settlementDate; tmp.settings = ycDef; if (entryPoints == null) { tmp.entryPointList = DataLayer.Repository.GetYieldCurveEntryPoint(ycDef.Id, settlementDate); } else { tmp.entryPointList = entryPoints; } if (discountDates == null) // use entry points dates { discountDates = new List <DateTime>(); foreach (var ep in tmp.entryPointList) { discountDates.Add(settlementDate.AddDays(ep.Duration)); } } QuantLibAdaptor.CalculateDiscountedRate(tmp, discountDates.ToList(), result.discountPoints); result.entryPoints = tmp.entryPointList; } catch (Exception ex) { while (ex.InnerException != null) { ex = ex.InnerException; } result.Error = new CustomException(); result.Error.Message = ex.Message + ex.StackTrace; } return(result); }
ResponseCurrencyData GetCurrencyDic() { ResponseCurrencyData result = new ResponseCurrencyData(); try { var currencies = DataLayer.Repository.GetCurrency(null); foreach (var c in currencies) { if (c != null && !String.IsNullOrEmpty(c.ClassName) && QuantLibAdaptor.GetCurrencyInformation(c) ) { //result.CurrencyDic[c.Id] = c; DataFeed.Repository.ccyDic[c.Id] = c; } } //DataLayer.Repository.CurrencyDic = result.CurrencyDic; result.ccyList = currencies; } catch (Exception ex) { while (ex.InnerException != null) { ex = ex.InnerException; } result.Error = new CustomException(); result.Error.Message = ex.Message + ex.StackTrace; } //we read from the database from te table Currencies // assumption is - if ClassName is not null then the rest of the parameters for each currency should be populated for Quantlib // otherwise it was manually added and everything should be coming from the database only return(result); }
// iftoDraw indicates if only computation is required or after computation is done the chart has to be drawn by SL client public ResponseDiscountsList CalculateDiscountedRateList(YieldCurveData ycd, DateTime settlementDate, HashSet <DateTime> discountDates, bool ifToDraw) { ResponseDiscountsList result = new ResponseDiscountsList(); result.ifToDraw = ifToDraw; try { // will be only one YieldCurveData element if idYc is provided (this is unique key) //YieldCurveData ycDesc = Repository.GetYieldCurveData(idYc).Single(); ycd.settlementDate = settlementDate; ycd.entryPointList = DataLayer.Repository.GetYieldCurveEntryPoint(ycd.Id, settlementDate); QuantLibAdaptor.CalculateDiscountedRate(ycd, discountDates.ToList(), result.discountPoints); /* * for (int i = 0; i < ycDesc.entryPoints.Count(); i++) * { * result.EnabledEntry.Add(ycDesc.entryPoints[i].Enabled); * result.EntryId.Add(ycDesc.entryPoints[i].Id); * } */ result.YcId = ycd.Id; result.entryPoints = ycd.entryPointList; } catch (Exception ex) { while (ex.InnerException != null) { ex = ex.InnerException; } result.Error = new CustomException(); result.Error.Message = ex.Message + ex.StackTrace; } return(result); }
public ResponseRateData GetRateDataDic() { ResponseRateData result = new ResponseRateData(); try { var rates = DataLayer.Repository.GetRates(); foreach (var r in rates) { if (r != null && !String.IsNullOrEmpty(r.ClassName) && QuantLibAdaptor.GetRateInformation(r) ) { result.RateDic[r.Id] = r; } } DataLayer.Repository.RateDic = result.RateDic; } catch (Exception ex) { while (ex.InnerException != null) { ex = ex.InnerException; } result.Error = new CustomException(); result.Error.Message = ex.Message + ex.StackTrace; } //we read from the database from te table Currencies // assumption is - if ClassName is not null then the rest of the parameters for each currency should be populated for Quantlib // otherwise it was manually added and everything should be coming from the database only return(result); }
//this will return maturities for instruments taking into account todays date //relevant for rates or bonds with relative maturity //instruments calendar is taken into account public ResponseMaturityDatesData GetMaturityDatesList(List <Instrument> rate, DateTime d) { ResponseMaturityDatesData result = new ResponseMaturityDatesData(); List <DateTime> result1 = new List <DateTime>(); try { QuantLibAdaptor.GetInstrumentMaturity(rate, d, result1); result.dates = result1; } catch (Exception ex) { while (ex.InnerException != null) { ex = ex.InnerException; } result.Error = new CustomException(); result.Error.Message = ex.Message + ex.StackTrace; } return(result); }