Example #1
0
        public static void  UpdateStreamCashflowsAmounts(SwapLegParametersRange_Old legParameters,
                                                         InterestRateStream stream,
                                                         ISwapLegEnvironment marketEnvironment,
                                                         DateTime valuationDate)
        {
            IRateCurve forecastCurve = null;

            if (!String.IsNullOrEmpty(legParameters.ForecastCurve))
            {
                forecastCurve = marketEnvironment.GetForecastRateCurve();
            }
            IRateCurve discountingCurve = marketEnvironment.GetDiscountRateCurve();

            FixedAndFloatingRateStreamCashflowGenerator.UpdateCashflowsAmounts(stream, forecastCurve, discountingCurve, valuationDate);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="fixingCalendar"></param>
        /// <param name="paymentCalendar"></param>
        /// <param name="capFloorLeg"></param>
        /// <param name="spreadSchedule"></param>
        /// <param name="capOrFloorSchedule"></param>
        /// <param name="notionalSchedule"></param>
        /// <param name="marketEnvironment"></param>
        /// <param name="valuationDate"></param>
        /// <returns></returns>
        public static CapFloor GenerateDefinitionCashflowsAmounts(IBusinessCalendar fixingCalendar,
                                                                  IBusinessCalendar paymentCalendar,
                                                                  CapFloorLegParametersRange_Old capFloorLeg,
                                                                  Schedule spreadSchedule,
                                                                  Schedule capOrFloorSchedule,
                                                                  NonNegativeAmountSchedule notionalSchedule,
                                                                  ISwapLegEnvironment marketEnvironment,
                                                                  DateTime valuationDate)
        {
            CapFloor   capFloor = GenerateDefinitionCashflows(fixingCalendar, paymentCalendar, capFloorLeg, spreadSchedule, capOrFloorSchedule, notionalSchedule);
            IRateCurve payStreamDiscountingCurve = marketEnvironment.GetDiscountRateCurve();
            IRateCurve payStreamForecastCurve    = marketEnvironment.GetForecastRateCurve();

            FixedAndFloatingRateStreamCashflowGenerator.UpdateCashflowsAmounts(capFloor.capFloorStream, payStreamForecastCurve, payStreamDiscountingCurve, valuationDate);
            return(capFloor);
        }
Example #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="logger"></param>
        /// <param name="cache"></param>
        /// <param name="nameSpace"></param>
        /// <param name="leg1Parameters"></param>
        /// <param name="leg1Calendars"></param>
        /// <param name="leg2Parameters"></param>
        /// <param name="leg2Calendars"></param>
        /// <param name="fixedRateSchedule"></param>
        /// <param name="spreadSchedule"></param>
        /// <param name="notionalSchedule"></param>
        /// <param name="marketEnvironment"></param>
        /// <param name="valuationDate"></param>
        /// <returns></returns>
        public static Swap GenerateDefinitionCashflowsAmounts(ILogger logger, ICoreCache cache,
                                                              string nameSpace, SwapLegParametersRange_Old leg1Parameters,
                                                              Pair <IBusinessCalendar, IBusinessCalendar> leg1Calendars,
                                                              SwapLegParametersRange_Old leg2Parameters,
                                                              Pair <IBusinessCalendar, IBusinessCalendar> leg2Calendars,
                                                              Schedule fixedRateSchedule,
                                                              Schedule spreadSchedule,
                                                              NonNegativeAmountSchedule notionalSchedule,
                                                              ISwapLegEnvironment marketEnvironment,
                                                              DateTime valuationDate)
        {
            var swap = GenerateDefinitionCashflows(logger, cache, nameSpace, leg1Parameters, leg1Calendars, leg2Parameters, leg2Calendars, fixedRateSchedule, spreadSchedule, notionalSchedule);
            InterestRateStream stream1 = swap.swapStream[0];
            InterestRateStream stream2 = swap.swapStream[1];

            UpdateStreamCashflowsAmounts(leg1Parameters, stream1, marketEnvironment, valuationDate);
            UpdateStreamCashflowsAmounts(leg2Parameters, stream2, marketEnvironment, valuationDate);
            return(swap);
        }
        static public void ProcessInstrumentControllerResultsEvolve(InstrumentControllerBase instrumentController, string[] metrics, DateTime baseDate, DateTime valuationDate)
        {
            Assert.IsNotNull(instrumentController);

            //Double[] times = { 0, 1, 2, 3, 4, 5 };
            //Double[] dfs = { 1, 0.98, 0.96, 0.91, 0.88, 0.85};

            ISwapLegEnvironment       market         = CreateInterestRateStreamTestEnvironment(baseDate);
            IInstrumentControllerData controllerData = CreateInstrumentModelData(metrics, valuationDate, market);

            Assert.IsNotNull(controllerData);
            var results = instrumentController.Calculate(controllerData);

            Debug.Print("Id : {0}", instrumentController.Id);
            foreach (var metric in results.quote)
            {
                Debug.Print("Id : {0} Metric Name : {1} Metric Value : {2}", instrumentController.Id, metric.measureType.Value, metric.value);
            }
        }
 ///<summary>
 /// A market environment can only contain 2 swap market environments:
 /// Each swap market can contain a maximum of:
 /// A forecast rate curve, a discount curve, a commodity curve,
 /// a reporting currency fx curve and a volatility surface.
 /// This type is use in priceable instruments valuations via the Evaluate method.
 ///</summary>
 ///<param name="id"></param>
 ///<param name="exchangeCurrencyMarket1"></param>
 ///<param name="exchangeCurrencyMarket2"></param>
 public FxLegEnvironment(string id, ISwapLegEnvironment exchangeCurrencyMarket1, ISwapLegEnvironment exchangeCurrencyMarket2)
     : base(id)
 {
     ExchangeCurrencyMarket1 = exchangeCurrencyMarket1;
     ExchangeCurrencyMarket2 = exchangeCurrencyMarket2;
 }