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