| Overall Statistics |
|
Total Trades 33 Average Win 1.34% Average Loss -0.45% Compounding Annual Return 1.562% Drawdown 5.500% Expectancy 2.220 Net Profit 14.244% Sharpe Ratio 0.587 Probabilistic Sharpe Ratio 7.352% Loss Rate 19% Win Rate 81% Profit-Loss Ratio 2.96 Alpha 0.002 Beta 0.097 Annual Standard Deviation 0.019 Annual Variance 0 Information Ratio -0.671 Tracking Error 0.13 Treynor Ratio 0.113 Total Fees $31.45 Estimated Strategy Capacity $370000000.00 Lowest Capacity Asset ES XZDYPWUWC7I9 |
# QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
# Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation.
from AlgorithmImports import *
class BasicTemplateFuturesAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2013, 10, 8)
self.SetCash(1000000)
self.DateRules.Every(DayOfWeek.Monday)
self.TimeRules.At(21, 00)
#self.contractSymbol =
# Subscribe and set our expiry filter for the futures chain
futureSP500 = self.AddFuture(Futures.Indices.SP500EMini)
futureSP500.SetFilter(timedelta(0), timedelta(182))
benchmark = self.AddEquity("SPY")
self.SetBenchmark(benchmark.Symbol)
seeder = FuncSecuritySeeder(self.GetLastKnownPrices)
self.SetSecurityInitializer(lambda security: seeder.SeedSecurity(security))
def OnData(self,slice):
if not self.Portfolio.Invested:
for chain in slice.FutureChains:
# Get contracts expiring no earlier than in 90 days
contracts = list(filter(lambda x: x.Expiry > self.Time + timedelta(90), chain.Value))
# if there is any contract, trade the front contract
if len(contracts) == 0: continue
front = sorted(contracts, key = lambda x: x.Expiry, reverse=True)[0]
self.contractSymbol = front.Symbol
self.MarketOrder(front.Symbol , 1)