Category Archives: strategy development

Intro to rules based Investing – Why follow an investment strategy?

1. Basics

What is rules based Investing?

In rules-based-investing we define a clear set of rules. These rules comprise an investment strategy. Here is an example strategy:

“At the first day of the month, look at the performance of bonds versus stocks by calulating the 3-month performances of two exchange traded funds, SPY (the SPDR S&P 500 ETF) and TLT (the iShares 20+ Year Treasury Bond ETF).
If SPY outperforms, then re-balance the portfolio to 60% SPY, 40% TLT. If not, rebalance to 40% SPY, 60% TLT.”

Rules based Investment Strategy SPY TLT
Rules based Investment Strategy SPY TLT

 Why follow an Investment Strategy?

 It eliminates our main weakness, emotion.

Developed through years of evolution, our basic human instincts are necessary for our survival. Keeping with the laws of the jungle, these instincts push us to run when in danger and charge when we see opportunity. The stock market, much like a casino, is built to take advantage of these instincts. Investors, if left to their primitive fear/greed instincts, tend to buy high and sell low.



read the rest of the article here.

QUANTtrader -The Logical-Invest investment software for building and backtesting rules-based strategies

Quanttrader Logical Invest's swiss army knife

Investment software to easily create and backtest a rules-based investment strategy

QUANTtrader is a swiss-made software tool used to develop, backtest and implement rules-based strategies. It was initially developed by Frank Grossmann as his personal investment software. After having sold two companies, Frank trades for a living and his software reflects this. QuantTrader is available from for a monthly license.

Quanttrader Logical Invest investment Software demo

Since it is built by a trader and long-time  investor rather than by a  developer. QuantTrader’s main strength is in building medium to long term investment portfolios that are diverse, adaptive and can control risk. All this without writing a single line of code.

Continue reading QUANTtrader -The Logical-Invest investment software for building and backtesting rules-based strategies

Day of month effect on rebalancing a portfolio

In this post we will:

  1. Take a look at a simple, momentum based, monthly rebalanced Equity/Bond portfolio consisting of two ETFs: SPY and TLT.
  2. Search for what has been the optimal dates in the month to rebalance such a portfolio.

Each month we allocate to SPY and TLT.

If SPY has outperformed  TLT we rebalance to 60% SPY – 40% TLT.

If TLT has outperformed  SPY we rebalance to 20% SPY – 80% TLT.

For the first run we will re-balance on the first of the month and close at the last day of the month.

Rebalancing portfolio 1st day

Now will try different combinations of entry and exit days.

Continue reading Day of month effect on rebalancing a portfolio

The end of the end of month strategy

Has the end of month strategy stopped working?

Historically and up to 2013, equities have exhibited a positive bias during the end of the month.
Here is an example of buying the SPY etf on the first down-day after the 23rd and selling on the first up-day of the next month. Trading is at the same day close.EOM_All

This has been well documented in academic papers as well as blogs. The main reason quoted for this persistent bias has been end-of-month window dressing.

As one of my favorite author/blogger/trader, Mr. Grøtte, has also recently blogged the EOM bias is no more.


Why is this important to know?

A lot of investors re-balance monthly. The day of the re-balance used to be somewhat important as there was an EOM bias. So it was better to ‘buy’ at the end of the month rather than at the beginning of the month. As of late (2013) this is less true.

What this means in practice is that the specific timing for re-balancing monthly strategies may be less important than it used to be.

//Amibroker code:
Buy=Day()>=23 AND C<Ref(C,-1) ;//AND C>MA(C,100);
Sell= (Day()<11 AND C>Ref(C,-1));
posqty=Param("nUMBER OF pOSITIONS",1,1,30,1);
PositionSize=- 98/posqty;
bars = 10; // exit after 10 bars
ApplyStop( stopTypeNBar, stopModeBars, bars, True );