Ejemplo n.º 1
0
        public void Setup()
        {
            var sunday      = new LocalMarketHours(DayOfWeek.Sunday, new TimeSpan(17, 0, 0), TimeSpan.FromTicks(Time.OneDay.Ticks - 1));
            var monday      = LocalMarketHours.OpenAllDay(DayOfWeek.Monday);
            var tuesday     = LocalMarketHours.OpenAllDay(DayOfWeek.Tuesday);
            var wednesday   = LocalMarketHours.OpenAllDay(DayOfWeek.Wednesday);
            var thursday    = LocalMarketHours.OpenAllDay(DayOfWeek.Thursday);
            var friday      = new LocalMarketHours(DayOfWeek.Friday, TimeSpan.Zero, new TimeSpan(17, 0, 0));
            var earlyCloses = new Dictionary <DateTime, TimeSpan>();
            var lateOpens   = new Dictionary <DateTime, TimeSpan>();

            _exchangeHours = new SecurityExchangeHours(TimeZones.NewYork, USHoliday.Dates.Select(x => x.Date), new[]
            {
                sunday, monday, tuesday, wednesday, thursday, friday
            }.ToDictionary(x => x.DayOfWeek), earlyCloses, lateOpens);

            _liveTradingDataFeed = new TestableLiveTradingDataFeed();

            var jobPacket = new LiveNodePacket()
            {
                DeployId         = "",
                Brokerage        = BrokerageName.OandaBrokerage.ToString(),
                DataQueueHandler = "LiveDataQueue"
            };

            var algo = new TestAlgorithm();
            var marketHoursDatabase      = MarketHoursDatabase.FromDataFolder();
            var symbolPropertiesDataBase = SymbolPropertiesDatabase.FromDataFolder();
            var dataPermissionManager    = new DataPermissionManager();
            var dataManager = new DataManager(_liveTradingDataFeed,
                                              new UniverseSelection(
                                                  algo,
                                                  new SecurityService(algo.Portfolio.CashBook, marketHoursDatabase, symbolPropertiesDataBase, algo, RegisteredSecurityDataTypesProvider.Null, new SecurityCacheProvider(algo.Portfolio)),
                                                  dataPermissionManager),
                                              algo,
                                              algo.TimeKeeper,
                                              marketHoursDatabase,
                                              true,
                                              RegisteredSecurityDataTypesProvider.Null,
                                              dataPermissionManager);

            algo.SubscriptionManager.SetDataManager(dataManager);
            var synchronizer = new LiveSynchronizer();

            synchronizer.Initialize(algo, dataManager);
            _liveTradingDataFeed.Initialize(algo, jobPacket, new LiveTradingResultHandler(), new LocalDiskMapFileProvider(),
                                            null, new DefaultDataProvider(), dataManager, synchronizer, new DataChannelProvider());
            algo.Initialize();

            _config = SecurityTests.CreateTradeBarConfig();
        }
Ejemplo n.º 2
0
        public void LoadsHoldingsForExpectedMarket()
        {
            var symbol = Symbol.Create("AUDUSD", SecurityType.Forex, Market.Oanda);

            var algorithm = new TestAlgorithm();

            algorithm.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage);

            algorithm.SetHistoryProvider(new BrokerageTransactionHandlerTests.BrokerageTransactionHandlerTests.EmptyHistoryProvider());
            var job = new LiveNodePacket
            {
                UserId           = 1,
                ProjectId        = 1,
                DeployId         = "1",
                Brokerage        = "PaperBrokerage",
                DataQueueHandler = "none"
            };

            // Increasing RAM limit, else the tests fail. This is happening in master, when running all the tests together, locally (not travis).
            job.Controls.RamAllocation = 1024 * 1024 * 1024;

            var resultHandler      = new Mock <IResultHandler>();
            var transactionHandler = new Mock <ITransactionHandler>();
            var realTimeHandler    = new Mock <IRealTimeHandler>();
            var brokerage          = new Mock <IBrokerage>();
            var objectStore        = new Mock <IObjectStore>();

            brokerage.Setup(x => x.IsConnected).Returns(true);
            brokerage.Setup(x => x.GetCashBalance()).Returns(new List <CashAmount>());
            brokerage.Setup(x => x.GetAccountHoldings()).Returns(new List <Holding>
            {
                new Holding {
                    Symbol = symbol, Type = symbol.SecurityType, Quantity = 100
                }
            });
            brokerage.Setup(x => x.GetOpenOrders()).Returns(new List <Order>());

            var setupHandler = new BrokerageSetupHandler();

            IBrokerageFactory factory;

            setupHandler.CreateBrokerage(job, algorithm, out factory);

            Assert.IsTrue(setupHandler.Setup(new SetupHandlerParameters(_dataManager.UniverseSelection, algorithm, brokerage.Object, job, resultHandler.Object,
                                                                        transactionHandler.Object, realTimeHandler.Object, objectStore.Object)));

            Security security;

            Assert.IsTrue(algorithm.Portfolio.Securities.TryGetValue(symbol, out security));
            Assert.AreEqual(symbol, security.Symbol);
        }
Ejemplo n.º 3
0
        public void LoadsExistingHoldingsAndOrders(Func <List <Holding> > getHoldings, Func <List <Order> > getOrders, bool expected)
        {
            var algorithm = new TestAlgorithm();

            algorithm.SetHistoryProvider(new BrokerageTransactionHandlerTests.BrokerageTransactionHandlerTests.EmptyHistoryProvider());
            var job = new LiveNodePacket
            {
                UserId           = 1,
                ProjectId        = 1,
                DeployId         = "1",
                Brokerage        = "PaperBrokerage",
                DataQueueHandler = "none"
            };

            // Increasing RAM limit, else the tests fail. This is happening in master, when running all the tests together, locally (not travis).
            job.Controls.RamAllocation = 1024 * 1024 * 1024;

            var resultHandler      = new Mock <IResultHandler>();
            var transactionHandler = new Mock <ITransactionHandler>();
            var realTimeHandler    = new Mock <IRealTimeHandler>();
            var objectStore        = new Mock <IObjectStore>();
            var brokerage          = new Mock <IBrokerage>();

            brokerage.Setup(x => x.IsConnected).Returns(true);
            brokerage.Setup(x => x.AccountBaseCurrency).Returns(Currencies.USD);
            brokerage.Setup(x => x.GetCashBalance()).Returns(new List <CashAmount>());
            brokerage.Setup(x => x.GetAccountHoldings()).Returns(getHoldings);
            brokerage.Setup(x => x.GetOpenOrders()).Returns(getOrders);

            var setupHandler = new BrokerageSetupHandler();

            IBrokerageFactory factory;

            setupHandler.CreateBrokerage(job, algorithm, out factory);

            var result = setupHandler.Setup(new SetupHandlerParameters(_dataManager.UniverseSelection, algorithm, brokerage.Object, job, resultHandler.Object,
                                                                       transactionHandler.Object, realTimeHandler.Object, objectStore.Object));

            Assert.AreEqual(expected, result);

            foreach (var security in algorithm.Securities.Values)
            {
                if (security.Symbol.SecurityType == SecurityType.Option)
                {
                    Assert.AreEqual(DataNormalizationMode.Raw, security.DataNormalizationMode);

                    var underlyingSecurity = algorithm.Securities[security.Symbol.Underlying];
                    Assert.AreEqual(DataNormalizationMode.Raw, underlyingSecurity.DataNormalizationMode);
                }
            }
        }
