Overall Statistics |
Total Trades 561 Average Win 1.37% Average Loss -1.85% Compounding Annual Return 4.912% Drawdown 26.300% Expectancy 0.124 Net Profit 77.134% Sharpe Ratio 0.367 Probabilistic Sharpe Ratio 0.461% Loss Rate 35% Win Rate 65% Profit-Loss Ratio 0.74 Alpha 0 Beta 0 Annual Standard Deviation 0.108 Annual Variance 0.012 Information Ratio 0.367 Tracking Error 0.108 Treynor Ratio 0 Total Fees $2047.24 Estimated Strategy Capacity $1200000000.00 Lowest Capacity Asset SPY R735QTJ8XC9X |
import numpy as np import pandas as pd class CalculatingFluorescentOrangeBee(QCAlgorithm): #1Today is Monday. 2The close must be at least 1% lower than Friday’s close. 3If one and two are true, then enter at the close. 4Exit at the close on Tuesday. def Initialize(self): self.SetStartDate(2010, 1, 1) # Set Start Date self.SetEndDate(2021, 12, 1) # Set Start Date self.SetCash(100000) # Set Strategy Cash self.spy = self.AddEquity("SPY", Resolution.Daily).Symbol self.SetWarmup(100) self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage, AccountType.Margin) # schedule: rebalance self.Schedule.On(self.DateRules.Every(DayOfWeek.Monday), self.TimeRules.BeforeMarketClose(self.spy, 0), self.entry_signal) self.Schedule.On(self.DateRules.Every(DayOfWeek.Tuesday), self.TimeRules.BeforeMarketClose(self.spy, 0), self.close_position) def entry_signal(self): histh = self.History(self.spy,180, Resolution.Minute).loc["SPY"]["close"] histd = self.History(self.spy,21, Resolution.Daily).loc["SPY"]["close"] histd_df = pd.DataFrame(histd) histh_df = pd.DataFrame([histh.iloc[-1]]) histd_df = histd_df.append(histh_df, ignore_index = True) ret = histd_df[::-1].pct_change() self.Log(str(ret.iloc[-1] * 100)) change = ret.iloc[-1] * 100 if change.close < 1.0: self.SetHoldings(self.spy, 1) def close_position(self): if self.Portfolio[self.spy].Invested: self.Liquidate() def OnData(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.SetHoldings("SPY", 1)