|Current location||Thread information|
OmniTrader Professional Forum
OmniTrader Pro General Discussion
ATM and ARM5
Last Activity 5/16/2019 7:14 PM
9 replies, 1430 viewings
|Printer friendly version|
I don’t usually post as much here in the OT forum.
I’ve been utilizing Omnivest for my investing ever since it was introduced, so my post last week giving all the details of my ATM setup was in the Omnivest Forum;
I’ve been spending considerable development time in Omnitrader since the release of ATMS.
Since many Club Members might not utilize Omnivest or that forum, I felt it would be beneficial to use this Forum to convey what I’ve found this past weekend using ARM5 strategies in ATM.
I spent last week experimenting in depth with some more of the capabilities in ATM by varying the Long / Short ratios and % Equity Invested in different Market States.
Then, when Nirvana published the ARM5 strategies at the end of last week, I spent the weekend substituting some ARM5 strategies into my latest ATM profile.
The results are impressive.
To get a fair comparison (apples to apples), everything is identical in both profiles except the substitution of 5 ARM5 RTM strategies for 5 of the original RTMs used. 3 were replaced in the Bear Market State, and 2 replaced in the Bull / Default Market State.
The list of stocks, 2X Margin, Ranking, Long / Short # of trades, and % Of Equity in each Market State is identical.
My Original ATM profile uses these strategies in the 3 Market States;
I substituted 3 ARM5 Strategies in the Bear Market State & 2 in the Bull / Default Market State (Yellow);
The comparison from 1/1/2007 to the present;
Substituting the ARM5 Strategies TRIPLES the ending equity.
Here are all the details for both profiles side by side;
I believe this demonstrates that using the ARM5 Strategies in ATM can definitely improve the already great results.
In addition, it seems like every day I find something more impressive about ATM…
The ability to use the ARM5 strategies is one, but the “Cutoff” Market State I highlighted in green above is another (also identical in both profiles).
It’s something that’s been on my wish list for a long time…
By inserting a “Cutoff” Market State at the beginning, I found that ATM gives us the ability to stop / resume all trading using “zero lag” parameters!
This is my initial development work on it, and I’ll post the details when I have more time.
When I do, if you’re a Club member with ATM you’ll be able to duplicate what I’ve presented.
It just keeps getting better…
[Edited by mholstius on 2/12/2018 4:43 PM]
Attached file : 00 Original Strategies.jpg (102KB - 1275 downloads)
Attached file : 01 ARM Strategies.jpg (171KB - 1292 downloads)
Attached file : 02 ARM vs Original.jpg (218KB - 1276 downloads)
Attached file : 03 Details.jpg (303KB - 1271 downloads)
More about my “Cutoff Market State"…
I’ve been trying to develop something that can act on the current bar with minimal lag to stop or resume trading based on a Market State rule. This is just a start - a “proof of concept”. I’m sure there are better methods and rules.
My current "Cutoff Market State" rule uses the spread between the Current SPY Close and the SPY Highest High for the previous 6 days.
If the spread is greater than 5%, all trades will be closed and trading will be halted for at least one day - more if the spread continues to be > 5%.
This is the rather simple formula;
(HHV(6) - C) / HHV(6) > .05
(HHV(6) - C) / HHV(6) > .05
This is the process for setting it up as the 1st Market State;
When triggered, it will exit all trades the following morning (if using MOO trades).
If the next day is up, the “OR” function kicks in and delays trading for at least one additional day.
If the SPY spread continues to decrease, trading will resume the following day.
If the SPY spread stays > 5%, trading won’t start again until one day after it becomes < 5%.
It’s a filter, so when compared with the same ATM without the Cutoff, the number of trades is lower, along with the ending equity;
Here are some examples with the rules used to color the background;
This past week on SPY;
The same period in the ATM showing 2 profiles: with and without the Cutoff enabled;
Two more examples…
The Credit downgrade in Aug 2008;
January - March 2009;
As I said earlier, this is just a proof of concept, a first attempt at a low lag way to determine whether to stop trading for a while.
I’m sure better Market State rules can be constructed - I just wanted to demonstrate what I found to be possible using the capabilities within ATM and stimulate some thought and conversation.
Suggestions and comments…???
Best of luck in your trading,
[Edited by mholstius on 2/13/2018 6:39 PM]
Attached file : 00 Cutoff Market State.jpg (172KB - 1139 downloads)
Attached file : 01 Cutoff comparison.jpg (102KB - 1163 downloads)
Attached file : 02 Cutoff details.jpg (107KB - 1138 downloads)
Attached file : 06 Cutoff.jpg (74KB - 1144 downloads)
Attached file : 03 Cutoff On SPY.jpg (82KB - 1128 downloads)
Attached file : 04 Cutoff In ATM.jpg (77KB - 1114 downloads)
Attached file : 05 Cutoff DUring Credit Downgrade.jpg (79KB - 1125 downloads)
Attached file : 300 High Money Flow Stocks With VIX.csv (1KB - 56 downloads)
Location: L'ville, GA
“spread between the Current SPY Close and the SPY Highest High for the previous 6 days.”
(HHV(6) - C) / HHV(6)
… probably won’t change things much, but that’s the equivalence to the English.
[Edited by Jim Dean on 2/13/2018 5:30 PM]
Location: L'ville, GA
Hi Mark - as a followup to our phone conversation, here is an alternative approach that I’ve used before - it’s not as sophisticated as what I’ve done in OLang (as a part of various tools), but it is as close as I can come in a relatively simple OScript formula to implementing the same idea.
The concept is fairly simple:
If a big adverse jump occurs, then that unsettles the market. The magnitude of the jump logically would influence how long that unsettled situation exists. So, I believe it’s not only wise to exit any existing trade when the jump occurs, but also to block any new entries in the original direction for a period of time proportional to the size of the jump.
The formula below is for a long trade basis - use C-L instead of H-C for shorts. It evaluates the size of an adverse jump from the high of one bar to the close of the next bar as a multiple of the atr just prior to that jump. The ratio (in this example) is presumed to be one “blocked reentry” bar per atr-multiple … the 1,2,3… on the rhs of the clauses could be smaller for more conservative, or larger for more aggressive flavors. I arbitrarily built it to deal with jumps that occurred up to 8 bars ago … it could be cut back or extended for more aggressive or conservative flavors, but in my experience 8 is a reasonable window.
Note that it also deals with more than one successive jump, to a degree. A better form (OLang or very messy OScript) would also consider successive jumps as somewhat additive - but my testing has shown it’s not strict addition, so I suggest just living with this simplified approach.
This formulation can be used in a number of ways:
1. While true, any extant long Trade should be exited.
2. While true, any new Long trades should be blocked.
3. If used in a Scan, symbols delegated for Long trades should be blocked from the Focus List while this is true.
4. Same as #3, but used in a filter block
5. It can be used to define a color chart to ID the blocked zones
Unfortunately ATM does not provide for separate Scans for each State - I’ve suggested this to N but apparently it’s too messy to do. So, #4 rather than #3 is the only way to apply this in an ATM which has some states for long and others for short, unless you radically change the structure of every active strategy to have two separate parallel paths for long and short (beyond the scope of this discussion).
I hope you find this helpful. I have not seen this concept publicized elsewhere, btw … it’s a “TradeTight technique”. :-)
(H-C)/atr(14) > 1
(H-C)/atr(14) > 2
(H-C)/atr(14) > 3
(H-C)/atr(14) > 4
(H-C)/atr(14) > 5
(H-C)/atr(14) > 6
(H-C)/atr(14) > 7
(H-C)/atr(14) > 8
[Edited by Jim Dean on 2/13/2018 8:06 PM]
Mark and Jim,
thank you for sharing your work.
That's very gracious of you, and I'll certainly give it a try.
And thanks for the kind words, Tony...
I really think we can use ATM to do some amazing things this year - it has a lot of powerful capabilities, & working together will only help speed things up.
BTW - if you don't visit the OV forum (or for anyone else that hasn't been over there), I posted all the details for setting up the original ATM profile I developed last week;
This current thread adds the ARM5 strategies and my "Cutoff Market State" idea.
By reviewing both threads, you can reconstruct any of the profiles.
The ATM profile in this thread has a number of changes vs the one in the OV forum, but all my ATM settings for this one can be seen in the snag "Here are all the details for both profiles side by side;" section at the start of this thread.
Then maybe you (or someone else) can update us with improvements...???
Also, if you're a Club member with ATM and add the ARM5 strategies, you'll need to have the $VIX in the list - so I've attached both of the lists I mentioned over in the OV thread here with $VIX added to them.
I used the list with 300 stocks for the results in this thread.
[Edited by mholstius on 2/14/2018 6:48 AM]
Attached file : 300 High Money Flow Stocks With VIX.csv (1KB - 68 downloads)
Attached file : 3779 Optionable Stocks With VIX.csv (20KB - 81 downloads)
Location: Planet Earth
Thanks Mark and Jim for sharing your insights.
Jim in Post #29840 you mentioned that we need to block new trades via Filter Block if we want to use the Market State formula given by you in that post. My query is how to put your formula in the Filter Block to BLOCK trades?
Location: stafford, va
Curious how you picked which strats to use in each MS? Did you run a PS using a timeframe covering each market state and pick the "best"? How did you determine which was best? HR? Low DD? Calmar? PPT?
Location: L'ville, GA
The formula is true when trades should not be entered.
A filter block requires a formula that is true when trades should be allowed to enter.
You can reverse the logic of any Boolean formula by enclosing the formula in “NOT( …formula… )” … use that in the Filter Block.
[Edited by Jim Dean on 2/15/2018 11:00 AM]
Location: Planet Earth
Thanks Jim... You are always ready to lend a helping hand.
E-Mail this thread to a friend
||Toggle e-mail notification|