| Overall Statistics |
|
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return 42.370% Drawdown 8.400% Expectancy 0 Net Profit 19.729% Sharpe Ratio 2.165 Probabilistic Sharpe Ratio 73.447% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0.398 Beta -0.113 Annual Standard Deviation 0.163 Annual Variance 0.027 Information Ratio -0.185 Tracking Error 0.262 Treynor Ratio -3.132 Total Fees $1.00 |
from datetime import timedelta
class OptimizedMultidimensionalAtmosphericScrubbers(QCAlgorithm):
#
# buy when the SMA-200 > SMA-50
# sell when the SMA-200 < SMA-50
#
def Initialize(self):
self.SetStartDate(2020, 5, 9)
self.SetCash(1000)
self.equity = self.AddEquity("SPY", Resolution.Daily)
self.symbol = self.equity.Symbol
# warm up and create our SMA indicators
self.SetWarmUp(200)
self.sma_50 = self.SMA(self.symbol, 50, Resolution.Daily)
self.sma_200 = self.SMA(self.symbol, 200, Resolution.Daily)
# setup the chart
my_chart = Chart("Indicator Chart")
my_chart.AddSeries(Series("SMA50", SeriesType.Line, 0))
my_chart.AddSeries(Series("SMA200", SeriesType.Line, 0))
self.AddChart(my_chart)
# alternative plotting method
self.PlotIndicator("Indicators", self.sma_50)
self.PlotIndicator("Indicators", self.sma_200)
def OnData(self, data):
if not self.sma_50.IsReady or not self.sma_200.IsReady:
return
self.Plot("Indicator Chart", "SMA50", self.sma_50.Current.Value)
self.Plot("Indicator Chart", "SMA200", self.sma_200.Current.Value)
def OnWarmupFinished(self):
if not self.Securities[self.symbol].Invested:
self.SetHoldings(self.symbol, 1.0)