Overall Statistics |
Total Trades 23 Average Win 0.34% Average Loss -0.04% Compounding Annual Return -1.813% Drawdown 4.000% Expectancy 5.412 Net Profit -1.774% Sharpe Ratio -0.582 Loss Rate 33% Win Rate 67% Profit-Loss Ratio 8.62 Alpha -0.005 Beta -0.621 Annual Standard Deviation 0.03 Annual Variance 0.001 Information Ratio -1.235 Tracking Error 0.03 Treynor Ratio 0.029 Total Fees $23.00 |
from Alphas.ConstantAlphaModel import ConstantAlphaModel from Risk.NullRiskManagementModel import NullRiskManagementModel import pandas as pd from datetime import timedelta import decimal as d import numpy as np from datetime import datetime from clr import AddReference AddReference("System") AddReference("QuantConnect.Algorithm") AddReference("QuantConnect.Indicators") AddReference("QuantConnect.Common") from System import * from QuantConnect import * from QuantConnect.Algorithm import * from QuantConnect.Indicators import * from QuantConnect.Data.UniverseSelection import * class BasicTemplateFrameworkAlgorithm(QCAlgorithmFramework): def __init__(self): self.date = None def Initialize(self): self.UniverseSettings.Resolution = Resolution.Daily self.SetStartDate(2018, 1, 7) #Set Start Date self.SetEndDate(2018, 12, 28) #Set End Date self.SetCash(30000) #Set Strategy Cash tickers = ["AAPL","FB", "SPY"] for x in tickers: self.AddEquity(x, Resolution.Daily) symbols = [ Symbol.Create(x, SecurityType.Equity, Market.USA) for x in tickers] self.universe = symbols self.SetUniverseSelection( ManualUniverseSelectionModel(symbols) ) self.Schedule.On(self.DateRules.EveryDay("SPY"), self.TimeRules.AfterMarketOpen("SPY",0), self.trade) self.SetAlpha(NullAlphaModel()) self.SetPortfolioConstruction(NullPortfolioConstructionModel()) self.SetExecution(NullExecutionModel()) self.SetRiskManagement(NullRiskManagementModel()) for x in tickers: self.rsi = self.RSI(x, 8) self.SetWarmUp(20) def trade(self): if self.IsWarmingUp: return for s in self.universe: if self.rsi.Current.Value < 35: self.SetHoldings(s,0.05) if self.Securities[str(s)].Invested: if self.rsi.Current.Value > 70: self.Liquidate () def OnOrderEvent(self, orderEvent): self.Log(str(orderEvent)) def OnEndOfDay(self): self.Plot("Indicators","RSI", self.rsi.Current.Value) ##