| Overall Statistics |
|
Total Trades 35 Average Win 0.22% Average Loss -0.12% Compounding Annual Return 27.995% Drawdown 1.300% Expectancy 1.053 Net Profit 2.095% Sharpe Ratio 4.691 Loss Rate 29% Win Rate 71% Profit-Loss Ratio 1.91 Alpha 0.105 Beta 0.676 Annual Standard Deviation 0.053 Annual Variance 0.003 Information Ratio 0.91 Tracking Error 0.039 Treynor Ratio 0.37 Total Fees $49.67 |
import math
import numpy as np
import pandas as pd
import talib
class BasicTemplateAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetCash(100000)
self.SetStartDate(2017, 1, 1)
self.SetEndDate(2017, 1, 31)
self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage, AccountType.Margin)
# Add securities
self.equities = ["SPY","QQQ"]
# Get the data
self.SMA1eq = []
self.SMA5eq = []
for s in self.equities:
self.AddEquity(s, Resolution.Minute)
self.SMA1eq.append(self.SMA(s, 1, Resolution.Daily))
self.SMA5eq.append(self.SMA(s, 5, Resolution.Daily))
## Credit
# Schedule trades at 10am
self.Schedule.On(self.DateRules.EveryDay("SPY"),
self.TimeRules.AfterMarketOpen("SPY", 30),
Action(self.Rebalance))
def OnData(self, slice):
pass
def Rebalance(self):
# global variables
allocation = 1.0
vol = 20+1
min_pct = 0.01
max_pct = 0.20
long_mult = 1.0
short_mult = -1.0
target_weight = 0.5
for i in range(len(self.equities)):
#current_price = self.Securities[i].Price ### runtime error if you remove #
if self.SMA1eq[i].Current.Value >= self.SMA5eq[i].Current.Value:
self.SetHoldings(self.equities[i], target_weight*long_mult)
elif self.Portfolio.Invested:
self.Liquidate()
#self.Debug("{0} : sma1: {1} : sma5: {2}".format(self.credit[i], self.SMA1[i].Current.Value,self.SMA5[i].Current.Value))