| Overall Statistics |
|
Total Trades 5 Average Win 4.38% Average Loss -0.67% Compounding Annual Return 21.979% Drawdown 11.700% Expectancy 2.781 Net Profit 10.277% Sharpe Ratio 1.707 Loss Rate 50% Win Rate 50% Profit-Loss Ratio 6.56 Alpha 0.272 Beta -3.181 Annual Standard Deviation 0.122 Annual Variance 0.015 Information Ratio 1.542 Tracking Error 0.122 Treynor Ratio -0.065 Total Fees $10.18 |
import clr
clr.AddReference("System")
clr.AddReference("QuantConnect.Algorithm")
clr.AddReference("QuantConnect.Indicators")
clr.AddReference("QuantConnect.Common")
from System import *
from QuantConnect import *
from QuantConnect.Algorithm import *
from QuantConnect.Indicators import *
import decimal as d
import math
import numpy as np
import pandas as pd
import statistics
from datetime import datetime, timedelta
class MovingAverageCrossAlgorithm(QCAlgorithm):
def Initialize(self):
'''Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized.'''
self.SetStartDate(2017,9,8) #Set Start Date
self.SetEndDate(2018,3,6) #Set End Date
self.SetCash(100000) #Set Strategy Cash
# Find more symbols here: http://quantconnect.com/data
self.spy = self.AddEquity("SPY", Resolution.Minute).Symbol
# create a 21 day exponential moving average
self.SPY = self.EMA("SPY", 252, Resolution.Daily);
self.previous = None
def OnData(self, data):
#Define a small tolerance on our checks to avoid bouncing
tolerance = 0.003;
#SPY
if self.Securities["SPY"].Price > self.SPY.Current.Value * d.Decimal(1 + tolerance):
cash = self.Portfolio.Cash
number_of_shares = (cash/self.Securities["SPY"].Price)
self.MarketOrder("SPY", number_of_shares)
if self.Securities["SPY"].Price < self.SPY.Current.Value * d.Decimal(1 - tolerance):
self.Liquidate("SPY")
self.previous = self.Time