public PrivateCoreTests() { _client = new PrivateCore(new TraceLogger(false)); Dictionary <string, object> properties = new Dictionary <string, object>(); NamedValueSet namedValueSet = new NamedValueSet(properties); Market market0 = new Market { id = "Market0" }; _client.SaveObject(market0, market0.id, namedValueSet, TimeSpan.MaxValue); Market market1 = new Market { id = "Market1" }; _client.SaveObject(market1, market1.id, namedValueSet, TimeSpan.MaxValue); Market market2 = new Market { id = "Market2" }; _client.SaveObject(market2, market2.id, namedValueSet, TimeSpan.MaxValue); Market market3 = new Market { id = "Market3" }; _client.SaveObject(market3, market3.id, namedValueSet, TimeSpan.MaxValue); }
private static void PublishWorkerResponse(ICoreClient client, InternalRequest internalRequest, string hostInstance) { if (internalRequest.Status == RequestStatusEnum.Undefined) { throw new ArgumentNullException("status"); } WorkerResponse response = new WorkerResponse() { RequestId = internalRequest.RequestId.ToString(), WorkerHostComputer = Environment.MachineName, WorkerHostInstance = hostInstance, Status = internalRequest.Status, FaultDetail = internalRequest.FaultDetail }; UserIdentity requesterId = null; if (internalRequest.ExternalRequest != null) { requesterId = internalRequest.ExternalRequest.RequesterId; } if ((requesterId == null) && (internalRequest.Cancellation != null)) { requesterId = internalRequest.Cancellation.RequesterId; } response.RequesterId = requesterId; if ((response.Status == RequestStatusEnum.Cancelled) && (internalRequest.Cancellation != null)) { response.CancelReason = internalRequest.Cancellation.CancelReason; } client.SaveObject <WorkerResponse>(response); }
private static void PublishManagerResponse(ICoreClient client, InternalRequest internalRequest) { if (internalRequest.Status == RequestStatusEnum.Undefined) { throw new ArgumentNullException("status"); } ManagerResponse response = new ManagerResponse() { RequestId = internalRequest.RequestId.ToString(), Status = internalRequest.Status, FaultDetail = internalRequest.FaultDetail }; UserIdentity requesterId = null; if (internalRequest.ExternalRequest != null) { requesterId = internalRequest.ExternalRequest.RequesterId; } if ((requesterId == null) && (internalRequest.Cancellation != null)) { requesterId = internalRequest.Cancellation.RequesterId; } response.RequesterId = requesterId; if ((response.Status == RequestStatusEnum.Cancelled) && (internalRequest.Cancellation != null)) { response.CancelReason = internalRequest.Cancellation.CancelReason; } client.SaveObject <ManagerResponse>(response); }
public void ConvertQuotedAssetSetsToRateCurveDefinition() { const string curveType = "RateCurve"; using (var logger = Reference <ILogger> .Create(new TraceLogger(true))) { using (ICoreClient client = (new CoreClientFactory(logger)).SetEnv(BuildConst.BuildEnv).Create()) { IterateCurveProperties((ccy, index, marketName, tenor) => { string indexName = $"{ccy}-{index}"; string curveName = $"{indexName}-{tenor}"; string qasItemName = String.Format("Orion.V5r3.QuotedAssetSet.{0}.{4}.{1}-{2}-{3}", marketName, ccy, index, tenor, curveType); // outputs string curveItemName = String.Format("Orion.V5r3.Configuration.PricingStructures.{0}.{4}.{1}-{2}-{3}", marketName, ccy, index, tenor, curveType); var marketData = client.LoadObject <QuotedAssetSet>(qasItemName); if (marketData != null) { RemoveMarketQuoteValues(marketData); var curveDef = new Market { id = curveName, Items = new PricingStructure[] { new YieldCurve { id = curveName } }, Items1 = new PricingStructureValuation[] { new YieldCurveValuation { id = curveName, inputs = marketData } } }; var curveProps = new NamedValueSet(); curveProps.Set(CurveProp.Market, marketName); curveProps.Set(CurveProp.PricingStructureType, curveType); curveProps.Set(CurveProp.IndexName, indexName); curveProps.Set(CurveProp.IndexTenor, tenor); curveProps.Set(CurveProp.CurveName, curveName); curveProps.Set("Algorithm", "FastLinearZero"); curveProps.Set(CurveProp.Currency1, ccy); curveProps.Set(CurveProp.DataGroup, "Orion.V5r3.Configuration.PricingStructureType"); curveProps.Set("SourceSystem", "Orion"); curveProps.Set("Function", "Configuration"); curveProps.Set("Type", CurveProp.PricingStructureType); curveProps.Set(CurveProp.UniqueIdentifier, curveItemName); client.SaveObject(curveDef, curveItemName, curveProps, 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); } } }
public void ConvertQuotedAssetSetsToDiscountCurveDefinition() { using (var logger = Reference <ILogger> .Create(new TraceLogger(true))) { using (ICoreClient client = (new CoreClientFactory(logger)).SetEnv(BuildConst.BuildEnv).Create()) { const string instrument = "LIBOR"; const string seniority = "SENIOR"; foreach (string ccy in "AUD;USD;EUR;NZD;GBP".Split(';')) { foreach (string marketName in CurveConst.QR_LIVE.Split(';')) { //foreach (string tenor in "3M".Split(';')) { //string indexName = String.Format("{0}-{1}", ccy, index); string curveName = $"{ccy}-{instrument}-{seniority}"; string qasItemName = $"Orion.V5r3.MarketData.{marketName}.DiscountCurve.{curveName}"; // outputs string curveItemName = $"Orion.V5r3.Configuration.PricingStructures.{marketName}.DiscountCurve.{curveName}"; var marketData = client.LoadObject <QuotedAssetSet>(qasItemName); if (marketData != null) { // strip out market quote values foreach (var tradeItem in marketData.assetQuote) { foreach (var quote in tradeItem.quote) { if (quote.measureType.Value == "MarketQuote") { quote.valueSpecified = false; quote.value = 0.0m; } } } var curveDef = new Market { id = curveName, Items = new PricingStructure[] { new YieldCurve { id = curveName } }, Items1 = new PricingStructureValuation[] { new YieldCurveValuation { id = curveName, inputs = marketData } } }; var curveProps = new NamedValueSet(); curveProps.Set(CurveProp.Market, marketName); curveProps.Set(CurveProp.PricingStructureType, "DiscountCurve"); //curveProps.Set(CurveProp.IndexName, indexName); //curveProps.Set(CurveProp.IndexTenor, tenor); curveProps.Set("CreditInstrumentId", instrument); curveProps.Set("CreditSeniority", seniority); curveProps.Set(CurveProp.CurveName, curveName); curveProps.Set("Algorithm", "FastLinearZero"); curveProps.Set(CurveProp.Currency1, ccy); curveProps.Set(CurveProp.DataGroup, "Orion.V5r3.Configuration.PricingStructureType"); curveProps.Set("SourceSystem", "Orion"); curveProps.Set("Function", "Configuration"); curveProps.Set("Type", CurveProp.PricingStructureType); curveProps.Set(CurveProp.UniqueIdentifier, curveItemName); client.SaveObject(curveDef, curveItemName, curveProps, TimeSpan.MaxValue); } } } } } } }