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
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
# QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
# Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation.
#
from clr import AddReference
AddReference("System")
AddReference("QuantConnect.Algorithm")
AddReference("QuantConnect.Common")

from System import *
from QuantConnect import *
from QuantConnect.Algorithm import *
from QuantConnect.Securities.Option import OptionPriceModels

from datetime import timedelta

class atmCallDeltaExample(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2018, 11, 1)
        self.SetEndDate(2019, 3, 10)
        self.SetCash(100000)
        
        

        option = self.AddOption("NVDA",Resolution.Minute)
        self.option_symbol = option.Symbol

        # set our strike/expiry filter for this option chain
        option.SetFilter(-1, 4, timedelta(21), timedelta(40))
        option.PriceModel = OptionPriceModels.CrankNicolsonFD()
        
        
        self.SetWarmUp(5)

    def OnData(self,slice):
        if self.Portfolio.Invested: return
        
        # Loop through the option chain at the end of day
        if not (self.Time.hour == 10 and self.Time.minute == 00): return
        for kvp in slice.OptionChains:
            
            if kvp.Key != self.option_symbol: continue
            chain = kvp.Value
            
            # Retrieve call options
            call = [i for i in chain if i.Right == OptionRight.Call]
            if len(call) == 0: continue
            
            # Retrieve the call ATM option contract, at the furthest date within our filtered universe of options
            contracts =  sorted(sorted(call, key=lambda x: x.Expiry, reverse=False), key=lambda x: abs(x.UnderlyingLastPrice - x.Strike))
            atm_contract = contracts[0]
            
            is_tradable=self.Securities[atm_contract.Symbol].IsTradable
            if not is_tradable:
                self.Log("Not tradable")
            else:
                self.Log("Tradable")
            
            delta = atm_contract.Greeks.Delta
            
            # Print out the delta value for the ATM call option contract
            if abs(delta) > 0:
                self.Log(str(atm_contract) + " - Delta: " + str(atm_contract.Greeks.Delta))

    def OnOrderEvent(self, orderEvent):
        self.Log(str(orderEvent))