OmniTrader Forum OmniTrader Forum
forums calendars search
today this week
register logon control panel Forum Rules
You are currently browsing as a guest.
You should logon to access more features
A Self-Moderated Community - ALL MEMBERS, PLEASE READ!
Vote for Members who contribute the most to your trading, and help us moderate content within the Forums.

Only Forum Moderators, Administrators, and the owner of this message may delete it.

Jim Dean

Posts: 3022

Joined: 9/21/2006
Location: L'ville, GA

User Profile
Subject : RE: Most Useful PortSim-Research Alloc Method
Posted : 8/30/2018 5:09 PM
Post #45287 - In reply to #45234

On various occasions I've tried to point out the danger/absurdity of using the %Equity method, which 99.9% of all the testing and development seems to be standardized on. This post hopefully will explain it in VERY SIMPLE TERMS.

Bottom line, imho, almost every PortSim run done with %Equity is FATALLY FLAWED, and MISLEADING ... unless: a) it covers a very small number of trades, or b) it shows that the strategy is *losing* consistently.

Yes ... I'm hoping that bolded statement raises some eyebrows and encourages y'all to carefully think this through. I hope that the examples below will make it clear as to why it's important, and why future Nirvana and User testing and posts and marketing should use a different approach.


Here's the typical scenario: start with 100K, set Allocation to 10% of Equity, and test across ten years ... these values may differ a bit but I think they represent the majority of the brochures and user-posted test results.

If the size of each trade is 10% of current equity, then that means (duh) that a max of ten trades can be active at once ... but since some might argue that 5% is more common, let's use 7%. That means 14 trades at a time (please disregard the effect of margin ... the conclusions are the same ... hang in there)

So, at the outset of the PortSim backtest, that means each trade has about $7,000 to buy shares with. If the per-share price is $700, that's 10 shares. If the per-share price is $70, that's 100 shares. If it's $7/share, it buys 1000 shares.

As long as there is some kind of "reasonable" liquidity filter used for the symbol list, or it's a major list like the SP-100, then we shouldn't have any trouble getting those trades filled at a reasonable price ... let's just ignore the fact that the SP-100 was different 10 years ago, and that using it as the basis today is "cheating" since we know those symbols are going to end up doing well ... that's a whole different discussion.

If we use a cash-liquidity filter something like this: Avg(C,10) * Avg(V,10) > 100,000,000 ... this is the kind of recommended filter that seems to be the most prevalent ... then the only symbols that "get through" that filter are ones where at least $100 million is traded per day on the average over a couple of weeks. Sounds reasonable ... sounds safe. Some might even use a smaller value than 100,000,000 in order to get more symbols on the FL. But we'll stick with it.

Now, assume further that this is a "SUCCESSFUL" strategy (or ATM method, etc) ... and that over the ten years, the equity curve rises from $100,000 to $100 million ... this may sound crazy (and that *IS* the point btw) ... but if you've been following the threads related to OmniVest and ATM, you'll find PortSim outputs posted that end up with $100 billion or even occasionally $100 trillion, after ten years. So, this example is going to use a "conservative" (hahaha) ending value of $100 million.

If you check this out for the market today ... starting with over 10,000 symbols in "All US Stocks", there are 574 symbols that pass the test. HOWEVER (and this is important) ... if we start with the SP500, only 320 pass ... and if we start with the SP100 (afaik the most common of all the canned test beds), then all of them make it through that test. So ... let's just assume that we have 100 symbols to "try out" (at the HRE) in order to make the strategy work.

However ... what about those same SP100 symbols, 10 years ago? How many of them passed that liquidity test back then? To find out:
1. Edit > Data Periods > 2650 bars (ie about ten years of 260 days/yr)
2. Select the SP 100 standard list for the focus list basis
3. Create a custom OmniScript column using this formula: Avg(C,14)[2600] * Avg(V,14)[2600]
... the highest value in that sorted column = 6,000,000,000 (ie $6 billion/day averaged over a two-week period)
... number of symbols in that list with > $100,000,000 avg daily liquidity as of ten years ago: 87
... the lowest value is ZERO ... in fact Eight symbols show 0 ... that is, they were not even being traded back then
... SO - only 87 of the SP100 symbols had adequate liquidity to be traded by the test strategy as of 2600 bars ago.

Now, let's see how often in that 10-year period the liquidity filter allows enough symbols through to the list that the strategy has available for trade-prospecting. To do this, add another custom OmniScript column (everything else the same): -sum((Avg(C,14) * Avg(V,14) > 1e8),2600)
... this formula counts how many days the liquidity passes the filter, over the past ten years
... 75 of the SP100 symbols pass that filter every day ... 86 symbols pass it for at least 2500 of the 2600 days.
... So ... it looks like 86 symbols offer a "consistently adequate liquidity", out of today's SP100 list over the past ten years.
... there are 98 symbols in the SP100 list today (go figger) ... so let's summarize by saying 85% of the SP100 symbols are adequately liquid for the past 10 years.

The horse is not quite dead yet. I've noticed that in recent years, the starting list for testing has expanded to include the full SP500, presumably to provide more opportunities for the strategy to "hit" and thus allow full allocation of funds more consistently (a good thing).

If we check the SP500 using the same method as above, the result is that of the 490 symbols currently on that list:
... 55 did not exist 10 years ago
... 91 had all 2600 days pass the test
... 135 had at least 2500 days pass the test
... So ... that means only about 28% of today's SP500 symbols actually would be available for trading for the large majority of days over the past ten years.

