public HistSeriesChartViewModel() { var rollsetting = new RollSettings {DataSource = RollDataSource.CarbonLive}; futureRollCache = new FutureRollCache(rollsetting); // we use carbon live for this. futureContracts = FutureContractsFactory.CreateFutureContracts(); var task = new Task(() => { try { var bonds = Generator.Go(Generator.CashBondRolling.Monthly); var dictionary = new Dictionary<BondCurves, List<CTDLine<BondSpreads>>> { {BondCurves.USD3mLibor, Generator.GetSpreads(bonds, BondCurves.USD3mLibor)} }; m_cd = new ChartDataSource(chartComponents_: new[] { new ChartComponent(), new ChartComponent(), new ChartComponent() }, bonds_: bonds, spreads_: dictionary ); // subscribe to live curve and live bonds m_live = new LiveDataModel(bonds.Last()); } catch (Exception ex_) { Logger.Error("Error building CTD data for seasonality application", typeof(HistSeriesChartViewModel), ex_); } }); task.ContinueWith( t => { // hook up carbon and live data result m_live.SubscribeForLiveCurveAndBondPrices(); }); task.ContinueWith(t => m_live.BondSpreadModel().BondSpreadResultObservable().Where(b => b != null) .ObserveOn(SynchronizationContext.Current) .Subscribe(LiveChartUpdate), TaskScheduler.FromCurrentSynchronizationContext()); task.Start(); }
public LiveBondSpreadModel(CTDLine<Bond> bond, LiveDataModel liveDataModel) { _bond = bond; _liveDataModel = liveDataModel; }
public void ShouldGetLiveBondPrices() { // get the last ct/ctd bond var bond = Generator.Go(Generator.CashBondRolling.Monthly).Last(); var liveDataModel = new LiveDataModel(bond); }