Overall Statistics |
Total Trades 99 Average Win 0.00% Average Loss 0.00% Compounding Annual Return -0.169% Drawdown 0.000% Expectancy -0.083 Net Profit -0.021% Sharpe Ratio -2.09 Probabilistic Sharpe Ratio 7.328% Loss Rate 45% Win Rate 55% Profit-Loss Ratio 0.67 Alpha -0.001 Beta 0.003 Annual Standard Deviation 0.001 Annual Variance 0 Information Ratio 0.674 Tracking Error 0.171 Treynor Ratio -0.47 Total Fees $212.85 Estimated Strategy Capacity $710000000000.00 Lowest Capacity Asset ES XKGCMV4QK9VL |
#region imports from datetime import datetime, timedelta import datetime from AlgorithmImports import * import pandas as pd from io import StringIO from QuantConnect.Python import * from QuantConnect.Indicators import RollingWindow # #endregion class RetrospectiveTanButterfly(QCAlgorithm): def Initialize(self): self.SetStartDate(2020, 9, 17) # Set Start Date #self.SetEndDate(2022, 9, 24) self.SetEndDate(2020, 11, 1) self.SetCash(1000000000) # Set Strategy Cash self.symbolData = {} self.contract = self.AddFuture(Futures.Indices.SP500EMini , Resolution.Second, extendedMarketHours = False, dataNormalizationMode = DataNormalizationMode.BackwardsRatio, dataMappingMode = DataMappingMode.OpenInterest , contractDepthOffset = 0) symbol = self.contract.Symbol self.test1 = True self.trades_df = [] def OnData(self, data): if self.test1 == True: self.test1 = False data = self.Download("https://docs.google.com/spreadsheets/d/1NIbICr3S13U1zavi5AxOO9s_4GAg1RRXICn48j17498/export?format=csv") rows = [] #self.Log(f'data {data}') for row in data.split('\n'): rows.append(row.split(',')) self.trades_df = pd.DataFrame(np.array(rows[1:]),columns=['entry','direction']) self.trades_df['direction'] = self.trades_df['direction'].str.strip('\r') self.trades_df = self.trades_df.head(100) self.Log(f'length of trades df {(self.trades_df)}') #loop through entries in google sheet to place them when self.Time matches for trade in self.trades_df.itertuples(): if self.Time.strftime('%y/%m/%d %H:%M:%S') == str(trade.entry): self.Log(f'entry here') self.MarketOrder(self.contract.Mapped, trade.direction)