Created with Highcharts 12.1.2EquityJan 1Jan 15Jan 29Feb 12Feb 26Mar 11Mar 25Apr 8Apr 22May 6May 20Jun 31,500k2,000k2,500k-50-25000.51-101050M100M025M50M202530
Overall Statistics
Total Orders
32
Average Win
1.30%
Average Loss
-2.01%
Compounding Annual Return
-46.609%
Drawdown
25.900%
Expectancy
-0.780
Start Equity
2000000
End Equity
1538406.64
Net Profit
-23.080%
Sharpe Ratio
-1.752
Sortino Ratio
-1.289
Probabilistic Sharpe Ratio
0.211%
Loss Rate
87%
Win Rate
13%
Profit-Loss Ratio
0.65
Alpha
-0.361
Beta
-0.163
Annual Standard Deviation
0.223
Annual Variance
0.05
Information Ratio
-2.329
Tracking Error
0.247
Treynor Ratio
2.403
Total Fees
$1881.98
Estimated Strategy Capacity
$24000000.00
Lowest Capacity Asset
ROKU WO9FGTL2I89X
Portfolio Turnover
10.03%
from AlgorithmImports import *

class SMA20MomentumROKU(QCAlgorithm):
    def Initialize(self):
        self.SetStartDate(2023, 12, 20)
        self.SetEndDate(2024, 5, 20)
        self.SetWarmUp(30)
        self.SetCash(2000_000)  

        self.ticker = "ROKU"
        self.sym = self.AddEquity(self.ticker, Resolution.Daily)
        self.sma = self.SMA(self.ticker, 20, Resolution.Daily)

    def OnData(self, data):
        if self.IsWarmingUp:
            return
            
        ind = self.sma.Current.Value

        if not self.Portfolio[self.ticker].Invested:
            
            if self.sym.Price > ind:

                self.SetHoldings(self.sym.Symbol, 0.5)

            elif self.sym.Price <ind:

                self.SetHoldings(self.sym.Symbol, -0.5)

        elif self.Portfolio[self.ticker].IsLong and self.sym.Price< ind or \
            self.Portfolio[self.ticker].IsShort and self.sym.Price> ind:

            self.SetHoldings(self.sym.Symbol, 0.0)