Always keep in mind that one million times zero equals zero.
- Manlobbi
Investment Strategies / Mechanical Investing
No. of Recommendations: 6
I came across this in P123 post. It's a ranking system for determining Quality companies.
Pseudo Script:
1. Only US stocks
2. Select the top 50% of Industries in terms of Annual Operating Margin.
3. Select the top 50% of companies within those industries that have the highest Operating Margins.
Continue pruning in the same manner using the following criteria:
4. Top 50% industries with the highest 5-Yr operating margins.
5. Top 50% companies with the highest 5-Yr operating margins.
6. Top 50% Highest industry Asset Turnover.
7. Top 50% Companies with highest Asset Turnover.
8. Top 50% Industries with highest ROI.
9. Top 50% Companies with highest ROI.
10. Top 50% Industries with highest 5-Yr ROI.
11. Top 50% Companies with highest 5-Yr ROI.
12. Top 50% Industries with highest Interest Coverage over the past year. (Operating Income / Interest Expense)
13. Top 50% Companies with highest Interest Coverage over the past year.
At this point, there are usually > 700 companies remaining. So I added a final screen on:
14. Current FY EPS Estimate > 0 (earnings will be positive this year)
15. Select 8 stocks with the lowest Price-to-Sales and hold them for 1 year.
I know this is rather involved; however, it backtests superbly: 23-yr P123 backtest 108,000% return versus 428% for the S&P500 over the same period. The downside is that it has a stomach-churning -76% max DD, and a 47% annual Standard Deviation. Also, it occasionally picks small stocks (<$200 MktCap) that may not be liquid. I've experimented with ways to tame the max DD, but all have killed the overall return so far.
I'm hoping someone here has some good ideas. This could be a great screen if we could get the Max DD equal or less than the S&P500 (-55%).
Taz
No. of Recommendations: 6
"23-yr P123 backtest 108,000% return" is a 50% CAGR. Sounds unlikely to be real. Some liquidity requirements are needed. Some questions:
1. How many start dates are in this backtest. Can you do a rolling backtest? What is the distribution of CAGRs for the different start dates? (standard deviation, minimum, maximum, count)
2. What is the CAGR in the last 10 years?
3. How does the screen do with the Prussell3000 universe?
4. What are today's picks?
Getting from -76% MDD to -55% MDD is easy. Just mix in 30% cash. The result would be 35% CAGR and -53% MDD.
What are the results for the following screen:
{lowPS_R3000}
universe is Russell 3000
[PS] Bottom 8
Is deblanking needed? (PS>0)
The CAGR should be negative, as this screen will pick many stocks going bankrupt. (A few of these will recover, and so if the backtest has survivorship bias the CAGR will be positive.)
Compare picks to the list from the screener
https://www.barchart.com/stocks/stocks-screenerRussell 3000: "The smallest company in the index is Akoustis Technologies with a total market cap of $240.1 million"
https://content.ftserussell.com/sites/default/file...
No. of Recommendations: 6
I agree the return is absurdly high; however, it's the only time on P123 I've had something blip like this. I suspect it's similar to GENTLE SCREAMERS which, back in the 00's, topped the VL screens. But, its gains relied primarily on illiquid microcap stocks that a mortal couldn't buy at the posted prices.
I've already started some of the analyses you recommend. Stay tuned; I'll let you know what I find out after incorporating your ideas.
Taz
No. of Recommendations: 1
Portfolio123 FactSet may not be Point-In-Time, and so some extra steps might be needed. The OP screen (very low PS with no filters for bankruptcies) is invalid without PIT data.
--- links ---
"Portfolio123 is powered by data trusted by both Wall Street and academia: FactSet. Data by S&P Global Market Intelligence's Compustat and CapitalIQ available via a data license."
https://www.portfolio123.com/research"For FactSet,... When you choose 'Use Prelim' we expose the final data on the News Date + one day. This means that some data points may suffer from look-ahead biases."
https://community.portfolio123.com/t/factset-beta-..."Maybe I'm mistaken, but since the 2020 switchover of data providers, it has become my impression that Portfolio123 powered by FactSet might NO LONGER be accurately characterized as Point-In-Time Data."
https://community.portfolio123.com/t/survivorship-...""Might be helpful to think of simulations as proof of concepts, instead of a precise recreation of the past using a time machine. In other words, simulations are one possible result of many of your strategy."
https://community.portfolio123.com/t/live-strategy...
No. of Recommendations: 4
Pseudo Script:
1. Only US stocks
2. Select the top 50% of Industries in terms of Annual Operating Margin.
3. Select the top 50% of companies within those industries that have the highest Operating Margins.
Continue pruning in the same manner using the following criteria:
4. Top 50% industries with the highest 5-Yr operating margins.
etc.
It's not clear how you're applying these pruning criteria, in sequence or as an AND function. If you pare down your universe by 50% 13 times you'd end up with 1 stock from a universe of 8000 stocks. Also, many of the 13 criteria seem redundant.
Elan
No. of Recommendations: 4
Elan,
Stocks:
5996 Country("USA")
5983 Universe($ADR)=FALSE // Only USA stocks
3485 Frank("OpMgn%TTM",#Industry,#desc)>=50
2326 Frank("OpMgn%TTM",#All,#desc)>=50
2021 Frank("OpMgn%5Y",#Industry,#desc)>=50
1970 Frank("OpMgn%5Y",#All,#desc)>=50
1342 Frank("AstTurnTTM",#Industry,#desc)>=50
1091 Frank("AstTurnTTM",#All,#desc)>=50
1033 Frank("ROI%TTM",#Industry,#desc)>=50
985 Frank("ROI%TTM",#All,#desc)>=50
913 Frank("ROI%5YAvg",#Industry,#desc)>=50
893 Frank("ROI%5YAvg",#All,#desc)>=50
800 Frank("IntCovTTM",#Industry,#desc)>=50
772 Frank("IntCovTTM",#All,#desc)>=50
689 CurFYEPSLow>0 // Earnings will be positive this year
8 FOrderOLD("Pr2SalesTTM",#All,#Asc,#Previous,TRUE)<=8
Taz
No. of Recommendations: 2
Lizgdal:
Rolling Backtest:
Port: Bench: Excess: Min: Max: StdDev:
Avg: 31% 6% 24% -55% 174% 77%
Up Mkts 37 14 23 -49 179 76
Dwn Mkts 14 -14 28 -69 163 78
Universe(PRussell3000):
Total Return: 38,099% Max DD: -77% StdDev: 37% Beta: 1.50
Original w/ Pr2SalesTTM > 0 (deblanked):
Total Return: 108,000% Max DDD: -77% StdDev: 47% Beta: 1.23
See other post for rolling backtest results.
Taz
No. of Recommendations: 1
Lizgdal:
Todays Picks:
AMRK A-Mark Precious Metals Financial IVestSVCE $867M
ANDE The Anderson, Inc. Nincyclical Agriculture $1,425M
CAH Cardinal Health Healthcare HCaresupport $21,506M
GCO Genesco Inc. Cyclicals ApparelRetail $255M
LEE Lee Enterprises ConcumerSvce MediaPub $85M
SNEX StoneX Group Financial InvestSvce $1,757M
SPTN SpartanNash NonCyclical FoodDrinkRetail $800M
UNFI United Natural Foods NonCyclical FoodDrinkRetail $1,6423M
No. of Recommendations: 1
Thanks for posting these details of P123 results. I have been thinking of signing up to P123, and this helps me work through some of the issues. I reformatted your table using pre tags:
AVAR? GSD?
Port Bench Excess Min Max StdDev
Avg 31% 6% 24% -55% 174% 77%
UpMkts 37 14 23 -49 179 76
DwnMkts 14 -14 28 -69 163 78
It's unclear what some of these numbers are. Is the Avg in the table an average of annual returns (AVAR) or is it CAGR (Annualized Return)? For example, P123 results for a r2g model since Launch 02/21/2014:
Strategy Benchmark Excess
Annualized Return 17.5% 9.5% 8.0%
Standard Deviation 35.4% 15.1% -20.4%
Downside Deviation 20.9% 9.9% -10.9%
Maximum Drawdown -69.1% -33.9% -35.2%
Sharpe Ratio 0.58 0.59 -0.01
Sortino Ratio 0.84 0.78 0.06
Beta 1.07
https://www.portfolio123.com/app/r2g/summary?id=11...Another example: {TechGrowers} from 19970902 to 20230310 had 10.5 CAGR and 58 GSD. The statistics for the raw annual returns are:
AnnualReturns avg min max stdev
TechGrowers 26 -67 236 69
Do you want high Average Annual Return (AVAR) or high Compounded Annualized Return? {TechGrowers} had 26 AVAR and 10.5 CAGR.
https://gtr1.net/2013/?~TechGrowers_20200326_rdutt...
No. of Recommendations: 1
Just insisting on US companies with mcap>200 m, p>$2, and p x avg vol>100,999
and then highest 50% ROE give 380 stocks in zacks' screener.
So you can't do 50% of a whole bunch of added criteria or you quickly end up with zero stocks.
No. of Recommendations: 0
P123 does the following with FRANK:
Returns the percentile rank for each stock based on user specified parameters for the formula, the scope and the sorting direction. It works like this:
The formula in quotes is evaluated for all the stocks in each scope. The formula could be a single factor, like "MktCap" or more complex like "Close(0)/Close(10)".
The results are placed in an array.
The array is sorted using the 'sort' parameter. If you selected a sector scope multiple sorts are executed for each sector.
A percentile is assigned to each stock. This is the value returned by FRank. For example: if your universe is 500 stocks the top stock in the array gets 100, the next one 100 - 100/500 = 99.8, the next one 99.6 and so on. If you rank within an industry/sector you'll have multiple stocks with 100.
Special cases:
NA's, if included, are always placed at the bottom of the array and all get the same percentile. The percentile assigned is the next percentile below the last meaningful value
Equal values get assigned the same percentile. The next non-equal value gets a percentile equal to: (percentile of the equal values) minus (number of equal values * rank-delta)
The result of all of this is that rarely does a >=50% ranking remove half of the stocks. See the screening example posted several days ago.
Taz
No. of Recommendations: 2
"I came across this in P123 post. It's a ranking system for determining Quality companies."
This screen may be similiar to iShares MSCI USA Quality Factor ETF QUAL.
Note the fundamental variables: high return on equity, low earnings variability and low leverage.
Plus Sector Neutral Quality weighted.
Principal Investment Strategies
The Fund seeks to track the investment results of the MSCI USA Sector Neutral Quality Index(the 'Underlying Index'), which is based on a traditional market capitalization-weighted parent index, the MSCI USA Index (the 'Parent Index'). The Parent Index includes U.S. large- and mid-capitalization stocks, as defined by MSCI Inc. (the 'Index Provider' or 'MSCI'). The Underlying Index seeks to measure the performance of securities in the Parent Index that exhibit higher quality characteristics relative to their peers within the corresponding Global Industry Classification Standard (GICSŪ) sector. To construct the Underlying Index, the Index Provider determines the quality score of each security in the Parent Index based on three fundamental variables: high return on equity, low earnings variability and low leverage. The Underlying Index is weighted based on a component's quality score multiplied by its weight in the Parent Index. Weights in the Underlying Index are next normalized so that sectors in the Underlying Index represent the same weight as in the Parent Index. Additionally, each individual issuer is capped at 5%.
GD_