Now, let's say that we want a bigger, more diverse list for a starting point ... ie we are working with a bigger starting population like the Russell 1000 ... so that we can apply other filters as well, to get "better but viable" candidates. Checking the Russ1k, of the 1854 symbols currently on that list:
... 230 did not exist 10 years ago
... only 139 had at least 2500 days pass the test
... So ... that means a bit less than 8% of today's Russ1k symbols actually would be available for trading for the large majority of days over the past ten years. (remember, more filters would likely be in play as well ... but assume the liquidity-percentage remains relatively constant)

If we use a list that is not "purely" large-cap for a starting point, such as the Russell 2000 ... of the 1854 symbols currently on that list:
... 844 did not exist 10 years ago
... ONLY 2 had at least 2500 days pass the test
... So ... that means less than 1% of today's Russ2k symbols actually would be available for trading for the large majority of days over the past ten years. This is to be expected since the Russ2k has low-midcap stocks that are do not have as much institutional trading ... and means for liquidity purposes, large-cap is almost a requirement.

Finally, let's say we have a several extra "picky" filter-rules and are using the list and/or our strategy doesn't fire frequently ... in that case we want to open up the starting point fully, using All Optionable Stocks. Checking the Optionables, of the 4349 symbols currently on that list:
... 1939 did not exist 10 years ago
... only 180 had at least 2500 days pass the test
... So ... that means only about 4% of today's Optionable symbols actually would be liquid enough for trading for the large majority of days over the past ten years. (remember, more filters would likely be in play as well ... but assume the liquidity-percentage remains relatively constant)

Consolidating all this ... let's just average the results, presuming that sometimes you use the SP100, sometimes the SP100, sometimes the Russ1k, and sometimes the Optionable lists ... the overall average of the percent-available symbols, over a ten year period is: (85% + 28% + 8% + 4%) / 4 = 31% are viable throughout the test period.

btw ... Dynamic Lists would raise these percentages considerably ... but DL's cannot be used with ATM so we need to stick with the analysis above


Now, let's consider the trades that are taken using the 7% allocation method, in the last year or so of that time period. 7% of $100 million is $7,000,000 ... which buys 10,000 shares of the $700 stock, 100,000 shares of the $70 stock, and 1 million shares of the $7 stock.

Hmmm. Those are some BIG trades ... even for the $700 stock. A $7 million trade, regardless of the number of shares actually bought/sold, would:
a. be very hard to get a single, clean fill ... probably many trades would fail
b. would almost certainly suffer from significant slippage in entry/exit prices
c. would almost certainly create a "pop" in the price (maybe the H for the day)

PRACTICALLY SPEAKING, I doubt that most OT users, regardless of their account size, would be comfortable "regularly" tying up more than about $100,000 in any given trade ... which means that with the 7% equity rule, we start getting uncomfortable with the trade sizes when the account reaches $1.5 million.

Hmmm again. So ... our "normal attractive" PortSim equity curve took us all the way to $100 million in 10 years ... and for many curves I've seen, it takes about half that time to get to $1.5 million.

So, here is the BIG QUESTION:
How will things work in the second half of the test period, when the trade sizes required by PortSim get to be too big for our comfort level?

The answer is fairly clear ... we will LIMIT the sizes to our max comfort-level equity level ... and in order to keep our account fully funded, we will have to TAKE MORE TRADES every day (the PortSim analysis %Equity allocation model that got to $100 million used no more than 14 trades/day)

HOWEVER, presumably we have used the cool ranking and market state methods in ATM or OmniVest to pick the "best" 14 trades every day. So ... if we need to find MORE trades to keep us allocated, we need to put our money into WORSE-ranked opportunities.

How many? Well, if our account gets to $100 million or so in the final year, and if we don't want to tie up more than $100,000 in any given trade, then that means we will need ONE THOUSAND SYMBOLS IN TRADE every day. That's 986 worse-ranked symbols than the PortSim is using.

However ... look back at the analysis of how many symbols pass the liquidity test ... only 31% of our list, on the average. Generalizing, that means to get 1000 tradeable symbols using the liquidity filter described above, our starting list has to have at 3200+ symbols in it ... and our strategies have to be actively trading EVERY SINGLE ONE of them.

Clearly, this is absurd

And that's why, at the beginning of this post, I made the bold statement that PortSim runs which we very often are using to select strat's, tune ATM's, etc are USELESS ... misleading.

Please look over my earlier post in this thread that suggests alternatives.
The coolest and simplest and most flexible fix to PortSim modelling that would solve ALL of this, is ...

Allow the user to select more than one Allocation Method ... and give them a single new input that tells Port Sim to set the size of each trade based on the MINIMUM, Average (or maximum-bad) of the selected methods.

Doing this, we can use % Equity until its sizes are too big, and let Fixed $ take over above that. Or (my preferred choice by far), ALSO activate the Turtle Trader $ at Risk method as well ... and tell PortSim to use the Minimum of the three.

my guess is that making this change to OT would be a lot simpler than other possible approaches involving custom formulae, etc that I've suggested earlier. So, if you agree that this is a concern, and like the proposed solution, please drop an email to Ed or Jeff referencing this post ... the link to this post is:

[Edited by Jim Dean on 9/1/2018 9:25 AM]

Deleting message 45287 : RE: Most Useful PortSim-Research Alloc Method

Nirvana Systems
For any problems or issues please contact our Webmaster at