// 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); }
// // 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); }
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)); }
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); }
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 }); }
// 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); }
public InterpolatedYieldCurveSpecification BuildCurve(DateTimeOffset curveDate, YieldCurveDefinition curveDefinition) { RestTarget target = _rest.Resolve("builder").Resolve(UriEncoding.ToString(curveDate)); return(target.Post <InterpolatedYieldCurveSpecification>(curveDefinition)); }