Example #1
0
        public void ErrorGetsMappedToSatisfyStockVesting()
        {
            var intentionLine   = "BIXYZ	Downwards Revision	20190101	20190101	USXYZ		1	Some Random Industry																		US	Off Market Agreement	Issuer	Missing Lookup Formula for BuybackHoldingTypeId 10.00										";
            var transactionLine = "BIXYZ	Downwards Revision	20190101	20190101	USXYZ		1	Some Random Industry																				Off Market Agreement	Issuer	Missing Lookup Formula for BuybackHoldingTypeId 10.00																														";

            var intention   = new SmartInsiderIntention(intentionLine);
            var transaction = new SmartInsiderTransaction(transactionLine);

            Assert.IsTrue(intention.ExecutionHolding.HasValue);
            Assert.IsTrue(transaction.ExecutionHolding.HasValue);
            Assert.AreEqual(intention.ExecutionHolding, SmartInsiderExecutionHolding.SatisfyStockVesting);
            Assert.AreEqual(transaction.ExecutionHolding, SmartInsiderExecutionHolding.SatisfyStockVesting);
        }
Example #2
0
        /// <summary>
        /// Insider transaction data will be provided to us here
        /// </summary>
        /// <param name="data">Transaction data</param>
        public void OnData(SmartInsiderTransaction data)
        {
            var hasOpenOrders = Transactions.GetOpenOrders().Any();

            if (!Portfolio.Invested && !hasOpenOrders)
            {
                if (data.BuybackPercentage > 0.0001m && data.VolumePercentage > 0.001m)
                {
                    Log($"Buying {_symbol.Value} due to stock transaction");
                    SetHoldings(_symbol, 0.50m);
                }
            }
        }
Example #3
0
        /// <summary>
        /// Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized.
        /// </summary>
        public override void Initialize()
        {
            SetStartDate(2010, 1, 1);
            SetEndDate(2019, 1, 1);

            var tickers = new List <string> {
                "AAPL", "AMZN", "MSFT", "IBM", "FB", "QQQ",
                "IWM", "BAC", "BNO", "AIG", "UW", "WM"
            };

            _securities    = new List <Security>();
            _customSymbols = new List <Symbol>();

            foreach (var ticker in tickers)
            {
                var equity = AddEquity(ticker, Resolution.Hour);
                _securities.Add(equity);

                _customSymbols.Add(
                    AddData <SmartInsiderIntention>(equity.Symbol, Resolution.Daily).Symbol);
                _customSymbols.Add(
                    AddData <SmartInsiderTransaction>(equity.Symbol, Resolution.Daily).Symbol);
            }

            Schedule.On(DateRules.EveryDay(), TimeRules.At(16, 0), () =>
            {
                foreach (var slice in History(_customSymbols, TimeSpan.FromDays(5)))
                {
                    _historySymbolCount += slice.Count;
                }

                foreach (var security in _securities)
                {
                    SmartInsiderIntention intention     = security.Data.Get <SmartInsiderIntention>();
                    SmartInsiderTransaction transaction = security.Data.Get <SmartInsiderTransaction>();

                    if (!security.HoldStock && intention != null && transaction != null)
                    {
                        SetHoldings(security.Symbol, 1d / _securities.Count);
                    }
                }
            });
        }
Example #4
0
        public void ToLineDoesNotOutputRawNullValues()
        {
            var intentionLine   = "20200101 01:02:03	BIXYZ		20190101	20190101	USXYZ		1	Some Random Industry																	US													";
            var transactionLine = "20200101 01:02:03	BIXYZ		20190101	20190101	USXYZ		1	Some Random Industry																																																			";

            var intention   = new SmartInsiderIntention(intentionLine);
            var transaction = new SmartInsiderTransaction(transactionLine);

            Assert.IsNull(intention.EventType);
            Assert.IsNull(intention.Execution);
            Assert.IsNull(intention.ExecutionEntity);
            Assert.IsNull(intention.ExecutionHolding);
            Assert.IsNull(transaction.EventType);
            Assert.IsNull(transaction.Execution);
            Assert.IsNull(transaction.ExecutionEntity);
            Assert.IsNull(transaction.ExecutionHolding);

            var intentionLineSerialized   = intention.ToLine().Split('\t');
            var transactionLineSerialized = transaction.ToLine().Split('\t');

            Assert.AreNotEqual(intentionLineSerialized[2], "null");
            Assert.AreNotEqual(intentionLineSerialized[26], "null");
            Assert.AreNotEqual(intentionLineSerialized[27], "null");
            Assert.AreNotEqual(intentionLineSerialized[28], "null");
            Assert.AreNotEqual(transactionLineSerialized[2], "null");
            Assert.AreNotEqual(transactionLineSerialized[27], "null");
            Assert.AreNotEqual(transactionLineSerialized[28], "null");
            Assert.AreNotEqual(transactionLineSerialized[29], "null");

            Assert.IsTrue(string.IsNullOrWhiteSpace(intentionLineSerialized[2]));
            Assert.IsTrue(string.IsNullOrWhiteSpace(intentionLineSerialized[26]));
            Assert.IsTrue(string.IsNullOrWhiteSpace(intentionLineSerialized[27]));
            Assert.IsTrue(string.IsNullOrWhiteSpace(intentionLineSerialized[28]));
            Assert.IsTrue(string.IsNullOrWhiteSpace(transactionLineSerialized[2]));
            Assert.IsTrue(string.IsNullOrWhiteSpace(transactionLineSerialized[27]));
            Assert.IsTrue(string.IsNullOrWhiteSpace(transactionLineSerialized[28]));
            Assert.IsTrue(string.IsNullOrWhiteSpace(transactionLineSerialized[29]));
        }
Example #5
0
        public void SerializeRoundTripSmartInsiderTransaction()
        {
            var settings = new JsonSerializerSettings {
                TypeNameHandling = TypeNameHandling.All
            };

            var time             = new DateTime(2020, 3, 19, 10, 0, 0);
            var underlyingSymbol = Symbols.AAPL;
            var symbol           = Symbol.CreateBase(typeof(SmartInsiderTransaction), underlyingSymbol, QuantConnect.Market.USA);

            var item = new SmartInsiderTransaction
            {
                Symbol           = symbol,
                LastUpdate       = time,
                Time             = time,
                TransactionID    = "123",
                EventType        = SmartInsiderEventType.Transaction,
                Execution        = SmartInsiderExecution.Market,
                ExecutionEntity  = SmartInsiderExecutionEntity.Issuer,
                ExecutionHolding = SmartInsiderExecutionHolding.SatisfyEmployeeTax,
                Amount           = 1234
            };

            var serialized   = JsonConvert.SerializeObject(item, settings);
            var deserialized = JsonConvert.DeserializeObject <SmartInsiderTransaction>(serialized, settings);

            Assert.AreEqual(symbol, deserialized.Symbol);
            Assert.AreEqual("123", deserialized.TransactionID);
            Assert.AreEqual(SmartInsiderEventType.Transaction, deserialized.EventType);
            Assert.AreEqual(SmartInsiderExecution.Market, deserialized.Execution);
            Assert.AreEqual(SmartInsiderExecutionEntity.Issuer, deserialized.ExecutionEntity);
            Assert.AreEqual(SmartInsiderExecutionHolding.SatisfyEmployeeTax, deserialized.ExecutionHolding);
            Assert.AreEqual(1234, deserialized.Amount);
            Assert.AreEqual(time, deserialized.LastUpdate);
            Assert.AreEqual(time, deserialized.Time);
            Assert.AreEqual(time, deserialized.EndTime);
        }