| Overall Statistics |
|
Total Trades 67 Average Win 1.02% Average Loss -0.94% Compounding Annual Return -33.552% Drawdown 23.400% Expectancy -0.811 Net Profit -5.096% Sharpe Ratio -0.339 Probabilistic Sharpe Ratio 28.275% Loss Rate 91% Win Rate 9% Profit-Loss Ratio 1.08 Alpha -0.184 Beta 2.174 Annual Standard Deviation 0.489 Annual Variance 0.239 Information Ratio -0.62 Tracking Error 0.281 Treynor Ratio -0.076 Total Fees $144.05 Estimated Strategy Capacity $3400000000.00 Lowest Capacity Asset ES Y4D62XFM9IPT |
from AlgorithmImports import *
class MuscularRedOrangeMosquito(QCAlgorithm):
def Initialize(self):
self.SetCash(100000)
self.SetStartDate(2022, 9, 16)
self.SetEndDate(2022, 11, 1)
self.es = self.AddFuture(Futures.Indices.SP500EMini)
self.es.SetFilter(5, 100)
self.entryTicket = None
self.exitTicket = None
self.highestPrice = 0
self.lowestPrice = 25000
def OnData(self, slice):
for chain in slice.FutureChains:
self.popularContracts = [contract for contract in chain.Value if contract.OpenInterest > 1000]
if len(self.popularContracts) == 0:
continue
sortedByOIContracts = sorted(self.popularContracts, key=lambda k : k.OpenInterest, reverse=True)
self.liquidContract = sortedByOIContracts[0]
price = self.Securities[self.liquidContract.Symbol].Price
if not self.Portfolio.Invested and not self.Transactions.GetOpenOrders(self.liquidContract.Symbol):
self.entryTicket = self.StopMarketOrder(self.liquidContract.Symbol, 1, price + 10)
if self.entryTicket is not None and self.entryTicket.Status != OrderStatus.Filled:
if price < self.lowestPrice:
self.lowestPrice = price
updateFields = UpdateOrderFields()
updateFields.StopPrice = price + 10
self.entryTicket.Update(updateFields)
if self.exitTicket is not None and self.Portfolio.Invested:
if price > self.highestPrice:
self.highestPrice = price
updateFields = UpdateOrderFields()
updateFields.StopPrice = price - 10
self.exitTicket.Update(updateFields)
def OnOrderEvent(self, orderEvent):
if orderEvent.Status != OrderStatus.Filled:
return
price = self.Securities[self.liquidContract.Symbol].Price
if self.entryTicket is not None and self.Portfolio.Invested:
self.exitTicket = self.StopMarketOrder(self.liquidContract.Symbol, -1, price - 10)