This strategy allocates 100% of the portfolio to a single asset each month.
At the close on the last trading day of the month, calculate a “momentum score” for two asset classes: the S&P 500 (represented by SPY) and international small cap equities (SCZ), by averaging each asset’s 1, 3 and 6-month total return.
If the momentum score of SPY > SCZ and > 0, go long SPY at the close.
If the momentum score of SCZ > SPY and > 0, go long SCZ at the close.
If neither condition is true, go long either long-term US Treasuries (TLT) or US TIPS (TIP), whichever has the highest 1-month return.
Hold position until the final trading day of the following month.
Is there anyone much smarter than me who gets to produce this as a strategy that can be explored on this platform?
It may be this can be done better, and I still lack a code that forces the system to buy TLT, if the other ETF`s are not more than> 0. It is built up with ranking system, and a screen, at the same time it is set to 1 position
Does anyone have suggestions on how I can solve the problem, by forcing through a purchase of TLT, if the others have not passed 0
Update: “Sorry, I used: (Pr4W%Chg+Pr13W%Chg+Pr26W%Chg)>0 in the screening”
Thanks Georg, you’re right about Scz, I saw the same thing as you after I posted.
I will examine the use of other ETFs.
But what I was wondering is whether it is possible to impose a condition for the purchase of TLT, which is that SCZ or SPY is less than 0 in the last 21, 63, 120 days?
I think this Accelerating Dual Momentum strategy is a lot of nonsense, but you can run a simulation with it.
eval(($MomScoreQQQ <0 | $MomScoreVNQ <0), TICKER(“TLT”), Accelerating Dual Momentum formula). From 1999 there is no occurrence which would have selected TLT.
Thanks Georg, I’m very interested in knowing more about why you do not think such a strategy will work. Take a look at Member Login - Allocate Smartly, here is one of the few strategies that over time gives a reasonably good result.
I’m also a little surprised that you have not received any purchases of TLT since 1999. Watch “Timing Periods” in this:[url=https://www.portfoliovisualizer.com/test-market-timing-model?s=y&coreSatellite=false&timingModel=6&timePeriod=4&startYear=1985&firstMonth=1&endYear=2021&lastMonth=12&calendarAligned=true&includeYTD=false&initialAmount=10000&periodicAdjustment=0&adjustmentAmount=0&inflationAdjusted=true&adjustmentPercentage=0.0&adjustmentFrequency=4&symbols=SPY+SCZ&singleAbsoluteMomentum=false&volatilityTarget=9.0&downsideVolatility=false&outOfMarketStartMonth=5&outOfMarketEndMonth=10&outOfMarketAssetType=2&outOfMarketAsset=TLT&movingAverageSignal=1&movingAverageType=1&multipleTimingPeriods=true&periodWeighting=2&windowSize=1&windowSizeInDays=105&movingAverageType2=1&windowSize2=10&windowSizeInDays2=105&excludePreviousMonth=false&normalizeReturns=false&volatilityWindowSize=0&volatilityWindowSizeInDays=0&assetsToHold=1&allocationWeights=1&riskControlType=0&riskWindowSize=10&riskWindowSizeInDays=0&stopLossMode=0&stopLossThreshold=2.0&stopLossAssetType=1&rebalancePeriod=1&separateSignalAsset=false&tradeExecution=0&comparedAllocation=0&benchmark=VFINX&timingPeriods%5B0%5D=1&timingUnits%5B0%5D=2&timingWeights%5B0%5D=33&timingPeriods%5B1%5D=3&timingUnits%5B1%5D=2&timingWeights%5B1%5D=33&timingPeriods%5B2%5D=6&timingUnits%5B2%5D=2&timingWeights%5B2%5D=34&timingUnits%5B3%5D=2&timingWeights%5B3%5D=0&timingUnits%5B4%5D=2&timingWeights%5B4%5D=0&volatilityPeriodUnit=2&volatilityPeriodWeight=0]Test Market Timing Models
You are getting an error message because you have not defined the formula $MomScoreQQQ and $MomScoreVNQ. The formulas are in my previous post.
Forget about this Accelerating Dual Momentum strategy.
I have set up my own Triple Momentum/Growth ranking system and am getting a 25% annualized return since 1999, and only positive calendar year returns.
Slippage= Variable
Here are the rules:
[Buy1] eval(portbars<252,TICKER(“QQQ,VNQ”),Eval($modsum>1,TICKER(“QQQ,VNQ”),TICKER(“IEF, TLT”)))
[Buy2] eval(portbars<5,1,100*(close(0,#Equity)-close(5,#Equity)) / close(5,#Equity) > -4)
A question about $Modsum - I still get an error message. Is the formula a modified version of the $modsum formula in that blog post? And the same question applies for the components, ie the formulas for $model1, $model2. I’ve experimented without success, maybe I’m missing something obvious. Any clarification would be appreciated. Thank you.
Of course you will get an error because you don’t have the formula for $modsum.
But you can try the old standard market timer SMA 50-200 crossover system of S&P500.
Eval(SMA(50,0,#bench) > SMA(200,0,#bench),TICKER(“QQQ,VNQ”),TICKER(“TLT,TIP”)) , where bench = S&P500.
This returns still a respectable 17.4% with my ranking system.