| 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 Probabilistic 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 1.301 Tracking Error 0.158 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset |
from AlgorithmImports import *
from scipy.stats import stats
import numpy as np
class BasicTemplateContinuousFutureAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2022, 1, 1)
###self.SetEndDate(2014, 1, 1)
self._continuousContract = self.AddFuture(Futures.Indices.SP500EMini,
dataNormalizationMode = DataNormalizationMode.BackwardsRatio,
dataMappingMode = DataMappingMode.LastTradingDay,
contractDepthOffset= 0)
self._continuousContractTwoyr = self.AddFuture(Futures.Financials.Y2TreasuryNote,
dataNormalizationMode = DataNormalizationMode.BackwardsRatio,
dataMappingMode = DataMappingMode.LastTradingDay,
contractDepthOffset= 0)
self._continuousContractTenyr = self.AddFuture(Futures.Financials.Y10TreasuryNote,
dataNormalizationMode = DataNormalizationMode.BackwardsRatio,
dataMappingMode = DataMappingMode.LastTradingDay,
contractDepthOffset= 0)
self._currentContract = None
self._smaES = self.SMA(self._continuousContract.Symbol, 5, Resolution.Minute)
self._smaTwoyr = self.SMA(self._continuousContractTwoyr.Symbol, 5, Resolution.Minute)
self._smaTenyr = self.SMA(self._continuousContractTenyr.Symbol, 5, Resolution.Minute)
self._currentContractTwoyr = None
self._currentContractTenyr = None
self.AddEquity('SPY')
self.AddEquity('QQQ')
self._smaSPY = self.SMA('SPY', 5, Resolution.Daily)
self._smaQQQ = self.SMA('QQQ', 5, Resolution.Daily)
self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.Midnight, self.PlotPrices);
def PlotPrices(self):
if not self._smaSPY.IsReady or not self._smaQQQ.IsReady:
return
if self._continuousContract.HasData and self._continuousContractTwoyr.HasData and self._continuousContractTenyr.HasData:
#self.Plot(self._continuousContract.Symbol.ID.Symbol, self._continuousContract.Symbol.ID.Symbol, self._continuousContract.Price)
#self.Plot(self._continuousContract.Symbol.ID.Symbol, "_smaES", self._smaES.Current.Value)
#self.Plot(self._continuousContractTwoyr.Symbol.ID.Symbol, self._continuousContractTwoyr.Symbol.ID.Symbol, self._continuousContractTwoyr.Price)
#self.Plot(self._continuousContractTwoyr.Symbol.ID.Symbol, "_smaTwoyr", self._smaTwoyr.Current.Value)
#self.Plot(self._continuousContractTenyr.Symbol.ID.Symbol, self._continuousContractTenyr.Symbol.ID.Symbol, self._continuousContractTenyr.Price)
#self.Plot(self._continuousContractTenyr.Symbol.ID.Symbol, "_smaTenyr", self._smaTenyr.Current.Value)
#self.spreadPrice = self._smaTenyr.Current.Value - self._smaTwoyr.Current.Value
#self.spreadSMA = self._smaTenyr.Current.Value - self._smaTwoyr.Current.Value
#self.esPrice = self._continuousContract.Price
#self.esSMA = self._smaES.Current.Value
#self.Plot("spread" , "spreadPrice" , self.spreadPrice)
#self.Plot("spread" , "spreadSMA" , self.spreadSMA)
self.spreadSMA = self._smaTenyr.Current.Value - self._smaTwoyr.Current.Value
self.esSMA = self._smaES.Current.Value
#To Do
#================================================================================================================
#How to calculate Divergence and Convergence between spreadSMA and esSMA
#How to calculate Correlation of spreadSMA and esSMA
#================================================================================================================
#==================================================================
#Correlation Coeficient between spreadPrice and esPrice
#==================================================================
#if self.spreadPrice is None: return
#if self.esPrice is None: return
#r1 = np.corrcoef(self.spreadPrice , self.esPrice)
#self.Debug(r1)
#r = stats.pearsonr(self.spreadPrice , self.esPrice)
#self.Debug(r)
def OnOrderEvent(self, orderEvent):
self.Debug("Purchased Stock: {0}".format(orderEvent.Symbol))
def OnSecuritiesChanged(self, changes):
self.Debug(f"{self.Time}-{changes}")