| Overall Statistics |
|
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% Sharpe Ratio 0 Probabilistic Sharpe Ratio 0% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio -3.313 Tracking Error 0.163 Treynor Ratio 0 Total Fees $0.00 |
class MeanReversionResearch(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2020, 10, 1)
self.SetEndDate(2020, 12, 5)
self.SetCash(100_000)
self.symbol1 = self.AddEquity('CVX', Resolution.Daily).Symbol
self.symbol2 = self.AddEquity('XOM', Resolution.Daily).Symbol
lookback = 20
self.sma = SimpleMovingAverage(lookback)
self.std = StandardDeviation(lookback)
def OnData(self, data):
if data.ContainsKey(self.symbol1) and data.ContainsKey(self.symbol2):
ratio = data[self.symbol1].Close / data[self.symbol2].Close
self.sma.Update(self.Time, ratio)
self.std.Update(self.Time, ratio)
if self.sma.IsReady and self.std.IsReady:
self.Plot("SMA", "Value", self.sma.Current.Value)
self.Plot("STD", "Value", self.std.Current.Value)
z_score = (ratio - self.sma.Current.Value) / self.std.Current.Value
self.Plot("Z Score", "Value", z_score)