Home › Forums › Trading System Mentor Course Community › Progress Journal › Brent’s Journal
- This topic is empty.
-
AuthorPosts
-
May 13, 2017 at 12:23 am #106850JulianCohenParticipantScott McNab wrote:For me the secret sauce was in varying the ATR stretch depending on different market conditions but not having a market filter…just make stretch bigger in certain conditions…systems does better in falling market but works in both
mine works lot better if select times of higher volatility..i just used atr
I’m just starting to test this on one of my higher selection bias systems Scott. I’m hesitant to say anything but I see an improvement already.
I love this forum.
May 13, 2017 at 8:24 am #106856SaidBitarMemberScott McNab wrote:Is this on the right track Said ?GICS10Index = Foreign(“$SPXE”,”C”,True);
GICS15Index = Foreign(“$SPXM”,”C”,True);
GICS20Index = Foreign(“$SPXI”,”C”,True);
GICS25Index = Foreign(“$SPXD”,”C”,True);
GICS30Index = Foreign(“$SPXS”,”C”,True);
GICS35Index = Foreign(“$SPXA”,”C”,True);
GICS40Index = Foreign(“$SPXF”,”C”,True);
GICS45Index = Foreign(“$SPXT”,”C”,True);
GICS50Index = Foreign(“$SPXL”,”C”,True);
GICS55Index = Foreign(“$SPXU”,”C”,True);pass1 =
(InGics(“10”) AND GICS10Index (InGics(“15”) AND GICS15Index (InGics(“20”) AND GICS20Index (InGics(“25”) AND GICS25Index (InGics(“30”) AND GICS30Index (InGics(“35”) AND GICS35Index (InGics(“40”)AND GICS40Index (InGics(“45”) AND GICS45Index (InGics(“50”) AND GICS50Index (InGics(“55”)AND GICS55Index ;
Cheersi believe it is Ok but here is what i use in one of the systems
Code:SectorIndexUS = IIf(InGics(“10”),Foreign(“$SPXE”,”C”),
IIf(InGics(“15”),Foreign(“$SPXM”,”C”),
IIf(InGics(“20”),Foreign(“$SPXI”,”C”),
IIf(InGics(“25”),Foreign(“$SPXD”,”C”),
IIf(InGics(“30”),Foreign(“$SPXS”,”C”),
IIf(InGics(“35”),Foreign(“$SPXA”,”C”),
IIf(InGics(“40”),Foreign(“$SPXF”,”C”),
IIf(InGics(“45”),Foreign(“$SPXT”,”C”),
IIf(InGics(“50”),Foreign(“$SPXL”,”C”),
IIf(InGics(“55”),Foreign(“$SPXU”,”C”),Foreign(“$SPXR”,”C”)))))))))));
SectorIndexAUS = IIf(InGics(“10”),Foreign(“$XEJ.au”,”C”),
IIf(InGics(“15”),Foreign(“$XMJ.au”,”C”),
IIf(InGics(“20”),Foreign(“$XNJ.au”,”C”),
IIf(InGics(“25”),Foreign(“$XDJ.au”,”C”),
IIf(InGics(“30”),Foreign(“$XSJ.au”,”C”),
IIf(InGics(“35”),Foreign(“$XHJ.au”,”C”),
IIf(InGics(“40”),Foreign(“$XFJ.au”,”C”),
IIf(InGics(“45”),Foreign(“$XIJ.au”,”C”),
IIf(InGics(“50”),Foreign(“$XTJ.au”,”C”),
IIf(InGics(“55”),Foreign(“$XUJ.au”,”C”),Foreign(“$XPJ.au”,”C”)))))))))));May 13, 2017 at 9:13 am #106858SaidBitarMemberSelection Bias for me is still like grey area
I mean i cannot set target that I want to capture all the trades on more than 90% of the days again it is good to have but also you need to check the trade distribution. So if 70% of the days the number of trades that you are having is less than 10 trades, 10% of the days between 10 and 20 and small percentages for the other amounts such as 25, 30,40,50,..
I can set 50 trades per day and 0.4% (account per trade) and be happy i caught above 90% of the days my selection bias is in the OK zone but then i sacrificed the position size. maybe a good look at the distribution of number of trades per day will give better idea about the percentage that you need to capture.
I know some people did it, I couldn’t yet with 2:1 marginMay 15, 2017 at 3:02 am #106851AnonymousInactiveScott McNab wrote:Aus system looks nice…I have used oc>1 and turnover 500k but depends size of your account if this acceptableUS …how does it go on SPX with 20 at 10% ?
If use same equity to trade both US and AUS then can you not aim for a CAGR of 10 – 12% for each system to then combine them to meet your goals ?
For me the secret sauce was in varying the ATR stretch depending on different market conditions but not having a market filter…just make stretch bigger in certain conditions…systems does better in falling market but works in both
mine works lot better if select times of higher volatility..i just used atr
On the S&P at 10% positions x 20 positions the results are about the same, but selection bias actually increases – signal capture falls from ~75% to ~68%, so not what I am looking for.
Regarding varying the stretch in different market conditions, how did you go about doing that?
I have tried varying the stretch depending on the number of signals without much luck – I may look into more creative ways of doing this though.
May 15, 2017 at 3:14 am #106852AnonymousInactiveScott McNab wrote:Out of interest Brent, how much worse was 3/21 compared to the “average” return for that day ? If it is 1% and only happens 3 or 4 times a year then may be ok ?The actual return was ~16% worse than the worst result in a 1k run MCS (actual result was outside of realm of possibility as per the test) and ~100% worse than the average in the 1k run.
In the 1k run MCS, the avg result was a loss of ~700 and the worst result was ~-1200. The actual loss was ~-1400.
From my testing, it looks like the system is running at about 12 days per year where there are more signals than trades. This would likely cut my actual results by about half relative to the tests.
May 15, 2017 at 5:25 am #106854AnonymousInactiveSaid Bitar wrote:wow Brent you tested everything
here is one idea that will help in reducing the signal and keep the results decent.
just pick any of the above tested idea the simpler the better and add one more filter to your system. this filter will check the sector index if it is showing pullback (such as lower BB) then you can have entries only on the stocks that are in this sector.so in this case you are using the sector itself as filter and this will lower the selection bias in a huge way
try it and if you need any help plz tell meSaid – I am not sure if I understood exactly, but here is what I tried:
Code:GICS10Index = Foreign(“$SPXE”,”C”);
GICS15Index = Foreign(“$SPXM”,”C”);
GICS20Index = Foreign(“$SPXI”,”C”);
GICS25Index = Foreign(“$SPXD”,”C”);
GICS30Index = Foreign(“$SPXS”,”C”);
GICS35Index = Foreign(“$SPXA”,”C”);
GICS40Index = Foreign(“$SPXF”,”C”);
GICS45Index = Foreign(“$SPXT”,”C”);
GICS50Index = Foreign(“$SPXL”,”C”);
GICS55Index = Foreign(“$SPXU”,”C”);BBandRange = Param(“BBandRange”,15,1,200,1);
BBandSD = Param(“BBandSD”,1,1,3,.5);BB10 = BBandBot(GICS10Index,BBandRange,BBandSD);
BB15 = BBandBot(GICS15Index,BBandRange,BBandSD);
BB20 = BBandBot(GICS20Index,BBandRange,BBandSD);
BB25 = BBandBot(GICS25Index,BBandRange,BBandSD);
BB30 = BBandBot(GICS30Index,BBandRange,BBandSD);
BB35 = BBandBot(GICS35Index,BBandRange,BBandSD);
BB40 = BBandBot(GICS40Index,BBandRange,BBandSD);
BB45 = BBandBot(GICS45Index,BBandRange,BBandSD);
BB50 = BBandBot(GICS50Index,BBandRange,BBandSD);
BB55 = BBandBot(GICS55Index,BBandRange,BBandSD);SectorIndexUS = IIf(InGics(“10”),Foreign(“$SPXE”,”C”),
IIf(InGics(“15”),Foreign(“$SPXM”,”C”),
IIf(InGics(“20”),Foreign(“$SPXI”,”C”),
IIf(InGics(“25”),Foreign(“$SPXD”,”C”),
IIf(InGics(“30”),Foreign(“$SPXS”,”C”),
IIf(InGics(“35”),Foreign(“$SPXA”,”C”),
IIf(InGics(“40”),Foreign(“$SPXF”,”C”),
IIf(InGics(“45”),Foreign(“$SPXT”,”C”),
IIf(InGics(“50”),Foreign(“$SPXL”,”C”),
IIf(InGics(“55”),Foreign(“$SPXU”,”C”),Foreign(“$SPXR”,”C”)))))))))));SectorPullBack =
(InGics(“10”) AND GICS10IndexAnd then in the entry criteria:
Cond3 = SectorPullback;
What I did here was to check if a sector was below the sector-level bollinger band and then only enter if a stock is part of a sector that is pulling back. This actually increased the selection bias and was detrimental to returns. Not sure if I am looking at this correctly?
Thanks Said!
May 15, 2017 at 5:33 am #106861ScottMcNabParticipanteg..varying stretch in different conditions:
conditionA = EMA(Index,5)>EMA(Index,20);
ATRMult = IIf (conditionA,1.0,0.5);
I feel this is walking on the dark side of curve fitting so I then take the same condition and (if testing on SPX) apply it to AUS, LSE and Hong Kong…if it doesn’t result in the same changes in performance/metrics across all markets it gets ditched….had to throw away some systems that looked fantastic
May 15, 2017 at 11:47 am #106862SaidBitarMemberBrent Hause wrote:Said Bitar wrote:wow Brent you tested everything
here is one idea that will help in reducing the signal and keep the results decent.
just pick any of the above tested idea the simpler the better and add one more filter to your system. this filter will check the sector index if it is showing pullback (such as lower BB) then you can have entries only on the stocks that are in this sector.so in this case you are using the sector itself as filter and this will lower the selection bias in a huge way
try it and if you need any help plz tell meSaid – I am not sure if I understood exactly, but here is what I tried:
Code:GICS10Index = Foreign(“$SPXE”,”C”);
GICS15Index = Foreign(“$SPXM”,”C”);
GICS20Index = Foreign(“$SPXI”,”C”);
GICS25Index = Foreign(“$SPXD”,”C”);
GICS30Index = Foreign(“$SPXS”,”C”);
GICS35Index = Foreign(“$SPXA”,”C”);
GICS40Index = Foreign(“$SPXF”,”C”);
GICS45Index = Foreign(“$SPXT”,”C”);
GICS50Index = Foreign(“$SPXL”,”C”);
GICS55Index = Foreign(“$SPXU”,”C”);BBandRange = Param(“BBandRange”,15,1,200,1);
BBandSD = Param(“BBandSD”,1,1,3,.5);BB10 = BBandBot(GICS10Index,BBandRange,BBandSD);
BB15 = BBandBot(GICS15Index,BBandRange,BBandSD);
BB20 = BBandBot(GICS20Index,BBandRange,BBandSD);
BB25 = BBandBot(GICS25Index,BBandRange,BBandSD);
BB30 = BBandBot(GICS30Index,BBandRange,BBandSD);
BB35 = BBandBot(GICS35Index,BBandRange,BBandSD);
BB40 = BBandBot(GICS40Index,BBandRange,BBandSD);
BB45 = BBandBot(GICS45Index,BBandRange,BBandSD);
BB50 = BBandBot(GICS50Index,BBandRange,BBandSD);
BB55 = BBandBot(GICS55Index,BBandRange,BBandSD);SectorIndexUS = IIf(InGics(“10”),Foreign(“$SPXE”,”C”),
IIf(InGics(“15”),Foreign(“$SPXM”,”C”),
IIf(InGics(“20”),Foreign(“$SPXI”,”C”),
IIf(InGics(“25”),Foreign(“$SPXD”,”C”),
IIf(InGics(“30”),Foreign(“$SPXS”,”C”),
IIf(InGics(“35”),Foreign(“$SPXA”,”C”),
IIf(InGics(“40”),Foreign(“$SPXF”,”C”),
IIf(InGics(“45”),Foreign(“$SPXT”,”C”),
IIf(InGics(“50”),Foreign(“$SPXL”,”C”),
IIf(InGics(“55”),Foreign(“$SPXU”,”C”),Foreign(“$SPXR”,”C”)))))))))));SectorPullBack =
(InGics(“10”) AND GICS10IndexAnd then in the entry criteria:
Cond3 = SectorPullback;
What I did here was to check if a sector was below the sector-level bollinger band and then only enter if a stock is part of a sector that is pulling back. This actually increased the selection bias and was detrimental to returns. Not sure if I am looking at this correctly?
Thanks Said!
the idea of using
SectorIndexUS = IIf(InGics(“10”),Foreign(“$SPXE”,”C”),
IIf(InGics(“15”),Foreign(“$SPXM”,”C”),
IIf(InGics(“20”),Foreign(“$SPXI”,”C”),
IIf(InGics(“25”),Foreign(“$SPXD”,”C”),
IIf(InGics(“30”),Foreign(“$SPXS”,”C”),
IIf(InGics(“35”),Foreign(“$SPXA”,”C”),
IIf(InGics(“40”),Foreign(“$SPXF”,”C”),
IIf(InGics(“45”),Foreign(“$SPXT”,”C”),
IIf(InGics(“50”),Foreign(“$SPXL”,”C”),
IIf(InGics(“55”),Foreign(“$SPXU”,”C”),Foreign(“$SPXR”,”C”)))))))))));is to have only one variable that will represent the index
so you can do this
BBandRange = Param(“BBandRange”,15,1,200,1);
BBandSD = Param(“BBandSD”,1,1,3,.5);
BBandBot = BBandBot(SectorIndexUS ,BBandRange,BBandSD);
Cond3 = SectorIndexUS < BBandBot ;May 16, 2017 at 1:41 am #106863AnonymousInactiveScott McNab wrote:eg..varying stretch in different conditions:conditionA = EMA(Index,5)>EMA(Index,20);
ATRMult = IIf (conditionA,1.0,0.5);
I feel this is walking on the dark side of curve fitting so I then take the same condition and (if testing on SPX) apply it to AUS, LSE and Hong Kong…if it doesn’t result in the same changes in performance/metrics across all markets it gets ditched….had to throw away some systems that looked fantastic
Yep – seems similar to what I have tried but using a different method. Curious what you use for a stretch range Scott? I have generally stayed at 1.5 and higher, but perhaps I will look at ways to make an entry much less frequent and then make the stretch smaller.
May 16, 2017 at 11:11 pm #106868ScottMcNabParticipantI have found a combination of about 1.5 – 0.8 range produces a good balance…higher gives “better” metrics but can be too restrictive in my testing and can strangle the CAGR…balance determined for me ultimately by selection bias
May 18, 2017 at 11:50 pm #106871AnonymousInactiveInteresting. I have been working from a point of 1.5 ATR mult and higher…anything lower than 1.5 and I end up getting too much selection bias. Maybe I need to work on being more selective with my entry criteria and use lower ATR mults.
May 18, 2017 at 11:55 pm #106907Nick RadgeKeymasterI use 0.75 on my MOC system using 40 positions across Russell 1000.
Last night I had 20 fills and the backtest results missed the real time by $2.71
Prior night I had 12 fills vs backtest 13 fills. Result was $36 out for the night.
May 18, 2017 at 11:57 pm #106015AnonymousInactiveAs an aside, I have written that the results for the MOC system I have are strong in AU and don’t show much capacity for selection bias, while the same system (tweaked a bit) shows similar performance metrics, but way too much selection bias in the US. I have thus far been unable to find the rule set to eliminate/reduce the selection bias.
This got me thinking – if the same rules work without selection bias on a different universe, perhaps it isn’t a problem with US stocks and the rules, but that by trading on the S&P 500 or R1K with the filters I am using, I am trading the system on the wrong “types” of stocks. So now I am thinking of the “character” of stocks in AU (ASX 300) and seeing how that relates to the “character” of stocks in the US. Is there anything I can identify about how AU stocks behave differently and then use this to identify stocks that behave similarly in the US and thereby make a synthetic index to trade the same system with in the US.
I have played with US universes in all the typical ways (px filters, volume filters, index filters, etc), to no success, so maybe I need to figure out how to identify a universe of US stocks that behave more like AU stocks and then it will work.
Who the hell knows!
:whistle:
May 19, 2017 at 12:01 am #106909Nick RadgeKeymasterAs a rule of thumb the ASX-100 are the large caps, similar is S&P 500. Outside the ASX-100 you get a lot smaller, but well established companies.
May 19, 2017 at 12:02 am #106908AnonymousInactiveNick Radge wrote:I use 0.75 on my MOC system using 40 positions across Russell 1000.Last night I had 20 fills and the backtest results missed the real time by $2.71
Prior night I had 12 fills vs backtest 13 fills. Result was $36 out for the night.
Nick – sounds like your requirement for entry is very surgical then. How many conditions do you use? Seems that limiting entries to 2/3 conditions would lead to massive selection bias at that low of an ATR mult…
AuthorPosts- You must be logged in to reply to this topic.
Shopping Cart