Overall Statistics
Total Trades
250
Average Win
0.15%
Average Loss
-0.01%
Compounding Annual Return
8.648%
Drawdown
18.400%
Expectancy
13.272
Net Profit
55.100%
Sharpe Ratio
0.933
Probabilistic Sharpe Ratio
40.537%
Loss Rate
12%
Win Rate
88%
Profit-Loss Ratio
15.24
Alpha
0.048
Beta
0.452
Annual Standard Deviation
0.099
Annual Variance
0.01
Information Ratio
-0.05
Tracking Error
0.114
Treynor Ratio
0.204
Total Fees
$288.39
class SPYTLT6040InsightWeighted(QCAlgorithm):

    def Initialize(self):
        
        self.SetStartDate(2015, 1, 1)  # Set Start Date

        self.SetCash(1000000)  # Set Strategy Cash
        
        self.spy = self.AddEquity("SPY", Resolution.Minute).Symbol
        self.tlt = self.AddEquity("TLT", Resolution.Minute).Symbol
        
        self.SetBenchmark('SPY')
        
        # Scheduled event
        self.Schedule.On(self.DateRules.MonthStart(self.spy), self.TimeRules.AfterMarketOpen(self.spy, 5), self.emitNewInsights)
        
        # Use the Alpha Streams Brokerage Model
        self.SetBrokerageModel(AlphaStreamsBrokerageModel())
        
        # Immediate execution model
        self.SetExecution(ImmediateExecutionModel())

        # Insight Weighted portfolio construction
        self.SetPortfolioConstruction(InsightWeightingPortfolioConstructionModel(self.RebalanceFunction, PortfolioBias.Long))



    def emitNewInsights(self):
        
        insights = []
        
        # Up insight for SPY with weight 60%
        insights.append(Insight.Price(self.spy, timedelta(days=35), InsightDirection.Up, None, None, None, 0.6))
        
        # Up insight for TLT with weight 40%
        insights.append(Insight.Price(self.tlt, timedelta(days=35), InsightDirection.Up, None, None, None, 0.4))
        
        self.EmitInsights(insights)



    def RebalanceFunction(self, time):
        return None