| 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.199 Tracking Error 0.08 Treynor Ratio 0 Total Fees $0.00 |
from QuantConnect.Securities.Option import OptionPriceModels
from datetime import timedelta
class LongStrangleAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2020, 1, 2)
self.SetEndDate(2020, 1, 14)
self.SetCash(100000)
equity = self.AddEquity("SPY", Resolution.Minute)
equity.SetDataNormalizationMode(DataNormalizationMode.Raw)
option = self.AddOption("SPY", Resolution.Minute)
self.symbol = option.Symbol
option.SetFilter(-1, 1, timedelta(45), timedelta(55))
option.PriceModel = OptionPriceModels.BlackScholes() # BlackScholes and Integral models return 0-value greeks
self.SetWarmUp(155, Resolution.Daily)
self.show = True
def OnData(self,slice):
if self.IsWarmingUp: return
for i in slice.OptionChains:
if i.Key != self.symbol: continue
optionchain = i.Value
options_by_type = [x for x in optionchain if x.Right == OptionRight.Call]
contracts = sorted(options_by_type, key = lambda x: abs(x.Greeks.Delta), reverse=True)
if len(contracts) == 0: return None #no option was found
if self.show:
self.show = False
self.PrintOptionContract(contracts[0])
def PrintOptionContract(self, contract):
self.Log(contract.Symbol.Value + ", strike: " + str(contract.Strike) + \
", Gamma" + str(contract.Greeks.Gamma) + \
", Rho" + str(contract.Greeks.Rho) + \
", Delta: " + str(contract.Greeks.Delta) + \
", Vega: " + str(contract.Greeks.Vega) +\
", IV: " + str(contract.ImpliedVolatility) + \
", AskPrice: " + str(contract.AskPrice) + \
", Underlying Price: " + str(contract.UnderlyingLastPrice))
def OnEndOfDay(self):
self.show = True