| Overall Statistics |
|
Total Orders 65411 Average Win 1.72% Average Loss -17.68% Compounding Annual Return 0% Drawdown 100.000% Expectancy -0.726 Start Equity 100000 End Equity -40.95 Net Profit -100.041% Sharpe Ratio -0.579 Sortino Ratio -0.368 Probabilistic Sharpe Ratio 0.000% Loss Rate 75% Win Rate 25% Profit-Loss Ratio 0.10 Alpha -0.66 Beta -1.786 Annual Standard Deviation 1.633 Annual Variance 2.667 Information Ratio -0.672 Tracking Error 1.643 Treynor Ratio 0.529 Total Fees $2824.12 Estimated Strategy Capacity $24000000.00 Lowest Capacity Asset SPY 2ZT6E32N68Z1I|SPY R735QTJ8XC9X Portfolio Turnover 781.96% |
# region imports
from AlgorithmImports import *
# endregion
class RetrospectiveGreenCaribou(QCAlgorithm):
def initialize(self):
self.add_chart(Chart("Portfolio Margin"))
self.set_start_date(2013,10, 7) #Set Start Date
self.set_end_date(2014,10,11) #Set End Date
self.set_cash(100000) #Set Strategy Cash
# Find more symbols here: http://quantconnect.com/data
self.add_equity("SPY", Resolution.MINUTE)
option = self.add_option("SPY")
self.option_symbol = option.symbol
option.set_filter(lambda u: (u.strikes(-2, +2).expiration(0, 180)))
self.bought_option = False
def on_data(self, data):
'''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.
Arguments:
data: Slice object keyed by symbol containing the stock data
'''
if not self.portfolio.invested:
self.set_holdings("SPY", 1)
if self.time.year < 2014:
return
chain = data.option_chains.get_value(self.option_symbol)
if chain is None or self.bought_option:
return
# we sort the contracts to find at the money (ATM) contract with farthest expiration
contracts = sorted(sorted(sorted(chain, \
key = lambda x: abs(chain.underlying.price - x.strike)), \
key = lambda x: x.expiry, reverse=True), \
key = lambda x: x.right, reverse=True)
# if found, trade it
if len(contracts) == 0: return
symbol = contracts[0].symbol
self.market_order(symbol, 1)