Ejemplo n.º 4
0
        private static void Main(string[] args)
        {
            Write("Select a size field row: ");
            var sizeRow = int.Parse(ReadLine());

            Write("Select a size field column: ");
            var sizeColumn = int.Parse(ReadLine());

            Write("Select a count mine: ");
            var mine = int.Parse(ReadLine());
            var game = new GameField(sizeRow, sizeColumn, mine);

            game.GenerateMines();
            var field = new Сell(0, 0);

            do
            {
                Clear();
                WriteLine("Size: R ={0,4} C ={1,4}; Count mine: {2,4};", game.Size.Row, game.Size.Column, game.CountMines);
                Write(game);

                if (game.Status == GameStatus.Play)
                {
                    WriteLine("Press the key");
                    WriteLine("1. Enter your cell");
                    WriteLine("2. Use the algorithm");

                    switch (ReadKey().Key)
                    {
                    case ConsoleKey.NumPad1:
                        WriteLine();
                        field = SelectCell();
                        break;

                    default:
                        field = TestAlgorithm.GetСhoice(game.VisibleСells, game.Marks, game.Size, game.CountMines);
                        break;
                    }

                    WriteLine(field);
                    game.OpenCell(field);
                    Write(game);
                }
                else
                {
                    WriteLine(field);
                    Write(game.Status);
                }
            }while (ReadKey().Key != ConsoleKey.Q);
        }
Ejemplo n.º 5
0
        public void AlgorithmTimeIsSetToUtcNowBeforePostInitialize()
        {
            var           time      = DateTime.UtcNow;
            TestAlgorithm algorithm = null;

            algorithm = new TestAlgorithm(() =>
            {
                Assert.That(algorithm.UtcTime > time);
            });

            Assert.AreEqual(new DateTime(1998, 1, 1), algorithm.UtcTime);

            algorithm.SetHistoryProvider(new BrokerageTransactionHandlerTests.BrokerageTransactionHandlerTests.EmptyHistoryProvider());
            var job = new LiveNodePacket
            {
                UserId           = 1,
                ProjectId        = 1,
                DeployId         = "1",
                Brokerage        = "PaperBrokerage",
                DataQueueHandler = "none",
                Controls         = new Controls {
                    RamAllocation = 4096
                }                                                // no real limit
            };

            var resultHandler      = new Mock <IResultHandler>();
            var transactionHandler = new Mock <ITransactionHandler>();
            var realTimeHandler    = new Mock <IRealTimeHandler>();
            var brokerage          = new Mock <IBrokerage>();
            var objectStore        = new Mock <IObjectStore>();

            brokerage.Setup(x => x.IsConnected).Returns(true);
            brokerage.Setup(x => x.AccountBaseCurrency).Returns(Currencies.USD);
            brokerage.Setup(x => x.GetCashBalance()).Returns(new List <CashAmount>());
            brokerage.Setup(x => x.GetAccountHoldings()).Returns(new List <Holding>());
            brokerage.Setup(x => x.GetOpenOrders()).Returns(new List <Order>());

            var setupHandler = new BrokerageSetupHandler();

            IBrokerageFactory factory;

            setupHandler.CreateBrokerage(job, algorithm, out factory);

            Assert.IsTrue(setupHandler.Setup(new SetupHandlerParameters(_dataManager.UniverseSelection, algorithm, brokerage.Object, job, resultHandler.Object,
                                                                        transactionHandler.Object, realTimeHandler.Object, objectStore.Object)));

            Assert.Greater(algorithm.UtcTime, time);
        }
