/// <summary> /// Initializes a new instance of the <see cref="InstrumentControllerData"/> class. /// </summary> /// <param name="assetValuation">The asset valuation.</param> /// <param name="market">The market.</param> /// <param name="valuationDate">The valuation date.</param> /// <param name="reportingCurrency">The reporting currency.</param> public InstrumentControllerData(AssetValuation assetValuation, IMarketEnvironment market, DateTime valuationDate, Currency reportingCurrency) { AssetValuation = assetValuation; MarketEnvironment = market; ValuationDate = valuationDate; ReportingCurrency = reportingCurrency; }
public void TestCreateSwaptionValuationReport() { var curves = CreateInterestRateStreamTestEnvironment(DateTime.Now); Swaption swaption = GenerateSwaptionParametricWithCashflows(); var marketFactory = new MarketFactory(); marketFactory.AddYieldCurve(curves.GetForecastRateCurveFpML()); Market market = marketFactory.Create(); const string baseParty = _NAB; var assetValuation = new AssetValuation(); var listOfQuotations = new List <Quotation>(); IEnumerable <StringDoubleRangeItem> valuationSet = CreateValuationSetList(54321, 123.5); foreach (StringDoubleRangeItem item in valuationSet) { var quotation = new Quotation { measureType = AssetMeasureTypeHelper.Parse(item.StringValue), value = (decimal)item.DoubleValue, valueSpecified = true }; listOfQuotations.Add(quotation); } assetValuation.quote = listOfQuotations.ToArray(); ValuationReport valuationReport = ValuationReportGenerator.Generate("some-valuation-Id", baseParty, "0001", DateTime.Now, swaption, market, assetValuation); Debug.WriteLine("ValuationReport:"); Debug.WriteLine(XmlSerializerHelper.SerializeToString(typeof(Document), valuationReport)); string s1 = XmlSerializerHelper.SerializeToString(typeof(Document), valuationReport); XmlSerializerHelper.DeserializeFromString <ValuationReport>(typeof(Document), s1); XmlSerializerHelper.SerializeToFile(typeof(Document), valuationReport, "some-valuation-Id"); XmlSerializerHelper.DeserializeFromFile <ValuationReport>(typeof(Document), "some-valuation-Id"); }
public static ValuationReport Generate(string valuationId, string party1Name, string party2Name, bool isParty1Base, Trade trade, Market market, AssetValuation assetValuation) { var valuationReport = new ValuationReport { header = new NotificationMessageHeader { messageId = new MessageId { Value = valuationId } }, market = market }; // Associate id with the valuation // var tradeValuationItem = new TradeValuationItem(); valuationReport.tradeValuationItem = new[] { tradeValuationItem }; string baseParty = isParty1Base ? party1Name : party2Name; Party party1 = PartyFactory.Create("Party1", party1Name); Party party2 = PartyFactory.Create("Party2", party2Name); valuationReport.party = new[] { party1, party2 }; tradeValuationItem.Items = new object[] { trade }; tradeValuationItem.valuationSet = new ValuationSet { baseParty = PartyReferenceFactory.Create(baseParty), assetValuation = new[] { assetValuation } }; return(valuationReport); }
// aggregate type, e.g. sum, something else // public static AssetValuation GetValue(IList <InstrumentControllerBase> listIPriceable, IInstrumentControllerData modelData) { var list = listIPriceable.Select(pr => pr.Calculate(modelData)).ToList(); AssetValuation sum = AssetValuationHelper.Sum(list); return(sum); }
public static AssetValuation CreateAssetValuationFromValuationSet(List <StringObjectRangeItem> valuationSet) { var assetValuation = new AssetValuation(); var listOfQuotations = new List <Quotation>(); foreach (StringObjectRangeItem item in valuationSet) { var quotation = new Quotation { measureType = AssetMeasureTypeHelper.Parse(item.StringValue) }; if (item.ObjectValue is double | item.ObjectValue is decimal) { quotation.value = Convert.ToDecimal(item.ObjectValue); quotation.valueSpecified = true; } else { quotation.cashflowType = new CashflowType { Value = item.ObjectValue.ToString() }; } listOfQuotations.Add(quotation); } assetValuation.quote = listOfQuotations.ToArray(); return(assetValuation); }
public static ValuationReport Generate(string valuationId, string baseParty, string tradeId, DateTime tradeDate, CapFloor capFloor, Market market, AssetValuation assetValuation) { var valuationReport = new ValuationReport { header = new NotificationMessageHeader { messageId = new MessageId { Value = valuationId } }, market = market }; // Associate id with the valuation // var tradeValuationItem = new TradeValuationItem(); valuationReport.tradeValuationItem = new[] { tradeValuationItem }; var trade = new Trade(); TradeHeader tradeHeader = CreateTradeHeader(tradeDate, tradeId); trade.tradeHeader = tradeHeader; XsdClassesFieldResolver.TradeSetCapFloor(trade, capFloor); tradeValuationItem.Items = new object[] { trade }; tradeValuationItem.valuationSet = new ValuationSet { baseParty = PartyReferenceFactory.Create(baseParty), assetValuation = new[] { assetValuation } }; return(valuationReport); }
public static AssetValuation Copy(AssetValuation baseValuation) { AssetValuation result = null; if (baseValuation != null) { result = new AssetValuation(); if (baseValuation.quote != null) { result.quote = QuotationHelper.Copy(baseValuation.quote).ToArray(); } if (baseValuation.fxRate != null) { var fxRate = new List <FxRate>(); //result.fxRate //if (baseValuation.fxRate!=null) //{ foreach (var rate in baseValuation.fxRate) { var newRate = new FxRate { quotedCurrencyPair = new QuotedCurrencyPair { currency1 = CurrencyHelper.Copy( rate.quotedCurrencyPair. currency1), currency2 = CurrencyHelper.Copy( rate.quotedCurrencyPair. currency2), quoteBasis = rate.quotedCurrencyPair. quoteBasis } }; fxRate.Add(newRate); } result.fxRate = fxRate.ToArray(); } if (baseValuation.valuationScenarioReference != null) { result.valuationScenarioReference = new ValuationScenarioReference { href = baseValuation.valuationScenarioReference.href }; } if (baseValuation.id != null) { result.id = baseValuation.id; } if (baseValuation.objectReference != null) { result.objectReference = new AnyAssetReference { href = baseValuation.objectReference.href }; } } return(result); }
public void TestCreateFraValuationReport1() { var rateCurve = TestRateCurve(new DateTime(2009, 7, 15)); var fra = new Fra(); var pair = rateCurve.GetFpMLData(); var marketFactory = new MarketFactory(); marketFactory.AddPricingStructure(pair); Market market = marketFactory.Create(); const string baseParty = _NAB; var assetValuation = new AssetValuation(); var listOfQuotations = new List <Quotation>(); IEnumerable <StringDoubleRangeItem> valuationSet = CreateValuationSetList(54321, 123.5); foreach (StringDoubleRangeItem item in valuationSet) { var quotation = new Quotation { measureType = AssetMeasureTypeHelper.Parse(item.StringValue), value = (decimal)item.DoubleValue, valueSpecified = true }; listOfQuotations.Add(quotation); } assetValuation.quote = listOfQuotations.ToArray(); ValuationReport valuationReport = ValuationReportGenerator.Generate("some-valuation-Id", baseParty, fra, market, assetValuation); Debug.WriteLine("ValuationReport:"); Debug.WriteLine(XmlSerializerHelper.SerializeToString(valuationReport)); }
/// <summary> /// Updates the parent valuation with the sum of child valuations, where there is no specific parent valuation. /// </summary> /// <param name="parentValuation">The parent valuation.</param> /// <param name="childValuation">The child valuation.</param> public static AssetValuation UpdateValuation(AssetValuation parentValuation, AssetValuation childValuation) { var parentMetrics = ExtractMetricsFromAssetValuations(parentValuation); var childMetrics = ExtractMetricsFromAssetValuations(childValuation); var parentValuationMerged = UpdateValuation(parentValuation, childValuation, parentMetrics, childMetrics); return(parentValuationMerged); }
public static AssetValuation Create(params Quotation[] quotations) { var result = new AssetValuation { quote = quotations }; return(result); }
/// <summary> /// Creates the specified Basic asset valuation with a reference and set of quotations /// </summary> /// <param name="reference">The reference.</param> /// <param name="quotations">The quotations.</param> /// <returns></returns> public static AssetValuation Create(string reference, params Quotation[] quotations) { AssetValuation result = Create(quotations); result.objectReference = new AnyAssetReference { href = reference }; return(result); }
public static ValuationReport Generate(string valuationId, string baseParty, string tradeId, DateTime tradeDate, Swap swap, Market market, AssetValuation assetValuation) { var valuationReport = new ValuationReport { header = new NotificationMessageHeader { messageId = new MessageId { Value = valuationId } }, market = market }; // Associate id with the valuation // var tradeValuationItem = new TradeValuationItem(); valuationReport.tradeValuationItem = new[] { tradeValuationItem }; //Party nabParty = PartyFactory.Create("Party1"); //Party counterParty = PartyFactory.Create(_counterpartyName); // // valuationReport.party = new Party[] { nabParty, counterParty }; // PartyOrAccountReference nabPartyReference = PartyOrAccountReferenceFactory.Create(nabParty.id); // PartyOrAccountReference counterPartyReference = PartyOrAccountReferenceFactory.Create(counterParty.id); // // NAB is the payer of pay paystream and receiver of receive stream // // // SwapHelper.GetPayerStream(swap).payerPartyReference = nabPartyReference; // SwapHelper.GetReceiverStream(swap).receiverPartyReference = nabPartyReference; // // // CounterParty is the receiver of paystream and payer of receivestream // // // SwapHelper.GetPayStream(swap).receiverPartyReference = counterPartyReference; // SwapHelper.GetReceiveStream(swap).payerPartyReference = counterPartyReference; var trade = new Trade(); // Generate trade header // TradeHeader tradeHeader = CreateTradeHeader(tradeDate, tradeId); trade.tradeHeader = tradeHeader; XsdClassesFieldResolver.TradeSetSwap(trade, swap); tradeValuationItem.Items = new object[] { trade }; tradeValuationItem.valuationSet = new ValuationSet { baseParty = PartyReferenceFactory.Create(baseParty), assetValuation = new[] { assetValuation } }; return(valuationReport); }
/// <summary> /// Updates the parent valuation with the sum of child valuations, where there is no specific parent valuation. /// </summary> /// <param name="parentValuation">The parent valuation.</param> /// <param name="childValuation">The child valuations.</param> /// <param name="parentMetrics">A list of the parent metrics.</param> /// <param name="childMetrics">A list iof the child netrics to aggregate.</param> public static AssetValuation UpdateValuation(AssetValuation parentValuation, AssetValuation childValuation, List <string> parentMetrics, List <string> childMetrics) { var parentQuotes = new List <Quotation>(parentValuation.quote); var childQuotes = new List <Quotation>(childValuation.quote); parentQuotes.AddRange(childQuotes.Where(quote => !parentMetrics.Contains(quote.measureType.Value))); parentValuation.quote = parentQuotes.ToArray(); return(parentValuation); }
/// <summary> /// Initializes a new instance of the <see cref="InstrumentControllerData"/> class. /// </summary> /// <param name="assetValuation">The asset valuation.</param> /// <param name="market">The market.</param> /// <param name="valuationDate">The valuation date.</param> /// <param name="reportingCurrency">The reporting currency.</param> /// <param name="baseCalculationParty">The base party.</param> /// <param name="isReportingCounterpartyRequired">Is the reporting party required to be one of the trade parties. The default is [false]. </param> public InstrumentControllerData(AssetValuation assetValuation, IMarketEnvironment market, DateTime valuationDate, Currency reportingCurrency, IIdentifier baseCalculationParty, Boolean isReportingCounterpartyRequired) { AssetValuation = assetValuation; MarketEnvironment = market; ValuationDate = valuationDate; ReportingCurrency = reportingCurrency; BaseCalculationParty = baseCalculationParty; IsReportingCounterpartyRequired = isReportingCounterpartyRequired; }
public string CreateSwapValuationReport(ICoreCache cache, string nameSpace, string valuationId, string baseParty, string tradeId, DateTime tradeDate, Swap swap, Market market, AssetValuation assetValuation) { ValuationReport valuationReport = ValuationReportGenerator.Generate(valuationId, baseParty, tradeId, tradeDate, swap, market, assetValuation); cache.SaveObject(valuationReport, nameSpace + "." + valuationId, null); return(valuationId); }
/// <summary> /// Aggregates the metrics. /// </summary> /// <param name="childValuations">The metrics.</param> /// <param name="controllerMetrics">THe controller metrics</param> /// <param name="currencies">The possible currencies. </param> /// <returns></returns> public static AssetValuation AggregateMetrics(List <AssetValuation> childValuations, List <string> controllerMetrics, List <string> currencies) { var result = new AssetValuation(); var quotes = new List <Quotation>(); foreach (var quote in controllerMetrics.Select(metric => SumMetricQuotations(childValuations, metric, currencies))) { quotes.AddRange(quote); } result.quote = quotes.ToArray(); return(result); }
public static AssetValuation Copy(AssetValuation baseValuation) { AssetValuation result = null; if (baseValuation != null) { result = new AssetValuation(); if (baseValuation.quote != null) { result.quote = QuotationHelper.Copy(baseValuation.quote).ToArray(); } if (baseValuation.fxRate != null) { result.fxRate = new FxRate(); if (baseValuation.fxRate.quotedCurrencyPair != null) { result.fxRate.quotedCurrencyPair = new QuotedCurrencyPair { currency1 = CurrencyHelper.Copy( baseValuation.fxRate.quotedCurrencyPair. currency1), currency2 = CurrencyHelper.Copy( baseValuation.fxRate.quotedCurrencyPair. currency2), quoteBasis = baseValuation.fxRate.quotedCurrencyPair. quoteBasis }; } result.fxRate.rate = baseValuation.fxRate.rate; } if (baseValuation.valuationScenarioReference != null) { result.valuationScenarioReference = new ValuationScenarioReference { href = baseValuation.valuationScenarioReference.href }; } if (baseValuation.id != null) { result.id = baseValuation.id; } if (baseValuation.objectReference != null) { result.objectReference = new AnyAssetReference { href = baseValuation.objectReference.href }; } } return(result); }
public string CreateValuation( ILogger logger, ICoreCache cache, String nameSpace, IBusinessCalendar fixingCalendar, IBusinessCalendar paymentCalendar, List <StringObjectRangeItem> valuationSet, ValuationRange valuationRange, TradeRange tradeRange, CapFloorLegParametersRange_Old legParametersRange, List <InputCashflowRangeItem> legDetailedCashflowsListArray, List <InputPrincipalExchangeCashflowRangeItem> legPrincipleExchangeCashflowListArray, List <AdditionalPaymentRangeItem> legAdditionalPaymentListArray, List <PartyIdRangeItem> partyIdList, //optional List <OtherPartyPaymentRangeItem> otherPartyPaymentList, //optional List <FeePaymentRangeItem> feePaymentList //optional ) { Pair <ValuationResultRange, CapFloor> fpML = GetPriceAndGeneratedFpML(logger, cache, nameSpace, fixingCalendar, paymentCalendar, valuationRange, tradeRange, legParametersRange, legDetailedCashflowsListArray, legPrincipleExchangeCashflowListArray, legAdditionalPaymentListArray, feePaymentList); CapFloor capFloor = fpML.Second; string valuationReportAndProductId = tradeRange.Id ?? Guid.NewGuid().ToString(); capFloor.id = valuationReportAndProductId; AssetValuation assetValuation = InterestRateProduct.CreateAssetValuationFromValuationSet(valuationSet); //Valuation valuation = new Valuation(); // TODO: add Trade Id & Trade data into valuation. (Trade.Id & Trade.TradeHeader.TradeDate) // string baseParty = valuationRange.BaseParty; var uniqueCurves = new List <IRateCurve>(); foreach (string curveName in new[] { legParametersRange.ForecastCurve, legParametersRange.DiscountCurve }) { if (!String.IsNullOrEmpty(curveName)) { var curve = CurveLoader.LoadInterestRateCurve(logger, cache, nameSpace, curveName); if (!uniqueCurves.Contains(curve)) { uniqueCurves.Add(curve); } } } Market fpMLMarket = InterestRateProduct.CreateFpMLMarketFromCurves(uniqueCurves); ValuationReport valuationReport = ValuationReportGenerator.Generate(valuationReportAndProductId, baseParty, valuationReportAndProductId, tradeRange.TradeDate, capFloor, fpMLMarket, assetValuation); cache.SaveObject(valuationReport, valuationReportAndProductId, null); InterestRateProduct.ReplacePartiesInValuationReport(valuationReport, partyIdList); InterestRateProduct.AddOtherPartyPayments(valuationReport, otherPartyPaymentList); return(valuationReportAndProductId); }
/// <summary> /// Sets the metric result. /// </summary> /// <param name="valuation">The valuation.</param> /// <param name="metric">The metric.</param> /// <param name="value">The value.</param> /// <param name="sensitivitySet">The sensitivity set.</param> public static void SetMetricResult(AssetValuation valuation, string metric, Decimal value, SensitivitySet[] sensitivitySet) { var quotes = new List <Quotation>(valuation.quote); Quotation matchedQuote = quotes.Find( item => String.Compare(item.measureType.Value, metric, StringComparison.OrdinalIgnoreCase) == 0 ); if (matchedQuote == null) { return; } matchedQuote.value = value; matchedQuote.valueSpecified = true; matchedQuote.sensitivitySet = sensitivitySet; }
public static IInstrumentControllerData CreateInstrumentModelData(List <string> metrics, DateTime baseDate, IMarketEnvironment market, string reportingCurrency, string baseParty) { var bav = new AssetValuation(); var currency = CurrencyHelper.Parse(reportingCurrency); var quotes = new Quotation[metrics.Count]; var index = 0; foreach (var metric in metrics) { quotes[index] = QuotationHelper.Create(0.0m, metric, "DecimalValue", baseDate); index++; } bav.quote = quotes; return(new InstrumentControllerData(bav, market, baseDate, currency, new PartyIdentifier(baseParty))); }
protected static IInstrumentControllerData CreateInstrumentModelData(string[] metrics, DateTime valuationDate, IMarketEnvironment market, string reportingCurrency, IIdentifier baseCounterParty) { var bav = new AssetValuation(); var currency = CurrencyHelper.Parse(reportingCurrency); var quotes = new Quotation[metrics.Length]; var index = 0; foreach (var metric in metrics) { quotes[index] = QuotationHelper.Create(0.0m, metric); index++; } bav.quote = quotes; return(new InstrumentControllerData(bav, market, valuationDate, currency, baseCounterParty)); }
static internal IInstrumentControllerData CreateInstrumentModelData(string[] metrics, DateTime baseDate, IMarketEnvironment market) { var bav = new AssetValuation(); var quotes = new Quotation[metrics.Length]; var index = 0; foreach (var metric in metrics) { quotes[index] = QuotationHelper.Create(0.0m, metric); index++; } bav.quote = quotes; return(new InstrumentControllerData(bav, market, baseDate)); }
static internal IInstrumentControllerData CreateInstrumentModelData(string[] metrics, DateTime baseDate, IMarketEnvironment market, string reportingCurrency) { var bav = new AssetValuation(); var curreny = Currency.Parse(reportingCurrency); var quotes = new Quotation[metrics.Length]; var index = 0; foreach (var metric in metrics) { quotes[index] = QuotationHelper.Create(0.0m, metric, "DecimalValue"); index++; } bav.quote = quotes; return(new InstrumentControllerData(bav, market, baseDate, curreny)); }
/// <summary> /// Aggregates the coupon metric. /// </summary> /// <param name="childValuations">The metrics.</param> /// <param name="controllerMetrics">The controller metrics</param> /// <returns></returns> protected static AssetValuation AggregateMetrics(List <AssetValuation> childValuations, List <string> controllerMetrics) { var result = new AssetValuation(); var quotes = new List <Quotation>(); foreach (var metric in controllerMetrics) { var quote = new Quotation(); var measure = new AssetMeasureType { Value = metric }; quote.measureType = measure; quote.value = Aggregator.SumDecimals(childValuations.Select(valuation => Aggregator.SumDecimals(GetMetricResults(valuation, metric))).ToArray()); quote.valueSpecified = true; quotes.Add(quote); } result.quote = quotes.ToArray(); return(result); }
public static AssetValuation Sum(List <AssetValuation> assetValuationList) { if (0 == assetValuationList.Count) { throw new ArgumentException("basicAssetValuationList is empty"); } if (1 == assetValuationList.Count) { return(Copy(assetValuationList[0]));//BinarySerializerHelper.Clone(assetValuationList[0]);//TODO problem with the binary serializer } // clone collection internally - just to keep invariant of the method. // List <AssetValuation> clonedCollection = Copy(assetValuationList);//BinarySerializerHelper.Clone(assetValuationList);//TODO problem with the binary serializer AssetValuation firstElement = clonedCollection[0]; clonedCollection.RemoveAt(0); AssetValuation sumOfTheTail = Sum(clonedCollection); return(Add(firstElement, sumOfTheTail)); }
public static AssetValuation Add(AssetValuation assetValuation1, AssetValuation assetValuation2) { AssetValuation result = Copy(assetValuation1);//BinarySerializerHelper.Clone(assetValuation1);//TODO problem with the binary serializer var proccessedMeasureTypes = new List <string>(); foreach (Quotation bq1 in result.quote) { proccessedMeasureTypes.Add(bq1.measureType.Value); Quotation bq2 = GetQuotationByMeasureType(assetValuation2, bq1.measureType.Value); if (null != bq2) { bq1.value += bq2.value; } } var bqToAddToList = assetValuation2.quote.Where(bq2 => - 1 == proccessedMeasureTypes.IndexOf(bq2.measureType.Value)).ToList(); bqToAddToList.AddRange(result.quote); result.quote = bqToAddToList.ToArray(); return(result); }
/// <summary> /// Creates the asset valuation. /// </summary> /// <param name="metrics">The metrics.</param> /// <param name="baseDate">The base date.</param> /// <returns></returns> static public AssetValuation CreateAssetValuation(IEnumerable <string> metrics, DateTime baseDate) { var av = new AssetValuation(); var quotes = new List <Quotation>(); foreach (string metric in metrics) { var quotation = new Quotation(); var measureType = new AssetMeasureType { Value = metric }; quotation.value = 0.0m; quotation.valueSpecified = true; quotation.measureType = measureType; quotation.valuationDate = baseDate; quotation.valuationDateSpecified = true; quotes.Add(quotation); } av.quote = quotes.ToArray(); return(av); }
/// <summary> /// Creates the asset valuation. /// </summary> /// <param name="metrics">The metrics.</param> /// <param name="baseDate">The base date.</param> /// <returns></returns> public static AssetValuation CreateAssetValuation(string[] metrics, DateTime baseDate) { var av = new AssetValuation(); var quotes = new Quotation[metrics.Length]; int index = 0; foreach (string metric in metrics) { var quotation = new Quotation(); var measureType = new AssetMeasureType { Value = metric }; quotation.value = 0.0m; quotation.measureType = measureType; quotation.valuationDate = baseDate; quotation.valuationDateSpecified = true; quotes[index] = quotation; index++; } av.quote = quotes; return(av); }
/// <summary> /// Gets the metric results. /// </summary> /// <param name="valuation">The valuation.</param> /// <param name="metric">The metric.</param> /// <returns></returns> private static decimal[] GetMetricResults(AssetValuation valuation, string metric) { var results = new List <decimal>(); var quotes = new List <Quotation>(valuation.quote); var matchedQuotes = quotes.FindAll(item => String.Compare(item.measureType.Value, metric, StringComparison.OrdinalIgnoreCase) == 0); if (matchedQuotes.Count > 0) { foreach (Quotation quotation in matchedQuotes) { if (quotation.sensitivitySet != null) { results.AddRange(quotation.sensitivitySet[0].sensitivity.Select(sensitivity => sensitivity.Value)); } else { results.Add(quotation.value); } } } return(results.ToArray()); }
public string CreateValuation( ILogger logger, ICoreCache cache, String nameSpace, IBusinessCalendar fixingCalendar, IBusinessCalendar paymentCalendar, List <StringObjectRangeItem> valuationSet, ValuationRange valuationRange, TradeRange tradeRange, SwapLegParametersRange_Old leg1ParametersRange, List <DetailedCashflowRangeItem> leg1DetailedCashflowsListArray, List <PrincipalExchangeCashflowRangeItem> leg1PrincipalExchangeCashflowListArray, List <AdditionalPaymentRangeItem> leg1AdditionalPaymentListArray, List <PartyIdRangeItem> partyIdList,//optional List <OtherPartyPaymentRangeItem> otherPartyPaymentList ) { Swap floater = GetPriceAndGeneratedFpMLSwap(logger, cache, nameSpace, fixingCalendar, paymentCalendar, valuationRange, tradeRange, leg1ParametersRange, leg1DetailedCashflowsListArray, leg1PrincipalExchangeCashflowListArray, leg1AdditionalPaymentListArray).Second; string baseParty = valuationRange.BaseParty; string valuationReportAndProductId = tradeRange.Id ?? Guid.NewGuid().ToString(); floater.id = valuationReportAndProductId; var uniqueCurves = GetUniqueCurves(logger, cache, nameSpace, leg1ParametersRange); Market fpMLMarket = InterestRateProduct.CreateFpMLMarketFromCurves(uniqueCurves); var valuation = new Valuations.Valuation(); // TODO: add Trade Id & Trade data into valuation. (Trade.Id & Trade.TradeHeader.TradeDate) // AssetValuation assetValuation = InterestRateProduct.CreateAssetValuationFromValuationSet(valuationSet); valuation.CreateSwapValuationReport(cache, nameSpace, valuationReportAndProductId, baseParty, tradeRange.Id, tradeRange.TradeDate, floater, fpMLMarket, assetValuation); ValuationReport valuationReport = valuation.Get(cache, nameSpace, valuationReportAndProductId); InterestRateProduct.ReplacePartiesInValuationReport(valuationReport, partyIdList); InterestRateProduct.AddOtherPartyPayments(valuationReport, otherPartyPaymentList); return(valuationReportAndProductId); }