Overall Statistics |
Total Trades
236
Average Win
1.28%
Average Loss
-1.24%
Compounding Annual Return
1.766%
Drawdown
15.600%
Expectancy
0.137
Net Profit
21.254%
Sharpe Ratio
0.293
Probabilistic Sharpe Ratio
0.805%
Loss Rate
44%
Win Rate
56%
Profit-Loss Ratio
1.03
Alpha
-0.003
Beta
0.148
Annual Standard Deviation
0.065
Annual Variance
0.004
Information Ratio
-0.831
Tracking Error
0.155
Treynor Ratio
0.128
Total Fees
$236.17
|
# https://quantpedia.com/strategies/option-expiration-week-effect/ # # Investors choose stocks from the S&P 100 index as his/her investment universe (stocks could be easily tracked via ETF or index fund). # He/she then goes long S&P 100 stocks during the option-expiration week and stays in cash during other days. class OptionExpirationWeekEffect(QCAlgorithm): def Initialize(self): self.SetStartDate(2010, 1, 1) self.SetCash(10000) self.symbol = self.AddEquity("OEF", Resolution.Minute).Symbol option = self.AddOption("OEF") option.SetFilter(-3, 3, timedelta(0), timedelta(days = 60)) self.SetBenchmark("OEF") self.near_expiry = datetime.min self.Schedule.On(self.DateRules.Every(DayOfWeek.Monday, DayOfWeek.Monday), self.TimeRules.AfterMarketOpen(self.symbol, 1), self.Rebalance) def OnData(self, slice): if self.Time.date() == self.near_expiry.date(): self.Liquidate() def Rebalance(self): calendar = self.TradingCalendar.GetDaysByType(TradingDayType.OptionExpiration, self.Time, self.EndDate) expiries = [i.Date for i in calendar] if len(expiries) == 0: return self.near_expiry = expiries[0] if (self.near_expiry - self.Time).days <= 5: self.SetHoldings(self.symbol, 1)