Overall Statistics
Total Trades
2
Average Win
0%
Average Loss
0%
Compounding Annual Return
0%
Drawdown
0%
Expectancy
0
Net Profit
0%
Sharpe Ratio
0
Probabilistic Sharpe Ratio
0%
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0
Beta
0
Annual Standard Deviation
0
Annual Variance
0
Information Ratio
0
Tracking Error
0
Treynor Ratio
0
Total Fees
$1.00
Estimated Strategy Capacity
$0
Lowest Capacity Asset
SPY Y4D62XTOKHUU|SPY R735QTJ8XC9X
from AlgorithmImports import *

class HipsterYellowGreenHippopotamus(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2021, 7, 1)
        self.SetEndDate(2021, 7, 31)
        self.SetCash(100000)

        self.SetSecurityInitializer(self.customSecurityInitializer)
        
        spy = self.AddEquity("SPY", Resolution.Minute)
        self.spy = spy.Symbol
    
    def customSecurityInitializer(self, security):
        security.SetDataNormalizationMode(DataNormalizationMode.Raw)
        for bar in self.GetLastKnownPrices(security.Symbol):
            security.SetMarketPrice(bar)

    def OnData(self, data):
        if not self.Portfolio.Invested:
            contracts = self.OptionChainProvider.GetOptionContractList(self.spy, self.Time)
            contracts = sorted([x for x in contracts if x.ID.OptionRight == OptionRight.Call], key=lambda x: x.ID.StrikePrice)
            if not contracts: return
            
            self.strike = contracts[0].ID.StrikePrice

            contracts = sorted([x for x in contracts if x.ID.StrikePrice == self.strike], key=lambda x: x.ID.Date)
            
            self.contract = contracts[0]
            self.AddOptionContract(self.contract, Resolution.Minute)

            self.Buy(self.contract, 1)

        if self.Portfolio[self.contract].Invested and self.strike < self.Securities[self.spy].Price:
            self.ExerciseOption(self.contract, 1)
            self.Quit()