| Overall Statistics |
|
Total Trades 27 Average Win 20.88% Average Loss -4.11% Compounding Annual Return 7.933% Drawdown 36.700% Expectancy 1.105 Net Profit 145.378% Sharpe Ratio 0.478 Probabilistic Sharpe Ratio 2.991% Loss Rate 65% Win Rate 35% Profit-Loss Ratio 5.08 Alpha 0.119 Beta -0.064 Annual Standard Deviation 0.223 Annual Variance 0.05 Information Ratio -0.242 Tracking Error 0.353 Treynor Ratio -1.674 Total Fees $1378.66 Estimated Strategy Capacity $620000.00 Lowest Capacity Asset XHB TFYQNA7D69UT |
class CalculatingYellowGreenElephant(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2010, 1, 1)
self.SetCash(100000)
self.SetWarmup(90)
self.SetBenchmark("XHB")
periods = (30, 90)
self.trade = SymbolData(self, self.AddEquity("XHB").Symbol, periods)
self.indicator = SymbolData(self, self.AddEquity("WOOD").Symbol, periods)
self.prior = 0
def OnData(self, data):
if not self.indicator.is_ready():
return
if self.indicator.diff() < 0 and self.prior > 0:
if self.Portfolio[self.trade.symbol].IsShort or not self.Portfolio.Invested:
self.SetHoldings(self.trade.symbol, 1)
elif self.indicator.diff() > 0 and self.prior < 0:
if self.Portfolio[self.trade.symbol].IsLong or not self.Portfolio.Invested:
self.SetHoldings(self.trade.symbol, -1)
self.prior = self.indicator.diff()
class SymbolData:
def __init__(self, algorithm, symbol, periods):
self.symbol = symbol
self.short_ema = algorithm.EMA(self.symbol, periods[0], Resolution.Daily)
self.long_ema = algorithm.EMA(self.symbol, periods[1], Resolution.Daily)
def is_ready(self):
return self.short_ema.IsReady and self.long_ema.IsReady
def diff(self):
return self.long_ema.Current.Value - self.short_ema.Current.Value