Overall Statistics |
Total Trades 22 Average Win 0.00% Average Loss -0.50% Compounding Annual Return -27.768% Drawdown 6.000% Expectancy -0.817 Net Profit -4.381% Sharpe Ratio -3.171 Loss Rate 82% Win Rate 18% Profit-Loss Ratio 0.01 Alpha -0.379 Beta 0.709 Annual Standard Deviation 0.1 Annual Variance 0.01 Information Ratio -4.435 Tracking Error 0.091 Treynor Ratio -0.448 Total Fees $45.21 |
import math import numpy as np import pandas as pd import statistics from datetime import datetime, timedelta class BasicTemplateAlgorithm(QCAlgorithm): def Initialize(self): self.SetCash(100000) self.SetStartDate(2017, 1, 1) self.SetEndDate(2017, 1, 31) # Add securities and get the data self.eq = ["SPY","IWM"] self.sma10 = dict() for s in self.eq: self.AddEquity(s, Resolution.Minute) self.sma10[s] = self.SMA(s, 10, Resolution.Daily) # Schedule trades self.Schedule.On(self.DateRules.EveryDay("SPY"), self.TimeRules.AfterMarketOpen("SPY", 5), Action(self.Rebalance)) # Days to warm up the indicators self.SetWarmup(timedelta(20)) def OnData(self, slice): pass def Rebalance(self): for s in self.eq: price = self.Securities[s].Price self.Log("{} {}" .format(s, price)) self.Log("{} {}" .format(s, self.sma10[s])) self.Log("{} {}" .format(s, float(price) > self.sma10)) if price >= self.sma10[s].Current.Value: self.SetHoldings(s, 1.0) if price < self.sma10[s].Current.Value: self.SetHoldings(s, 0.0)