| Overall Statistics |
|
Total Trades 0 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 -3.207 Tracking Error 0.091 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset |
class TestSPXIndexOptionWeeklyAlgorithm(QCAlgorithm):
def Initialize(self):
# Backtesting parameters
self.SetStartDate(2021, 1, 11)
self.SetEndDate(2021, 1, 22)
self.SetCash(1000000)
# Index Ticker Symbol
self.ticker = "SPX"
# Time Resolution
self.timeResolution = Resolution.Minute # Resolution.Minute .Hour .Daily
# Add the underlying Index
index = self.AddIndex(self.ticker, self.timeResolution)
index.SetDataNormalizationMode(DataNormalizationMode.Raw)
self.underlyingSymbol = index.Symbol
# Set Security Initializer (This does not seem to solve the issue with the benchmark below)
self.SetSecurityInitializer(self.security_initializer)
# -----------------------------------------------------------------------------
# Scheduled function: every day, 25 minutes after the market open
# -----------------------------------------------------------------------------
self.Schedule.On(self.DateRules.EveryDay(self.underlyingSymbol)
, self.TimeRules.AfterMarketOpen(self.underlyingSymbol, 25)
, Action(self.openPosition)
)
def security_initializer(self, security):
# * SecurityType.Index & SecurityType.IndexOption
security.SetDataNormalizationMode(DataNormalizationMode.Raw)
security.SetMarketPrice(self.GetLastKnownPrice(security))
def openPosition(self):
self.Debug("Entering method openPosition")
# Get the option contracts
contracts = self.OptionChainProvider.GetOptionContractList(self.underlyingSymbol, self.Time)
# Exit if there are no contracts
if not contracts:
self.Debug("OptionChainProvider returned no contracts!")
return
# Log the number of contracts that were found
self.Debug(" -> Found " + str(len(contracts)) + " contracts in the option chain!")
# Get the list of Expiration Dates in the option chain
expiry_list = sorted(set([contract.ID.Date.date() for contract in contracts]))
self.Debug(" -> Expiry dates: " + str(expiry_list))
def OnData(self, slice):
pass