Пример #1
0
        public void DelistedSecuritiesInsightsTest(bool isDelisted, int expectedCount)
        {
            var algorithm = new QCAlgorithm();

            algorithm.SubscriptionManager.SetDataManager(new DataManagerStub(algorithm));
            algorithm.Transactions.SetOrderProcessor(new FakeOrderProcessor());
            algorithm.SetStartDate(2007, 5, 16);
            algorithm.SetUniverseSelection(new ManualUniverseSelectionModel());
            algorithm.SetFinishedWarmingUp();

            var alpha = new FakeAlpha();

            algorithm.SetAlpha(alpha);

            var construction = new FakePortfolioConstruction();

            algorithm.SetPortfolioConstruction(construction);

            var actualInsights = new List <Insight>();

            algorithm.InsightsGenerated += (s, e) => actualInsights.AddRange(e.Insights);

            var security = algorithm.AddEquity("SPY", Resolution.Daily);
            var tick     = new Tick
            {
                Symbol   = security.Symbol,
                Value    = 1,
                Quantity = 2
            };

            security.SetMarketPrice(tick);
            security.IsDelisted = isDelisted;

            // Trigger Alpha to emit insight
            algorithm.OnFrameworkData(new Slice(new DateTime(2000, 01, 01), new List <BaseData>()
            {
                tick
            }));

            // Manually emit insight
            algorithm.EmitInsights(Insight.Price(Symbols.SPY, TimeSpan.FromDays(1), InsightDirection.Up, .5, .75));

            // Should be zero because security is delisted
            Assert.AreEqual(expectedCount, actualInsights.Count);
        }
Пример #2
0
        public void SetsInsightGeneratedAndCloseTimes()
        {
            var eventFired = false;
            var algo       = new QCAlgorithmFramework();

            algo.SubscriptionManager.SetDataManager(new DataManagerStub(algo));
            algo.Transactions.SetOrderProcessor(new FakeOrderProcessor());
            algo.InsightsGenerated += (algorithm, data) =>
            {
                eventFired = true;
                var insights = data.Insights;
                Assert.AreEqual(1, insights.Count);
                Assert.IsTrue(insights.All(insight => insight.GeneratedTimeUtc != default(DateTime)));
                Assert.IsTrue(insights.All(insight => insight.CloseTimeUtc != default(DateTime)));
            };
            var security = algo.AddEquity("SPY");

            algo.SetUniverseSelection(new ManualUniverseSelectionModel());

            var alpha = new FakeAlpha();

            algo.SetAlpha(alpha);

            var construction = new FakePortfolioConstruction();

            algo.SetPortfolioConstruction(construction);

            var tick = new Tick
            {
                Symbol   = security.Symbol,
                Value    = 1,
                Quantity = 2
            };

            security.SetMarketPrice(tick);

            algo.OnFrameworkData(new Slice(new DateTime(2000, 01, 01), algo.Securities.Select(s => tick)));

            Assert.IsTrue(eventFired);
            Assert.AreEqual(1, construction.Insights.Count);
            Assert.IsTrue(construction.Insights.All(insight => insight.GeneratedTimeUtc != default(DateTime)));
            Assert.IsTrue(construction.Insights.All(insight => insight.CloseTimeUtc != default(DateTime)));
        }