Ejemplo n.º 6
0
        public void SortsEventsAfterSetup()
        {
            var realTimeHandler = new BacktestingRealTimeHandler();
            var algo            = new TestAlgorithm();

            algo.SubscriptionManager.SetDataManager(new DataManagerStub(algo));
            algo.AddEquity("SPY");
            var startDate = new DateTime(2019, 1, 1);

            algo.SetStartDate(startDate);
            algo.SetDateTime(startDate);
            algo.SetEndDate(2020, 1, 1);

            var firstCalled  = false;
            var secondCalled = false;
            var events       = new List <ScheduledEvent>
            {
                new ScheduledEvent("1", new List <DateTime> {
                    startDate.AddMinutes(-10), startDate.AddMinutes(5)
                },
                                   (s, time) => { firstCalled = true; }),
                new ScheduledEvent("2", new List <DateTime> {
                    startDate.AddMinutes(1)
                },
                                   (s, time) => { secondCalled = true; }),
                new ScheduledEvent("3", new List <DateTime> {
                    startDate.AddMinutes(10)
                }, (s, time) => { })
            };

            foreach (var scheduledEvent in events)
            {
                realTimeHandler.Add(scheduledEvent);
            }

            realTimeHandler.Setup(algo,
                                  new AlgorithmNodePacket(PacketType.AlgorithmNode),
                                  new BacktestingResultHandler(),
                                  null,
                                  null);

            realTimeHandler.SetTime(startDate.AddMinutes(1));
            realTimeHandler.Exit();

            Assert.IsTrue(secondCalled);
            // 'first' should of been called and should be moved behind 'second' after setup
            Assert.IsFalse(firstCalled);
        }
        public void SkipsLoadingHoldingsAndOrders()
        {
            var symbol = Symbol.Create("AUDUSD", SecurityType.Forex, Market.Oanda);

            var algorithm = new TestAlgorithm();

            algorithm.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage);

            algorithm.SetHistoryProvider(new BrokerageTransactionHandlerTests.BrokerageTransactionHandlerTests.EmptyHistoryProvider());
            var job = GetJob();

            job.BrokerageData["load-existing-holdings"] = "false";

            var resultHandler      = new Mock <IResultHandler>();
            var transactionHandler = new Mock <ITransactionHandler>();
            var realTimeHandler    = new Mock <IRealTimeHandler>();
            var brokerage          = new Mock <IBrokerage>();
            var objectStore        = new Mock <IObjectStore>();

            brokerage.Setup(x => x.IsConnected).Returns(true);
            brokerage.Setup(x => x.AccountBaseCurrency).Returns(Currencies.USD);
            brokerage.Setup(x => x.GetCashBalance()).Returns(new List <CashAmount>());
            brokerage.Setup(x => x.GetAccountHoldings()).Returns(new List <Holding>
            {
                new Holding {
                    Symbol = symbol, Type = symbol.SecurityType, Quantity = 100
                }
            });
            brokerage.Setup(x => x.GetOpenOrders()).Returns(new List <Order>
            {
                new LimitOrder(Symbols.SPY, 1, 1, DateTime.UtcNow)
            });

            var setupHandler = new BrokerageSetupHandler();

            IBrokerageFactory factory;

            setupHandler.CreateBrokerage(job, algorithm, out factory);

            Assert.IsTrue(setupHandler.Setup(new SetupHandlerParameters(_dataManager.UniverseSelection, algorithm, brokerage.Object, job, resultHandler.Object,
                                                                        transactionHandler.Object, realTimeHandler.Object, objectStore.Object)));

            Security security;

            Assert.IsFalse(algorithm.Portfolio.Securities.TryGetValue(symbol, out security));
            Assert.IsFalse(algorithm.Portfolio.Securities.TryGetValue(Symbols.SPY, out security));
        }
        public void SeedsSecurityCorrectly()
        {
            var symbol = Symbol.Create("AUDUSD", SecurityType.Forex, Market.Oanda);

            var algorithm = new TestAlgorithm();

            algorithm.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage);

            algorithm.SetHistoryProvider(new BrokerageTransactionHandlerTests.BrokerageTransactionHandlerTests.EmptyHistoryProvider());
            var job = GetJob();

            var resultHandler      = new Mock <IResultHandler>();
            var transactionHandler = new Mock <ITransactionHandler>();
            var realTimeHandler    = new Mock <IRealTimeHandler>();
            var brokerage          = new Mock <IBrokerage>();
            var objectStore        = new Mock <IObjectStore>();

            brokerage.Setup(x => x.IsConnected).Returns(true);
            brokerage.Setup(x => x.AccountBaseCurrency).Returns(Currencies.USD);
            brokerage.Setup(x => x.GetCashBalance()).Returns(new List <CashAmount>());
            brokerage.Setup(x => x.GetAccountHoldings()).Returns(new List <Holding>
            {
                new Holding {
                    Symbol = symbol, Quantity = 100, MarketPrice = 99
                }
            });
            brokerage.Setup(x => x.GetOpenOrders()).Returns(new List <Order>());

            var setupHandler = new BrokerageSetupHandler();

            IBrokerageFactory factory;

            setupHandler.CreateBrokerage(job, algorithm, out factory);

            Assert.IsTrue(setupHandler.Setup(new SetupHandlerParameters(_dataManager.UniverseSelection, algorithm, brokerage.Object, job, resultHandler.Object,
                                                                        transactionHandler.Object, realTimeHandler.Object, objectStore.Object, TestGlobals.DataCacheProvider, TestGlobals.MapFileProvider)));

            Security security;

            Assert.IsTrue(algorithm.Portfolio.Securities.TryGetValue(symbol, out security));
            Assert.AreEqual(symbol, security.Symbol);
            Assert.AreEqual(99, security.Price);

            var last = security.GetLastData();

            Assert.IsTrue((DateTime.UtcNow.ConvertFromUtc(security.Exchange.TimeZone) - last.Time) < TimeSpan.FromSeconds(1));
        }
Ejemplo n.º 9
0
        public void MetricsChart_OnPopulationChanged_FromOtherPopulation()
        {
            TestPopulation population = new TestPopulation();
            TestAlgorithm  algorithm  = new TestAlgorithm();

            Metric metric1 = Mock.Of <Metric>();
            List <MetricResult> metric1Results = new List <MetricResult>
            {
                new MetricResult(0, 0, 1, metric1),
                new MetricResult(0, 1, 2, metric1)
            };

            metric1.GetResults(0).AddRange(metric1Results);

            Metric metric2 = Mock.Of <Metric>();
            List <MetricResult> metric2Results = new List <MetricResult>
            {
                new MetricResult(0, 0, 3, metric1),
                new MetricResult(0, 1, 4, metric1)
            };

            metric2.GetResults(0).AddRange(metric2Results);

            algorithm.Metrics.Add(metric1);
            algorithm.Metrics.Add(metric2);

            VerifyChartRefresh(chart =>
            {
                chart.Algorithm  = new TestAlgorithm();
                chart.Population = new TestPopulation();
            }, chart =>
            {
                chart.Algorithm  = algorithm;
                chart.Population = population;
            }, (metric, series) =>
            {
                if (metric == metric1)
                {
                    Assert.Equal(metric1Results, (ICollection)series.ItemsSource);
                }
                else if (metric == metric2)
                {
                    Assert.Equal(metric2Results, (ICollection)series.ItemsSource);
                }
            });
        }
Ejemplo n.º 10
0
        private static GeneticAlgorithm CreateTestAlgorithm(bool runsInfinitely = false)
        {
            TestAlgorithm algorithm = new TestAlgorithm
            {
                CrossoverOperator = new Mock <CrossoverOperator>(2).Object,
                FitnessEvaluator  = Mock.Of <FitnessEvaluator>(),
                GeneticEntitySeed = new TestEntity(),
                PopulationSeed    = new TestPopulation(),
                SelectionOperator = Mock.Of <SelectionOperator>(),

                Terminator = new TestTerminator
                {
                    IsCompleteValue = !runsInfinitely
                }
            };

            return(algorithm);
        }
