| Overall Statistics |
|
Total Trades 322 Average Win 3.04% Average Loss -0.51% Compounding Annual Return 10.552% Drawdown 23.100% Expectancy 0.551 Net Profit 65.255% Sharpe Ratio 0.555 Probabilistic Sharpe Ratio 10.916% Loss Rate 78% Win Rate 22% Profit-Loss Ratio 5.98 Alpha 0.048 Beta 0.441 Annual Standard Deviation 0.152 Annual Variance 0.023 Information Ratio 0.011 Tracking Error 0.161 Treynor Ratio 0.191 Total Fees $4022.35 Estimated Strategy Capacity $1400000.00 Lowest Capacity Asset SHY SGNKIKYGE9NP |
#region imports
from AlgorithmImports import *
#endregion
class EtfSmaAlphaModel(AlphaModel):
def __init__(self, main_symbol, alt_symbol):
self.main_symbol = main_symbol
self.alt_symbol = alt_symbol
self.day = -1
def Update(self, algorithm, data):
if self.day == algorithm.Time.day or not algorithm.IsMarketOpen(self.main_symbol):
return []
insights = []
if data.ContainsKey(self.main_symbol):
period = timedelta(1)
if data[self.main_symbol].Close > self.sma.Current.Value:
insights.append(Insight.Price(self.main_symbol, period, InsightDirection.Up))
insights.append(Insight.Price(self.alt_symbol, period, InsightDirection.Flat))
else:
insights.append(Insight.Price(self.alt_symbol, period, InsightDirection.Up))
insights.append(Insight.Price(self.main_symbol, period, InsightDirection.Flat))
if insights:
self.day = algorithm.Time.day
return insights
def OnSecuritiesChanged(self, algorithm, changed):
if self.main_symbol in [added.Symbol for added in changed.AddedSecurities]:
self.sma = algorithm.SMA(self.main_symbol, 200, Resolution.Hour)#region imports
from AlgorithmImports import *
#endregion
from EtfSmaAlphaModel import EtfSmaAlphaModel
class ParticleQuantumChamber(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2015, 6, 15)
self.SetEndDate(2020, 6, 15)
self.SetCash(100000)
self.sso = Symbol.Create('SSO', SecurityType.Equity, Market.USA) # SSO = 2x levered SPX
self.shy = Symbol.Create('SHY', SecurityType.Equity, Market.USA) # SHY = short term Treasury ETF
self.SetWarmup(200)
self.SetBenchmark('SPY')
self.UniverseSettings.Resolution = Resolution.Hour
self.SetAlpha(EtfSmaAlphaModel(self.sso, self.shy))
self.SetUniverseSelection(ManualUniverseSelectionModel([self.sso, self.shy]))
self.SetExecution(ImmediateExecutionModel())
self.SetBrokerageModel(AlphaStreamsBrokerageModel())
self.SetPortfolioConstruction(EqualWeightingPortfolioConstructionModel())