| Overall Statistics |
|
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% Sharpe Ratio 0 Probabilistic Sharpe Ratio 0% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio -0.863 Tracking Error 0.125 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset Portfolio Turnover 0% |
#region imports
from AlgorithmImports import *
#endregion
class VWAPwithSTD(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2021, 1, 1)
self.SetEndDate(2022, 4, 12)
self.SetCash(100_000)
self.symbols = ["QQQ", "SPY", "AAPL", "AMZN"] # list of symbols to trade
self.vwaps = {}
self.stds = {}
for symbol in self.symbols:
equity = self.AddEquity(symbol, Resolution.Minute)
self.vwaps[symbol] = self.VWAP(equity.Symbol, 14, Resolution.Daily)
self.stds[symbol] = self.STD(equity.Symbol, 14, Resolution.Daily)
self.SetWarmUp(30, Resolution.Daily)
def OnData(self, data):
if self.IsWarmingUp or not all(std.IsReady for std in self.stds.values()):
return
for symbol in self.symbols:
price = self.Securities[symbol].Price
vwap = self.vwaps[symbol].Current.Value
std = self.stds[symbol].Current.Value
ub1 = vwap + std
ub2 = vwap + 2*std
lb1 = vwap - std
lb2 = vwap - 2*std
self.Plot(symbol, 'price', price)
self.Plot(symbol, 'vwap', vwap)
self.Plot(symbol, 'ub2', ub2)
self.Plot(symbol, 'ub1', ub1)
self.Plot(symbol, 'lb1', lb1)
self.Plot(symbol, 'lb2', lb2)
# implement trading logic for each stock here
# e.g., if price < lb2: buy the stock
# if price > ub2: sell the stock
# otherwise, hold the stock