Overall Statistics |
Total Trades 2327 Average Win 0.01% Average Loss -0.03% Compounding Annual Return 13.201% Drawdown 5.000% Expectancy 0.089 Net Profit 10.367% Sharpe Ratio 1.601 Loss Rate 12% Win Rate 88% Profit-Loss Ratio 0.24 Alpha 0.109 Beta -0.028 Annual Standard Deviation 0.065 Annual Variance 0.004 Information Ratio -0.725 Tracking Error 0.142 Treynor Ratio -3.766 Total Fees $2347.52 |
from Execution.ImmediateExecutionModel import ImmediateExecutionModel from Portfolio.EqualWeightingPortfolioConstructionModel import EqualWeightingPortfolioConstructionModel class TransdimensionalResistanceAtmosphericScrubbers(QCAlgorithm): def Initialize(self): # Set Start Date so that backtest has 5+ years of data self.SetStartDate(2019, 1, 1) # No need to set End Date as the final submission will be tested # up until the review date # Set $1m Strategy Cash to trade significant AUM self.SetCash(1000000) # Add a relevant benchmark, with the default being SPY self.AddEquity('SPY', Resolution.Daily) self.SetBenchmark('SPY') # Use the Alpha Streams Brokerage Model, developed in conjunction with # funds to model their actual fees, costs, etc. # Please do not add any additional reality modelling, such as Slippage, Fees, Buying Power, etc. self.SetBrokerageModel(AlphaStreamsBrokerageModel()) self.SetExecution(ImmediateExecutionModel()) self.SetPortfolioConstruction(InsightWeightingPortfolioConstructionModel()) self.SetUniverseSelection(TechnologyETFUniverse()) self.universe = { } self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.AfterMarketOpen('SPY', 0), self.ResetTrades) self.traded = 0 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 ''' def ResetTrades(self): if self.traded == 0: for symbol, assetData in self.universe.items(): ins = Insight(symbol, timedelta(400), InsightType.Price, InsightDirection.Up, None, None) ins.Weight = 0.03 self.EmitInsights(ins) self.traded = 1 # Initializing ETF Universe Securities def OnSecuritiesChanged(self, changes): for s in changes.AddedSecurities: if s.Symbol not in self.universe: self.universe[s.Symbol] = s.Symbol