Overall Statistics |
Total Orders 176 Average Win 14.60% Average Loss -1.29% Compounding Annual Return 6.629% Drawdown 25.500% Expectancy 1.802 Start Equity 100000 End Equity 538304.69 Net Profit 438.305% Sharpe Ratio 0.285 Sortino Ratio 0.266 Probabilistic Sharpe Ratio 0.129% Loss Rate 77% Win Rate 23% Profit-Loss Ratio 11.33 Alpha 0.011 Beta 0.378 Annual Standard Deviation 0.097 Annual Variance 0.009 Information Ratio -0.135 Tracking Error 0.124 Treynor Ratio 0.073 Total Fees $1091.47 Estimated Strategy Capacity $510000000.00 Lowest Capacity Asset SPY R735QTJ8XC9X Portfolio Turnover 1.83% |
# region imports from AlgorithmImports import * # endregion class CrawlingMagentaTapir(QCAlgorithm): def initialize(self): self.set_start_date(1999, 1, 1) self._spy = self.add_equity("SPY") self._spy.sma = SimpleMovingAverage(200) self.schedule.on(self.date_rules.every_day(self._spy.symbol), self.time_rules.before_market_close(self._spy.symbol, 1), self._rebalance) self.set_warm_up(timedelta(365)) self._scaler = None def _rebalance(self): self._spy.sma.update(self.time, self._spy.price) if self.is_warming_up: return if not self._scaler: self._scaler = self.portfolio.cash_book['USD'].amount / self._spy.price sma = self._spy.sma.current.value self.plot('Strategy Equity', 'Benchmark', self._spy.price * self._scaler) self.plot('Signal', 'SMA', sma) self.plot('Signal', 'Price', self._spy.price) if self._spy.price > sma and not self._spy.invested: self.set_holdings(self._spy.symbol, 1) elif self._spy.price < sma and self._spy.invested: self.liquidate()