Overall Statistics Total Trades 33 Average Win 6.24% Average Loss -1.98% Compounding Annual Return 18269.169% Drawdown 24.400% Expectancy 1.333 Net Profit 23.892% Sharpe Ratio 3.219 Loss Rate 44% Win Rate 56% Profit-Loss Ratio 3.15 Alpha 2.081 Beta 216.439 Annual Standard Deviation 1.806 Annual Variance 3.263 Information Ratio 3.209 Tracking Error 1.806 Treynor Ratio 0.027 Total Fees \$43.45
```import numpy as np
from datetime import datetime
import pandas as pd

def Initialize(self):

self.SetStartDate(2018,2,1)  #Set Start Date
self.SetEndDate(2018,2,15)    #Set End Date
self.SetCash(10000)           #Set Strategy Cash
self.SetWarmUp(100)
self.previous = None
self.position = None

def OnData(self, data):
self.stop_price_v_high = float(data["VIXY"].Open) * 1.05
self.stop_price_v_low = float(data["VIXY"].Open) * .9
self.stop_price_s_high = float(data["SPY"].Open) * 1.05
self.stop_price_s_low = float(data["SPY"].Open) * .9

if self.IsWarmingUp: return

if data.Bars.ContainsKey("SPY") or data.Bars.ContainsKey("VIXY"):

SPercent =  np.log(float(self.Securities[self.spy].Price/data["SPY"].Open))
VPercent =  np.log(float(self.Securities[self.vixy].Price/data["VIXY"].Open))

if SPercent <= -0.003:
#and  VPercent >= .003
if self.position == None:
self.SetHoldings("VIXY", 1)
elif self.position == "SPY":
self.Liquidate("SPY")
self.SetHoldings("VIXY", 1)
self.position = "VIXY"

if SPercent >= .003:
#and VPercent <= -.003
if self.position == None:
self.SetHoldings("SPY", 1)
elif self.position == "VIXY":
self.Liquidate("VIXY")
self.SetHoldings("SPY", 1)
self.position = "SPY"

if self.position =="VIXY" and  self.Securities[self.vixy].Price == self.stop_price_v_high:
self.Liquidate("VIXY")
elif self.position =="VIXY" and  self.Securities[self.vixy].Price == self.stop_price_v_low:
self.Liquidate("VIXY")

if self.position =="SPY" and  self.Securities[self.spy].Price == self.stop_price_s_high:
self.Liquidate("SPY")
elif self.position =="SPY" and  self.Securities[self.spy].Price == self.stop_price_s_low:
self.Liquidate("SPY")

#if self.position =="VIXY" and  self.vixy == self.stop_price_v_high:
#   self.StopMarketOrder(self.vixy, -self.Portfolio["VIXY"].Quantity, stop_price_v_high)
#elif self.position =="VIXY" and  self.vixy == self.stop_price_v_low:
#    self.StopMarketOrder(self.vixy, -self.Portfolio["VIXY"].Quantity, stop_price_v_low)

#if self.position =="SPY" and  self.spy == self.stop_price_s_high:
#    self.StopMarketOrder(self.spy, -self.Portfolio["SPY"].Quantity, stop_price_s_high)
#elif self.position =="SPY" and  self.spy == self.stop_price_s_low:
#    self.StopMarketOrder(self.spy, -self.Portfolio["SPY"].Quantity, stop_price_s_low)

### want to lock in returns and start algorthim over
# if return is >= .5:
#liquidate all positions and start algrothim over
#elif return <=-.3:
#stop loss
#else:
#keep running

## change vixy to another VIX
## look to  see if can use correlation as
# when correctation is close to - 1 and 1 use
## try to use X

### id sd is high buy into or if sd hight and regression is hight buy into

###                        ```
```import numpy as np
from datetime import datetime
import pandas as pd

def Initialize(self):

self.SetStartDate(2018,2,1)  #Set Start Date
self.SetEndDate(2018,2,15)    #Set End Date
self.SetCash(10000)           #Set Strategy Cash
self.SetWarmUp(100)
self.previous = None
self.position = None

def OnData(self, data):
self.stop_price_v_high = float(data["VIXY"].Open) * 1.05
self.stop_price_v_low = float(data["VIXY"].Open) * .9
self.stop_price_s_high = float(data["SPY"].Open) * 1.05
self.stop_price_s_low = float(data["SPY"].Open) * .9

if self.IsWarmingUp: return

if self.position =="VIXY" and  self.vixy == self.stop_price_v_high:
self.StopMarketOrder(self.vixy, -self.Portfolio["VIXY"].Quantity, stop_price_v_high)
elif self.position =="VIXY" and  self.vixy == self.stop_price_v_low:
self.StopMarketOrder(self.vixy, -self.Portfolio["VIXY"].Quantity, stop_price_v_low)

if self.position =="SPY" and  self.spy == self.stop_price_s_high:
self.StopMarketOrder(self.spy, -self.Portfolio["SPY"].Quantity, stop_price_s_high)
elif self.position =="SPY" and  self.spy == self.stop_price_s_low:
self.StopMarketOrder(self.spy, -self.Portfolio["SPY"].Quantity, stop_price_s_low)

if data.Bars.ContainsKey("SPY") or data.Bars.ContainsKey("VIXY"):

SPercent =  np.log(float(self.Securities[self.spy].Price/data["SPY"].Open))
VPercent =  np.log(float(self.Securities[self.vixy].Price/data["VIXY"].Open))

if SPercent <= -0.003:
#and  VPercent >= .003
if self.position == None:
self.SetHoldings("VIXY", 1)
elif self.position == "SPY":
self.Liquidate("SPY")
self.SetHoldings("VIXY", 1)
self.position = "VIXY"

if SPercent >= .003:
#and VPercent <= -.003
if self.position == None:
self.SetHoldings("SPY", 1)
elif self.position == "VIXY":
self.Liquidate("VIXY")
self.SetHoldings("SPY", 1)
self.position = "SPY"

#if self.position =="VIXY" and  self.Securities[self.vixy].Price == self.stop_price_v_high:
#   self.Liquidate("VIXY")
#elif self.position =="VIXY" and  self.Securities[self.vixy].Price == self.stop_price_v_low:
#   self.Liquidate("VIXY")

#if self.position =="SPY" and  self.Securities[self.spy].Price == self.stop_price_s_high:
#   self.Liquidate("SPY")
#elif self.position =="SPY" and  self.Securities[self.spy].Price == self.stop_price_s_low:
#    self.Liquidate("SPY")

#if self.position =="VIXY" and  self.vixy == self.stop_price_v_high:
#    self.StopMarketOrder(self.vixy, -self.Portfolio["VIXY"].Quantity, stop_price_v_high)
#elif self.position =="VIXY" and  self.vixy == self.stop_price_v_low:
#    self.StopMarketOrder(self.vixy, -self.Portfolio["VIXY"].Quantity, stop_price_v_low)

#if self.position =="SPY" and  self.spy == self.stop_price_s_high:
#    self.StopMarketOrder(self.spy, -self.Portfolio["SPY"].Quantity, stop_price_s_high)
#elif self.position =="SPY" and  self.spy == self.stop_price_s_low:
#    self.StopMarketOrder(self.spy, -self.Portfolio["SPY"].Quantity, stop_price_s_low)

### want to lock in returns and start algorthim over
# if return is >= .5:
#liquidate all positions and start algrothim over
#elif return <=-.3:
#stop loss
#else:
#keep running

## change vixy to another VIX
## look to  see if can use correlation as
# when correctation is close to - 1 and 1 use
## try to use X

### id sd is high buy into or if sd hight and regression is hight buy into

###                        ```
```import numpy as np
from datetime import datetime
import pandas as pd

def Initialize(self):

self.SetStartDate(2018,2,1)  #Set Start Date
self.SetEndDate(2018,2,15)    #Set End Date
self.SetCash(10000)           #Set Strategy Cash
self.SetWarmUp(10)
self.previous = None
self.position = None

def OnData(self, data):
if self.IsWarmingUp: return
if data.Bars.ContainsKey("SPY") or data.Bars.ContainsKey("VIXY"):

SPercent =  np.log(float(self.Securities[self.spy].Price/data["SPY"].Open))
VPercent =  np.log(float(self.Securities[self.vixy].Price/data["VIXY"].Open))

if SPercent <= -0.003:
#or Vpercent >= .001
if self.position == None:
self.SetHoldings("VIXY", 1)
elif self.position == "SPY":
self.Liquidate("SPY")
self.SetHoldings("VIXY", 1)
self.position = "VIXY"

if SPercent >= 0.003:
#or Vpercent<=-.01
if self.position == None:
self.SetHoldings("SPY", 1)
elif self.position == "VIXY":
self.Liquidate("VIXY")
self.SetHoldings("SPY", 1)
self.position = "SPY"                        ```
```import numpy as np
from datetime import datetime
import pandas as pd

def Initialize(self):

self.SetStartDate(2018,2,1)  #Set Start Date
#self.SetEndDate(2018,2,5)    #Set End Date
self.SetCash(10000)           #Set Strategy Cash
self.SetWarmUp(10)
self.previous = None
self.position = None

def OnData(self, data):
if self.IsWarmingUp: return
if data.Bars.ContainsKey("SPY") or data.Bars.ContainsKey("VIXY"):

history_s = self.History([self.spy], 1, Resolution.Minute)
history_v = self.History([self.vixy], 1, Resolution.Minute)
if str(self.spy) in history_s.index and str(self.vixy) in history_v.index:
last_minute_close_s = history_s.loc[str(self.spy)]["close"][-1]
last_minute_close_v = history_v.loc[str(self.vixy)]["close"][-1]

SPercent =  np.log(float(self.Securities[self.spy].Price/data["SPY"].Open))
VPercent =  np.log(float(self.Securities[self.vixy].Price/data["VIXY"].Open))

if SPercent <= -0.001:
#or Vpercent >= .001
if self.position == None:
self.SetHoldings("VIXY", 1)
elif self.position == "SPY":
self.Liquidate("SPY")
self.SetHoldings("VIXY", 1)
self.position = "VIXY"

if SPercent >= .001:
#or Vpercent<=-.01
if self.position == None:
self.SetHoldings("SPY", 1)
elif self.position == "VIXY":
self.Liquidate("VIXY")
self.SetHoldings("SPY", 1)
self.position = "SPY"

### want to lock in returns and start algorthim over
# if return is >= .5:
#liquidate all positions and start algrothim over
#elif return <=-.3:
#stop loss
#else:
#keep running

### id sd is high buy into or if sd hight and regression is hight buy into                        ```