Overall Statistics |
Total Trades 26 Average Win 0.54% Average Loss 0% Compounding Annual Return 62.603% Drawdown 1.000% Expectancy 0 Net Profit 8.271% Sharpe Ratio 9.166 Loss Rate 0% Win Rate 100% Profit-Loss Ratio 0 Alpha 0.198 Beta 0.675 Annual Standard Deviation 0.053 Annual Variance 0.003 Information Ratio 1.496 Tracking Error 0.039 Treynor Ratio 0.726 Total Fees $41.82 |
import numpy as np class BasicTemplateAlgorithm(QCAlgorithm): def Initialize(self): self.SetCash(100000) self.SetStartDate(2017,1,1) self.SetEndDate(2017,3,1) self.spy = self.AddEquity("SPY", Resolution.Minute).Symbol self.qqq = self.AddEquity("QQQ", Resolution.Minute).Symbol self.stock_list = [self.spy, self.qqq] self.hold_day={} # Make an empty dictionary to store holding days self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.AfterMarketOpen(self.spy, 15), Action(self.rebalance)) def rebalance(self): self.check_days(self.stock_list) # deploy 'check_days()' function for stock in self.stock_list: if not self.Portfolio[stock].Invested: self.SetHoldings(stock, 0.5) self.hold_day[stock] = 0 # Add stock and 0 days to the dictionary if self.Portfolio[stock].Invested: if self.hold_day[stock] ==5: self.Liquidate(stock) self.hold_day[stock] = -1 # make days -1 if sold def check_days(self, stock_list): for stock in stock_list: if self.Portfolio[stock].Invested: self.hold_day[stock] += 1 # Increment on each holding stock by 1 day