Ejemplo n.º 11
0
        public void MetricsChart_OnSelectedMetricsChanged()
        {
            TestPopulation population = new TestPopulation();
            TestAlgorithm  algorithm  = new TestAlgorithm();

            Metric metric1 = Mock.Of <Metric>();
            List <MetricResult> metric1Results = new List <MetricResult>
            {
                new MetricResult(0, 0, 3, metric1),
                new MetricResult(0, 1, 4, metric1)
            };

            metric1.GetResults(0).AddRange(metric1Results);

            algorithm.Metrics.Add(metric1);

            Metric metric2 = Mock.Of <Metric>();
            List <MetricResult> metric2Results = new List <MetricResult>
            {
                new MetricResult(0, 0, 3, metric1),
                new MetricResult(0, 1, 4, metric1)
            };

            metric2.GetResults(0).AddRange(metric2Results);

            algorithm.Metrics.Add(metric2);

            MetricsChart chart = new MetricsChart
            {
                Algorithm  = algorithm,
                Population = population
            };

            Assert.Equal(2, chart.PlotModel.Series.Count);

            chart.PlotModel.Series.Clear();

            chart.SelectedMetrics = new List <Metric> {
                algorithm.Metrics[0]
            };

            Assert.Single(chart.PlotModel.Series);
        }
Ejemplo n.º 12
0
        public void RegisterAndUnregisterCustomAlgorithmTest()
        {
            Graph graph = new Graph();

            IAlgorithm testAlgorithm = new TestAlgorithm();

            graph.AlgorithmLibrary.RegisterAlgorithm(testAlgorithm);

            Assert.IsTrue(graph.AlgorithmLibrary.ContainsAlgorithm(testAlgorithm.Name));

            IAlgorithm retrievedAlgorithm = graph.AlgorithmLibrary.GetAlgorithm(testAlgorithm.Name);

            Assert.AreEqual(testAlgorithm, retrievedAlgorithm);

            bool result = graph.AlgorithmLibrary.UnregisterAlgorithm(testAlgorithm);

            Assert.IsTrue(result);
            Assert.IsFalse(graph.AlgorithmLibrary.ContainsAlgorithm(testAlgorithm.Name));
        }
Ejemplo n.º 13
0
        public void ToggleSetAttributesTest()
        {
            Graph  graph = new Graph();
            Vertex one   = graph.GraphStructure.AddVertex(1);
            Vertex two   = graph.GraphStructure.AddVertex(2);

            graph.GraphStructure.AddLine(one, two);

            TestAlgorithm test = new TestAlgorithm();

            graph.AlgorithmLibrary.RegisterAlgorithm(test);
            graph.AlgorithmLibrary.ToggleAlgorithmsShouldSetDynamicAttributesToItems(true);
            string visistedAttributeName = test.ReservedDynamicAttributeNames.First();

            graph.AlgorithmLibrary.ExecuteBase(test.Name, one);

            TestHelper.AssertAttributeValueForVertexIsSet(graph, one, visistedAttributeName, true);
            TestHelper.AssertAttributeValueForVertexIsSet(graph, two, visistedAttributeName, true);
        }
        public void SingleScheduledEventFires_SetTime()
        {
            var realTimeHandler = new BacktestingRealTimeHandler();
            var algo            = new TestAlgorithm();

            algo.SubscriptionManager.SetDataManager(new DataManagerStub(algo));
            algo.AddEquity("SPY");
            algo.SetStartDate(2019, 1, 1);
            algo.SetDateTime(new DateTime(2019, 1, 1));
            algo.SetEndDate(2020, 1, 1);
            realTimeHandler.Setup(algo,
                                  new AlgorithmNodePacket(PacketType.AlgorithmNode),
                                  new BacktestingResultHandler(),
                                  null,
                                  null);

            realTimeHandler.SetTime(DateTime.UtcNow);
            Assert.IsTrue(algo.OnEndOfDayFired);
        }
Ejemplo n.º 15
0
        public void LoadsHoldingsForExpectedMarket()
        {
            var symbol = Symbol.Create("AUDUSD", SecurityType.Forex, Market.Oanda);

            var algorithm = new TestAlgorithm();

            algorithm.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage);

            algorithm.SetHistoryProvider(new BrokerageTransactionHandlerTests.BrokerageTransactionHandlerTests.EmptyHistoryProvider());
            var job = GetJob();

            var resultHandler      = new Mock <IResultHandler>();
            var transactionHandler = new Mock <ITransactionHandler>();
            var realTimeHandler    = new Mock <IRealTimeHandler>();
            var brokerage          = new Mock <IBrokerage>();
            var objectStore        = new Mock <IObjectStore>();

            brokerage.Setup(x => x.IsConnected).Returns(true);
            brokerage.Setup(x => x.AccountBaseCurrency).Returns(Currencies.USD);
            brokerage.Setup(x => x.GetCashBalance()).Returns(new List <CashAmount>());
            brokerage.Setup(x => x.GetAccountHoldings()).Returns(new List <Holding>
            {
                new Holding {
                    Symbol = symbol, Quantity = 100
                }
            });
            brokerage.Setup(x => x.GetOpenOrders()).Returns(new List <Order>());

            var setupHandler = new BrokerageSetupHandler();

            IBrokerageFactory factory;

            setupHandler.CreateBrokerage(job, algorithm, out factory);

            Assert.IsTrue(setupHandler.Setup(new SetupHandlerParameters(_dataManager.UniverseSelection, algorithm, brokerage.Object, job, resultHandler.Object,
                                                                        transactionHandler.Object, realTimeHandler.Object, objectStore.Object, TestGlobals.DataProvider)));

            Security security;

            Assert.IsTrue(algorithm.Portfolio.Securities.TryGetValue(symbol, out security));
            Assert.AreEqual(symbol, security.Symbol);
        }
        public void AddsOnEndOfDayEventsIfImplemented(Language language)
        {
            Security   security;
            IAlgorithm algorithm;

            if (language == Language.CSharp)
            {
                algorithm = new TestAlgorithm();
                security  = (algorithm as QCAlgorithm).AddEquity("SPY");
            }
            else
            {
                algorithm = new AlgorithmPythonWrapper("OnEndOfDayRegressionAlgorithm");
                algorithm.SubscriptionManager.SetDataManager(new DataManagerStub(new MockDataFeed(), algorithm));
                security = algorithm.AddSecurity(SecurityType.Equity,
                                                 "SPY",
                                                 Resolution.Daily,
                                                 Market.USA,
                                                 false,
                                                 1,
                                                 false);
            }

            var realTimeHandler = new TestBacktestingRealTimeHandler();

            realTimeHandler.Setup(algorithm,
                                  new AlgorithmNodePacket(PacketType.AlgorithmNode)
            {
                Language = language
            },
                                  _resultHandler,
                                  null,
                                  new TestTimeLimitManager());
            // the generic OnEndOfDay()
            Assert.AreEqual(1, realTimeHandler.GetScheduledEventsCount);

            realTimeHandler.OnSecuritiesChanged(
                new SecurityChanges(new[] { security }, Enumerable.Empty <Security>()));

            Assert.AreEqual(2, realTimeHandler.GetScheduledEventsCount);
            realTimeHandler.Exit();
        }
