Beispiel #1
0
        // idYc - each EntryPoint has reference to YieldCurve settings
        public ResponseYieldCurveDefinition GetYieldCurveDefinitions()
        {
            ResponseYieldCurveDefinition result = new ResponseYieldCurveDefinition();

            try
            {
                var ycs = DataLayer.Repository.GetYieldCurveData(null);
                foreach (YieldCurveData ycd in ycs)
                {
                    YieldCurveDefinition ycDef = new YieldCurveDefinition();
                    ycDef            = (YieldCurveDefinition)ycd.settings;;
                    ycDef.Id         = ycd.Id;
                    ycDef.CurrencyId = ycd.CurrencyId;
                    result.ycDefList.Add(ycDef);
                }
            }
            catch (Exception ex)
            {
                while (ex.InnerException != null)
                {
                    ex = ex.InnerException;
                }

                result.Error         = new CustomException();
                result.Error.Message = ex.Message + ex.StackTrace;
            }

            return(result);
        }
Beispiel #2
0
        //
        // DateFeed
        //
        internal static List <YieldCurveDefinition> GetYieldCurveDef(ConnectionContextSQLite ctx,
                                                                     long?idYc)
        {
            List <YieldCurveDefinition> ycDesc = new List <YieldCurveDefinition>();

            var command = SqlHelperSQLite.SelectYieldCurveDefCommand(ctx, idYc);

            using (var reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    var ycs = new YieldCurveDefinition
                    {
                        ZcBasisId      = reader.GetInt32(reader.GetOrdinal("ZcBasisId")),
                        ZcCompounding  = reader.GetString(reader.GetOrdinal("ZcCompounding")),
                        ZcFrequency    = reader.GetString(reader.GetOrdinal("ZcFrequency")),
                        FrwCompounding = reader.GetString(reader.GetOrdinal("FrwCompounding")),
                        ifZc           = reader.GetBoolean(reader.GetOrdinal("ifZC")),

                        FrwBasisId   = reader.GetInt32(reader.GetOrdinal("FrwBasisId")),
                        ZCColor      = reader.IsDBNull(reader.GetOrdinal("ZCColor")) ? null : reader.GetString(reader.GetOrdinal("ZCColor")),
                        FrwFrequency = reader.GetString(reader.GetOrdinal("FrwFrequency")),
                        FrwTermBase  = reader.GetString(reader.GetOrdinal("FrwTermBase")),
                        FrwTerm      = reader.IsDBNull(reader.GetOrdinal("FrwTerm")) ? -1 : reader.GetInt32(reader.GetOrdinal("FrwTerm")),
                        FrwColor     = reader.IsDBNull(reader.GetOrdinal("FrwColor")) ? null : reader.GetString(reader.GetOrdinal("FrwColor")),
                        ifFrw        = reader.GetBoolean(reader.GetOrdinal("ifFrw")),

                        SpreadType   = reader.IsDBNull(reader.GetOrdinal("SpreadType")) ? -1 : reader.GetInt32(reader.GetOrdinal("SpreadType")),
                        SpreadSize   = reader.IsDBNull(reader.GetOrdinal("SpreadSize")) ? -1 : reader.GetInt32(reader.GetOrdinal("SpreadSize")),
                        SpreadFamily = reader.IsDBNull(reader.GetOrdinal("SpreadFamily")) ? -1 : reader.GetInt32(reader.GetOrdinal("SpreadFamily"))
                    };

                    Calendar cal = new Calendar
                    {
                        Id         = reader.IsDBNull(reader.GetOrdinal("calId")) ? -1 : reader.GetInt32(reader.GetOrdinal("calId")),
                        ClassName  = reader.IsDBNull(reader.GetOrdinal("calClassName")) ? null : reader.GetString(reader.GetOrdinal("calClassName")),
                        MarketName = reader.IsDBNull(reader.GetOrdinal("calMarketName")) ? null : reader.GetString(reader.GetOrdinal("calMarketName"))
                    };

                    ycs.Calendar = cal;

                    ycs.Id         = reader.GetInt32(reader.GetOrdinal("Id"));
                    ycs.Name       = reader.GetString(reader.GetOrdinal("Name"));
                    ycs.FamilyId   = reader.GetInt32(reader.GetOrdinal("FamilyId"));
                    ycs.CurrencyId = reader.IsDBNull(reader.GetOrdinal("CurrencyId")) ? -1 : reader.GetInt32(reader.GetOrdinal("CurrencyId"));

                    ycDesc.Add(ycs);
                }
            }

            return(ycDesc);
        }
