public FloatRateIndex(TO_FloatRateIndex transportObject, ICalendarProvider calendarProvider, ICurrencyProvider currencyProvider) { DayCountBasis = transportObject.DayCountBasis; DayCountBasisFixed = transportObject.DayCountBasisFixed; ResetTenor = new Frequency(transportObject.ResetTenor); ResetTenorFixed = new Frequency(transportObject.ResetTenorFixed); HolidayCalendars = calendarProvider.GetCalendarSafe(transportObject.HolidayCalendars); RollConvention = transportObject.RollConvention; Currency = currencyProvider.GetCurrencySafe(transportObject.Currency); FixingOffset = new Frequency(transportObject.FixingOffset); }
public static void BuildSampleSpec(string outputFileName) { var floatRate_Libor3m = new TO_FloatRateIndex() { Currency = "USD", DayCountBasis = DayCountBasis.Act360, FixingOffset = "2b", HolidayCalendars = "NYC+LON", ResetTenor = "3m", RollConvention = RollType.MF, ResetTenorFixed = "3m" }; var floatRate_FedFunds = new TO_FloatRateIndex() { Currency = "USD", DayCountBasis = DayCountBasis.Act360, FixingOffset = "0b", HolidayCalendars = "NYC", ResetTenor = "1m", ResetTenorFixed = "1m", RollConvention = RollType.MF, }; var o = new ModelBuilderSpec { RateIndices = new Dictionary <string, TO_FloatRateIndex> { { "USD.LIBOR.3M", floatRate_Libor3m }, { "USD.OIS.1B", floatRate_FedFunds }, }, NymexSpecs = new List <ModelBuilderSpecNymex> { new ModelBuilderSpecNymex { QwackCode = "CL", NymexCodeFuture = "CL", NymexCodeOption = "LO" }, //WTI new ModelBuilderSpecNymex { QwackCode = "CO", NymexCodeFuture = "BB", NymexCodeOption = "BZO" }, //Brent //new ModelBuilderSpecNymex {QwackCode="Dated",NymexCodeFuture="UB"},//Dated Brent new ModelBuilderSpecNymex { QwackCode = "NG", NymexCodeFuture = "NG", NymexCodeOption = "ON" }, //HH new ModelBuilderSpecNymex { QwackCode = "UkNbp", NymexCodeFuture = "UKG" }, //UK Gas new ModelBuilderSpecNymex { QwackCode = "HO", NymexCodeFuture = "HO", NymexCodeOption = "OH" }, //Heat new ModelBuilderSpecNymex { QwackCode = "XB", NymexCodeFuture = "RB", NymexCodeOption = "OB" }, //RBOB new ModelBuilderSpecNymex { QwackCode = "QS", NymexCodeFuture = "7F" }, //ICE Gasoil new ModelBuilderSpecNymex { QwackCode = "Sing0.5", NymexCodeFuture = "S5M" }, //0.5% Sing new ModelBuilderSpecNymex { QwackCode = "Sing180", NymexCodeFuture = "UA" }, //Sing180 new ModelBuilderSpecNymex { QwackCode = "Sing380", NymexCodeFuture = "SE" }, //Sing380 new ModelBuilderSpecNymex { QwackCode = "NWE3.5", NymexCodeFuture = "0D" }, //3.5% NWE new ModelBuilderSpecNymex { QwackCode = "NWE1.0", NymexCodeFuture = "0B" }, //1.0% NWE new ModelBuilderSpecNymex { QwackCode = "NWE0.5", NymexCodeFuture = "R5M" }, //0.5% NWE new ModelBuilderSpecNymex { QwackCode = "XO", NymexCodeFuture = "MFF" }, //API4 new ModelBuilderSpecNymex { QwackCode = "XA", NymexCodeFuture = "MTF" }, //API2 new ModelBuilderSpecNymex { QwackCode = "IronOre62", NymexCodeFuture = "TIO" }, //62% Iron Ore TSI }, CmeBaseCurveSpecs = new List <ModelBuilderSpecCmeBaseCurve> { new ModelBuilderSpecCmeBaseCurve { CmeCode = "ED", QwackCode = "ED", CurveName = "USD.LIBOR.3M", FloatRateIndex = "USD.LIBOR.3M", IsCbot = false }, new ModelBuilderSpecCmeBaseCurve { CmeCode = "41", QwackCode = "FF", CurveName = "USD.OIS.1B", FloatRateIndex = "USD.OIS.1B", IsCbot = true }, }, CmeBasisCurveSpecs = new List <ModelBuilderSpecCmeBasisCurve> { new ModelBuilderSpecCmeBasisCurve { CmeFxPair = "USDZRC", Currency = "ZAR", CurveName = "ZAR.DISC.[USD.LIBOR.3M]", FxPair = "USDZAR", BaseCurveName = "USD.LIBOR.3M" }, new ModelBuilderSpecCmeBasisCurve { CmeFxPair = "USDJYC", Currency = "JPY", CurveName = "JPY.DISC.[USD.LIBOR.3M]", FxPair = "USDJPY", BaseCurveName = "USD.LIBOR.3M" }, new ModelBuilderSpecCmeBasisCurve { CmeFxPair = "EURUSN", Currency = "EUR", CurveName = "EUR.DISC.[USD.LIBOR.3M]", FxPair = "EURUSD", BaseCurveName = "USD.LIBOR.3M" }, new ModelBuilderSpecCmeBasisCurve { CmeFxPair = "GBPUSN", Currency = "GBP", CurveName = "GPB.DISC.[USD.LIBOR.3M]", FxPair = "GBPUSD", BaseCurveName = "USD.LIBOR.3M" }, new ModelBuilderSpecCmeBasisCurve { CmeFxPair = "USDCAC", Currency = "CAD", CurveName = "CAD.DISC.[USD.LIBOR.3M]", FxPair = "USDCAD", BaseCurveName = "USD.LIBOR.3M" }, new ModelBuilderSpecCmeBasisCurve { CmeFxPair = "AUDUSN", Currency = "AUD", CurveName = "AUD.DISC.[USD.LIBOR.3M]", FxPair = "AUDUSD", BaseCurveName = "USD.LIBOR.3M" }, new ModelBuilderSpecCmeBasisCurve { CmeFxPair = "NZDUSC", Currency = "NZD", CurveName = "NZD.DISC.[USD.LIBOR.3M]", FxPair = "NZDUSD", BaseCurveName = "USD.LIBOR.3M" }, new ModelBuilderSpecCmeBasisCurve { CmeFxPair = "USDDKC", Currency = "DKK", CurveName = "DKK.DISC.[USD.LIBOR.3M]", FxPair = "USDDKK", BaseCurveName = "USD.LIBOR.3M" }, new ModelBuilderSpecCmeBasisCurve { CmeFxPair = "USDNKC", Currency = "NOK", CurveName = "NOK.DISC.[USD.LIBOR.3M]", FxPair = "USDNOK", BaseCurveName = "USD.LIBOR.3M" }, new ModelBuilderSpecCmeBasisCurve { CmeFxPair = "USDSKC", Currency = "SEK", CurveName = "SEK.DISC.[USD.LIBOR.3M]", FxPair = "USDSEK", BaseCurveName = "USD.LIBOR.3M" }, new ModelBuilderSpecCmeBasisCurve { CmeFxPair = "USDRUB", Currency = "RUB", CurveName = "RUB.DISC.[USD.LIBOR.3M]", FxPair = "USDRUB", BaseCurveName = "USD.LIBOR.3M" }, new ModelBuilderSpecCmeBasisCurve { CmeFxPair = "USDBRL", Currency = "BRL", CurveName = "BRL.DISC.[USD.LIBOR.3M]", FxPair = "USDBRL", BaseCurveName = "USD.LIBOR.3M" }, new ModelBuilderSpecCmeBasisCurve { CmeFxPair = "USDCNY", Currency = "CNY", CurveName = "CNY.DISC.[USD.LIBOR.3M]", FxPair = "USDCNY", BaseCurveName = "USD.LIBOR.3M" }, new ModelBuilderSpecCmeBasisCurve { CmeFxPair = "USDKRW", Currency = "KRW", CurveName = "KRW.DISC.[USD.LIBOR.3M]", FxPair = "USDKRW", BaseCurveName = "USD.LIBOR.3M" }, new ModelBuilderSpecCmeBasisCurve { CmeFxPair = "USDINR", Currency = "INR", CurveName = "INR.DISC.[USD.LIBOR.3M]", FxPair = "USDINR", BaseCurveName = "USD.LIBOR.3M" }, new ModelBuilderSpecCmeBasisCurve { CmeFxPair = "USDPHP", Currency = "PHP", CurveName = "PHP.DISC.[USD.LIBOR.3M]", FxPair = "USDPHP", BaseCurveName = "USD.LIBOR.3M" }, new ModelBuilderSpecCmeBasisCurve { CmeFxPair = "USDTWD", Currency = "TWD", CurveName = "TWD.DISC.[USD.LIBOR.3M]", FxPair = "USDTWD", BaseCurveName = "USD.LIBOR.3M" }, }, FxPairs = new List <TO_FxPair> { new TO_FxPair { Domestic = "USD", Foreign = "ZAR", PrimaryCalendar = "ZAR", SecondaryCalendar = "USD", SpotLag = "2b" }, new TO_FxPair { Domestic = "USD", Foreign = "JPY", PrimaryCalendar = "JPY", SecondaryCalendar = "USD", SpotLag = "2b" }, new TO_FxPair { Domestic = "EUR", Foreign = "USD", PrimaryCalendar = "EUR", SecondaryCalendar = "USD", SpotLag = "2b" }, new TO_FxPair { Domestic = "GBP", Foreign = "USD", PrimaryCalendar = "GBP", SecondaryCalendar = "USD", SpotLag = "2b" }, new TO_FxPair { Domestic = "USD", Foreign = "CAD", PrimaryCalendar = "CAD", SecondaryCalendar = "USD", SpotLag = "1b" }, new TO_FxPair { Domestic = "AUD", Foreign = "USD", PrimaryCalendar = "AUD", SecondaryCalendar = "USD", SpotLag = "2b" }, new TO_FxPair { Domestic = "NZD", Foreign = "USD", PrimaryCalendar = "NZD", SecondaryCalendar = "USD", SpotLag = "2b" }, new TO_FxPair { Domestic = "USD", Foreign = "DKK", PrimaryCalendar = "DKK", SecondaryCalendar = "USD", SpotLag = "2b" }, new TO_FxPair { Domestic = "USD", Foreign = "SEK", PrimaryCalendar = "SEK", SecondaryCalendar = "USD", SpotLag = "2b" }, new TO_FxPair { Domestic = "USD", Foreign = "NOK", PrimaryCalendar = "NOK", SecondaryCalendar = "USD", SpotLag = "2b" }, new TO_FxPair { Domestic = "USD", Foreign = "RUB", PrimaryCalendar = "RUB", SecondaryCalendar = "USD", SpotLag = "2b" }, new TO_FxPair { Domestic = "USD", Foreign = "BRL", PrimaryCalendar = "BRL", SecondaryCalendar = "USD", SpotLag = "2b" }, new TO_FxPair { Domestic = "USD", Foreign = "CNY", PrimaryCalendar = "CNY", SecondaryCalendar = "USD", SpotLag = "2b" }, new TO_FxPair { Domestic = "USD", Foreign = "KRW", PrimaryCalendar = "KRW", SecondaryCalendar = "USD", SpotLag = "2b" }, new TO_FxPair { Domestic = "USD", Foreign = "INR", PrimaryCalendar = "INR", SecondaryCalendar = "USD", SpotLag = "2b" }, new TO_FxPair { Domestic = "USD", Foreign = "PHP", PrimaryCalendar = "PHP", SecondaryCalendar = "USD", SpotLag = "2b" }, new TO_FxPair { Domestic = "USD", Foreign = "TWD", PrimaryCalendar = "TWD", SecondaryCalendar = "USD", SpotLag = "2b" }, new TO_FxPair { Domestic = "BTC", Foreign = "USD", PrimaryCalendar = "USD", SecondaryCalendar = "USD", SpotLag = "0b" }, new TO_FxPair { Domestic = "XAU", Foreign = "USD", PrimaryCalendar = "LON", SecondaryCalendar = "USD", SpotLag = "2b" }, new TO_FxPair { Domestic = "XAG", Foreign = "USD", PrimaryCalendar = "LON", SecondaryCalendar = "USD", SpotLag = "2b" }, new TO_FxPair { Domestic = "XPT", Foreign = "USD", PrimaryCalendar = "LON", SecondaryCalendar = "USD", SpotLag = "2b" }, new TO_FxPair { Domestic = "XPD", Foreign = "USD", PrimaryCalendar = "LON", SecondaryCalendar = "USD", SpotLag = "2b" }, }, CmeFxFutureSpecs = new List <ModelBuilderSpecFxFuture> { new ModelBuilderSpecFxFuture { CmeCodeFut = "6E", CmeCodeOpt = "EUU", Currency = "USD", FxPair = "EURUSD" }, new ModelBuilderSpecFxFuture { CmeCodeFut = "6B", CmeCodeOpt = "GBU", Currency = "USD", FxPair = "GBPUSD" }, new ModelBuilderSpecFxFuture { CmeCodeFut = "6J", CmeCodeOpt = "JPU", Currency = "USD", FxPair = "JPYUSD" }, new ModelBuilderSpecFxFuture { CmeCodeFut = "6A", CmeCodeOpt = "ADU", Currency = "USD", FxPair = "AUDUSD" }, new ModelBuilderSpecFxFuture { CmeCodeFut = "6C", CmeCodeOpt = "CAU", Currency = "USD", FxPair = "CADUSD" }, new ModelBuilderSpecFxFuture { CmeCodeFut = "6L", CmeCodeOpt = "BR", Currency = "USD", FxPair = "BRLUSD" }, new ModelBuilderSpecFxFuture { CmeCodeFut = "BTC", CmeCodeOpt = "BTC", Currency = "USD", FxPair = "BTCUSD" }, }, CmxMetalCurves = new List <ModelBuilderSpecCmxMetalCurve> { new ModelBuilderSpecCmxMetalCurve { Currency = "XAU", MetalPair = "XAUUSD", CmxSymbol = "GB", CurveName = "XAU.DISC.[USD.LIBOR.3M]", BaseCurveName = "USD.LIBOR.3M", CmxFutCode = "GC", CmxOptCode = "OG" }, new ModelBuilderSpecCmxMetalCurve { Currency = "XAG", MetalPair = "XAGUSD", CmxSymbol = "LSF", CurveName = "XAG.DISC.[USD.LIBOR.3M]", BaseCurveName = "USD.LIBOR.3M", CmxFutCode = "SI", CmxOptCode = "SO" }, } }; var tw = new StringWriter(); var js = JsonSerializer.Create(); js.Serialize(tw, o); File.WriteAllText(outputFileName, tw.ToString()); }