Overall Statistics |
Total Trades
132
Average Win
1.12%
Average Loss
-1.17%
Compounding Annual Return
5.089%
Drawdown
5.500%
Expectancy
0.363
Net Profit
31.954%
Sharpe Ratio
0.897
Loss Rate
30%
Win Rate
70%
Profit-Loss Ratio
0.96
Alpha
0.025
Beta
0.194
Annual Standard Deviation
0.052
Annual Variance
0.003
Information Ratio
-0.598
Tracking Error
0.105
Treynor Ratio
0.239
Total Fees
$132.00
|
from datetime import timedelta, datetime class OptionExpirationWeekEffectAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(2013, 1, 1) self.SetEndDate(2018, 8, 1) self.SetCash(10000) self.AddEquity("OEF", Resolution.Minute) option = self.AddOption("OEF") option.SetFilter(-3, 3, timedelta(0), timedelta(days = 60)) self.Schedule.On(self.DateRules.Every(DayOfWeek.Monday, DayOfWeek.Monday), self.TimeRules.At(10, 0), self.Rebalance) self.lastest_expiry = datetime.min self.SetBenchmark("OEF") def OnData(self, slice): if self.Time.date() == self.lastest_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.lastest_expiry = expiries[0] if (self.lastest_expiry - self.Time).days <= 5: self.SetHoldings("OEF", 1)