| Overall Statistics |
|
Total Trades 5408 Average Win 0.09% Average Loss -0.09% Compounding Annual Return -57.222% Drawdown 50.800% Expectancy -0.298 Net Profit -50.771% Sharpe Ratio -5.483 Probabilistic Sharpe Ratio 0% Loss Rate 65% Win Rate 35% Profit-Loss Ratio 1.00 Alpha -0.453 Beta 0.052 Annual Standard Deviation 0.081 Annual Variance 0.007 Information Ratio -5.063 Tracking Error 0.128 Treynor Ratio -8.509 Total Fees $5408.00 Estimated Strategy Capacity $4800000.00 Lowest Capacity Asset TSLA UNU3P8Y3WFAD |
# EMAC, Take Profit and Stop Loss based on UnrealizedProfit
class FatBrownBison(QCAlgorithm):
def Initialize(self):
self.cash = 100000
self.ticker = "TSLA"
self.tp = 0.02
self.sl = -0.01
self.SetStartDate(2021, 1, 1)
self.SetEndDate(2021, 11, 1)
self.SetCash(self.cash)
self.stock = self.AddEquity(self.ticker, Resolution.Minute).Symbol
self.emaFast = self.EMA(self.stock, 12)
self.emaFastPrev = IndicatorExtensions.Of(Delay(1), self.emaFast)
self.emaSlow = self.EMA(self.stock, 26)
self.emaSlowPrev = IndicatorExtensions.Of(Delay(1), self.emaSlow)
self.SetWarmUp(150, Resolution.Minute)
def OnData(self, data):
if self.IsWarmingUp : return
if not self.emaFastPrev.IsReady: return
if not self.emaSlowPrev.IsReady: return
currSlowEMA = self.emaSlow.Current.Value
prevSlowEMA = self.emaSlowPrev.Current.Value
currFastEMA = self.emaFast.Current.Value
prevFastEMA = self.emaFastPrev.Current.Value
pnl = self.Portfolio[self.stock].UnrealizedProfit
if not self.Portfolio.Invested:
if prevFastEMA < prevSlowEMA and currFastEMA > currSlowEMA:
self.SetHoldings(self.stock, 1)
elif prevFastEMA > prevSlowEMA and currFastEMA < currSlowEMA:
self.SetHoldings(self.stock, -1)
elif self.Securities[self.stock].Invested:
if pnl >= self.tp:
self.Liquidate(self.stock, "Took profit")
elif pnl < self.sl:
self.Liquidate(self.stock, "Stop Loss")