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.768 Tracking Error 0.165 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); self.indicator_history = pd.DataFrame() self.history_length = 30 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.spreadSMA = self._smaTenyr.Current.Value - self._smaTwoyr.Current.Value self.esSMA = self._smaES.Current.Value row = pd.DataFrame({'spreadSMA': [self.spreadSMA], 'esSMA': [self.esSMA]}) self.indicator_history = pd.concat([self.indicator_history, row]).iloc[-self.history_length:] if self.indicator_history.shape[0] < self.history_length: return corr = self.indicator_history[['spreadSMA', 'esSMA']].corr()['spreadSMA'][1] self.Plot("Correlation", "Value", corr)