Market Timer: Adding An Indicator

In the previous post (Build A Market Timer Using High/Low Beta) I described a Portfolio123 ranking system that provides a foundation for multiple indicators and a voting system that maps the scoring result to one of two Exchange Traded Funds (ETFs). This post expands on this concept by adding a second indicator into the ranking system.

Market Timer: Adding An Indicator

Hi Steve,

this ranking timer concept would also have an interesting application in changing the cash pct of a portfolio based on the overall rank. I tried the following rule…
Cashpct < (105-Rating(“Market timer”))
…but get this error in return:
“Invalid ranking system Market timer”

This error does not occur if I take a standard p123 ranking system e.g. ChaikinIndicators…
Cashpct < (105-Rating(“ChaikinIndicators”))
… but that having all the time a 100 rank bucket, the cashpct of course doesn’t change.

Any ideas on how to implement this correctly?

(Edit) PS: I already tried two workarounds:

  • including Rating function in a custom formula
  • including Rating function in a custom series
    Both options are rejected by the system.

Hi everyone.

Florian, did you figure out, how to incorporate the ETF market timing system into a stock simulation either by accessing it in the hedge rules or buy/sell rules?

Does anyone have any idea?
Thanks

unfortunately not for my cashpct idea :frowning:

One can easily place a market timer into the hedge rules of a simulation.
I found the Composite Market Timer works well.
https://imarketsignals.com/2016/composite-market-timing-increases-returns-and-reduces-drawdown/
https://imarketsignals.com/2016/components-for-the-im-composite-timer/

Here is the hedge entry rule:
(Eval($UNEMP,25,0)+Eval($BETA,25,0)+Eval($TEDsp,12.5,0)+Eval($MCS=0,12.5,0)+ Eval($Timer,12.5,0)+Eval($VIXplus,12.5,0))<50
and exit rule:
(Eval($UNEMP,25,0)+Eval($BETA,25,0)+Eval($TEDsp,12.5,0)+Eval($MCS=0,12.5,0)+Eval($Timer,12.5,0)+ Eval($VIXplus,12.5,0))>=50

The custom formulas refer to the six components of the Composite Market Timer.

Below is the performance for RSP-IEF with the ranking system which incorporates these timers. The second figure is for buying all 500 stocks , holding them equal weight and hedging 100% with IEF using above hedge rules. One can see that both sims provide the same return. So one does not have to buy all 500 stocks and trade 19,686 times, RSP is good enough, and so is the 21% annualized return with a max D/D of only -12%.



Thanks Georg!

Obviously, any direct implementations would also be welcome.

You can run a sim for RSP-IEF with no ranking system.

Buy:
EVAL((Eval($UNEMP,25,0)+Eval($BETA,25,0)+Eval($TEDsp,12.5,0)+Eval($MCS=0,12.5,0)+Eval($Timer,12.5,0)+ Eval($VIXplus,12.5,0))>=50,ticker(“RSP”),ticker(“IEF”))

Sell:
EVAL((Eval($UNEMP,25,0)+Eval($BETA,25,0)+Eval($TEDsp,12.5,0)+Eval($MCS=0,12.5,0)+Eval($Timer,12.5,0)+ Eval($VIXplus,12.5,0))<50,ticker(“RSP”),ticker(“IEF”))

This gives identical performance.

Georg,
any hints regarding $vixplus?

One way to consider volatility as one of the factors is to compare the ratio of 30 day future volatility with the 3 months one.

This paper suggests a ratio below 1, but I’ve been using 0.975. Sixfigureinvesting.com suggests 0.917.

http://www.naaim.org/wp-content/uploads/2013/10/00R_Easy-Volatility-Investing-+-Abstract-Tony-Cooper.pdf

One can implement it with the GetSeries function.

Alternatively (with better results), one can simply compare the SMA crossover of VIX, like:

[code]

Eval(SMA(5,0,GetSeries(“$VIX”))/SMA(5,5,GetSeries(“$VIX”)) < 0.975,1,0)
[/code]

Rod

Thanks Rod for your suggestion. The issue with most VIX strategies is a high turnover. Somehow Georg found a way to elegantly narrow down turnover to the most importants events. See this thread and attached image:
https://www.portfolio123.com/mvnforum/viewthread_thread,10668


Florian,
We have now extended simulated data for ETF SVXY on P123 back to Jan 2006. SVXY is almost identical to XIV.

