| Overall Statistics |
|
Total Trades 3 Average Win 0% Average Loss -6.90% Compounding Annual Return -6.031% Drawdown 11.500% Expectancy -1 Net Profit -5.501% Sharpe Ratio -0.296 Loss Rate 100% Win Rate 0% Profit-Loss Ratio 0 Alpha 0.323 Beta -18.634 Annual Standard Deviation 0.164 Annual Variance 0.027 Information Ratio -0.417 Tracking Error 0.164 Treynor Ratio 0.003 Total Fees $3.77 |
import numpy as np
from datetime import datetime
import pandas as pd
class VolTrading(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2018,1,1) #Set Start Date
#self.SetEndDate(2018,1,1) #Set End Date
self.SetCash(10000) #Set Strategy Cash
self.spy = self.AddEquity("SPY", Resolution.Minute).Symbol
self.vixy = self.AddEquity("VIXY", Resolution.Minute).Symbol
self.SetWarmUp(440)
self.previous = None
self.position = None
def OnData(self, data):
if data.Bars.ContainsKey("SPY") or data.Bars.ContainsKey("VIXY"):
SPercent = np.log(float(self.Securities[self.spy].Price/data[self.spy].Open))
VPercent = np.log(float(self.Securities[self.vixy].Price/data[self.vixy].Open))
if self.IsWarmingUp:
return
if SPercent <= -.005:
if self.position == None:
self.SetHoldings("VIXY", 1)
elif self.position == "SPY":
self.Liquidate("SPY")
self.SetHoldings("VIXY", 1)
self.position = "VIXY"
if SPercent >= .005:
if self.position == None:
self.SetHoldings("SPY", 1)
elif self.position == "VIXY":
self.Liquidate("VIXY")
self.SetHoldings("SPY", 1)
self.position = "SPY"