Home › Forums › Trading System Mentor Course Community › Performance Metrics & Brag Mat › Squeezing performance out of an intraday MOC MR system
- This topic is empty.
-
AuthorPosts
-
June 6, 2018 at 1:21 am #101817AndrewBennettParticipant
Idea for Squeezing some extra performance out of a intraday MOC MR system:
Along a parallel line to Julian, Ive been investigating how to boost returns on the days where orders are less than the max orders of your system.
My thinking is that you have unused capital on these days, so scaling up to the max may help the performance of a system.EG if you have a selection bias of 1% and optimized with 100 orders and your exploration for a given day is 50 orders, then you know that you cannot have any selection bias on that day.
Therefore if you were to double the size of the orders, you would amplified returns.To test the effect I copied my model and called MR_Orders.
I then modified 2 lines of code.
Buy = Ref(BuySetUp,-1) AND L <=Ref(BuyLimit,-1) AND NOT OnLastTwoBarsOfDelistedSecurity;
BuyPrice = Min(Open,Ref(BuyLimit,-1));To this:
Buy = Ref(BuySetUp,-1) AND NOT OnLastTwoBarsOfDelistedSecurity;
BuyPrice = L;When you run a backtest with max orders set to say 300 and pos size at 1%, you are effectively generating a report of every order for the original system for every day.
If you put the trades from both systems into separate pivot tables you can analyse how many days had orders less that the max order setting.
You can create a pivot table with the daily returns and create a formula that scales up the returns on the days with “low” orders.
I have been able to add 80% to the returns of a system – (in backtesting over 13 years of data ) and the compounding effect could Double your return (I think)..with no change to the underlying model.
Am keen to see if there are any holes in my logic.
ABJune 6, 2018 at 10:37 pm #108766Stephen JamesMemberHi Andrew
From what you have posted I’d suggest you have created a post dictive error, hence the results.
The code you have changed modifies the system – it eliminates the limit price and simply buys at the low, which can’t be done.
Just to clarify that I’m understanding what you are trying to do correctly, you are mentioning orders? Orders (with entry the following bar) are created from the setup bar – in this case BuySetUp. Actual fills are coded on the trigger bar – Buy and BuyPrice.
Selection bias looks at trades filled, not orders. To look at number of orders you’d have to use the AddtoComposite function. There was quite a bit of discussion around that in the forum at one point, but I was unable to find the thread.June 7, 2018 at 6:41 am #108768AndrewBennettParticipantThe postdictive error is correct. I am only concerned in determining that every order becomes a trade,
That way you take the data into excel ( There trade results are irrelevant)
I just do this to know how many orders existed on any given day.
This performance enhancement is in excel. Scaling up on the days where your orders are less than the max orders.
Its working for me…..so far.June 7, 2018 at 6:57 am #108769AndrewBennettParticipantIts more about capital management… Why not use the 4* gearing to greater advantage.
If you original system generates trades most days (as mine does) and many days there are a low number of orders.
All Im suggesting is that you analyse your system to look at the profitibiltity of the trades on those days.
If the sample set is large enough and there renturns are generally profitable, then you have an opportunity to put your capital to better use by scaling up. (assuming that all positions are equal)June 7, 2018 at 9:42 am #108770ScottMcNabParticipantAndrew Bennett wrote:The postdictive error is correct. I am only concerned in determining that every order becomes a trade,
That way you take the data into excel ( There trade results are irrelevant)
I just do this to know how many orders existed on any given day.
This performance enhancement is in excel. Scaling up on the days where your orders are less than the max orders.
Its working for me…..so far.Nick trialed a system where position size varied depending on number of buysetups that were generated for the following day…are you doing this on buysetup signals Andrew or on buy signals ?
//
AddToComposite(buy == 1,”~BuySignals”,”X”,atcFlagDeleteValues|atcFlagEnableInBacktest);
Graph0 = Foreign(“~BuySignals”,”C”);AddToComposite(buysetup == 1,”~SetUpSignals”,”X”,atcFlagDeleteValues|atcFlagEnableInBacktest);
Graph0 = Foreign(“~SetUpSignals”,”C”);June 7, 2018 at 10:25 pm #108772Stephen JamesMemberTo test with position sizing:-
Code:AddToComposite(BuySetUp,”~NumSetups”,”X”,atcFlagDeleteValues|atcFlagEnableInBacktest);
Setups = foreign(“~NumSetups”,”X”);
EquityRisk = IIf(Ref(Setups,-1) < MaxPos,15,10); SetPositionSize(EquityRisk,spsPercentOfEquity);June 8, 2018 at 1:23 am #108775TrentRothallParticipanthow Are you actually implementing this in real time Andrew? Have you taken out the limit price entry condition and entering at market the next day? If not, you have no idea how many orders will be filled the next day in real time do you?
June 8, 2018 at 6:46 am #108776SaidBitarMemberI did test it last year couldn’t find any benefit from it but here is what how i tested.
the idea is the first entry is on the limit price and the second will be market order.
so first i ran backtest with 20 positions with 10% each and recorded the statistics then i ran another backtest with 20 positions and 20% each and the condition to enter is if the low is below or equal to the limit price and the first entry (10%) is on the limit price and i scale in another 10 % anywhere between the open and the high.I know this is not the idea that you are talking about but i couldn’t find any easy way to test it so i tested like this it is not exact but gives some idea so you will know if you will bother to test your idea or no
June 8, 2018 at 7:12 am #108777AndrewBennettParticipantTrent its pretty straight forward. My sytstem is set up for 1% selection bias at 100 trades. If my explorer comes up with less than 100 trades… EG 50, then I adjust the csv file to place orders for twice the size… If there are more than 100 orders then I dont make any adjustments.
The code change is a cumbersome method of seeing how many orders were generated on any given day over the entire back test.
(it seems that craig has shown me code above that may make this processs simpler.)
I run my original system as normal, and only scaling up all orders equally on the days where the explorer generates less than 100 orders…
This works for my model, so I thought Id share it. It may not work on all models. -
AuthorPosts
- You must be logged in to reply to this topic.