Ejemplo n.º 17
0
        public void ExecuteAlgorithmTest()
        {
            Graph  graph = new Graph();
            Vertex one   = graph.GraphStructure.AddVertex(1);
            Vertex two   = graph.GraphStructure.AddVertex(2);

            graph.GraphStructure.AddLine(one, two);

            TestAlgorithm testAlgorithm = new TestAlgorithm();

            graph.AlgorithmLibrary.RegisterAlgorithm(testAlgorithm);

            Vertex result = graph.AlgorithmLibrary.Execute <Vertex, Vertex>(testAlgorithm.Name, one);

            Assert.AreEqual(two, result);

            object resultAsObject = graph.AlgorithmLibrary.ExecuteBase(testAlgorithm.Name, one);

            Assert.AreEqual(two, resultAsObject);
        }
Ejemplo n.º 18
0
        public void LoadsExistingHoldingsAndOrders(Func <List <Holding> > getHoldings, Func <List <Order> > getOrders, bool expected)
        {
            var algorithm = new TestAlgorithm();

            algorithm.SetHistoryProvider(new BrokerageTransactionHandlerTests.BrokerageTransactionHandlerTests.EmptyHistoryProvider());
            var job = GetJob();

            var resultHandler      = new Mock <IResultHandler>();
            var transactionHandler = new Mock <ITransactionHandler>();
            var realTimeHandler    = new Mock <IRealTimeHandler>();
            var objectStore        = new Mock <IObjectStore>();
            var brokerage          = new Mock <IBrokerage>();

            brokerage.Setup(x => x.IsConnected).Returns(true);
            brokerage.Setup(x => x.AccountBaseCurrency).Returns(Currencies.USD);
            brokerage.Setup(x => x.GetCashBalance()).Returns(new List <CashAmount>());
            brokerage.Setup(x => x.GetAccountHoldings()).Returns(getHoldings);
            brokerage.Setup(x => x.GetOpenOrders()).Returns(getOrders);

            var setupHandler = new BrokerageSetupHandler();

            IBrokerageFactory factory;

            setupHandler.CreateBrokerage(job, algorithm, out factory);

            var result = setupHandler.Setup(new SetupHandlerParameters(_dataManager.UniverseSelection, algorithm, brokerage.Object, job, resultHandler.Object,
                                                                       transactionHandler.Object, realTimeHandler.Object, objectStore.Object, TestGlobals.DataCacheProvider, TestGlobals.MapFileProvider));

            Assert.AreEqual(expected, result);

            foreach (var security in algorithm.Securities.Values)
            {
                if (security.Symbol.SecurityType == SecurityType.Option)
                {
                    Assert.AreEqual(DataNormalizationMode.Raw, security.DataNormalizationMode);

                    var underlyingSecurity = algorithm.Securities[security.Symbol.Underlying];
                    Assert.AreEqual(DataNormalizationMode.Raw, underlyingSecurity.DataNormalizationMode);
                }
            }
        }
        public void EnforcesCashAmounts()
        {
            var algorithm = new TestAlgorithm();

            algorithm.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage);

            algorithm.SetHistoryProvider(new BrokerageTransactionHandlerTests.BrokerageTransactionHandlerTests.EmptyHistoryProvider());
            var job = GetJob();

            job.BrokerageData["max-cash-limit"] = "[{\"amount\":20, \"currency\": \"USD\"}, {\"Amount\":1, \"Currency\": \"EUR\"}]";

            var resultHandler      = new Mock <IResultHandler>();
            var transactionHandler = new Mock <ITransactionHandler>();
            var realTimeHandler    = new Mock <IRealTimeHandler>();
            var brokerage          = new Mock <IBrokerage>();
            var objectStore        = new Mock <IObjectStore>();

            brokerage.Setup(x => x.IsConnected).Returns(true);
            brokerage.Setup(x => x.AccountBaseCurrency).Returns(Currencies.USD);
            brokerage.Setup(x => x.GetCashBalance()).Returns(new List <CashAmount> {
                new CashAmount(10000, Currencies.USD), new CashAmount(11, Currencies.GBP)
            });
            brokerage.Setup(x => x.GetAccountHoldings()).Returns(new List <Holding>());
            brokerage.Setup(x => x.GetOpenOrders()).Returns(new List <Order>());

            var setupHandler = new BrokerageSetupHandler();

            IBrokerageFactory factory;

            setupHandler.CreateBrokerage(job, algorithm, out factory);

            Assert.IsTrue(setupHandler.Setup(new SetupHandlerParameters(_dataManager.UniverseSelection, algorithm, brokerage.Object, job, resultHandler.Object,
                                                                        transactionHandler.Object, realTimeHandler.Object, objectStore.Object)));

            Assert.AreEqual(20, algorithm.Portfolio.CashBook[Currencies.USD].Amount);
            Assert.IsFalse(algorithm.Portfolio.CashBook.ContainsKey(Currencies.GBP));
            Assert.IsFalse(algorithm.Portfolio.CashBook.ContainsKey(Currencies.EUR));
        }
