[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Rotational trading with ETFs



PureBytes Links

Trading Reference Links

Note: cross posting from Amibroker-TS list

With TJ’s help, I got this working – the system that was published in Jan, 2005 issue of TASC, by David Vomund. It may be of interest.

Mohan

 /* AIQ's Releative Strength Short-Term  - RSR  - from Jan 2005 issue of TASC*/

 

/* Take the data of the last 120 days. Break the data into quarters. Calculate the

percentage price change for each quarter and average them with the latest quarter's weight

being twice.

At the start of the test, the 2 best performing ETSs are bought, with equal dollar amounts

to establish a fully invested portfolio. Two weeks later, RSR report was run again.

If the current holdings were rated as one of the three best in the report, then there were no

trades. If a holding fell in the RSR report ranking and was no longer in the top 3, then

it was soldand the highest rated ETF was purchased ( I assume , the ETF that was bought cannot

be the same that is already being held in the portfolio ???).

 

ETFs used:

DIA, QQQ, SPY, MDY, IJS, IJT, IWM

 */

 

q0 = (C - Ref(C,-60))/Ref(C,-60);

q1 = (Ref(C,-60) - Ref(C,-120))/Ref(C,-120);

RSR = 100* (2*q0 + q1)/3 + 100;

 

Plot(RSR,"AIQ's RSR",colorRed, styleLine);

Plot(MA(RSR,20),"ma(20)",colorWhite, styleLine);

 

 

 

SetOption("InitialEquity", 20000 );

SetTradeDelays(1,1,1,1);

RoundLotSize = 1;

 

EnableRotationalTrading(True);

SetOption("MaxOpenPositions", 2);

SetOption("WorstRankHeld", 3);

PositionSize = -50;

MonthChange = Month() != Ref( Month(), -1 );

Rebalance = MonthChange OR Ref( MonthChange, -12); // rebalance twice a month

PositionScore = IIf( Rebalance, RSR, scoreNoRotate ); /* scoreNoRotate prevents

rotation in all days except rebalance days. */

 

/* The rest of the RSR lines */

/*

a0 = SetForeign("SPY");

qa0 = (C - Ref(C,-60))/Ref(C,-60);

qa1 = (Ref(C,-60) - Ref(C,-120))/Ref(C,-120);

RSRa = 100* (2*qa0 + qa1)/3 + 100;

 

Plot(RSRa,"AIQ's RSR(SPY)",colorRose, styleLine);

 

b0 = SetForeign("QQQQ");

qb0 = (C - Ref(C,-60))/Ref(C,-60);

qb1 = (Ref(C,-60) - Ref(C,-120))/Ref(C,-120);

RSRb = 100* (2*qb0 + qb1)/3 + 100;

 

Plot(RSRb,"AIQ's RSR(QQQQ)",colorOrange, styleLine);

 

c0 = SetForeign("MDY");

qc0 = (C - Ref(C,-60))/Ref(C,-60);

qc1 = (Ref(C,-60) - Ref(C,-120))/Ref(C,-120);

RSRc = 100* (2*qc0 + qc1)/3 + 100;

 

Plot(RSRc,"AIQ's RSR(MDY)",colorYellow, styleLine);

 

 

c0 = SetForeign("IWM");

qc0 = (C - Ref(C,-60))/Ref(C,-60);

qc1 = (Ref(C,-60) - Ref(C,-120))/Ref(C,-120);

RSRc = 100* (2*qc0 + qc1)/3 + 100;

 

Plot(RSRc,"\n AIQ's RSR(IWM)",colorTurquoise, styleLine);

 

c0 = SetForeign("IJS");

qc0 = (C - Ref(C,-60))/Ref(C,-60);

qc1 = (Ref(C,-60) - Ref(C,-120))/Ref(C,-120);

RSRc = 100* (2*qc0 + qc1)/3 + 100;

 

Plot(RSRc,"AIQ's RSR(IJS)",colorTeal, styleLine);

 

 

c0 = SetForeign("IJT");

qc0 = (C - Ref(C,-60))/Ref(C,-60);

qc1 = (Ref(C,-60) - Ref(C,-120))/Ref(C,-120);

RSRc = 100* (2*qc0 + qc1)/3 + 100;

 

Plot(RSRc,"AIQ's RSR(IJT)",colorBrightGreen, styleLine);

 

*/

 

 




Check AmiBroker web page at:
http://www.amibroker.com/

Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html




Yahoo! Groups Links