| 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 0 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset |
# region imports
from AlgorithmImports import *
# endregion
class FormalBlackAnguilline(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2023, 1, 1)
self.SetEndDate(2023, 3, 8)
self.SetCash(100000) # Set Strategy Cash
self.spy = self.AddEquity("SPY", Resolution.Minute).Symbol
contracts = self.OptionChainProvider.GetOptionContractList(self.spy, self.Time.date())
if len(contracts) == 0 : return []
self.contract_list = [i for i in contracts if 10 < (i.ID.Date.date() - self.Time.date()).days < 100]
for contract in self.contract_list[:2]:
option = self.AddOptionContract(contract, Resolution.Minute)
option.PriceModel = OptionPriceModels.BjerksundStensland()
self.Debug(self.contract_list)
self.Securities[self.spy].VolatilityModel = StandardDeviationOfReturnsVolatilityModel(30, Resolution.Daily)
self.symbolDataBySymbol = {}
self.symbolDataBySymbol[self.spy] = SymbolData(self.spy)
self.Schedule.On(self.DateRules.EveryDay("SPY"),
self.TimeRules.BeforeMarketClose("SPY", 30),
self.RemoveOptions)
def RemoveOptions(self):
for symbol, symbolData in self.symbolDataBySymbol.items():
for contract in symbolData.contracts:
self.RemoveOptionContract(contract)
def OnData(self, data: Slice):
pass
def OnSecuritiesChanged(self, changes):
for added in changes.AddedSecurities:
if added.Symbol.SecurityType == SecurityType.Option:
self.symbolDataBySymbol[added.Underlying.Symbol].contracts.append(added.Symbol)
for removed in changes.RemovedSecurities:
if removed.Symbol.SecurityType == SecurityType.Equity:
self.symbolDataBySymbol.pop(removed.Symbol, None)
elif removed.Symbol.SecurityType == SecurityType.Option:
self.symbolDataBySymbol[removed.Underlying.Symbol].contracts.remove(removed.Symbol)
class SymbolData:
def __init__(self, ticker_symbol):
self.symbol = ticker_symbol
self.contracts = []