Overall Statistics
Total Trades
1579
Average Win
0.03%
Average Loss
-0.02%
Compounding Annual Return
-85.709%
Drawdown
5.100%
Expectancy
-0.658
Net Profit
-2.457%
Sharpe Ratio
-9.537
Loss Rate
87%
Win Rate
13%
Profit-Loss Ratio
1.62
Alpha
-1.552
Beta
0.005
Annual Standard Deviation
0.163
Annual Variance
0.026
Information Ratio
-9.622
Tracking Error
0.163
Treynor Ratio
-339.026
Total Fees
$10479.72
import numpy as np
from datetime import timedelta
from datetime import datetime
import pandas as pd


class MovingAverage(QCAlgorithm):

 

     def Initialize(self):
        self.SetStartDate(2018, 1, 1)
        self.SetEndDate(2018, 1, 3)
        self.SetCash(100000)
        self.a = self.AddEquity("VIXY", Resolution.Minute).Symbol
        self.b = self.AddEquity("SVXY", Resolution.Minute).Symbol
        self.SetWarmUp(30,Resolution.Daily)
        self.previous = None
        self.position = None
        self.macd1 = self.MACD(self.a, 40, 85, 30, MovingAverageType.Exponential, Resolution.Hour)
        self.macd2 = self.MACD(self.b, 40, 85, 30, MovingAverageType.Exponential, Resolution.Hour)
        #self.rsi_vixy = self.RSI("VIXY", 18, MovingAverageType.Exponential,Resolution.Hour)
        #self.rsi_svxy = self.RSI("SVXY", 18, MovingAverageType.Exponential,Resolution.Hour)

        

     def OnData(self,data):
        if self.IsWarmingUp: return
     
        if self.macd1.Current.Value > self.macd1.Signal.Current.Value and self.macd2.Current.Value < self.macd2.Signal.Current.Value:

            if not self.Portfolio.Invested:
                self.SetHoldings("SVXY", -0.3)
                self.SetHoldings("VIXY", 1.3)
                self.Log('SVXY %' + str(round((self.Securities["SVXY"].Price * self.Portfolio['SVXY'].Quantity)/self.Portfolio.TotalPortfolioValue,4)))
                self.Log('VIXY %' + str(round((self.Securities["VIXY"].Price * self.Portfolio['VIXY'].Quantity)/self.Portfolio.TotalPortfolioValue,4)))
            else:
                self.Liquidate("SVXY")
                self.SetHoldings("SVXY", -0.3)
                self.SetHoldings("VIXY", 1.3)
                self.Log('SVXY %' + str(round((self.Securities["SVXY"].Price * self.Portfolio['SVXY'].Quantity)/self.Portfolio.TotalPortfolioValue,4)))
                self.Log('VIXY %' + str(round((self.Securities["VIXY"].Price * self.Portfolio['VIXY'].Quantity)/self.Portfolio.TotalPortfolioValue,4)))
                    
        if self.macd1.Current.Value < self.macd1.Signal.Current.Value and self.macd2.Current.Value > self.macd2.Signal.Current.Value:

            if not self.Portfolio.Invested:
                self.SetHoldings("VIXY", -0.3)
                self.SetHoldings("SVXY", 1.3)
                self.Log('SVXY %' + str(round((self.Securities["SVXY"].Price * self.Portfolio['SVXY'].Quantity)/self.Portfolio.TotalPortfolioValue,4)))
                self.Log('VIXY %' + str(round((self.Securities["VIXY"].Price * self.Portfolio['VIXY'].Quantity)/self.Portfolio.TotalPortfolioValue,4)))
            else:
                self.Liquidate("VIXY") 
                self.SetHoldings("VIXY", -0.3)
                self.SetHoldings("SVXY", 1.3)
                self.Log('SVXY %' + str(round((self.Securities["SVXY"].Price * self.Portfolio['SVXY'].Quantity)/self.Portfolio.TotalPortfolioValue,4)))
                self.Log('VIXY %' + str(round((self.Securities["VIXY"].Price * self.Portfolio['VIXY'].Quantity)/self.Portfolio.TotalPortfolioValue,4)))