Ejemplo n.º 20
0
        public void AlgorithmTimeIsSetToUtcNowBeforePostInitialize()
        {
            var           time      = DateTime.UtcNow;
            TestAlgorithm algorithm = null;

            algorithm = new TestAlgorithm(() =>
            {
                Assert.That(algorithm.UtcTime > time);
            });

            Assert.AreEqual(new DateTime(1998, 1, 1), algorithm.UtcTime);

            algorithm.SetHistoryProvider(new BrokerageTransactionHandlerTests.BrokerageTransactionHandlerTests.EmptyHistoryProvider());
            var job = GetJob();

            var resultHandler      = new Mock <IResultHandler>();
            var transactionHandler = new Mock <ITransactionHandler>();
            var realTimeHandler    = new Mock <IRealTimeHandler>();
            var brokerage          = new Mock <IBrokerage>();
            var objectStore        = new Mock <IObjectStore>();

            brokerage.Setup(x => x.IsConnected).Returns(true);
            brokerage.Setup(x => x.AccountBaseCurrency).Returns(Currencies.USD);
            brokerage.Setup(x => x.GetCashBalance()).Returns(new List <CashAmount>());
            brokerage.Setup(x => x.GetAccountHoldings()).Returns(new List <Holding>());
            brokerage.Setup(x => x.GetOpenOrders()).Returns(new List <Order>());

            var setupHandler = new BrokerageSetupHandler();

            IBrokerageFactory factory;

            setupHandler.CreateBrokerage(job, algorithm, out factory);

            Assert.IsTrue(setupHandler.Setup(new SetupHandlerParameters(_dataManager.UniverseSelection, algorithm, brokerage.Object, job, resultHandler.Object,
                                                                        transactionHandler.Object, realTimeHandler.Object, objectStore.Object, TestGlobals.DataCacheProvider, TestGlobals.MapFileProvider)));

            Assert.Greater(algorithm.UtcTime, time);
        }
Ejemplo n.º 21
0
        public void EnforcesTotalPortfolioValue(bool fails)
        {
            var algorithm = new TestAlgorithm();

            algorithm.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage);

            algorithm.SetHistoryProvider(new TestHistoryProvider());
            var job = GetJob();

            job.BrokerageData[BrokerageSetupHandler.MaxAllocationLimitConfig] = fails ? "1" : "1000000000";

            var resultHandler      = new Mock <IResultHandler>();
            var transactionHandler = new Mock <ITransactionHandler>();
            var realTimeHandler    = new Mock <IRealTimeHandler>();
            var brokerage          = new Mock <IBrokerage>();
            var objectStore        = new Mock <IObjectStore>();

            brokerage.Setup(x => x.IsConnected).Returns(true);
            brokerage.Setup(x => x.AccountBaseCurrency).Returns(Currencies.USD);
            brokerage.Setup(x => x.GetCashBalance()).Returns(new List <CashAmount> {
                new CashAmount(10000, Currencies.USD), new CashAmount(11, Currencies.GBP)
            });
            brokerage.Setup(x => x.GetAccountHoldings()).Returns(new List <Holding>());
            brokerage.Setup(x => x.GetOpenOrders()).Returns(new List <Order>());

            var setupHandler = new BrokerageSetupHandler();

            IBrokerageFactory factory;

            setupHandler.CreateBrokerage(job, algorithm, out factory);

            Assert.AreEqual(!fails, setupHandler.Setup(new SetupHandlerParameters(algorithm.DataManager.UniverseSelection, algorithm, brokerage.Object, job, resultHandler.Object,
                                                                                  transactionHandler.Object, realTimeHandler.Object, objectStore.Object, TestGlobals.DataCacheProvider, TestGlobals.MapFileProvider)));

            Assert.AreEqual(10000, algorithm.Portfolio.CashBook[Currencies.USD].Amount);
            Assert.AreEqual(11, algorithm.Portfolio.CashBook[Currencies.GBP].Amount);
        }
Ejemplo n.º 22
0
        public void ExistingHoldingsAndOrdersResolution(Func <List <Holding> > getHoldings, Func <List <Order> > getOrders, bool expected, Resolution resolution)
        {
            var algorithm = new TestAlgorithm {
                UniverseSettings = { Resolution = resolution }
            };

            algorithm.SetHistoryProvider(new BrokerageTransactionHandlerTests.BrokerageTransactionHandlerTests.EmptyHistoryProvider());
            var job                = GetJob();
            var resultHandler      = new Mock <IResultHandler>();
            var transactionHandler = new Mock <ITransactionHandler>();
            var realTimeHandler    = new Mock <IRealTimeHandler>();
            var objectStore        = new Mock <IObjectStore>();
            var brokerage          = new Mock <IBrokerage>();

            brokerage.Setup(x => x.IsConnected).Returns(true);
            brokerage.Setup(x => x.AccountBaseCurrency).Returns(Currencies.USD);
            brokerage.Setup(x => x.GetCashBalance()).Returns(new List <CashAmount>());
            brokerage.Setup(x => x.GetAccountHoldings()).Returns(getHoldings);
            brokerage.Setup(x => x.GetOpenOrders()).Returns(getOrders);

            var setupHandler = new BrokerageSetupHandler();

            IBrokerageFactory factory;

            setupHandler.CreateBrokerage(job, algorithm, out factory);

            var result = setupHandler.Setup(new SetupHandlerParameters(_dataManager.UniverseSelection, algorithm, brokerage.Object, job, resultHandler.Object,
                                                                       transactionHandler.Object, realTimeHandler.Object, objectStore.Object, TestGlobals.DataCacheProvider, TestGlobals.MapFileProvider));

            Assert.AreEqual(expected, result);

            foreach (var symbol in algorithm.Securities.Keys)
            {
                var configs = algorithm.SubscriptionManager.SubscriptionDataConfigService.GetSubscriptionDataConfigs(symbol);
                Assert.AreEqual(algorithm.UniverseSettings.Resolution, configs.First().Resolution);
            }
        }
Ejemplo n.º 23
0
        public void ClearSetAttributesTest()
        {
            Graph  graph = new Graph();
            Vertex one   = graph.GraphStructure.AddVertex(1);
            Vertex two   = graph.GraphStructure.AddVertex(2);

            graph.GraphStructure.AddLine(one, two);

            TestAlgorithm test = new TestAlgorithm();

            test.SetDynamicAttributesInStructure = true;
            graph.AlgorithmLibrary.RegisterAlgorithm(test);
            string visistedAttributeName = test.ReservedDynamicAttributeNames.First();

            graph.AlgorithmLibrary.ExecuteBase(test.Name, one);

            TestHelper.AssertAttributeValueForVertexIsSet(graph, one, visistedAttributeName, true);
            TestHelper.AssertAttributeValueForVertexIsSet(graph, two, visistedAttributeName, true);

            graph.AlgorithmLibrary.ClearDynamicAttributesSetByAlgorithm(test.Name);

            TestHelper.AssertAttributeValueForVertexIsNotSet(graph, one, visistedAttributeName);
            TestHelper.AssertAttributeValueForVertexIsNotSet(graph, two, visistedAttributeName);
        }
