コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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);
        }