| Overall Statistics |
|
Total Trades 29361 Average Win 0.22% Average Loss -0.16% Compounding Annual Return 0.688% Drawdown 40.100% Expectancy 0.009 Net Profit 12.380% Sharpe Ratio 0.099 Loss Rate 57% Win Rate 43% Profit-Loss Ratio 1.33 Alpha -0.009 Beta 0.436 Annual Standard Deviation 0.12 Annual Variance 0.014 Information Ratio -0.268 Tracking Error 0.133 Treynor Ratio 0.027 Total Fees $56402.43 |
#
# QuantConnect Basic Template:
# Fundamentals to using a QuantConnect algorithm.
#
# You can view the QCAlgorithm base class on Github:
# https://github.com/QuantConnect/Lean/tree/master/Algorithm
#
import numpy as np
class BasicTemplateAlgorithm(QCAlgorithm):
def Initialize(self):
# Set the cash we'd like to use for our backtest
# This is ignored in live trading
self.SetCash(100000)
# Start and end dates for the backtest.
# These are ignored in live trading.
self.SetStartDate(2000,6,1)
self.SetEndDate(2017,6,1)
# Add assets you'd like to see
self.spy = self.AddEquity("SPY", Resolution.Daily).Symbol
self.gs = self.AddEquity("GS", Resolution.Daily).Symbol
self.ms = self.AddEquity("MS", Resolution.Daily).Symbol
self.msft = self.AddEquity("MSFT", Resolution.Daily).Symbol
self.ibm = self.AddEquity("ibm", Resolution.Daily).Symbol
self.gbp = self.AddForex("GBPUSD", Resolution.Daily).Symbol
self.aud = self.AddForex("AUDUSD", Resolution.Daily).Symbol
self.jpy = self.AddForex("USDJPY", Resolution.Daily).Symbol
self.count = 1
def OnData(self, slice):
# Simple buy and hold template
if self.count % 3 == 1:
self.Liquidate()
self.SetHoldings(self.spy, 0.2)
self.SetHoldings(self.gs, 0.2)
self.SetHoldings(self.ms, 0.2)
self.SetHoldings(self.msft, 0.2)
self.SetHoldings(self.ibm, 0.2)
if self.count % 3 == 2:
self.Liquidate()
self.SetHoldings(self.gbp, -0.2)
self.SetHoldings(self.aud, -0.2)
self.SetHoldings(self.jpy, -0.2)
if self.count % 3 == 0:
self.Liquidate()
self.SetHoldings(self.msft, 0.3)
self.SetHoldings(self.ibm, 0.3)
self.count += 1