public static void BuildTrade(ILogger logger, ICoreCache targetClient, Trade tradeVersion, Party[] party) { var extraProps = new NamedValueSet(); var party1 = party[0].partyId[0].Value; var party2 = party[1].partyId[0].Value; extraProps.Set(TradeProp.Party1, party1); extraProps.Set(TradeProp.Party2, party2); //extraProps.Set(TradeProp.CounterPartyId, party2);//Redundant //extraProps.Set(TradeProp.OriginatingPartyId, party1);//Redundant extraProps.Set(TradeProp.TradeDate, tradeVersion.tradeHeader.tradeDate.Value); extraProps.Set(TradeProp.TradingBookName, "Test"); TradeId tradeId; var tempId = tradeVersion.tradeHeader.partyTradeIdentifier[0].Items[0]; if (tempId as VersionedTradeId == null) { tradeId = (TradeId)tradeVersion.tradeHeader.partyTradeIdentifier[0].Items[0]; } else { var id = (VersionedTradeId)tradeVersion.tradeHeader.partyTradeIdentifier[0].Items[0]; tradeId = id.tradeId; } //tradeId = (TradeId)tradeVersion.tradeHeader.partyTradeIdentifier[0].Items[0]; extraProps.Set(TradeProp.TradeState, "Pricing"); //extraProps.Set("TradeType", "Deposit"); extraProps.Set(TradeProp.TradeSource, "FPMLSamples"); extraProps.Set(TradeProp.TradeId, tradeId.Value); extraProps.Set(TradeProp.BaseParty, TradeProp.Party1); //party1 extraProps.Set(TradeProp.CounterPartyName, TradeProp.Party2); //party2 extraProps.Set(TradeProp.AsAtDate, DateTime.Today); var tradeType = ProductTypeHelper.TradeTypeHelper(tradeVersion.Item); var currencies = tradeVersion.Item.GetRequiredCurrencies().ToArray(); var curves = tradeVersion.Item.GetRequiredPricingStructures().ToArray(); extraProps.Set(TradeProp.RequiredPricingStructures, curves); extraProps.Set(TradeProp.RequiredCurrencies, currencies); extraProps.Set(TradeProp.TradeType, tradeType.ToString()); //extraProps.Set(TradeProp.ProductType, tradeType.ToString()); string idSuffix = String.Format("{0}.{1}", tradeType, tradeId.Value); ItemInfo itemInfo = MakeTradeProps("Trade", idSuffix, extraProps); logger.LogDebug(" {0} ...", idSuffix); targetClient.SaveObject(tradeVersion, itemInfo.ItemName, itemInfo.ItemProps, false, TimeSpan.MaxValue); }
private void ValueStripMenuItemClick(object sender, EventArgs e) { var itemToValue = treeNavigation.SelectedNode?.Tag as ICoreItem; if (itemToValue == null) { return; } var schema = itemToValue.AppProps.GetValue <string>(TradeProp.Schema, true); Trade trade; if (schema == FpML5R3NameSpaces.ConfirmationSchema) { var xml = itemToValue.Text; //XmlSerializerHelper.SerializeToString(itemToValue.Data); var newxml = xml.Replace("FpML-5/confirmation", "FpML-5/reporting"); trade = XmlSerializerHelper.DeserializeFromString <Trade>(newxml); } else { trade = XmlSerializerHelper.DeserializeFromString <Trade>(itemToValue.Text); } if (trade != null) { // the item var properties = itemToValue.AppProps; var party1 = properties.GetValue <string>(TradeProp.Party1, true); var baseParty = comboBoxParty.Text == party1 ? "Party1" : "Party2"; var nameSpace = properties.GetValue <string>(EnvironmentProp.NameSpace, true); var valuationDate = dateTimePickerValuation.Value; var market = comboBoxMarket.Items[comboBoxMarket.SelectedIndex].ToString(); var reportingCurrency = comboBoxCurrency.Items[comboBoxCurrency.SelectedIndex].ToString(); //Predefined metrics var metrics = new List <string> { "NPV", "Delta0", "Delta1", "LocalCurrencyNPV", "NFV" }; var requestedMetrics = listBoxMetrics.SelectedItems; foreach (var metric in requestedMetrics) { if (!metrics.Contains(metric.ToString())) { metrics.Add(metric.ToString()); } } var uniqueTradeId = itemToValue.Name; var product = trade.Item; try { _loggerRef.Target.LogDebug("Valuing the trade: ." + uniqueTradeId); var pricer = new TradePricer(_loggerRef.Target, _client, nameSpace, null, trade, itemToValue.AppProps); //Get the market var marketEnviroment = CurveEngine.GetMarket(_loggerRef.Target, _client, nameSpace, product, market, reportingCurrency, false); var controller = TradePricer.CreateInstrumentModelData(metrics, valuationDate, marketEnviroment, reportingCurrency, baseParty); var assetValuationReport = pricer.Price(controller, ValuationReportType.Full); _loggerRef.Target.LogDebug("Valued the trade: ." + uniqueTradeId); var id = uniqueTradeId.Split('.')[uniqueTradeId.Split('.').Length - 1]; //Build the val report properties var valProperties = properties.Clone(); //Trade type var tradeType = ProductTypeHelper.TradeTypeHelper(product); valProperties.Set(ValueProp.PortfolioId, tradeType + "." + id); valProperties.Set(ValueProp.BaseParty, baseParty); valProperties.Set(ValueProp.MarketName, market); valProperties.Set(ValueProp.CalculationDateTime, valuationDate); valProperties.Set(TradeProp.UniqueIdentifier, null); //The unique identifier for the valuation report var valuationIdentifier = new ValuationReportIdentifier(valProperties); _client.SaveObject(assetValuationReport, nameSpace + "." + valuationIdentifier.UniqueIdentifier, valProperties); _loggerRef.Target.LogDebug("Valued and saved results for the trade: {0}", uniqueTradeId); } catch (Exception excp) { MessageBox.Show(excp.ToString(), Resources.CoreViewerForm_ValueStripMenuItemClick_Value_failed, MessageBoxButtons.OK, MessageBoxIcon.Error); } } }