Ejemplo n.º 24
0
        private async Task TestRefreshChartScenario(FitnessType fitnessType, FitnessSortOption fitnessSortOption,
                                                    bool switchPopulations, bool createNewGeneration, bool completeAlgorithm, bool elapseTime)
        {
            TimeSpan          elapsedTime   = TimeSpan.FromSeconds(0);
            Mock <IStopwatch> stopwatchMock = new Mock <IStopwatch>();

            stopwatchMock
            .SetupGet(o => o.Elapsed)
            .Returns(() => elapsedTime);
            Mock <IStopwatchFactory> stopwatchFactoryMock = new Mock <IStopwatchFactory>();

            stopwatchFactoryMock
            .Setup(o => o.Create())
            .Returns(stopwatchMock.Object);

            FitnessChart chart = new FitnessChart(stopwatchFactoryMock.Object)
            {
                FitnessSortOption = fitnessSortOption,
                FitnessType       = fitnessType
            };

            PlotModel    model = chart.PlotModel;
            CategoryAxis axis  = (CategoryAxis)model.Axes[0];

            axis.Labels.Add("test"); // Add test label to ensure it gets cleared

            TestAlgorithm algorithm = new TestAlgorithm
            {
                MinimumEnvironmentSize = 2,
                PopulationSeed         = new TestPopulation()
                {
                    MinimumPopulationSize = 5
                },
                FitnessEvaluator  = new TestFitnessEvaluator(),
                GeneticEntitySeed = new TestEntity(),
                SelectionOperator = new TestSelectionOperator(),
                Terminator        = new TestTerminator()
            };

            await algorithm.InitializeAsync();

            if (switchPopulations)
            {
                chart.Population = algorithm.Environment.Populations[1];
            }

            Population population = algorithm.Environment.Populations[0];

            TestEntity[] entities = population.Entities.Cast <TestEntity>().ToArray();
            entities[0].RawFitnessValue = 2;
            entities[1].RawFitnessValue = 0;
            entities[2].RawFitnessValue = 1;
            entities[3].RawFitnessValue = 4;
            entities[4].RawFitnessValue = 3;

            entities[0].ScaledFitnessValue = 0;
            entities[1].ScaledFitnessValue = 3;
            entities[2].ScaledFitnessValue = 2;
            entities[3].ScaledFitnessValue = 4;
            entities[4].ScaledFitnessValue = 1;

            entities[0].CompareFactor = 4;
            entities[1].CompareFactor = 0;
            entities[2].CompareFactor = 3;
            entities[3].CompareFactor = 2;
            entities[4].CompareFactor = 1;

            // Set the Population which will trigger the logic to test
            chart.Population = population;

            stopwatchFactoryMock.Verify(o => o.Create(), Times.Once());
            stopwatchMock.Verify(o => o.Start(), Times.Once());
            stopwatchMock.Verify(o => o.Restart(), switchPopulations ? Times.Exactly(2) : Times.Once());

            List <GeneticEntity> sortedEntities;

            if (fitnessSortOption == FitnessSortOption.Entity)
            {
                sortedEntities = new List <GeneticEntity>
                {
                    entities[1],
                    entities[4],
                    entities[3],
                    entities[2],
                    entities[0],
                };
            }
            else
            {
                if (fitnessType == FitnessType.Raw)
                {
                    sortedEntities = new List <GeneticEntity>
                    {
                        entities[1],
                        entities[2],
                        entities[0],
                        entities[4],
                        entities[3],
                    };
                }
                else
                {
                    sortedEntities = new List <GeneticEntity>
                    {
                        entities[0],
                        entities[4],
                        entities[2],
                        entities[1],
                        entities[3],
                    };
                }
            }

            ColumnSeries columnSeries = (ColumnSeries)model.Series[0];

            if (fitnessType == FitnessType.Scaled)
            {
                Assert.Equal(nameof(GeneticEntity.ScaledFitnessValue), columnSeries.ValueField);
            }
            else
            {
                Assert.Equal(nameof(GeneticEntity.RawFitnessValue), columnSeries.ValueField);
            }

            Assert.Equal(sortedEntities, columnSeries.ItemsSource.Cast <object>().ToList());

            Assert.Equal(algorithm.PopulationSeed.MinimumPopulationSize, axis.Labels.Count);
            for (int i = 0; i < algorithm.PopulationSeed.MinimumPopulationSize; i++)
            {
                Assert.Equal("", axis.Labels[i]);
            }

            if (createNewGeneration)
            {
                if (elapseTime)
                {
                    // Ensure that enough time has passed for refresh to occur
                    elapsedTime = TimeSpan.FromSeconds(5);
                }

                // Create next generation to cause the chart to be refresh again
                await algorithm.StepAsync();

                if (elapseTime)
                {
                    Assert.NotEqual(sortedEntities,
                                    columnSeries.ItemsSource.Cast <object>().ToList());
                }
            }

            if (completeAlgorithm)
            {
                if (elapseTime)
                {
                    // Ensure that enough time has passed for refresh to occur
                    elapsedTime = TimeSpan.FromSeconds(5);
                }

                ((TestTerminator)algorithm.Terminator).IsCompleteValue = true;
                // Create next generation to cause the chart to be refresh again
                await algorithm.StepAsync();

                if (createNewGeneration && elapseTime)
                {
                    Assert.NotEqual(sortedEntities,
                                    columnSeries.ItemsSource.Cast <object>().ToList());
                }
                else
                {
                    Assert.Equal(sortedEntities,
                                 columnSeries.ItemsSource.Cast <object>().ToList());
                }
            }

            // Set the population to null to verify the series gets cleared
            chart.Population = null;
            Assert.Null(columnSeries.ItemsSource);
        }
Ejemplo n.º 25
0
 public void Play()
 {
     for (var direction = Move.None; gameField.Status == GameStatus.Play; direction = TestAlgorithm.GetMove(gameField.Kite.Body, gameField.Kite.Head, gameField.Food))
     {
         Clear();
         ShowGameField();
         gameField.MakeMove(direction);
         ReadKey();
     }
 }