Beispiel #3
0
        public string CalculateDiscountedRatesSimple(string date, string id)
        {
            long idYc = JsonConvert.DeserializeObject <Int32>(id);

            GetYcDefDic();
            YieldCurveDefinition ycd = DataFeed.Repository.ycDefDic[idYc];

            DateTime settlementDate = Convert.ToDateTime(date);

            GetDayCounterDic();                                 // shell be before Rate and YieldCurveData, cos those are using DayCounter inside
            ResponseDiscountedData tmp = CalculateDiscountedData(ycd, settlementDate, null, null);

            return(JsonConvert.SerializeObject(tmp));
        }
Beispiel #4
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);
        }
Beispiel #5
0
        public string CalculateDiscountedRates(string date, string id, string epl, string ddl)
        {
            long idYc = JsonConvert.DeserializeObject <Int32>(id);

            GetYcDefDic();
            YieldCurveDefinition ycd = DataFeed.Repository.ycDefDic[idYc];
            //DateTime settlementDate = JsonConvert.DeserializeObject<DateTime>(date);
            DateTime settlementDate = Convert.ToDateTime(date);

            List <EntryPoint> entryPoints   = JsonConvert.DeserializeObject <List <EntryPoint> >(epl);
            List <DateTime>   discountDates = JsonConvert.DeserializeObject <List <DateTime> >(ddl);

            ResponseDiscountedData tmp = CalculateDiscountedData(ycd, settlementDate, entryPoints, discountDates);

            return(JsonConvert.SerializeObject(tmp));
        }
        private static void AssertRoundTrip(InterpolatedYieldCurveDefinitionMaster interpolatedYieldCurveDefinitionMaster, YieldCurveDefinitionDocument yieldCurveDefinitionDocument)
        {
            interpolatedYieldCurveDefinitionMaster.Add(yieldCurveDefinitionDocument);

            YieldCurveDefinitionDocument roundtrippedDoc = interpolatedYieldCurveDefinitionMaster.Get(yieldCurveDefinitionDocument.UniqueId);

            YieldCurveDefinition roundTripped = roundtrippedDoc.YieldCurveDefinition;

            var yieldCurveDefinition = yieldCurveDefinitionDocument.YieldCurveDefinition;

            Assert.Equal(yieldCurveDefinition.Name, roundTripped.Name);
            Assert.Equal(yieldCurveDefinition.InterpolatorName, roundTripped.InterpolatorName);
            Assert.Equal(yieldCurveDefinition.Currency, roundTripped.Currency);
            Assert.Equal(roundTripped.Region, roundTripped.Region);

            Assert.True(roundTripped.Strips.SequenceEqual(roundTripped.Strips));
        }
        public static YieldCurveDefinitionDocument GenerateDocument()
        {
            string curveName = TestUtils.GetUniqueName();

            var yieldCurveDefinition = new YieldCurveDefinition(Currency.USD, curveName, "Linear")
            {
                Region = new ExternalId("SOMEWHERE", "Europe")
            };

            yieldCurveDefinition.AddStrip(new FixedIncomeStrip {
                ConventionName = "DEFAULT", CurveNodePointTime = Tenor.Day, InstrumentType = StripInstrumentType.Cash
            });
            yieldCurveDefinition.AddStrip(new FixedIncomeStrip {
                ConventionName = "DEFAULT", CurveNodePointTime = Tenor.TwoYears, InstrumentType = StripInstrumentType.Future, NthFutureFromTenor = 23
            });
            return(new YieldCurveDefinitionDocument
            {
                YieldCurveDefinition = yieldCurveDefinition
            });
        }
Beispiel #8
0
        // idYc - each EntryPoint has reference to YieldCurve settings
        public ResponseEntryPointHistory GetYcHistoricEntryPoints(DateTime settlementDate, YieldCurveDefinition ycDef)
        {
            ResponseEntryPointHistory result = new ResponseEntryPointHistory();

            try
            {
                UserAccounts.FCUser user = (UserAccounts.FCUser)HttpContext.Current.Session["user"];
                if (user == null)
                {
                    result.Error         = new CustomException();
                    result.Error.Message = "Client is not authenticated, will work in Demo read-only mode";
                }
                result = GetEntryPointHistoryList(settlementDate, ycDef.Id);
            }
            catch (Exception ex)
            {
                while (ex.InnerException != null)
                {
                    ex = ex.InnerException;
                }

                result.Error         = new CustomException();
                result.Error.Message = ex.Message + ex.StackTrace;
            }
            return(result);
        }
Beispiel #9
0
        public InterpolatedYieldCurveSpecification BuildCurve(DateTimeOffset curveDate, YieldCurveDefinition curveDefinition)
        {
            RestTarget target = _rest.Resolve("builder").Resolve(UriEncoding.ToString(curveDate));

            return(target.Post <InterpolatedYieldCurveSpecification>(curveDefinition));
        }