Overall Statistics |
Total Trades 32 Average Win 1.88% Average Loss -4.12% Compounding Annual Return 4.771% Drawdown 29.400% Expectancy 0.092 Net Profit 5.199% Sharpe Ratio 0.259 Loss Rate 25% Win Rate 75% Profit-Loss Ratio 0.46 Alpha 0 Beta 3.951 Annual Standard Deviation 0.209 Annual Variance 0.044 Information Ratio 0.193 Tracking Error 0.209 Treynor Ratio 0.014 Total Fees $0.00 |
import numpy as np from datetime import timedelta class BasicTemplateAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(2017, 1, 1) self.SetEndDate(2018, 2, 1) self.SetCash(10000) self.symbol = "BTCUSD" self.fast_ma_period = 50 self.slow_ma_period = 200 self.SetWarmUp(timedelta(days= 50)) Crypto = self.AddCrypto(self.symbol, Resolution.Hour).Symbol self.FastMA = self.SMA(Crypto, self.fast_ma_period, Resolution.Hour) self.FastMAValues = RollingWindow[Decimal](2) self.SlowMA = self.SMA(Crypto, self.slow_ma_period, Resolution.Hour) self.SlowMAValues = RollingWindow[Decimal](2) def OnData(self, data): if self.IsWarmingUp: return self.FastMAValues.Add(self.FastMA.Current.Value) self.SlowMAValues.Add(self.SlowMA.Current.Value) if self.FastMAValues.IsReady and self.SlowMAValues.IsReady: if self.FastMAValues[1] <= self.SlowMAValues[1]: if not self.Portfolio.Invested and self.Portfolio.CashBook["BTC"].Amount == 0: self.Buy("BTCUSD", 2) else: if self.Portfolio.CashBook["BTC"].Amount > 0: self.Liquidate("BTCUSD")