Meb Faber’s Three-Way Model Momentum Strategy (Amibroker Code)
The strategy can be found here.
The strategy is plain English:
Amibroker code:
SetOption(“initialEquity”,100000);
Leverage=1.5 ;
SetOption(“accountmargin”,100/leverage);
setOption(“MaxOpenPositions”,3);
setOption(“holdminbars”,1);
SetTradeDelays( 0, 0, 0, 0 ); // SetTradeDelays( buydelay, selldelay, shortdelay, coverdelay )
Fremmed=Foreign(“SPY”,”close”,fixup=1);
Fremmed1=Foreign(“TLT”,”close”,fixup=1);
Fremmed2=Foreign(“GLD”,”close”,fixup=1);
oddis=Optimize(“Short-term average”,3,1,6,1);
oddis1=Optimize(“Long-term average”,10,10,15,1);
pos1= IIf( MA(fremmed,oddis)>MA(fremmed,oddis1),1,0) ;
pos2= IIf( MA(fremmed1,oddis)>MA(fremmed1,oddis1),1,0) ;
pos3= IIf( MA(fremmed2,oddis)>MA(fremmed2,oddis1),1,0) ;
posSize = sum( (pos1+pos2+pos3),1);
posSize1 = IIf(posSize==3,33*leverage, IIf(posSize==2,49*leverage,99*leverage) );
Plot(posSize,”Meb Faber Momentum”,colorRed,styleLine);
if( Name() == “SPY” )
{
setPositionSize( posSize1 ,spsPercentOfEquity) ;
Buy= MA(fremmed,oddis)>MA(fremmed,oddis1) ;
BuyPrice=Close;
Sell= Close>0 ;
SellPrice=Close;
}
if( Name() == “TLT” )
{
setPositionSize( posSize1 ,spsPercentOfEquity) ;
Buy= MA(fremmed1,oddis)>MA(fremmed1,oddis1) ;
BuyPrice=Close;
Sell= Close>0 ;
SellPrice=Close;
}
if( Name() == “GLD” )
{
setPositionSize( posSize1 ,spsPercentOfEquity) ;
Buy= MA(fremmed2,oddis)>MA(fremmed2,oddis1) ;
BuyPrice=Close;
Sell= Close>0 ;
SellPrice=Close;
}
