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 15.231 Tracking Error 0.061 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset |
class MuscularTanHorse(QCAlgorithm): def Initialize(self): self.SetEndDate(2021, 3, 3) # Set Start Date self.SetStartDate(2021,3,1) equities = ['MSFT'] for ticker in equities: self.AddEquity(ticker, Resolution.Daily) option = self.AddOption(ticker, Resolution.Daily) option.SetFilter(self.UniverseFunc) self.SetCash(100000) # Set Strategy Cash def getDTE(self, expiry, currentDate): expiryTS = pd.to_datetime(expiry) currentDateTS = pd.to_datetime(currentDate) diff = (expiryTS - currentDateTS) / np.timedelta64(1,'D') return diff def addInfoToDF(self, rawDF, priceHistory): #trying to just add the DTE for now testSeries = rawDF.apply(lambda row: self.getDTE(row['expiry'], self.Time), axis=1) #this works, returns series rawDF['DTE'] = rawDF.apply(lambda row: self.getDTE(row['expiry'], self.Time), axis=1) #this does not work, KeyError on 'DTE' newDF = rawDF.assign(d=testSeries.values) #does not work, KeyError on 'd' def UniverseFunc(self, universe): return universe.IncludeWeeklys().Expiration(TimeSpan.FromDays(0), TimeSpan.FromDays(20)).Strikes(-3,3) def OnData(self, data): self.optionData = data.OptionChains for stockSymbol in data.OptionChains: optionchain = stockSymbol.Value #extract this stock's option chain underlyingTicker = optionchain.Underlying.Symbol.ToString() #extract the stock's ticker underlyingPriceHist = self.History(self.Symbol(underlyingTicker),365) #get recent price history for further calculation rawDF = pd.DataFrame([[x.Right,float(x.Strike),x.Expiry,float(x.BidPrice),float(x.AskPrice)] for x in optionchain],index=[x.Symbol.Value for x in optionchain], columns=['type', 'strike', 'expiry', 'ask price', 'bid price']) #put options data into DataFrame dfWithData = self.addInfoToDF(rawDF, underlyingPriceHist) #pass df to helper function to add data return