Overall Statistics |
Total Trades 385 Average Win 1.22% Average Loss -1.54% Compounding Annual Return 3.490% Drawdown 21.600% Expectancy 0.203 Net Profit 77.888% Sharpe Ratio 0.551 Probabilistic Sharpe Ratio 3.274% Loss Rate 33% Win Rate 67% Profit-Loss Ratio 0.79 Alpha 0.006 Beta 0.281 Annual Standard Deviation 0.066 Annual Variance 0.004 Information Ratio -0.528 Tracking Error 0.135 Treynor Ratio 0.13 Total Fees $986.42 |
from QuantConnect.Data.Custom.CBOE import CBOE class VerticalTransdimensionalAutosequencers(QCAlgorithm): def Initialize(self): self.SetStartDate(2003, 1, 1) self.SetEndDate(2019, 10, 11) self.SetCash(100000) self.previous = 0.0 self.lastTrade = datetime(1, 1, 1) self.cboeVix = self.AddData(CBOE, "VIX").Symbol self.spy = self.AddEquity("SPY", Resolution.Daily).Symbol def OnData(self, data): # Only trade after 10 days have passed since we last traded if (self.Time - self.lastTrade) < timedelta(days=10): return # Liquidate our holdings after 10 days if self.Portfolio.Invested: self.Liquidate(self.spy) # Trading on the reversion to the mean by using # VIX as a proxy for the mean if not data.ContainsKey(self.cboeVix): return vix = data.Get(CBOE, self.cboeVix) current = vix.Close if self.previous != 0: # Calculate the percentage, and if it is greater than 10% # we long SPY for 10 days percentageChange = (current - self.previous) / self.previous if percentageChange > 0.10: self.SetHoldings(self.spy, 0.5) self.lastTrade = self.Time # Store the previous value for percentage calculation self.previous = vix.Close