| Overall Statistics |
|
Total Trades 22533 Average Win 0.43% Average Loss -0.10% Compounding Annual Return -0.829% Drawdown 33.800% Expectancy 0.006 Net Profit -4.079% Sharpe Ratio -0.043 Sortino Ratio -0.051 Probabilistic Sharpe Ratio 0.594% Loss Rate 82% Win Rate 18% Profit-Loss Ratio 4.53 Alpha -0.012 Beta 0.048 Annual Standard Deviation 0.191 Annual Variance 0.036 Information Ratio -0.325 Tracking Error 0.254 Treynor Ratio -0.17 Total Fees $0.00 Estimated Strategy Capacity $6800000.00 Lowest Capacity Asset QQQ RIWIV7K5Z9LX Portfolio Turnover 2310.00% |
# region imports
from AlgorithmImports import *
from QuantConnect.Data import Slice
# endregion
class VwapTrend(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2018, 11, 10)
self.SetEndDate(2023, 11, 11)
self.SetCash(25000)
self.Settings.MinimumOrderMarginPortfolioPercentage = 0.01
self.SetWarmUp(390)
self.asset = self.AddEquity("QQQ", Resolution.Minute)
self.asset.SetDataNormalizationMode(DataNormalizationMode.Raw)
self.asset.vwap = self.VWAP(self.asset.Symbol)
self.asset.SetFeeModel(ConstantFeeModel(0))
# Flat before market close
self.Schedule.On(self.DateRules.EveryDay(self.asset.Symbol), self.TimeRules.BeforeMarketClose(self.asset.Symbol, 1), self.Liquidate)
def OnData(self, slice: Slice) -> None:
if not self.asset.vwap.IsReady:
return
diff = self.asset.Close - self.asset.vwap.Current.Value
minimum = 0
if diff > minimum and self.asset.Holdings.Quantity <= 0:
self.SetHoldings(self.asset.Symbol, 1)
if diff < -1 * minimum and self.asset.Holdings.Quantity >= 0:
self.SetHoldings(self.asset.Symbol, -1)