Overall Statistics
Total Trades
46
Average Win
2.25%
Average Loss
-2.68%
Compounding Annual Return
2.270%
Drawdown
12.400%
Expectancy
0.200
Net Profit
11.889%
Sharpe Ratio
0.318
Probabilistic Sharpe Ratio
3.052%
Loss Rate
35%
Win Rate
65%
Profit-Loss Ratio
0.84
Alpha
0.011
Beta
0.051
Annual Standard Deviation
0.054
Annual Variance
0.003
Information Ratio
-0.623
Tracking Error
0.158
Treynor Ratio
0.336
Total Fees
$524.82
Estimated Strategy Capacity
$64000000.00
Lowest Capacity Asset
AAPL R735QTJ8XC9X
from AlgorithmImports import *

class CorporateBuybacksDataAlgorithm(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2016, 1, 1)
        self.SetEndDate(2021, 1, 1)
        self.SetCash(100000)
 
        self.aapl = self.AddEquity("AAPL", Resolution.Minute).Symbol
        
        # Requesting data
        self.smart_insider_intention = self.AddData(SmartInsiderIntention, self.aapl).Symbol
        self.smart_insider_transaction = self.AddData(SmartInsiderTransaction, self.aapl).Symbol
        
        # Historical data
        history = self.History(self.smart_insider_intention, 365, Resolution.Daily)
        self.Debug(f"We got {len(history)} items from our history request for intentions")
        
        history = self.History(self.smart_insider_transaction, 365, Resolution.Daily)
        self.Debug(f"We got {len(history)} items from our history request for transactions")

    def OnData(self, data):
        # Buy Apple whenever we receive a buyback intention or transaction notification
        if data.ContainsKey(self.smart_insider_intention) or data.ContainsKey(self.smart_insider_transaction):
            self.SetHoldings(self.aapl, 1)
            self.entry_time = self.Time
        
        # Liquidate holdings 3 days after the latest entry
        if self.Portfolio.Invested and self.Time >= self.entry_time + timedelta(days=3):
            self.Liquidate()