Overall Statistics |
Total Trades 24 Average Win 0.54% Average Loss 0% Compounding Annual Return 18.979% Drawdown 18.200% Expectancy 0 Net Profit 25.016% Sharpe Ratio 1.232 Probabilistic Sharpe Ratio 56.640% Loss Rate 0% Win Rate 100% Profit-Loss Ratio 0 Alpha 0.173 Beta -0.079 Annual Standard Deviation 0.133 Annual Variance 0.018 Information Ratio 0.152 Tracking Error 0.307 Treynor Ratio -2.062 Total Fees $24.00 |
class FrameworkAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(2019, 1, 1) self.SetEndDate(2020, 4, 13) self.SetCash(10000) # Add securities self.spy = self.AddEquity("SPY", Resolution.Daily).Symbol self.tlt = self.AddEquity("TLT", Resolution.Daily).Symbol # Setup highest high indicator lookback = 252 self.highest_high = self.MAX(self.spy, lookback, Resolution.Daily, Field.High) self.SetWarmup(lookback, Resolution.Daily) def OnData(self, data): if not data.Bars.ContainsKey("SPY"): return # First entry if not self.Portfolio.Invested: self.SetHoldings("SPY", 0.60) self.SetHoldings("TLT", 0.40) return # Calculate hwm and drawdown hwm = self.highest_high.Current.Value drawdown = (data.Bars["SPY"].Close - hwm) / hwm # Rebalancing if drawdown < -0.10: self.SetHoldings("SPY", 0.60) self.SetHoldings("TLT", 0.40)