Overall Statistics |
Total Trades 19 Average Win 33.30% Average Loss -4.32% Compounding Annual Return 51.032% Drawdown 26.900% Expectancy 3.833 Net Profit 234.165% Sharpe Ratio 1.525 Probabilistic Sharpe Ratio 67.384% Loss Rate 44% Win Rate 56% Profit-Loss Ratio 7.70 Alpha 0.48 Beta -0.057 Annual Standard Deviation 0.31 Annual Variance 0.096 Information Ratio 0.891 Tracking Error 0.38 Treynor Ratio -8.27 Total Fees $329.33 |
import numpy as np from QuantConnect.Python import PythonQuandl class VIXPredictsStockIndexReturns(QCAlgorithm): def Initialize(self): self.SetStartDate(2018, 1, 1) self.SetEndDate(2020, 12, 1) self.SetCash(100000) self.AddEquity("SPY", Resolution.Daily) self.AddEquity("SPXL", Resolution.Daily) self.AddEquity("TMF", Resolution.Daily) self.vix = 'CBOE/VIX' self.AddData(QuandlVix, self.vix, Resolution.Daily) self.window = RollingWindow[float](252*2) hist = self.History([self.vix], 1000, Resolution.Daily) for close in hist.loc[self.vix]['vix close']: self.window.Add(close) self.lsma20 = self.LSMA(self.vix, 20, Resolution.Daily) self.lsma200 = self.LSMA(self.vix, 200, Resolution.Daily) self.ema2 = self.EMA("SPY",2,Resolution.Daily) self.ema10 = self.EMA("SPY",10,Resolution.Daily) self.stocks = None self.bonds = None self.SetWarmUp(200) def OnData(self, data): if not data.ContainsKey(self.vix): return self.window.Add(self.Securities[self.vix].Price) if not self.window.IsReady: return history_close = [i for i in self.window] self.Log(f"{self.Time} lsma20 {self.lsma20.Current.Value} lsma200 {self.lsma200.Current.Value}") if self.lsma20.Current.Value < self.lsma200.Current.Value and self.ema2.Current.Value > self.ema10.Current.Value and self.stocks == None: self.Liquidate("TMF") self.SetHoldings("SPXL", 1) self.stocks = 1 self.bonds = None if self.lsma20.Current.Value > self.lsma200.Current.Value and self.ema2.Current.Value < self.ema10.Current.Value and self.bonds == None: self.Liquidate("SPXL") self.SetHoldings("TMF", 1) self.bonds = 1 self.stocks = None class QuandlVix(PythonQuandl): def __init__(self): self.ValueColumnName = "VIX Close"