Ejemplo n.º 26
0
 public static void DepthFirstSearch_Test4()
 {
     TestAlgorithm(Algorithms.Other.FloodFill.DepthFirstSearch, (1, 1), green, orange, (6, 4), white);
 }
Ejemplo n.º 27
0
 public static void DepthFirstSearch_Test3()
 {
     TestAlgorithm(Algorithms.Other.FloodFill.DepthFirstSearch, (1, 1), green, orange, (0, 1), violet);
 }
Ejemplo n.º 28
0
 public static void BreadthFirstSearch_Test1()
 {
     TestAlgorithm(Algorithms.Other.FloodFill.BreadthFirstSearch, (1, 1), green, orange, (1, 1), orange);
 }
Ejemplo n.º 29
0
        public void HasErrorWithZeroTotalPortfolioValue(bool hasCashBalance, bool hasHoldings)
        {
            var algorithm = new TestAlgorithm();

            algorithm.SetHistoryProvider(new BrokerageTransactionHandlerTests.BrokerageTransactionHandlerTests.EmptyHistoryProvider());
            var job = new LiveNodePacket
            {
                UserId           = 1,
                ProjectId        = 1,
                DeployId         = "1",
                Brokerage        = "TestBrokerage",
                DataQueueHandler = "none",
                Controls         = new Controls {
                    RamAllocation = 4096
                }                                                // no real limit
            };

            var resultHandler      = new Mock <IResultHandler>();
            var transactionHandler = new Mock <ITransactionHandler>();
            var realTimeHandler    = new Mock <IRealTimeHandler>();
            var brokerage          = new Mock <IBrokerage>();
            var objectStore        = new Mock <IObjectStore>();

            brokerage.Setup(x => x.IsConnected).Returns(true);
            brokerage.Setup(x => x.GetCashBalance()).Returns(
                hasCashBalance
                    ? new List <CashAmount>
            {
                new CashAmount(1000, "USD")
            }
                    : new List <CashAmount>()
                );
            brokerage.Setup(x => x.GetAccountHoldings()).Returns(
                hasHoldings
                    ? new List <Holding>
            {
                new Holding {
                    Type = SecurityType.Equity, Symbol = Symbols.SPY, Quantity = 1, AveragePrice = 100, MarketPrice = 100
                }
            }
                    : new List <Holding>());
            brokerage.Setup(x => x.GetOpenOrders()).Returns(new List <Order>());

            var setupHandler = new BrokerageSetupHandler();

            IBrokerageFactory factory;

            setupHandler.CreateBrokerage(job, algorithm, out factory);

            var dataManager = new DataManagerStub(algorithm, new MockDataFeed(), true);

            Assert.IsTrue(setupHandler.Setup(new SetupHandlerParameters(dataManager.UniverseSelection, algorithm, brokerage.Object, job, resultHandler.Object,
                                                                        transactionHandler.Object, realTimeHandler.Object, objectStore.Object)));

            if (hasCashBalance || hasHoldings)
            {
                Assert.AreEqual(0, algorithm.DebugMessages.Count);
            }
            else
            {
                Assert.AreEqual(1, algorithm.DebugMessages.Count);

                Assert.That(algorithm.DebugMessages.First().Contains("No cash balances or holdings were found in the brokerage account."));
            }
        }
Ejemplo n.º 30
0
        public void ExistingHoldingsAndOrdersUniverseSettings(Func <List <Holding> > getHoldings, Func <List <Order> > getOrders, bool expected)
        {
            // Set our universe settings
            var hasCrypto = false;

            try
            {
                hasCrypto = getHoldings().Any(x => x.Symbol.Value == "BTCUSD");
            }
            catch
            {
            }
            var algorithm = new TestAlgorithm {
                UniverseSettings = { Resolution = Resolution.Daily, Leverage = (hasCrypto ? 1 : 20), FillForward = false, ExtendedMarketHours = true }
            };

            algorithm.SetHistoryProvider(new BrokerageTransactionHandlerTests.BrokerageTransactionHandlerTests.EmptyHistoryProvider());
            var job                = GetJob();
            var resultHandler      = new Mock <IResultHandler>();
            var transactionHandler = new Mock <ITransactionHandler>();
            var realTimeHandler    = new Mock <IRealTimeHandler>();
            var objectStore        = new Mock <IObjectStore>();
            var brokerage          = new Mock <IBrokerage>();

            brokerage.Setup(x => x.IsConnected).Returns(true);
            brokerage.Setup(x => x.AccountBaseCurrency).Returns(Currencies.USD);
            brokerage.Setup(x => x.GetCashBalance()).Returns(new List <CashAmount>());
            brokerage.Setup(x => x.GetAccountHoldings()).Returns(getHoldings);
            brokerage.Setup(x => x.GetOpenOrders()).Returns(getOrders);

            var setupHandler = new BrokerageSetupHandler();

            IBrokerageFactory factory;

            setupHandler.CreateBrokerage(job, algorithm, out factory);

            var result = setupHandler.Setup(new SetupHandlerParameters(_dataManager.UniverseSelection, algorithm, brokerage.Object, job, resultHandler.Object,
                                                                       transactionHandler.Object, realTimeHandler.Object, objectStore.Object, TestGlobals.DataCacheProvider, TestGlobals.MapFileProvider));

            if (result != expected)
            {
                Assert.Fail("SetupHandler result did not match expected value");
            }

            foreach (var symbol in algorithm.Securities.Keys)
            {
                var config = algorithm.SubscriptionManager.SubscriptionDataConfigService.GetSubscriptionDataConfigs(symbol).First();

                // Assert Resolution and FillForward settings persisted
                Assert.AreEqual(algorithm.UniverseSettings.Resolution, config.Resolution);
                Assert.AreEqual(algorithm.UniverseSettings.FillForward, config.FillDataForward);

                // Assert ExtendedHours setting persisted for equities
                if (config.SecurityType == SecurityType.Equity)
                {
                    Assert.AreEqual(algorithm.UniverseSettings.ExtendedMarketHours, config.ExtendedMarketHours);
                }

                // Assert Leverage setting persisted for non options or futures (Blocked from setting leverage in Security.SetLeverage())
                if (!symbol.SecurityType.IsOption() && symbol.SecurityType != SecurityType.Future)
                {
                    var security = algorithm.Securities[symbol];
                    Assert.AreEqual(algorithm.UniverseSettings.Leverage, security.Leverage);
                }
            }
        }