Overall Statistics
Total Orders
2
Average Win
0%
Average Loss
0%
Compounding Annual Return
0%
Drawdown
0%
Expectancy
0
Start Equity
100000
End Equity
99952
Net Profit
0%
Sharpe Ratio
0
Sortino 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 XUERCWEBHSH2|SPY R735QTJ8XC9X
Portfolio Turnover
42.98%
from AlgorithmImports import *

class HipsterYellowGreenHippopotamus(QCAlgorithm):

    def initialize(self):
        self.set_start_date(2021, 7, 1)
        self.set_end_date(2021, 7, 31)
        self.set_cash(100000)

        self.set_security_initializer(self.custom_security_initializer)
        
        spy = self.add_equity("SPY", Resolution.MINUTE)
        self.spy = spy.symbol
    
    def custom_security_initializer(self, security):
        security.set_data_normalization_mode(DataNormalizationMode.RAW)
        for bar in self.get_last_known_prices(security.symbol):
            security.set_market_price(bar)

    def on_data(self, data):
        if not self.portfolio.invested:
            contracts = self.option_chain_provider.get_option_contract_list(self.spy, self.time)
            contracts = sorted([x for x in contracts if x.id.option_right == OptionRight.CALL], key=lambda x: x.id.strike_price)
            if not contracts: return
            
            self.strike = contracts[0].id.strike_price

            contracts = sorted([x for x in contracts if x.id.strike_price == self.strike], key=lambda x: x.id.date)
            
            self.contract = contracts[0]
            self.add_option_contract(self.contract, Resolution.MINUTE)

            self.buy(self.contract, 1)

        if self.portfolio[self.contract].invested and self.strike < self.securities[self.spy].price:
            self.exercise_option(self.contract, 1)
            self.quit()