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 -5.881 Tracking Error 0.098 Treynor Ratio 0 Total Fees $0.00 |
class VentralHorizontalProcessor(QCAlgorithm): def Initialize(self): self.SetStartDate(2020, 11, 20) # Set Start Date self.SetCash(100000) # Set Strategy Cash self.AddOption("AAPL", Resolution.Minute) self.shortDelta = .25 self.longDelta = .15 self.curr_day = -1 def OnData(self, data): if self.curr_day != self.Time.day: self.getContracts(data) self.curr_day = self.Time.day def getContracts(self, slice): shortContract = None longContract = None # Get Contracts for i in slice.OptionChains: chain = i.Value contracts = [x for x in chain] contracts = sorted(contracts, key=lambda x: (x.Expiry, x.Greeks.Delta)) shortContract = min(contracts, key=lambda x: abs(x.Greeks.Delta-self.shortDelta)) longContract = min([c for c in contracts if c.Expiry==shortContract.Expiry], key=lambda x: abs(x.Greeks.Delta-self.longDelta)) self.Debug(f"shortcontract: Strike: {shortContract.Strike} Expiry: {shortContract.Expiry} Delta: {shortContract.Greeks.Delta}") self.Debug(f"longContract: Strike: {longContract.Strike} Expiry: {longContract.Expiry} Delta: {longContract.Greeks.Delta}") # Check that contracts are not the same if shortContract != longContract: pass #self.placeOrder(shortContract, longContract)