public void InitiateWalk_GeneratesSubsequentTicks_AsExpected() { var randomWalkStrategy = new MarkovEquityStrategy(); var randomWalk = new EquitiesMarkovProcess( new NasdaqInitialiser(), randomWalkStrategy, this._heartbeat, this._logger); var stream = new ExchangeStream(new UnsubscriberFactory <EquityIntraDayTimeBarCollection>()); var observer = new RecordingObserver <EquityIntraDayTimeBarCollection>(this._logger, 5); stream.Subscribe(observer); randomWalk.InitiateWalk(stream); var timeOut = DateTime.UtcNow.AddSeconds(5); while (observer.Buffer.Count < 2 && DateTime.UtcNow < timeOut) { // don't sleep the thread } Assert.AreEqual(observer.Buffer.Count, 2); randomWalk.TerminateWalk(); }
public void TickSecurity_ReturnsNullTick_ForNullArgument() { var strategy = new MarkovEquityStrategy(); var result = strategy.AdvanceFrame(null, DateTime.UtcNow, true); Assert.IsNull(result); }
public IEquityDataGenerator Finish() { var equityDataStrategy = new MarkovEquityStrategy(); var nasdaqInitialiser = new NasdaqInitialiser(); var equityDataGenerator = new EquitiesMarkovProcess( nasdaqInitialiser, equityDataStrategy, this._heartbeat, this._logger); return(equityDataGenerator); }
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); } }
public void InitiateWalk_ReceivesTicks_AfterInitiationImmediately() { var randomWalkStrategy = new MarkovEquityStrategy(); var randomWalk = new EquitiesMarkovProcess( this._exchangeTickInitialiser, randomWalkStrategy, this._heartbeat, this._logger); var stream = new ExchangeStream(new UnsubscriberFactory <EquityIntraDayTimeBarCollection>()); var observer = new RecordingObserver <EquityIntraDayTimeBarCollection>(this._logger, 10); stream.Subscribe(observer); randomWalk.InitiateWalk(stream); Assert.AreEqual(observer.Buffer.Count, 1); randomWalk.TerminateWalk(); }