Overall Statistics |
Total Orders 1960 Average Win 0.39% Average Loss -0.35% Compounding Annual Return 21.903% Drawdown 18.700% Expectancy 0.280 Start Equity 100000 End Equity 250696.91 Net Profit 150.697% Sharpe Ratio 0.934 Sortino Ratio 1.058 Probabilistic Sharpe Ratio 52.879% Loss Rate 40% Win Rate 60% Profit-Loss Ratio 1.13 Alpha 0.092 Beta 0.458 Annual Standard Deviation 0.143 Annual Variance 0.02 Information Ratio 0.288 Tracking Error 0.152 Treynor Ratio 0.292 Total Fees $4278.71 Estimated Strategy Capacity $2500000.00 Lowest Capacity Asset FNA XSOQ708JLBHH Portfolio Turnover 7.80% |
# region imports from AlgorithmImports import * # endregion class LeveragedCopyCongressAlgorithm(QCAlgorithm): def initialize(self): self.set_start_date(2020, 1, 1) self.set_cash(100000) self._universe = self.add_universe( QuiverQuantCongressUniverse, lambda constituents: [c.symbol for c in constituents if c.transaction == OrderDirection.BUY] ) spy = Symbol.create('SPY', SecurityType.EQUITY, Market.USA) self.schedule.on(self.date_rules.week_start(spy), self.time_rules.after_market_open(spy, 30), self._trade) def _trade(self): symbols = list(self._universe.selected) if len(symbols) == 0: return inv_volatility_by_symbol = 1 / self.history(symbols, timedelta(6*30), Resolution.DAILY)['close'].unstack(0).pct_change().iloc[1:].std() targets = [ PortfolioTarget(symbol, min(0.1, 1.5 * (inv_volatility_by_symbol[symbol] / inv_volatility_by_symbol.sum())) ) for symbol in symbols if symbol in inv_volatility_by_symbol ] self.set_holdings(targets, True)