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())