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); }
/// <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; }