Пример #1
0
 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);
 }
Пример #2
0
        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());
        }