Home › Forums › Trading System Mentor Course Community › Trading System Brainstorming › Trading System Graveyard
- This topic is empty.
-
AuthorPosts
-
April 19, 2017 at 4:59 am #106602AnonymousInactive
Hey guys –
I tried Said’s ROC ranking method instead of my standard ROC ranking and I found a large improvement in risk-adjusted returns. I am using a monthly rotational momentum ranking in the US (S&P 500). I have a few bells and whistles that have dampened volatility (gap filters, run away filters, etc), and I am using percent of account value position sizing (I did not find that risk parity added value for the system I am running.
My original system uses a standard ROC ranking methodology and backtested results from 2000-4/18/17 of CAR 18%, MDD -28.2%, MAR .65. When applying Said’s ranking method (same lookback) my results go to CAR 20.6%, MDD -23%, MAR .89 – great result improvement and I will definitely be looking into this deeper!
April 19, 2017 at 9:40 am #106652ScottMcNabParticipantI wonder if any of the new fundamental data in NDU would help these type of rotational systems ? Add debt/equity ratio or growth rate etc to the ranking system ?
April 19, 2017 at 9:44 am #106649SaidBitarMemberLin
here is the result of the backtest of your system
from 1/1/2000 till nowyou had problem in the code with the position sizing
here is what i changed
Code:PortfRisk = Param(“% daily Portfolio Risk”, 0.2, 0, 2, 0.05);
SetPositionSize( Ref(C,-1) * PortfRisk /Ref(ATR(20),-1), spsPercentOfEquity);April 19, 2017 at 9:50 am #106656SaidBitarMemberIgnore my comment regarding the position sizing they are the same
no idea how i saw them different
April 19, 2017 at 10:03 am #106655SaidBitarMemberScott McNab wrote:I wonder if any of the new fundamental data in NDU would help these type of rotational systems ? Add debt/equity ratio or growth rate etc to the ranking system ?Personally did not look at them yet, but what i think that these stuff they follow the price so maybe with rotational system you will start getting in and out late due to them
April 19, 2017 at 12:04 pm #106657LEONARDZIRParticipantSaid,
Thanks for your comment. Did improve the CAR/MDD by changing duration of ROC and ATR but nowhere near your 19% CAR and 16% drawdown.
LenApril 19, 2017 at 11:23 pm #106658JulianCohenParticipantI also got the MDD down to around 16-17% which is great but I’m buggared if I can work out how you got 35% last year
I’m still experimenting though!
April 20, 2017 at 6:24 am #106650TrentRothallParticipantLen Zir wrote:_SECTION_BEGIN (“Backtesting Options”);
//=================================================================================
//Backtesting Parameters close
//=================================================================================
posqty = Param(“# Positions”,30,1,100,1);
Eq = Param(“Initial Equity”,100000,1,10000000,1);
SetOption(“InitialEquity”,Eq);
SetOption(“MaxOpenPositions”,posqty);
SetOption(“UsePrevBarEquityForPosSizing”,True);
SetOption(“AccountMargin”,100);
SetOption(“AllowPositionShrinking”,True);
//SetOption(“WorstRankHeld”,100);
SetTradeDelays(0,0,0,0);SetBacktestMode(backtestRotational);
EOM = Month() != Ref(Month(),-1);
//score = Ref(MYROC2,-1) ;//score is the rotational criteria
//Score = IIf(LE,score,0);
//PositionScore = IIf(Year()>=1985 AND EOM,score,scoreNoRotate);
score = Ref(ROC(C,MyDuration)/ATR(14),-1);
score = iif(LE,score,0);
positionscore = iif(year()>=1985 AND Month() != ref(Month(),-1),score,scoreNoRotate);//
//SetPositionSize(100/posqty,spsPercentOfEquity);
Riskfactor = Param(“Risk Factor”,0.2,0.005,1,0.005);Risk = Riskfactor*(Ref(C,-1)/Ref(ATR(21),-1));
SetPositionSize(Risk,spsPercentOfEquity);
Referring to the section i’ve made bold above. Won’t this cause an error or possible error. Both lines are using the identifier “Score”
Or am i wrong?
April 20, 2017 at 9:41 am #106666SaidBitarMemberTrent Rothall wrote:Len Zir wrote:_SECTION_BEGIN (“Backtesting Options”);
//=================================================================================
//Backtesting Parameters close
//=================================================================================
posqty = Param(“# Positions”,30,1,100,1);
Eq = Param(“Initial Equity”,100000,1,10000000,1);
SetOption(“InitialEquity”,Eq);
SetOption(“MaxOpenPositions”,posqty);
SetOption(“UsePrevBarEquityForPosSizing”,True);
SetOption(“AccountMargin”,100);
SetOption(“AllowPositionShrinking”,True);
//SetOption(“WorstRankHeld”,100);
SetTradeDelays(0,0,0,0);SetBacktestMode(backtestRotational);
EOM = Month() != Ref(Month(),-1);
//score = Ref(MYROC2,-1) ;//score is the rotational criteria
//Score = IIf(LE,score,0);
//PositionScore = IIf(Year()>=1985 AND EOM,score,scoreNoRotate);
score = Ref(ROC(C,MyDuration)/ATR(14),-1);
score = iif(LE,score,0);
positionscore = iif(year()>=1985 AND Month() != ref(Month(),-1),score,scoreNoRotate);//
//SetPositionSize(100/posqty,spsPercentOfEquity);
Riskfactor = Param(“Risk Factor”,0.2,0.005,1,0.005);Risk = Riskfactor*(Ref(C,-1)/Ref(ATR(21),-1));
SetPositionSize(Risk,spsPercentOfEquity);
Referring to the section i’ve made bold above. Won’t this cause an error or possible error. Both lines are using the identifier “Score”
Or am i wrong?
there should not be any problem with this
it is similar to saying
x=2
x=x+1
the value of x will change after the line has been runi do not know if this will answer your question
April 20, 2017 at 9:42 am #106665SaidBitarMemberJulian Cohen wrote:I also got the MDD down to around 16-17% which is great but I’m buggared if I can work out how you got 35% last yearI’m still experimenting though!
i believe that on Nov alone there was 17% honestly did not check the trades but i will take a look
April 20, 2017 at 11:46 am #106668LEONARDZIRParticipantJulian,
Did you get down to 16%DD with the rotational code you posted?
LenApril 20, 2017 at 12:18 pm #106667LeeDanelloParticipantTrent Rothall wrote:Len Zir wrote:_SECTION_BEGIN (“Backtesting Options”);
//=================================================================================
//Backtesting Parameters close
//=================================================================================
posqty = Param(“# Positions”,30,1,100,1);
Eq = Param(“Initial Equity”,100000,1,10000000,1);
SetOption(“InitialEquity”,Eq);
SetOption(“MaxOpenPositions”,posqty);
SetOption(“UsePrevBarEquityForPosSizing”,True);
SetOption(“AccountMargin”,100);
SetOption(“AllowPositionShrinking”,True);
//SetOption(“WorstRankHeld”,100);
SetTradeDelays(0,0,0,0);SetBacktestMode(backtestRotational);
EOM = Month() != Ref(Month(),-1);
//score = Ref(MYROC2,-1) ;//score is the rotational criteria
//Score = IIf(LE,score,0);
//PositionScore = IIf(Year()>=1985 AND EOM,score,scoreNoRotate);
score = Ref(ROC(C,MyDuration)/ATR(14),-1);
score = iif(LE,score,0);
positionscore = iif(year()>=1985 AND Month() != ref(Month(),-1),score,scoreNoRotate);//
//SetPositionSize(100/posqty,spsPercentOfEquity);
Riskfactor = Param(“Risk Factor”,0.2,0.005,1,0.005);Risk = Riskfactor*(Ref(C,-1)/Ref(ATR(21),-1));
SetPositionSize(Risk,spsPercentOfEquity);
Referring to the section i’ve made bold above. Won’t this cause an error or possible error. Both lines are using the identifier “Score”
Or am i wrong?
I think he likes scoring twice!
April 20, 2017 at 12:43 pm #106669JulianCohenParticipantNot quite
Code:Dur = Param(“ROC Length”,126,125,250,25);
LDur = Param(“LMA Length”,100,10,400,5);MYROC2 = ROC(C,Dur);
LMA = EMA(C,LDur);//=================================================================================
//Entry & Exit
//=================================================================================Cond1 = Close > LMA;
Cond2 = MYROC2 > 0;
Cond3 = OptFilt AND IndexUp AND HDBFilter AND gapFilter;I set the ATR and ROC duration the same.
This gave me
April 20, 2017 at 4:04 pm #106670LEONARDZIRParticipantThanks Julian,
I’ll give it a whirl. Was able to increase CAR but not able to bring MDD below CAR.
LenApril 20, 2017 at 6:38 pm #106671SaidBitarMemberJulian Cohen wrote:Not quiteCode:Dur = Param(“ROC Length”,126,125,250,25);
LDur = Param(“LMA Length”,100,10,400,5);MYROC2 = ROC(C,Dur);
LMA = EMA(C,LDur);//=================================================================================
//Entry & Exit
//=================================================================================Cond1 = Close > LMA;
Cond2 = MYROC2 > 0;
Cond3 = OptFilt AND IndexUp AND HDBFilter AND gapFilter;I set the ATR and ROC duration the same.
This gave me
I thought for rotational system better not to skip any trades and take all of them as they come
-
AuthorPosts
- You must be logged in to reply to this topic.