| Overall Statistics |
|
Total Trades 70 Average Win 0.17% Average Loss -0.10% Compounding Annual Return -39.545% Drawdown 3.100% Expectancy -0.921 Net Profit -3.077% Sharpe Ratio -3.139 Probabilistic Sharpe Ratio 0.479% Loss Rate 97% Win Rate 3% Profit-Loss Ratio 1.76 Alpha -0.14 Beta 0.049 Annual Standard Deviation 0.045 Annual Variance 0.002 Information Ratio -0.53 Tracking Error 0.185 Treynor Ratio -2.903 Total Fees $70.00 Estimated Strategy Capacity $0 Lowest Capacity Asset QQQ XVD806ISXMJQ|QQQ RIWIV7K5Z9LX |
# region imports
from AlgorithmImports import *
# endregion
class CreativeFluorescentYellowCamel(QCAlgorithm):
def Initialize(self):
# Dates
self.SetStartDate(2022, 1, 19)
self.SetEndDate(2022, 2, 10)
# Set Strategy Cash
self.SetCash(100000)
# Add ETF
QQQ = self.AddEquity("QQQ").Symbol
self.QQQ_MACD = MovingAverageConvergenceDivergence(12, 26, 9)
self.RegisterIndicator(QQQ, self.QQQ_MACD, Resolution.Minute)
# Add option
option = self.AddOption("QQQ")
option.SetFilter(minExpiry = timedelta(days = 1), maxExpiry = timedelta(days = 4))
self.QQQ_option_symbol = option.Symbol
# Warmup
self.SetWarmUp(timedelta(days = 5))
def OnData(self, data: Slice):
# If not warming up
if not self.IsWarmingUp:
# Entry
if not self.Portfolio.Invested:
if self.QQQ_MACD.Current.Value > self.QQQ_MACD.Signal.Current.Value:
chain = data.OptionChains.get(self.QQQ_option_symbol)
if chain:
for contract in chain:
self.MarketOrder(contract.Symbol, 1)
break
# Exit
else:
if self.QQQ_MACD.Current.Value < self.QQQ_MACD.Signal.Current.Value:
self.Liquidate()