Overall Statistics |
Total Trades 7 Average Win 0% Average Loss 0% Compounding Annual Return -47.338% Drawdown 2.300% Expectancy 0 Net Profit -1.684% Sharpe Ratio -7.389 Probabilistic Sharpe Ratio 0.000% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha -0.342 Beta 0.123 Annual Standard Deviation 0.06 Annual Variance 0.004 Information Ratio 2.349 Tracking Error 0.166 Treynor Ratio -3.615 Total Fees $7.00 |
import numpy as np from datetime import date class MultidimensionalVerticalReplicator(QCAlgorithm): def Initialize(self): self.SetStartDate(2020, 9, 15) # Set Start Date self.SetCash(100000) # Set Strategy Cash self.AddEquity("SPY", Resolution.Minute) option = self.AddOption("SPY", Resolution.Minute) self.longest_expiration = 31 option.SetFilter(-2, 2, timedelta(1), timedelta(self.longest_expiration)) self.curr_day = -1 def OnData(self, data): if self.curr_day == self.Time.day: return self.curr_day = self.Time.day for chain in data.OptionChains.Values: contracts = sorted([c for c in chain], key=lambda x:x.Expiry, reverse=True) contract = contracts[0] self.MarketOrder(contract.Symbol, 1) for security in self.Securities.Values: if security.Invested and security.Symbol.SecurityType == SecurityType.Option: days_till_expiry = (security.Expiry - self.Time).days self.Log(f'Days till expiry: {days_till_expiry}') trading_days_till_expiry = list(self.TradingCalendar.GetDaysByType(TradingDayType.BusinessDay, self.Time, self.Time + (security.Expiry - self.Time))) self.Log(f'Trading Days till expiry: {len(trading_days_till_expiry)}') # do buying/selling logic here