Overall Statistics |
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return -74.014% Drawdown 16.800% Expectancy 0 Net Profit -10.705% Sharpe Ratio -4.515 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha -1.954 Beta 27.798 Annual Standard Deviation 0.305 Annual Variance 0.093 Information Ratio -4.584 Tracking Error 0.305 Treynor Ratio -0.05 Total Fees $1.78 |
import numpy as np from datetime import datetime, timedelta class BasicTemplateAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(2018, 12, 1) #Set Start Date self.SetEndDate(2018,12,31) #Set End Date self.SetCash(100000) #Set Strategy Cash self.AddEquity("SPY", Resolution.Minute) ## 10-period RSI Indicator using SMA self.rsi_30m = RelativeStrengthIndex(10, MovingAverageType.Simple) self.RegisterIndicator("SPY", self.rsi_30m) ## 30-min consolidator thirtyMinuteConsolidator = TradeBarConsolidator(timedelta(minutes=30)) thirtyMinuteConsolidator.DataConsolidated += self.ThirtyMinuteBarHandler self.SubscriptionManager.AddConsolidator("SPY", thirtyMinuteConsolidator) ## 10-day ADX indicator using daily resolution data self.adx_daily = self.ADX("SPY", 10, Resolution.Daily) def ThirtyMinuteBarHandler(self, sender, bar): ## This will log indicator data at 30-min intervals ## Note that in the logs, RSI_daily logs the same value until the next day, ## indicating that it is functioning properly self.Log("ADX_daily 30-min Handler Log:" + str(round(self.adx_daily.Current.Value,4))) self.Log("RSI_30m 30-min Handler Log:" + str(round(self.rsi_30m.Current.Value,4))) self.Log(' ') def OnData(self, data): ## Log indicator and SPY data for every TradeBar, which occurs every minute self.Log("RSI_30m OnData Log: " + str(round(self.rsi_30m.Current.Value,4))) self.Log("ADX_daily OnData Log: " + str(round(self.adx_daily.Current.Value,4))) self.Log('SPY Period: ' + str(data['SPY'].Period)) self.Log('SPY: ' + str(data['SPY'].Close)) self.Log(' ') if not self.Portfolio.Invested: self.SetHoldings("SPY", 1)