I have a DM model in incubation with a 70% annualized return.
• The “Anti-VIX” ETF SVXY is designed to increase in value when the volatility of the S&P 500 decreases, as measured by the prices of VIX futures contracts.
• Extended data of SVXY, the ProShares Short VIX Short-Term Futures ETF, from Jan-2006 to the fund’s inception date was calculated from its proxy, the S&P 500 VIX Short-Term Futures Index.
• SVXY is intended for short-term use. Using the extended price data, a buy-and-hold strategy of the hypothetical SVXY resulted in a huge loss of over 90% from 2007 to 2009.
• The model buys SVXY only during up-markets when the VIX > 17 and rising, otherwise during up-markets it buys either QLD or DDM, or IEF when upmarket conditions are absent.
•A backtest of the model from Jan-2007 to Jul-2017 produced a high 70% annualized return with a maximum drawdown of -27% with only 76 realized trades.

https://www.portfolio123.com/app/r2g/summary?id=1497772



Hi Georg,

I’ve followed the above rules and what is furthermore described on your website in terms of sell rules. My market timer is different since I don’t have the composite timer. I use these simpler rules as follows.

BUY (option 1)

Ticker("SVXY") AND EMA(2,0,#UNEMP)<=EMA(2,3,#UNEMP) AND close(0,$VIX)>17 AND close(0,$VIX)>EMA(3,0,$VIX)

SELL

Ticker("SVXY") AND (PctFromHi<-10 OR (close(0,$VIX)<17 AND EMA(3,0,$VIX)<EMA(20,0,$VIX)) OR EMA(3,0,$VIX)<13.5)

The resulting sim looks quite decent although invested in different time windows (image option 1 below).

I can modify the buy rule to a more stricter rule:
BUY (option 2)

Ticker("SVXY") AND EMA(2,0,#UNEMP)<=EMA(2,3,#UNEMP) AND $SMS_HiLoBeta=0 AND close(0,$VIX)>17 AND close(0,$VIX)>EMA(3,0,$VIX)

This second attempt has 100% success rate but is overall invested less (image option 2 below).

What bothers me is that in both cases I seem to enter the trade too early, because most investment periods show a sharp drawdown first before SVXY is eventually rising.

Do you have any suggestion of how I can improve the timing?

Best regards,
Florian



Florian,
Why don’t you construct a composite market timer by combining all your various timers with relevant weights. Then you are not dependent on only one of them signaling up-markets.
I use formula $comp=Eval($UNEMP,25,0)+Eval($BETA,25,0)+Eval($TEDsp,12.5,0)+Eval($MCS=0,12.5,0)+Eval($Timer,12.5,0)+ Eval($VIXplus,12.5,0)
So there are six timers. Up-market is when $comp>=50. Therefore only 2 or 3 component models have to signal investment to get to 50.

During up-market my SVXY-Timer goes to SVXY if VIX >17, otherwise during up-market it selects either DDM or QLD. When $comp<50 it selects IEF.
The model also uses a simple ranking system which appears to delays buying SVXY and thus avoids the drawdowns which frequently occur early in the investment periods when the VIX is still rising.

Currently the VIX moved from 10 to 15.5 in a few days which resulted in huge losses for XIV and SVXY. So it is quite possible that we will have the VIX over 17. It will be interesting to see how the SVXY-Timer performs over the next few months.

Do you explain your composite timer on your website or is it proprietary?

@PortfolioPerfection:
Some of the timers you will find explained in the forum, but $MCS, $Timer & $VIXplus are Georg’s private algos which are not available.
I’m mostly interested in the VIXPlus part, but I assume Georg doesn’t want to share it.

Georg,
I think this is what it boils down to. Could you perhaps expand on the ranking system? Usually in these type of switching ETF models there is no ranking system required.
Cheers, Florian

Florian,
The model uses a simple ranking system which assumes trading ETFs, rather than investing for longer periods. The one factor system is based on the price changes over a short period. The idea being that ETFs which have experienced a decline over a short period will bounce back, reverting and doing better than ETFs which have not declined in this way.

One needs a ranking system because the model must decide whether during up-markets with the VIX>17 it must go to SVXY or one of the two leveraged long equity ETFs. So three ETF choices are possible.

Thanks Georg!

Hey guys,

You guys seem a lot smarter than me when it comes to designing these models. I was previously working on a model of my own which is very simple. All I do is short both the TVIX and the XIV at the same time and I seem to have some impressive returns as well, but are these returns realistic? Also how do I smooth out the curve in this model?

Mike


You need to add a market timer.


This is the simulation done on P123 beta. Rebalancing= 1 year, reconstitution= 1 week.
Short Buy rule: ticker(“TVIX,XIV”) & $COMP>=50 & sma(4,0,$VIX)>12.5