Overall Statistics |
Total Trades 83 Average Win 2.53% Average Loss -1.41% Compounding Annual Return 4.032% Drawdown 12.200% Expectancy 0.293 Net Profit 19.398% Sharpe Ratio 0.558 Loss Rate 54% Win Rate 46% Profit-Loss Ratio 1.79 Alpha 0.044 Beta -0.093 Annual Standard Deviation 0.076 Annual Variance 0.006 Information Ratio 0.295 Tracking Error 0.076 Treynor Ratio -0.453 Total Fees $218.50 |
import numpy as np from QuantConnect.Python import PythonQuandl # quandl data not CLOSE from QuantConnect.Python import PythonData # custom data from QuantConnect.Data import SubscriptionDataSource from datetime import datetime, timedelta import decimal class FearAlgorithm(QCAlgorithm): def Initialize(self): self.SetCash(100000) self.SetStartDate(2014, 1, 1) self.SetEndDate(2017, 10, 10) # Add a benchmark asset to synchronize the algorithm self.AddEquity("SPY", Resolution.Daily).Symbol # Add VIX as our fear index. self.AddEquity("VXX", Resolution.Daily).Symbol # Get the 30-day EMA of the VIX: self.ema = self.EMA("VXX", 30) # Set warm up so we're instantly trading: self.SetWarmUp(180) def OnData(self, slice): if self.LiveMode: self.Debug("Running algorithm!!") # Make sure all the data we need is in place if self.IsWarmingUp: return if not slice.ContainsKey("VXX"): return if not slice.ContainsKey("SPY"): return if self.LiveMode: self.Debug("Warm Up Complete Deciding..") # Make some nice plots self.Plot("FEAR", "VXX", self.Securities["VXX"].Price) self.Plot("FEAR", "EMA", self.ema.Current.Value) # Decide when to invest if self.Securities["VXX"].Price < self.ema.Current.Value: if self.Portfolio.Invested: return if self.LiveMode: self.Debug("Investing in SPY...") self.SetHoldings("SPY", 1); else: self.Liquidate() if self.LiveMode: self.Debug("FEAR too great, liquidating...")