| Overall Statistics |
|
Total Orders 239 Average Win 0.06% Average Loss -0.05% Compounding Annual Return 15.975% Drawdown 7.000% Expectancy 0.832 Start Equity 100000 End Equity 124921.11 Net Profit 24.921% Sharpe Ratio 0.89 Sortino Ratio 1.082 Probabilistic Sharpe Ratio 78.850% Loss Rate 14% Win Rate 86% Profit-Loss Ratio 1.14 Alpha 0.009 Beta 0.36 Annual Standard Deviation 0.068 Annual Variance 0.005 Information Ratio -0.87 Tracking Error 0.096 Treynor Ratio 0.168 Total Fees $239.71 Estimated Strategy Capacity $53000000.00 Lowest Capacity Asset BND TRO5ZARLX6JP Portfolio Turnover 0.50% |
# region imports
from AlgorithmImports import *
# endregion
class DeterminedTanZebra(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2022, 9, 28)
self.SetCash(100000)
tickers = ["SPY", "BND", "GLD", "QQQ"]
security_type = SecurityType.Cfd if self.LiveMode else SecurityType.Equity
for ticker in tickers:
equity = self.AddEquity(ticker, Resolution.Daily)
equity.sma_fast = self.SMA(equity.Symbol, 50)
equity.sma_slow = self.SMA(equity.Symbol, 200)
equity.target_vehicle = self.AddCfd(ticker, Resolution.Daily, market=Market.InteractiveBrokers).Symbol if self.LiveMode else equity.Symbol
def OnData(self, data: Slice):
for security in self.Securities.Values:
if security.sma_fast > security.sma_slow:
self.SetHoldings(security.target_vehicle, 0.25)
else:
self.SetHoldings(security.target_vehicle, 0)
# In Initialize:
# self.UniverseSettings.Asynchronous = True
# self.universe = self.AddUniverse(self.FundamentalSelectionFunction)
# def FundamentalSelectionFunction(self, fundamental: List[Fundamental]) -> List[Symbol]:
# filtered = [f for f in fundamental if f.Price > 10 and f.HasFundamentalData and not np.isnan(f.ValuationRatios.PERatio)]
# sortedByDollarVolume = sorted(filtered, key=lambda f: f.DollarVolume, reverse=True)[:100]
# sortedByPeRatio = sorted(sortedByDollarVolume, key=lambda f: f.ValuationRatios.PERatio, reverse=False)[:10]
# if self.LiveMode:
# return [Symbol.Create(f.Value, SecurityType.Cfd, Market.InteractiveBrokers) for f in sortedByPeRatio]
# else:
# return [f.Symbol for f in sortedByPeRatio]