Overall Statistics
Total Trades
101
Average Win
16.14%
Average Loss
-6.51%
Compounding Annual Return
57.365%
Drawdown
61.800%
Expectancy
0.456
Net Profit
462.606%
Sharpe Ratio
1.093
Probabilistic Sharpe Ratio
37.985%
Loss Rate
58%
Win Rate
42%
Profit-Loss Ratio
2.48
Alpha
0.594
Beta
-0.325
Annual Standard Deviation
0.505
Annual Variance
0.255
Information Ratio
0.761
Tracking Error
0.553
Treynor Ratio
-1.696
Total Fees
$966.51
Estimated Strategy Capacity
$12000000.00
Lowest Capacity Asset
TQQQ UK280CGTCB51
# MACD Signal Delta Percent simplified


class MACDTrendAlgorithm(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2018, 1, 1)
        self.SetEndDate(2021, 10, 22)
        self.SetCash(25000)
        self.stock = self.AddEquity("TQQQ", Resolution.Minute)
        # self.stock.SetDataNormalizationMode(DataNormalizationMode.Raw)
        self.symbol = self.stock.Symbol
        self.macd = self.MACD(self.symbol, 6, 35, 6, MovingAverageType.Exponential, Resolution.Daily)
        self.PlotIndicator("MACD", True, self.macd, self.macd.Signal)
        self.PlotIndicator("TQQQ", self.macd.Fast, self.macd.Slow)
        self.SetWarmUp(5*41, Resolution.Daily)
        self.SetRiskManagement(MaximumDrawdownPercentPerSecurity(0.10))


    def OnData(self, data):
        if self.IsWarmingUp or not self.macd.IsReady: return

        tolerance = 0.0025
        holdings = self.Portfolio[self.symbol].Quantity

        signalDeltaPercent = (self.macd.Current.Value - self.macd.Signal.Current.Value)/self.macd.Fast.Current.Value

        if holdings <= 0 and signalDeltaPercent > tolerance:
            self.SetHoldings(self.symbol, 1.0)
                
        elif holdings >= 0 and signalDeltaPercent < -tolerance:
            self.SetHoldings(self.symbol, -1.0)