예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        // 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);
        }
예제 #6
0
        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);
        }
예제 #7
0
        //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);
        }