| Overall Statistics |
|
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% Sharpe Ratio 0 Probabilistic Sharpe Ratio 0% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio 0 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset Portfolio Turnover 0% |
from AlgorithmImports import *
class TransdimensionalDynamicThrustAssembly(QCAlgorithm):
def Initialize(self):
# setting Universe Size and ETF Ticker:
self.UniverseSize = 9
self.ETFSymbol = 'ACWI'
self.SetStartDate(2010, 1, 1) # Set Start Date
self.SetEndDate(2020, 1, 1) # Set End Date
# Set Cash, Brokerage Model, Universe Settings and Warmup
self.SetCash(100000)
self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage, AccountType.Margin)
self.SetSecurityInitializer(lambda security: security.SetMarketPrice(self.GetLastKnownPrice(security)))
self.UniverseSettings.Resolution = Resolution.Daily
self.SetWarmup(150)
# Define the Universe
self.AddUniverse(self.Universe.ETF(self.ETFSymbol, Market.USA, self.UniverseSettings, self.ETFConstituentsFilterStatic))
# everything else to Null
self.SetPortfolioConstruction(NullPortfolioConstructionModel())
self.SetAlpha(NullAlphaModel())
self.SetExecution(NullExecutionModel())
self.SetRiskManagement(NullRiskManagementModel())
def ETFConstituentsFilterStatic(self, constituents: List[ETFConstituentData]) -> List[Symbol]:
# Original Version - select all ETF constituens that have a weight property and sort them by that weight
selected = sorted([c for c in constituents if c.Weight],
key=lambda c: c.Weight, reverse=True)
# Crude Fix to avoid other ETFs being returned as constituents of ACWI - filtering for a list of ETF tickers that have come up in testing so far
# etfs = ['CRED', 'IVV', 'IJH', 'IPAC', 'IEUR', 'IEMG', 'INDA']
# selected = sorted([c for c in constituents if c.Weight and c.Symbol.Value not in etfs],
# key=lambda c: c.Weight, reverse=True)
# return the self.UniverseSize largest constituents by weight:
return [c.Symbol for c in selected][:self.UniverseSize]
def OnSecuritiesChanged(self, changes: SecurityChanges) -> None:
# List all tickers added to the universe
if changes.AddedSecurities:
self.Debug(str(self.Time) + " Adding to universe: " + str(
[security.Symbol.Value for security in changes.AddedSecurities]))