Overall Statistics |
Total Trades
33
Average Win
0%
Average Loss
-0.73%
Compounding Annual Return
-1.845%
Drawdown
18.900%
Expectancy
-1
Net Profit
-1.730%
Sharpe Ratio
-0.072
Loss Rate
100%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0.307
Beta
-15.891
Annual Standard Deviation
0.134
Annual Variance
0.018
Information Ratio
-0.221
Tracking Error
0.134
Treynor Ratio
0.001
Total Fees
$60.00
|
from Alphas.RsiAlphaModel import RsiAlphaModel from Execution.ImmediateExecutionModel import ImmediateExecutionModel from Portfolio.EqualWeightingPortfolioConstructionModel import EqualWeightingPortfolioConstructionModel from Risk.MaximumDrawdownPercentPerSecurity import MaximumDrawdownPercentPerSecurity from Selection.QC500UniverseSelectionModel import QC500UniverseSelectionModel class MyAlgorithm(QCAlgorithm): def Initialize(self): self.symbol = "SPY" self.res2use = Resolution.Daily self.SetStartDate(2018, 6, 17) # Set Start Date self.SetCash(100000) # Set Strategy Cash # request the daily equity data self.AddEquity(self.symbol, self.res2use) self.AddPlots(self.symbol, self.res2use) # Six module plug and play algorithm development model self.AddAlpha(RsiAlphaModel(60, self.res2use)) self.SetExecution(ImmediateExecutionModel()) self.SetPortfolioConstruction(EqualWeightingPortfolioConstructionModel()) self.SetRiskManagement(MaximumDrawdownPercentPerSecurity(0.01)) # self.SetUniverseSelection(QC500UniverseSelectionModel()) symbols = [ Symbol.Create(self.symbol, SecurityType.Equity, Market.USA) ] self.SetUniverseSelection( ManualUniverseSelectionModel(symbols) ) 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(self.symbol, 1.0) def AddPlots(self, symbol, res2use): # Calcualte and plot various technical indicators self.sym_price = self.Identity(symbol) # Process: 1. Create Indictor # 2. Register the daily data of "SPY" to automatically update the indicator # 3. Plot indicator # SMA - Simple moving average self.sma50 = self.SMA(symbol, 50, res2use) self.sma200 = self.SMA(symbol, 200, res2use) self.RegisterIndicator(symbol, self.sma50) self.RegisterIndicator(symbol, self.sma200) self.PlotIndicator("SMA50-SMA200", self.sym_price, self.sma50, self.sma200) # BB - Bolling Bands self.bb = self.BB(symbol, 200, res2use) self.RegisterIndicator(symbol, self.bb) self.PlotIndicator("BB", self.sym_price, self.bb.UpperBand, self.bb.LowerBand) # RSI - Relative Strength Index self.rsi = self.RSI(symbol, 10, MovingAverageType.Simple, res2use) self.RegisterIndicator(symbol, self.rsi) self.PlotIndicator("RSI", self.rsi)