Overall Statistics |
Total Trades 678 Average Win 1.48% Average Loss -2.48% Compounding Annual Return 53.574% Drawdown 57.400% Expectancy 0.271 Net Profit 226.915% Sharpe Ratio 1.069 Probabilistic Sharpe Ratio 39.545% Loss Rate 21% Win Rate 79% Profit-Loss Ratio 0.60 Alpha 0.466 Beta 0.474 Annual Standard Deviation 0.466 Annual Variance 0.217 Information Ratio 0.92 Tracking Error 0.468 Treynor Ratio 1.05 Total Fees $0.00 Estimated Strategy Capacity $7000000.00 Lowest Capacity Asset BTCUSD XJ |
#region imports from AlgorithmImports import * #endregion # Trading Kalman Filter # https://www.quantconnect.com/project/9975790 from pykalman import KalmanFilter import numpy as np # ---------------------------------------- CRYPTO = 'BTCUSD'; PERIOD = 42; LEV = 1.0; # ---------------------------------------- class EnergeticFluorescentOrangeElephant(QCAlgorithm): def Initialize(self): self.SetStartDate(2020, 1, 1) # self.SetEndDate(2021, 11, 1) self.crypto = self.AddCrypto(CRYPTO, Resolution.Daily).Symbol self.rollingWindow = RollingWindow[TradeBar](PERIOD) self.Consolidate(self.crypto, Resolution.Daily, self.CustomBarHandler) self.SetWarmUp(5*PERIOD, Resolution.Daily) def OnData(self, data): if not self.rollingWindow.IsReady: return L = np.flipud(np.array([self.rollingWindow[i].Low for i in range(PERIOD)])) self.kf = KalmanFilter(transition_matrices = [1], observation_matrices = [1], initial_state_mean = 0, initial_state_covariance = 1, observation_covariance=1, transition_covariance=.01) price = self.Securities[self.crypto].Price kf_l,_ = self.kf.filter(L) self.Plot(self.crypto, "Price", price) self.Plot(self.crypto, "Kalman L", kf_l[-1]) if price >= kf_l[-1]: self.SetHoldings(self.crypto, LEV) elif price < kf_l[-1]: self.SetHoldings(self.crypto, 0) def CustomBarHandler(self, bar): self.rollingWindow.Add(bar)