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