Beispiel #1
0
 public RatesObj(RatesObj ratesObj, Decimal newValue)
 {
     Created      = DateTime.Now;
     Publisher    = ratesObj.Publisher;
     InstrumentId = ratesObj.InstrumentId;
     Instrument   = ratesObj.Instrument;
     Currency     = ratesObj.Currency;
     Term         = ratesObj.Term;
     Rate1        = ratesObj.Rate1 + newValue;
     Rate1Measure = ratesObj.Rate1Measure;
     Rate1Quotes  = ratesObj.Rate1Quotes;
     if (ratesObj.Rate2 != null)
     {
         Rate2        = ratesObj.Rate2;
         Rate2Measure = ratesObj.Rate2Measure;
         Rate2Quotes  = ratesObj.Rate2Quotes;
     }
 }
 private void ProcessItem(Market market)
 {
     if (market?.Items1?[0] is YieldCurveValuation psv && psv.inputs != null)
     {
         int index = 0;
         foreach (var asset in psv.inputs.instrumentSet.Items)
         {
             var item = new RatesObj(asset, psv.inputs.assetQuote[index]);
             _qasBaseView.Add(new RatesObj(item, 0.0m));
             _qasDefView.UpdateData(new ViewChangeNotification <RatesObj>
             {
                 OldData = item,
                 NewData = item
             });
             index++;
         }
     }
 }
Beispiel #3
0
        private void OnTimedEvent(object source, EventArgs e)
        {
            var newValue = _rand.Next(-100, 101);
            //1. Update the rates with a random adjustment
            //
            var value          = Convert.ToDecimal(newValue) / 100000.0m;
            var rateChangeList = new List <RatesObj>();

            foreach (var asset in _qasBaseView)
            {
                var item = new RatesObj(asset, value);
                rateChangeList.Add(item);
                _qasDefView.UpdateData(new ViewChangeNotification <RatesObj>
                {
                    OldData = item,
                    NewData = item
                });
            }
            _loggerRef.Target.LogDebug("Update market data shifted by: {0} %", value * 100.0m);
            //2. Publish the QuotedAssetSet to the cache.
            //
            var qasProperties = _curveProperties.Clone();
            var curveName     = qasProperties.GetValue <String>(CurveProp.CurveName);
            var curveType     = qasProperties.GetValue <String>(CurveProp.PricingStructureType);
            var market        = qasProperties.GetValue <String>(CurveProp.Market);//Use Market for real time.
            var nameSpace     = qasProperties.GetValue <String>(EnvironmentProp.NameSpace);
            var itemName      = FunctionProp.QuotedAssetSet + "." + market + "." + curveType + "." + curveName;

            qasProperties.Set(EnvironmentProp.DataGroup, nameSpace + "." + FunctionProp.QuotedAssetSet);
            qasProperties.Set(EnvironmentProp.Function, FunctionProp.QuotedAssetSet.ToString());
            qasProperties.Set(CurveProp.BuildDateTime, DateTime.Now);
            qasProperties.Set(CurveProp.UniqueIdentifier, itemName);
            var assetIdentifiers = new List <String>();

            foreach (var asset in rateChangeList)
            {
                assetIdentifiers.AddRange(asset.GetAssetIds());
            }
            var values = new List <Decimal>();

            foreach (var asset in rateChangeList)
            {
                values.AddRange(asset.GetValues());
            }
            var measureTypes = new List <String>();

            foreach (var asset in rateChangeList)
            {
                measureTypes.AddRange(asset.GetMeasureTypes());
            }
            var priceQuoteUnits = new List <String>();

            foreach (var asset in rateChangeList)
            {
                priceQuoteUnits.AddRange(asset.GetPriceQuoteUnits());
            }
            var liveQAS = AssetHelper.Parse(assetIdentifiers.ToArray(), values.ToArray(), measureTypes.ToArray(), priceQuoteUnits.ToArray());

            //TODO Populate the market data set.
            _cache.SaveObject(liveQAS, nameSpace + "." + itemName, qasProperties, false, TimeSpan.FromDays(7));
            _loggerRef.Target.LogDebug("Publish new market data at:{0}", DateTime.Now);
        }