Overall Statistics Total Trades 20 Average Win 15.52% Average Loss -6.85% Compounding Annual Return 61.316% Drawdown 25.800% Expectancy 0.306 Net Profit 9.294% Sharpe Ratio 0.879 Loss Rate 60% Win Rate 40% Profit-Loss Ratio 2.26 Alpha -0.199 Beta 50.191 Annual Standard Deviation 0.698 Annual Variance 0.487 Information Ratio 0.856 Tracking Error 0.698 Treynor Ratio 0.012 Total Fees \$40.50
```import numpy as np
import pandas as pd
import datetime

from System import *
from QuantConnect import *
from QuantConnect.Algorithm import *
from QuantConnect.Data import *

class bugs(QCAlgorithm):

def Initialize(self):

self.SetStartDate(2018, 1, 1)   #Set Start Date
self.SetEndDate(2018, 3, 10)    #Set End Date
self.SetCash(25000)             #Set Strategy Cash

# Find more symbols here: http://quantconnect.com/data
self.symbol = option.Symbol
self.ATMcall = None
self.ATMput = None
self.Allocate = 0.10

# Scheduled event on Mondays at 3:45PM
self.Schedule.On(self.DateRules.Every([DayOfWeek.Friday]), \
self.TimeRules.At(15, 45), \
self.SellTime)

option.SetFilter(lambda universe: universe.IncludeWeeklys().Strikes(0, 0).Expiration(datetime.timedelta(15), datetime.timedelta(20)))

def OnData(self, slice):

if not self.Portfolio.Invested:

if slice != None:
for i in slice.OptionChains:
if i.Key != self.symbol: continue
optionchain = i.Value

self.Log("underlying price:" + str(optionchain.Underlying.Price))

puts = [x for x in optionchain if x.Right == 1]

# get closest ATM put
self.ATMput = sorted(puts, key = lambda x: x.Strike, reverse = True)[0]

self.Liquidate()
self.SetHoldings(self.ATMput.Symbol, self.Allocate)

def SellTime(self):
self.Liquidate()                        ```