| Overall Statistics |
|
Total Trades 625 Average Win 5.02% Average Loss -0.22% Compounding Annual Return -2.009% Drawdown 54.700% Expectancy -0.247 Net Profit -22.554% Sharpe Ratio -0.022 Probabilistic Sharpe Ratio 0.003% Loss Rate 97% Win Rate 3% Profit-Loss Ratio 22.56 Alpha 0.004 Beta -0.09 Annual Standard Deviation 0.162 Annual Variance 0.026 Information Ratio -0.371 Tracking Error 0.247 Treynor Ratio 0.039 Total Fees $831.40 |
import numpy as np
from QuantConnect.Python import PythonQuandl
class VIXPredictsStockIndexReturns(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2006, 1, 1)
self.SetEndDate(2018, 8, 1)
self.SetCash(100000)
self.AddEquity("OEF", 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)
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]
if self.Securities[self.vix].Price > np.percentile(history_close, 90):
self.SetHoldings("OEF", 1)
elif self.Securities[self.vix].Price < np.percentile(history_close, 10):
self.SetHoldings("OEF", -1)
class QuandlVix(PythonQuandl):
def __init__(self):
self.ValueColumnName = "VIX Close"