| Overall Statistics |
|
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% Sharpe Ratio 0 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio 0 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 |
import numpy as np
from datetime import datetime
import pandas as pd
import math
class VolTrading(QCAlgorithm):
def __init__(self):
self.previous = None
self.position = None
def Initialize(self):
self.SetStartDate(2012,1,1) #Set Start Date
self.SetEndDate(2018,10,29) #Set End Date
self.SetCash(10000) #Set Strategy Cash
self.AddEquity("SPY", Resolution.Minute)
self.AddEquity("VIXY", Resolution.Minute)
self.spy_window = RollingWindow[TradeBar](1)
self.vixy_window = RollingWindow[TradeBar](1)
self.SetWarmUp(20)
def OnData(self, data):
if data.ContainsKey("SPY") == False: return
if data.ContainsKey("VIXY") == False: return
self.spy_window.Add(data["SPY"])
self.vixy_window.Add(data["VIXY"])
last_minute_close_s = self.spy_window[0] #of length 2
last_minute_close_v = self.vixy_window[0]
self.SPercent = math.log(data["SPY"].Close/last_minute_close_s.Close)
self.VPercent = math.log(data["VIXY"].Close/last_minute_close_v.Close)
if self.IsWarmingUp:
return
if self.SPercent <= -.01:
if self.position == None:
self.SetHoldings("VIXY", 1)
elif self.position == "SPY":
self.Liquidate("SPY")
self.SetHoldings("VIXY", 1)
self.position = "VIXY"
elif self.VPercent <= -.01:
if self.position == None:
self.SetHoldings("SPY", 1)
elif self.position == "VIXY":
self.Liquidate("VIXY")
self.SetHoldings("SPY", 1)
self.position = "SPY"