| Overall Statistics |
|
Total Trades 203 Average Win 0.20% Average Loss -0.05% Compounding Annual Return 10.300% Drawdown 25.300% Expectancy 1.406 Net Profit 39.823% Sharpe Ratio 0.549 Probabilistic Sharpe Ratio 14.908% Loss Rate 56% Win Rate 44% Profit-Loss Ratio 4.47 Alpha 0 Beta 0 Annual Standard Deviation 0.151 Annual Variance 0.023 Information Ratio 0.549 Tracking Error 0.151 Treynor Ratio 0 Total Fees $207.11 Estimated Strategy Capacity $270000.00 Lowest Capacity Asset XVZ UZ6Q81R5NIW5 |
from QuantConnect.Python import PythonQuandl
from QuantConnect.Data.Custom import *
class RetrospectiveFluorescentOrangeScorpion(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2018,1, 1) # Set Start Date
self.SetEndDate(2021,6,1) # Set End Date
self.SetCash(100000) # Set Strategy Cash
self.regime = 0
# Add VIX signal
self.AddFuture(Futures.Indices.VIX).SetFilter(timedelta(0), timedelta(days=90))
self.latest_VX = None
self.vx_identity = Identity("VX")
self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage)
# Define the security universe
self.tickers = ['PGJ','GLD','TLT','AIA','VWO','XLF','FXY','DBA','IYG','XVZ',"SPY"]
for symbol in self.tickers:
self.AddEquity(symbol, Resolution.Daily)
self.Schedule.On(self.DateRules.MonthStart(),self.TimeRules.AfterMarketOpen("SPY", 180), self.Rebalance)
self.PlotIndicator("VIX", self.vx_identity)
def OnData(self, data):
for chain in data.FutureChains:
if chain.Key.Value == "VX":
front_VX = sorted(chain.Value, key = lambda x: x.Expiry)[0]
self.latest_VX = front_VX.LastPrice
# if 1 in signal:
# if self.regime != 1:
# self.regime = 1
# self.Rebalance()
# self.regime = 1
# else:
# if self.regime != 0:
# self.regime = 0
# self.Rebalance()
# self.regime = 0
def OnEndOfDay(self):
if self.latest_VX:
self.vx_identity.Update(self.Time, self.latest_VX)
def Rebalance(self):
# Rebalance portfolio monthly
if self.regime == 0:
self.SetHoldings('PGJ',0.19)
self.SetHoldings('GLD',0.04)
self.SetHoldings('TLT',0.04)
self.SetHoldings('AIA',0.04)
self.SetHoldings('VWO',0.04)
self.SetHoldings('XLF',0.22)
self.SetHoldings('FXY',0.04)
self.SetHoldings('DBA',0.04)
self.SetHoldings('IYG',0.30)
self.SetHoldings('XVZ',0.04)
else:
self.SetHoldings('PGJ',0.04)
self.SetHoldings('GLD',0.04)
self.SetHoldings('TLT',0.04)
self.SetHoldings('AIA',0.04)
self.SetHoldings('VWO',0.09)
self.SetHoldings('XLF',0.30)
self.SetHoldings('FXY',0.04)
self.SetHoldings('DBA',0.04)
self.SetHoldings('IYG',0.25)
self.SetHoldings('XVZ',0.40)