| 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)
##