public void Ctor_AssignsVariables_Correctly() { var bid = new Money(100, "GBP"); var ask = new Money(99, "GBP"); var price = new Money(101, "GBP"); var volume = new Volume(909); var spreadTimeBar = new SpreadTimeBar(bid, ask, price, volume); Assert.AreEqual(bid, spreadTimeBar.Bid); Assert.AreEqual(ask, spreadTimeBar.Ask); Assert.AreEqual(price, spreadTimeBar.Price); Assert.AreEqual(volume, spreadTimeBar.Volume); }
public void TickSecurity_UpdatesWithNewTickData_Printing100IterationWalk() { var strategy = new MarkovEquityStrategy(); var identifiers = new InstrumentIdentifiers( string.Empty, string.Empty, string.Empty, "MSFT", "MS12345", "MSF123456789", "MSFT", "MSF12341234", "MSFT", "MSFT", "MSFT", "MSFT"); var security = new FinancialInstrument( InstrumentTypes.Equity, identifiers, "Microsoft", "CFI", "USD", "Microsoft Company"); var spread = new SpreadTimeBar( new Money(66, "GBP"), new Money(65, "GBP"), new Money(65, "GBP"), new Volume(200000)); var tick = new EquityInstrumentIntraDayTimeBar( security, spread, new DailySummaryTimeBar(1000, "USD", null, 1000, new Volume(200000), DateTime.UtcNow), DateTime.UtcNow, new Market("1", "NASDAQ", "NASDAQ", MarketTypes.STOCKEXCHANGE)); var printableInitialSecurity = JsonConvert.SerializeObject(security); Console.WriteLine(printableInitialSecurity); for (var i = 0; i < 99; i++) { tick = strategy.AdvanceFrame(tick, DateTime.UtcNow, true); var printableGeneratedSecurity = JsonConvert.SerializeObject(security); Console.WriteLine(printableGeneratedSecurity); Assert.IsTrue(tick.SpreadTimeBar.Bid.Value >= tick.SpreadTimeBar.Ask.Value); } }
private IUniverseEvent MapRowToFixedIncomeIntradayMarketDataEvent(IntradayMarketDataParameters marketDataParam) { if (marketDataParam == null) { return(null); } if (string.IsNullOrWhiteSpace(marketDataParam.SecurityName) || !this._securitySelection.Securities.ContainsKey(marketDataParam.SecurityName)) { this._scenarioContext.Pending(); return(null); } if (marketDataParam.Bid == null || marketDataParam.Ask == null || marketDataParam.Price == null) { this._scenarioContext.Pending(); return(null); } var security = this._securitySelection.Securities[marketDataParam.SecurityName]; var bid = this.MapToMoney(marketDataParam.Bid, marketDataParam.Currency); var ask = this.MapToMoney(marketDataParam.Ask, marketDataParam.Currency); var price = this.MapToMoney(marketDataParam.Price, marketDataParam.Currency); var volume = new Volume(marketDataParam.Volume.GetValueOrDefault(0)); var intradayPrices = new SpreadTimeBar(bid.Value, ask.Value, price.Value, volume); var marketData = new FixedIncomeInstrumentIntraDayTimeBar( security.Instrument, intradayPrices, null, marketDataParam.Epoch, security.Market); var timeBarCollection = new FixedIncomeIntraDayTimeBarCollection( security.Market, marketDataParam.Epoch, new[] { marketData }); var universeEvent = new UniverseEvent( UniverseStateEvent.FixedIncomeIntraDayTick, marketDataParam.Epoch, timeBarCollection); return(universeEvent); }
public EquityInstrumentIntraDayTimeBar AdvanceFrame( EquityInstrumentIntraDayTimeBar tick, DateTime advanceTick, bool walkIntraday) { if (tick == null) { return(null); } var newBuy = this.CalculateNewBuyValue(tick); var newSell = this.CalculateNewSellValue(tick, newBuy); var newVolume = this.CalculateNewVolume(tick); var newSpread = new SpreadTimeBar( new Money(newBuy, tick.SpreadTimeBar.Bid.Currency), new Money(newSell, tick.SpreadTimeBar.Ask.Currency), new Money(newBuy, tick.SpreadTimeBar.Bid.Currency), newVolume); var newMarketCap = (tick.DailySummaryTimeBar.ListedSecurities ?? tick.DailySummaryTimeBar.DailyVolume.Traded) * newBuy; var newIntraday = walkIntraday ? this.BuildIntraday(tick, newBuy, tick.SpreadTimeBar.Bid.Currency.Code) : tick.DailySummaryTimeBar.IntradayPrices ?? this.BuildIntraday( tick, newBuy, tick.SpreadTimeBar.Bid.Currency.Code); var newDaily = new DailySummaryTimeBar( newMarketCap, "USD", newIntraday, tick.DailySummaryTimeBar.ListedSecurities, tick.DailySummaryTimeBar.DailyVolume, advanceTick); return(new EquityInstrumentIntraDayTimeBar(tick.Security, newSpread, newDaily, advanceTick, tick.Market)); }
public void Ctor_AssignsVariables_Correctly() { var fi = new FinancialInstrument(); var prices = new IntradayPrices(null, null, null, null); var dates = DateTime.UtcNow; var spreadTb = new SpreadTimeBar( new Money(100, "GBP"), new Money(100, "GBP"), new Money(100, "GBP"), new Volume(99)); var dailyTb = new DailySummaryTimeBar(100, "USD", prices, 123, new Volume(123), dates); var market = new Market("1", "XLON", "London Stock Exchange", MarketTypes.DealerBooks); var equityTimeBar = new EquityInstrumentIntraDayTimeBar(fi, spreadTb, dailyTb, dates, market); Assert.AreEqual(fi, equityTimeBar.Security); Assert.AreEqual(spreadTb, equityTimeBar.SpreadTimeBar); Assert.AreEqual(dailyTb, equityTimeBar.DailySummaryTimeBar); Assert.AreEqual(dates, equityTimeBar.TimeStamp); Assert.AreEqual(market, equityTimeBar.Market); }