| Overall Statistics |
|
Total Trades 4 Average Win 2.35% Average Loss 0% Compounding Annual Return 93.204% Drawdown 1.700% Expectancy 0 Net Profit 4.740% Sharpe Ratio 9.967 Probabilistic Sharpe Ratio 99.989% Loss Rate 0% Win Rate 100% Profit-Loss Ratio 0 Alpha 0.871 Beta -0.059 Annual Standard Deviation 0.08 Annual Variance 0.006 Information Ratio -3.893 Tracking Error 0.116 Treynor Ratio -13.575 Total Fees $2.00 |
from datetime import timedelta
class OptionBot1(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2020, 8, 3)
self.SetEndDate(2020,8,28)
self.SetCash(10000)
self.spy = self.AddEquity("SPY", Resolution.Minute)
self.option = self.AddOption("SPY",Resolution.Minute)
self.symbol = self.option.Symbol
self.option.SetFilter(-2,-1,timedelta(3),timedelta(7))
self.SetBenchmark(self.spy.Symbol)
def OnData(self, data):
for kvp in data.OptionChains:
if kvp.Key != self.symbol:
continue
optionchain = kvp.Value
put = [x for x in optionchain if x.Right == OptionRight.Put]
price = optionchain.Underlying.Price
# choose ITM contracts
contracts = [x for x in put if price - x.Strike > 0]
contracts = sorted(contracts, key = lambda x: x.Expiry, reverse = True)
if len(contracts) == 0:
continue
symbol = contracts[0].Symbol
self.Sell(symbol, 1)