| Overall Statistics |
|
Total Trades 2 Average Win 5.52% Average Loss 0% Compounding Annual Return 0.534% Drawdown 56.700% Expectancy 0 Net Profit 5.523% Sharpe Ratio 0.122 Probabilistic Sharpe Ratio 0.191% Loss Rate 0% Win Rate 100% Profit-Loss Ratio 0 Alpha 0.016 Beta 0.049 Annual Standard Deviation 0.179 Annual Variance 0.032 Information Ratio -0.401 Tracking Error 0.238 Treynor Ratio 0.448 Total Fees $74.00 |
from math import floor
class FuturesHarryBrownStyle(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2010, 4, 20)
self.SetCash(1000000)
self.Settings.FreePortfolioValuePercentage = 0.3
self.usd = self.AddFuture(Futures.Indices.Russell2000EMini, Resolution.Minute)
# Work:
# Futures.Indices.Russell2000EMini
# Don't work:
# Futures.Indices.SP500EMini
# Futures.Indices.NASDAQ100EMini
# Futures.Indices.Dow30EMini
self.usd.SetFilter(30, 90)
self.bot = False
def OnData(self, slice):
if self.bot:
return
for chain in slice.FutureChains:
popularContracts = [contract for contract in chain.Value if contract.LastPrice > 0 ]
if len(popularContracts) == 0:
continue
sortedByOIContracts = sorted(popularContracts, key=lambda k : k.OpenInterest, reverse=True)
self.liquidContract = sortedByOIContracts[0]
if self.liquidContract.Symbol not in slice.Bars:
continue
# Check if the we are currently invested in the most liquid contract
if not self.Portfolio[self.liquidContract.Symbol].Invested:
self.SetHoldings(self.liquidContract.Symbol, 0.08)
if self.Portfolio.Invested:
self.Log(f"New Position: {self.liquidContract.Symbol}. Expiry: {self.liquidContract.Expiry}")
self.Log("\nPortfolio:\n" + "".join([f"{str(i.ID)} Invested: {self.Portfolio[i].Invested}\n" for i in self.Portfolio.keys()]))
self.bot = True
def OnEndOfAlgorithm(self):
self.Log("DONE!")
self.Log("\nPortfolio:\n" + "".join([f"{str(i.ID)} Invested: {self.Portfolio[i].Invested}\n" for i in self.Portfolio.keys()]))