Overall Statistics |
Total Trades 1 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 $2300000000.00 Lowest Capacity Asset SPY R735QTJ8XC9X |
import datetime import math from QuantConnect.Securities.Option import OptionPriceModels from datetime import timedelta from QuantConnect.Data.UniverseSelection import * SYMBOL = "SPY" # BACKTEST SCENARIOS: ##################### # SPY sharp decrease during 20 Feb - 20 Mar due to covid: # STARTING_CASH = 32400; START = (2020, 1, 1); END = (2021, 1, 1) # 5.5 Years: # STARTING_CASH = 20700; START = (2015, 1, 1); END = (2021, 6, 1) # Debug 1 day: STARTING_CASH = 20700; START = (2015, 1, 1); END = (2015, 1, 3) # Debug 1 month: # STARTING_CASH = 50000; START = (2016, 1, 1); END = (2016, 2, 27) # SPY price trends downwards: # STARTING_CASH = 50000; START = (2020, 2, 20); END = (2020, 3, 20) # SPY price trends upwards: # STARTING_CASH = 50000; START = (2020, 2, 20); END = (2020, 3, 20) class BlahBlahAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(*START); self.SetEndDate(*END); self.SetCash(STARTING_CASH) equity = self.AddEquity(SYMBOL, Resolution.Minute) option = self.AddOption(SYMBOL, Resolution.Minute) self.symbol = option.Symbol self.UniverseSettings.Resolution = Resolution.Daily option.SetFilter(lambda universe: universe.WeeklysOnly().Strikes(0, +30).Expiration(timedelta(1), timedelta(30))) self.SetBenchmark(SYMBOL) def OnData(self,slice): close = slice[SYMBOL].Close price = slice[SYMBOL].Price self.Debug(f'{self.Time} bid_open ask_low {close} {price}') if not self.Portfolio[SYMBOL].Invested: self.MarketOrder(SYMBOL, 1) # long 1 underlying. def OnOrderEvent(self, orderEvent): self.Log(str(orderEvent))
from Selection.OptionUniverseSelectionModel import OptionUniverseSelectionModel from datetime import date, timedelta class OptionsUniverseSelectionModel(OptionUniverseSelectionModel): def __init__(self, select_option_chain_symbols): super().__init__(timedelta(1), select_option_chain_symbols) def Filter(self, filter): ## Define options filter -- strikes +/- 3 and expiry between 0 and 180 days away return (filter.Strikes(-2, +2) .Expiration(timedelta(0), timedelta(180)))