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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
                        }
                    });
                }
            }
        }
Esempio n. 5
0
        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);
                }
            }
        }
Esempio n. 6
0
        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);
                                }
                            }
                        }
                    }
                }
            }
        }