Overall Statistics |
Total Trades 31 Average Win 0.56% Average Loss 0% Compounding Annual Return 40712.128% Drawdown 5.600% Expectancy 0 Net Profit 8.584% Sharpe Ratio 185.166 Probabilistic Sharpe Ratio 99.949% Loss Rate 0% Win Rate 100% Profit-Loss Ratio 0 Alpha -18.028 Beta 0.034 Annual Standard Deviation 0.217 Annual Variance 0.047 Information Ratio -2942.866 Tracking Error 0.561 Treynor Ratio 1167.22 Total Fees $7.70 Estimated Strategy Capacity $310000.00 |
class BasicTemplateAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(2021, 2, 15) self.SetEndDate(2021, 2, 19) self.SetCash('USD', 100) self.SetCash('ETH', 0) self.Settings.FreePortfolioValuePercentage = 0.05 self.symbol = self.AddCrypto("ETHUSD", Resolution.Minute, Market.GDAX).Symbol self.SetBrokerageModel(BrokerageName.GDAX, AccountType.Cash) self.sto = self.STO("ETHUSD", 14) self.sell_price = None def OnData(self, data): if not self.sto.IsReady: return price = self.Securities[self.symbol].Close if self.sto.Current.Value < 10 and self.Portfolio.CashBook["ETH"].Amount == 0: self.Debug("STO is low") # Calculate order quantity usd = self.Portfolio.CashBook["USD"].Amount quantity = usd * (1 - self.Settings.FreePortfolioValuePercentage) / price self.MarketOrder(self.symbol, quantity) self.Debug(f"Market order was placed for {quantity} ETH") self.sell_price = (1 + 0.01) * price if self.sell_price is not None and price >= self.sell_price: self.Debug("Price is at a 1% gain") self.MarketOrder(self.symbol, -self.Portfolio.CashBook["ETH"].Amount) self.sell_price = None