private double GetOriginalOrSmoothBondSpread(HistSeriesInputPanelViewModel vm, BondSpreadResult bondSpreadResult)
 {
     return IsSmooth ? SmoothLiveBondSpread(vm, bondSpreadResult) : bondSpreadResult.BondSpread;
 }
        private double SmoothLiveBondSpread(HistSeriesInputPanelViewModel vm, BondSpreadResult bondSpreadResult)
        {
            // firstly we compare if the contract has change

            // if not change
            double smooth;
            if(vm.SeriesData.Dates.Last() == DateTime.Today)
                smooth = vm.SeriesData.Data.SkipLast().Last() + (bondSpreadResult.BondSpread - vm.OriginalLastPoint);
            else
                smooth = vm.SeriesData.Data.Last() + (bondSpreadResult.BondSpread - vm.OriginalLastPoint);

            // if change
            // todo! to implement because we have no way to find out the live ctd yet
            //var smooth = vm.SeriesData.Data.Last() + (bondSpreadResult.oBondSpread - vm.OriginalLastPoint);

            return smooth;
        }
 public void AddInputPanelVM(HistSeriesInputPanelViewModel vm)
 {
     CTInputVM.Add(vm);   
 }
        private Tuple<bool, IStructure, DatedDataCollectionGen<double>> getData(int indx, bool isSmooth, DateTime endDate)
        {
            Logger.Info("Get data..", typeof(HistSeriesChartViewModel));
            var o = CTDs.Structures.StructureFactory.GetStructure(CTInputVM[indx].KnownStructure, CTInputVM[indx].StructureEquation);

            o.Configure(m_cd.Components);


            ChartData carbonData=null;
            if(useCarbonRoll)
                carbonData = m_cd.GetDataFromCarbonFrame();

            var dataSeries = useCarbonRoll ? (isSmooth ? carbonData.SmoothedData : carbonData.OriginalData) :
                                        (isSmooth ? m_cd.GetData2().SmoothedData : m_cd.GetData2().OriginalData);
            var dataWithRange = dataSeries.GetValuesBetweenDates(new DateTime(StartYear, 1, 1), endDate);     
            CTInputVM[indx].SeriesData = dataWithRange;
            CTInputVM[indx].OriginalLastPoint = useCarbonRoll ? carbonData.OriginalData.LastDataValue : m_cd.GetData2().OriginalData.LastDataValue;

            // get live data            

            var components = m_cd.Components.Where(x => x.IsReady()).ToList();
            if (m_live != null && !HasTechnicals)
            {
                var subscriptionId = m_live.SubscribeAndCompute(components, BondCurves.USD3mLibor,
                    BondAnalytics.Country.US); // using US unless we know the country of the CT/CTDs..
                subscriptions[subscriptionId] = new HistSeriesInputPanelViewModel()
                                                        {
                                                            KnownStructure = CTInputVM[indx].KnownStructure,
                                                            SeriesData = CTInputVM[indx].SeriesData,                                                            
                                                            Ticker = CTInputVM[indx].Ticker,
                                                            Type = CTInputVM[indx].Type,
                                                            OriginalLastPoint =  CTInputVM[indx].OriginalLastPoint,
                                                        };

                //if (liveSpread != null & !double.IsNaN(liveSpread))
                //{
                //    dataSeries.SetValueOnDate(DateTime.Today, liveSpread);
                //}
            }

            return new Tuple<bool, CTDs.Structures.IStructure, DatedDataCollectionGen<double>>(true, o, dataSeries);
        }
예제 #5
0
 private void AddNewInputPanel()
 {
     if (ViewModel.HistSeriesInputType == HistSeriesType.CT)
     {
         var histSeriesInput = new HistSeriesInputPanel();
         var inputPanelVM = new HistSeriesInputPanelViewModel();
         histSeriesInput.ViewModel = inputPanelVM;
         ViewModel.AddInputPanelVM(inputPanelVM);
         flowLayoutPanel1.Controls.Add(histSeriesInput);    
     }
     else if (ViewModel.HistSeriesInputType == HistSeriesType.CMT)
     {
         var histSeriesInput = new HistSeriesCMTInputPanel();
         var inputPanelVM = new HistSeriesCMTInputPanelViewModel();
         histSeriesInput.ViewModel = inputPanelVM;                
         ViewModel.AddCMTInputPanelVM(inputPanelVM);
         flowLayoutPanel1.Controls.Add(histSeriesInput);  
     }
     else if (ViewModel.HistSeriesInputType == HistSeriesType.Future)
     {
         var histSeriesInput = new HistSeriesFutureInputPanel();
         var inputPanelVM = new HistSeriesFutureInputPanelViewModel();
         histSeriesInput.ViewModel = inputPanelVM;
         ViewModel.AddFutureInputPanelVM(inputPanelVM);
         flowLayoutPanel1.Controls.Add(histSeriesInput);
     }
     else if (ViewModel.HistSeriesInputType == HistSeriesType.Bbg)
     {
         var histSeriesInput = new HistSeriesBbgInputPanel();
         var inputPanelVM = new HistSeriesBbgInputViewModel();
         histSeriesInput.ViewModel = inputPanelVM;
         ViewModel.AddBbgInputPanelVM(inputPanelVM);
         flowLayoutPanel1.Controls.Add(histSeriesInput);
     }
 }