Hi, Shrewd!        Login  
Shrewd'm.com 
A merry & shrewd investing community
Best Of Politics | Best Of | Favourites & Replies | All Boards | Post of the Week! | How To Invest
Search Politics
Shrewd'm.com Merry shrewd investors
Best Of Politics | Best Of | Favourites & Replies | All Boards | Post of the Week! | How To Invest
Search Politics


Halls of Shrewd'm / US Policy
Unthreaded | Threaded | Whole Thread (20) |
Post New
Author: lizgdal 🐝  😊 😞
Number: of 5386 
Subject: Portfolio123 Testing 2026
Date: 03/05/26 12:14 PM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 14
I compared P123 and GTR1 backtests. In general, there was good agreement, with similar coverage (number of stocks) and similar backtest results. I will add posts to this thread for the following tests:

0. Limitations.
1. Universe Composition.
2. Current Universe Size.
3. Historical Universe Size.
4. Implausible one-day returns (outliers).
5. Replicate indexes: RSP, EWRS, QQQE.
6. Sector, ADR, IPO, Foreign screens.
7. High Net Income Low PE screen.
8. Compare CAGR for several screens.

All results are from 20160104 to 20251128. Only stocks listed on U.S. exchanges were tested.
P123 settings (unless otherwise specified): Price next Close, exclude PIT Method - Prelims, 0% Carry Cost, 0% Slippage, 4 week rebalance.
GTR1 settings (unless otherwise specified): 0 Friction, 19 mkt day hold, rebalance every 19 days.

Some nomenclature:
IoU is the Jaccard Index calculated as Intersection over Union. I use it when comparing 2 lists of tickers. 0% IoU says the 2 lists have no tickers in common. 100% IoU indicates a perfect match.

CorMER is the correlation of monthly excess returns. CorMER above 0.8 indicates good agreement between 2 backtests, and CorMER below 0.6 indicates a significant difference. Monthly excess returns (MER) are calculated from the Portfolio Equity curve, by subtracting the benchmark return from the rolling monthly return. I used yahoo adjusted prices for RSP as the benchmark.

=== link ===
Author: rgearyiii
Subject: Portfolio123 Auditing & Validation
Date: 3/5/2016
"... The first thing I would do is determine exactly what the P123 universe consists of from the non-OTC stock market. ...
count non-OTC stocks over the course of a P123 backtest from universe inception and compare the counts to what the GTR1 backtester predicts ...
Implausible Returns. It appears that a separate backtest of the entire non-OTC universe held in equal weight with a holding period of one market day was also done for me. In this backtest, I noticed two daily returns that were totally implausible: A 1-day forward return of 118.7816% from the close of market day 1/30/2015, and a 1-day forward return of 10.1288% from the close of 10/22/2002. ..."
https://yorickm.com/Message.php?pid=32146036

Print the post


Author: lizgdal 🐝  😊 😞
Number: of 5386 
Subject: Re: Portfolio123 Testing 2026
Date: 03/05/26 8:35 PM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 8
*** 0. Limitations ***

1. Screening out IPOs in P123 is unclear. GTR1 does this with the field dspo. P123 can filter some IPOs with Close(253)>0, but this misses stocks that have pre-IPO prices.

2. Foreign stocks are defined differently, and so translating GTR1 styp.a=12 is unclear. Because of this, I usually start with the P123 ALLFUND Universe (that includes Foreign Primary and ADRs). ADRs and REITs can be filtered out if needed. Foreign stocks can't be filtered out the same in GTR1 and P123. The P123 field "Country of domicile" might work, but I did not test it.

3. P123 results sometimes change. The P123 database is not static, as changes are made to correct past mistakes. If you run the screens in this thread, GTR1 will always give the same CAGR, while P123 sometimes will give a different CAGR.

4. Different start dates give different P123 results. Just changing the start date by 1 day can change the P123 CAGR by more than 5% in a 10-year backtest.

5. I am mostly interested in monthly screens, long only, no hedging or timing, and no nano caps. So I did not do much testing on:
penny stocks (less than $1 Price)
nano caps (less than $50 million Market Cap)
daily or weekly trading
timing or hedging
ADR, MLP, ETF, or CEF
non-US stocks
Print the post


Author: Taz2   😊 😞
Number: of 5386 
Subject: Re: Portfolio123 Testing 2026
Date: 03/06/26 11:28 AM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 3
Re: Screening out IPOs: Some of the P123 screens use #APeriods > 2

Taz
Print the post


Author: lizgdal 🐝  😊 😞
Number: of 5386 
Subject: Re: Portfolio123 Testing 2026
Date: 03/06/26 2:48 PM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 5
*** 1. Universe Composition ***

As a starting point, I created {UnivZero} representing all listed U.S. equities with P123 fundamentals and price. Counting the GTR1 tickers by security type and {UnivZero} membership shows what security types are in P123 {UnivZero}.

On 20251128, there were 5402 tickers in P123 {UnivZero}, and 5184 of these match GTR1 tickers. Most P123 {UnivZero} tickers are ordinary stocks. GTR1 had an additional 5365 tickers (mostly ETFs) not in P123 {UnivZero}.

styp.a  notUnivZero  UnivZero       type
0 1 undefined
11 192 3491 x ordinary
12 61 913 x foreign
14 157 32 CEF
15 1
16 7 x SPAC
17 29 131 x SPAC
18 4 159 x REIT
21 1 x
31 20 357 x ADR
41 3 4
44 209 1 CEF
45 1
48 2 31 x REIT
71 4 46 x LP
72 1 9 x LP
73 4654 2 ETF
74 24 CEF
75 2

Total 5365 5184


As expected, the P123 {UnivZero} corresponds to equities that are not CEF or ETF:
styp.a != 14!15!44!73!74!75
or
styp.a = 11!12!16!17!18!21!31!48!71!72

I added various liquidity criteria to create the P123 screens {UnivOne}, {BaseAlt}, and {Base}.
{UnivZero} has no liquidity criteria.
{UnivOne} drops penny stocks and nano caps.
{BaseAlt} drops IPOs and ADRs, and adds a minimum dollar volume criteria.
{Base} adds a few more criteria in an attempt to filter out more IPOs.

Counts of tickers by security type on 20251128:

styp.a  UnivZero  UnivOne  BaseAlt  Base    type
0 undefined
11 3491 2718 2289 2190 ordinary
12 913 534 397 372 foreign
14 32 28 1 1 CEF
15
16 7 SPAC
17 131 SPAC
18 159 147 130 130 REIT
21 1 1 1 1
31 357 276 ADR
41 4 3 2 2
44 1 1 CEF
45
48 31 30 28 27 REIT
71 46 40 5 5 LP
72 9 9 3 1 LP
73 2 2 2 2 ETF
74 CEF
75

Total 5184 3789 2858 2731


GTR1 screens {UnivZero} and {UnivOne} will use styp.a != 14!15!44!73!74!75
GTR1 screens {BaseAlt} and {Base} will use styp.a = 10!11!12!18!48

=== screen definitions ===

P123 {UnivZero}
Universe(ALLFUND)
!IsOTC & !IsUnlisted
Close(0) > 0
daily rebalance, 0% Slippage, Equal weight

P123 {UnivOne}
Universe(ALLFUND)
!IsOTC & !IsUnlisted
Close(0) > 0
Close(0) * Max(SharesFDQ, SharesQ) >= 50
SalesQ > 0
Close(10) > 0
AvgVol(10) > 0
Close(0) > 1
daily rebalance, 0% Slippage, Equal weight

P123 {BaseAlt}
Universe(ALLFUND)
!IsMLP & !IsOTC & !IsUnlisted
!IsADR
SecurityType = Common
Close(0) >= 1
AvgDailyTot(63) >= 1000 * 1000
SalesQ > 0
Close(0) * Max(SharesFDQ, SharesQ) >= 50
BarsSince(PeriodDateQ) <= 252
Close(300) > 0
Close(63) > 0
4 week rebalance, 0% Slippage, Equal weight

P123 {Base}
Universe(ALLFUND)
!IsMLP & !IsOTC & !IsUnlisted
!IsADR
SecurityType = Common
Close(0) >= 1
AvgDailyTot(63) >= 1000 * 1000
SalesQ > 0
Close(0) * Max(SharesFDQ, SharesQ) >= 50
BarsSince(PeriodDateQ) <= 252
Close(300) >= 1
AvgDailyTot(200,100) >= 1000 * 1000
4 week rebalance, 0% Slippage, Equal weight

Note that "Close(0) * Max(SharesFDQ, SharesQ)" was used in place of MktCap to avoid the recent P123 change to the MktCap field.
Important Update: Transition to FactSet Market Cap, Feb 6, 2026
https://community.portfolio123.com/t/important-upd...

=== links ===
https://gtr1.net/2013/?~gBase:h19::styp.a:et10!11!...
https://gtr1.net/2013/?~gBaseAlt:h19::styp.a:et10!...
https://gtr1.net/2013/?~gUnivOne:h1::styp.a:ne14!1...
https://gtr1.net/2013/?~gUnivZero:h1::styp.a:ne14!...
Print the post


Author: lizgdal 🐝  😊 😞
Number: of 5386 
Subject: Re: Portfolio123 Testing 2026
Date: 03/06/26 3:53 PM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 6
*** 2. Current Universe Size ***

P123 and GTR1 have about the same number of stocks (coverage) on 20251128. GTR1 had 1% higher coverage before using SIP fields, but 4% lower coverage after the salesq1.s > 0 step. SIP is missing a few stocks. I compared the tickers passing the screens, and calculated the Jaccard Index.

  size of:     UnivZero  UnivOne  BaseAlt  Base
GTR1 5465 3784 2902 2790
P123 5402 3927 2977 2843
ratio P:G 99% 104% 103% 102%

Intersection 5178 2797 2688
Union 5689 3082 2945
Jaccard Index 91.0% 90.8% 91.3%

GTR1 N/A 89 67 66
GTR1 blank 3 0 0


The Jaccard Index is high for these screens, indicating good agreement between the GTR1 and P123 ticker lists.

For example, using the {Base} screen, GTR1 lists 2790 tickers on 20251128, and 2688 of these tickers are on the P123 {Base} list. That leaves 102 {Base} tickers in GTR1 that are not in P123. 66 of these are N/A in GTR1. Some of the others are multiclass tickers. I did not match multiclass tickers. For example, GTR1 has BRK.A and BRK.B, while P123 only has BRK.B.
Print the post


Author: lizgdal 🐝  😊 😞
Number: of 5386 
Subject: Re: Portfolio123 Testing 2026
Date: 03/07/26 4:19 PM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 6
*** 2. Current Universe Size *** continued

This post looks at tickers passing the {Base} screen on 20251128. GTR1 lists 2790 tickers, and these can be categorized as:

2688 are on the P123 list.
66 are N/A in GTR1.
5 multiclass tickers in P123 {Base} with a different class.
12 ticker changes and P123 {Base} has the new tickers.
1 merger not in P123 (COMM).
18 unknown.

This breakdown shows how P123 historical screening works. Tickers are changed to today's tickers, and mergers might be dropped from the list.

The 18 tickers missing for unknown reasons can be fed back into the P123 {Base} screen to determine which criteria is filtering them out:

2 tickers (FUN, SMC): !IsMLP
3 tickers (ASML, MT, STM): !IsADR
1 tickers (RWAY): SecurityType = Common
4 tickers (CRML, MTC, NEGG, RC): SalesQ > 0
1 tickers (OLOX): Close(0) * Max (SharesFDQ, SharesQ) >= 50
6 tickers (ABAT, BBT, MAGN, NRGV, STRZ, WOLF): Close(300) >= 1
1 tickers (MCHB): AvgDailyTot(200,100) >= 1000 * 1000

This breakdown finds a few security type issues. For example, FUN in listed as an MLP in P123, but is styp.a=11. ASML is an ADR in P123, but is styp.a=12.

There are also a few quarterly report issues:
NEGG does not issue regular quarterly reports. This is handled differently by P123 and GTR1.

RC filed a 10-Q on Friday 20251107. The P123 historical screener, with SalesQ>0, filters out RC between 20251110 and 20260305, but passes RC on Friday 20260306 and today 20260307. Maybe I need to use different SalesQ parameters.

Adjusting price history after a merger also differs:
BBT prices on P123 start January 2025, while prices on yahoo, barchart, and M* go back to before 2001. Beacon Financial Corporation (NYSE: BBT) was created on September 1, 2025 through the merger of Berkshire Hills Bancorp (NYSE: BHLB), and Brookline Bancorp (NASDAQ: BRKL). BBT actual prices start 20250902, after the merger, but websites copy the BHLB historical prices. P123 only copies part of one year, while most other websites copy more than 20 years of BHLB price history.

Tracking some company actions differ:
WOLF prices on P123, barchart, and yahoo start September 2025, while prices on M* go back to 1993. Wolfspeed emerged from bankruptcy in September 2025. M* and GTR1 correctly connected the old WOLF shares to the new WOLF shares, while P123 and other websites did not.

 date   price  mktCap   source
Dec-23 $43 na SIP
Jul-25 $1.80 $280M SIP
Sep-25 $29 na barchart
Mar-26 $17 $747M barchart


Wolfspeed declared bankruptcy in June 2025. As part of the reorganization, new shares were issued, and legacy equity holders received 1.3 million shares. There are now 45M shares outstanding. Wolfspeed received a massive $700M tax refund on December 1, 2025 (because of the CHIPS act). WOLF shares were never worthless. M* shows a price around $1.4 on 5M share volume in the months before the reorg.
Print the post


Author: lizgdal 🐝  😊 😞
Number: of 75974 
Subject: Re: Portfolio123 Testing 2026
Date: 03/07/26 4:27 PM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 5
*** 3. Historical Universe Size ***

From 2016 to 2025, GTR1 and P123 had about the same number of stocks in {UnivZero}. In 2021, the number of stocks increased about 20%, and the ratio of P123 to GTR1 stocks increased from 96% to 99%.

UnivZero    from         to      P123  GTR1  ratio P:G
avg 1/4/2016 8/6/2020 4707 4881 96%
avg 2/17/2022 11/28/2025 5687 5732 99%
increase 21% 17%


The number of missing stocks gradually decreasing over time could signify some survivorship bias. The average difference between the GTR1 and P123 {UnivZero} stock counts is:

Year  AvgMissing
2016 186
2017 178
2018 172
2019 167
2020 178

2021 144

2022 51
2023 46
2024 39
2025 42


P123 improved coverage in 2021. There might be a minor survivorship bias of about 10 stocks over 4 years (out of about 5000 stocks including penny stocks and nano-caps).


Similar results are seen with the screens {UnivOne} and {Base}. Coverage is similar in GTR1 and P123.

 screen      date     P123  GTR1  ratio P:G
UnivZero 1/4/2016 4829 5020 96%
UnivOne 1/4/2016 4063 3986 102%
Base 1/4/2016 2597 2601 100%

UnivZero 11/28/2025 5402 5458 99%
UnivOne 11/28/2025 3927 3784 104%
Base 11/28/2025 2829 2789 101%



{UnivOne} and {Base} have lower GTR1 counts because of fewer stocks in the SIP database.
Print the post


Author: lizgdal 🐝  😊 😞
Number: of 75974 
Subject: Re: Portfolio123 Testing 2026
Date: 03/07/26 7:37 PM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 6
*** 4. Implausible one-day returns ***

Backtest results (10-year) show a problem with P123 {UnivZero}. The CAGR is implausible:

 Screen   GTR1   P123   diff   CorMER
UnivZero 14.8% 29.1% 14.2% 0.69
UnivOne 10.4% 10.5% 0.0% 1.00
BaseAlt 10.2% 10.8% 0.7% 1.00
Base 10.3% 11.1% 0.8% 1.00



{UnivZero} is affected by data outliers (for example, 20210928 GFAI). Liquidity requirements are needed. {UnivOne} filters out penny stocks and nano caps, and shows very good agreement between GTR1 and P123. The CAGRs are close and there is very high correlation of monthly excess returns (CorMER). {BaseAlt} and {Base} add a few more liquidity criteria, and also show good agreement between GTR1 and P123.

The P123 {UnivZero} problem can be investigated using one-day returns. One-day total returns of RSP and QQQE using yahoo adjusted prices:

       yRSP    yQQQE
avg 0.05% 0.06%
sd 1.15% 1.29%
min -12.04% -11.72%
max 10.68% 10.64%


The maximum QQQE one-day return was 10.6% April 9-10, 2025. RSP also had a good day with a 8.0% return. The dates for the 5 largest excess one-day total returns (relative to yahoo RSP adjusted prices):

  yQQQE       gRSP       pRSP     gUnivZero   pUnivZero    gUnivOne    pUnivOne     gBase       pBase      gBaseAlt    pBaseAlt   gSP1500ew  pSP1500ew
11/3/2020 3/18/2020 4/16/2020 12/21/2022 12/21/2022 3/18/2020 3/18/2020 3/18/2020 3/18/2020 3/18/2020 3/18/2020 3/18/2020 3/18/2020
3/20/2020 12/16/2021 4/7/2020 3/18/2020 9/28/2021 3/19/2020 3/19/2020 4/8/2020 4/8/2020 4/8/2020 4/8/2020 11/5/2024 4/28/2020
3/8/2021 4/16/2020 4/3/2020 3/19/2020 8/17/2018 1/28/2022 1/28/2022 11/13/2023 11/13/2023 11/13/2023 11/13/2023 4/8/2020 6/5/2020
6/9/2020 3/19/2020 4/6/2020 3/8/2021 3/6/2019 4/8/2020 3/8/2021 12/16/2021 4/28/2020 7/10/2024 7/10/2024 4/28/2020 11/5/2024
4/8/2025 3/25/2020 4/22/2020 12/31/2018 4/16/2021 12/16/2021 12/16/2021 4/28/2020 7/10/2024 12/16/2021 12/16/2021 1/5/2021 4/8/2020

3.7% 0.6% 0.7% 38.0% 38.3% 7.1% 7.1% 5.7% 5.2% 5.8% 5.3% 4.1% 3.7%
3.6% 0.3% 0.5% 7.1% 27.5% 2.2% 2.2% 2.1% 2.1% 2.1% 2.1% 2.0% 2.1%
3.3% 0.3% 0.5% 3.3% 27.4% 2.1% 2.1% 2.1% 2.0% 2.0% 2.0% 1.7% 2.1%
2.7% 0.3% 0.4% 2.5% 25.6% 2.0% 2.0% 1.9% 2.0% 2.0% 2.0% 1.6% 2.0%
2.6% 0.3% 0.4% 2.2% 18.2% 2.0% 1.9% 1.9% 2.0% 1.9% 1.9% 1.6% 2.0%


This data shows suspect {UnivZero} data December 21-22, 2022 on both GTR1 and P123, and suspect P123 {UnivZero} data on several other dates. The P123 {UnivZero} problem is related to either penny stocks or nano-caps, but this ends my {UnivZero} testing. {UnivOne} and the other screens' one-day returns look plausible, and I continue testing those.

With a few steps added to a screen, the number of stocks with unusual price action can be counted. The number of {UnivOne} outliers over the 10-year backtest was:

     UnivOne  UnivOne
trm GTR1 P123
3x 127 120
6x 23 22
11x 5 5
21x 1 1
51x 0 0


Where trm is the total return multiplier over one day. About 120 {UnivOne} stocks saw a one-day tripling of the price (for example, 20250908 ORBS, 20240206 HOLO).

As an example, consider a monthly 10-deep screen that manages to find three outliers per year, with each outlier having a one-day trm of 5x. The outliers would increase CAGR by roughly:
3 * 400% / 120 = 10% increase in CAGR from the outliers.

For example, the price of ORBS (nasdaq, yahoo, and barchart agree) jumped 40x on September 8th, 2025:

     Date  Open   High    Low   Close    Volume
25-Feb-26 1.22 1.33 1.16 1.19 5,076,700
15-Oct-25 10.00 10.00 8.90 9.43 2,339,300
19-Sep-25 13.79 14.03 12.61 12.79 4,041,200
15-Sep-25 15.13 15.23 11.76 12.02 3,889,500
8-Sep-25 18.86 83.12 15.52 45.08 204,842,400
5-Sep-25 1.50 1.50 1.41 1.45 13,500


The extra liquidity steps in {Base} reduce the number of outliers, but there are still some implausible one-day returns, with a similar number in GTR1 and P123:

     Base  Base
trm GTR1 P123
3x 49 45
6x 6 6
11x 2 2
21x 1 1
51x 0 0


The price changes could possibly be real (some sort of flash crash in reverse). There are a similar number in GTR1 and P123. Breakdown by year of the trm=3 data:

       UnivOne  UnivOne  Base  Base
GTR1 P123 GTR1 P123
2016 2 1 0 0
2017 2 0 0 0
2018 10 7 1 0
2019 8 7 3 3
2020 23 22 10 8
2021 19 23 10 9
2022 8 9 7 6
2023 15 13 5 5
2024 19 18 6 6
2025 21 20 7 8
total 127 120 49 45


GTR1 can look back about 100 years. Define a new screen:

Define {OutliersLT}
step0: Ordinary or Foreign stock
step1: [Mkt Days Since Security Opened] >= 300
step2: [Average dollar-volume over 63 days] > 0
step3: [Average dollar-volume over 63 days] Top 50%
step4: [Actual closing Price; lag=2 days] > 1
step5: [[Closing g-price; lag=1 days]/[Closing g-price; lag=2 days]] > 3

http://gtr1.net/2013/?~OutliersLT:h1::styp.a:et10!...

Number of 3x outliers (step5) by year for {OutliersLT}, only listing years with at least one outlier:

         step4       step5
Year adv50p_Pgt1 Outliers
1937 346 1
1938 367 1
1988 2806 1
1991 2694 1
1996 3203 1
1998 3414 13
1999 3271 21
2000 3079 6
2003 2570 2
2004 2446 1
2005 2385 1
2007 2315 2
2009 2196 5
2010 2091 1
2011 2022 1
2014 1908 3
2015 1944 1
2016 1954 4
2017 1921 4
2018 1899 4
2019 1908 7
2020 1910 22
2021 1947 23
2022 2123 8
2023 2253 16
2024 2214 41
2025 2151 46


There are only a few outliers, but the number is increasing. In 2024, there were 41 outliers out of about 560,000 stock-days (252*2214).


=== screen definitions ===

GTR1 {OutlierScreen} add the following steps to any screen:
aprc(2) > 1
ratio(gprc(1),gprc(2)) > 3
ratio(gprc(1),gprc(2)) > 6
ratio(gprc(1),gprc(2)) > 11
ratio(gprc(1),gprc(2)) > 21
ratio(gprc(1),gprc(2)) > 51

P123 {OutlierScreen} add the following steps to any screen:
Ret%Chg(1) > param0
Close(1) > 1
where param0 = 200, 500, 1000, 2000, or 5000.
Print the post


Author: lizgdal 🐝  😊 😞
Number: of 75974 
Subject: Re: Portfolio123 Testing 2026
Date: 03/08/26 11:38 AM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 6
*** 5. Replicate indexes: RSP, EWRS, QQQE ***

There is good agreement between GTR1 and P123 for these screens, with the CAGRs close, and CorMER near 1.

  Screen   GTR1   P123   diff   CorMER
SP500ew 12.0% 12.0% 0.0% 0.64
SP1500ew 11.3% 11.4% 0.2% 0.99
RS2000ew 9.0% 9.5% 0.5% 1.00
NasBig100 13.9% 12.3% -1.6% 0.94


(RSP is used as the benchmark when calculating CorMER, and this lowers CorMER for SP500ew.)

=== screen definitions ===

P123 {SP500ew}
Universe(SP500)
Rebalance every 13 weeks, 0% Slippage, Equal weight

P123 {SP1500ew}
Universe(SP1500)
Rebalance every 13 weeks, 0% Slippage, Equal weight

P123 {RS2000ew}
Universe(ALLFUND)
!IsOTC & !IsUnlisted & !IsMLP & !IsADR
SecurityType = Common
MktCap >= 0
SetVar(@nMktCap,FOrder("MktCap", #Previous, #DESC, false, #ExclNA))
@nMktCap <= 3000 // return the biggest stocks
@nMktCap > 1000
13 week rebalance, 0% Slippage, Equal weight

P123 {NasBig100}
Universe(ALLFUND)
ExchangeCode = 14 //NASDAQ
RBICS(REIT) = 0
FOrder("MktCap", #Previous) <= 100
13 week rebalance, 0% Slippage, Equal weight


=== links ===

https://gtr1.net/2013/?~gSP500ew:h63::sp500.a:et1
https://gtr1.net/2013/?~gRS2000ew:h63::styp.a:et10...
https://gtr1.net/2013/?~gSP1500ew:h63::sp1500.a:et...
https://gtr1.net/2013/?~gNasBig100:h63::styp.a:et1...
Print the post


Author: lizgdal 🐝  😊 😞
Number: of 75974 
Subject: Re: Portfolio123 Testing 2026
Date: 03/08/26 12:05 PM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 6
*** 6. Sector, ADR, IPO, Foreign screens ***

There is good agreement between GTR1 and P123 for most of these screens (similar CAGR and high CorMER). CAGR for these screens over the 10-year backtest:

Screen   GTR1   P123   diff   CorMER
Staples 5.5% 5.4% 0.0% 0.72
Foreign 9.8% 16.0% 6.2% 0.73
Utils 11.8% 12.4% 0.6% 0.93
IPO 5.8% 4.5% -1.4% 0.94
Tech 13.9% 16.1% 2.2% 0.98
Finance 9.8% 10.9% 1.2% 0.98
Health 6.1% 7.9% 1.8% 0.99
ADR 9.6% 9.8% 0.2% 0.99
REIT 5.0% 5.0% 0.0% 1.00


There is poor agreement for the Staples sector screen and the Foreign screen, with low CorMER and very low Jaccard Index:

  size of:    REIT  ADR  Finance  IPO  Health  Utils  Tech  Foreign  Staples
GTR1 162 203 599 108 323 87 440 376 98
P123 161 214 675 93 414 69 397 102 168

intersection 151 193 537 83 300 58 275 89 48
union 172 224 737 118 437 98 562 389 218
Jaccard 88% 86% 73% 70% 69% 59% 49% 23% 22%


The Foreign screen only passes about 100 stocks in P123, while there are about 350 styp.a=12 stocks in GTR1. The definitions are different, and so I generally include foreign stocks in both GTR1 and P123.

The correlation matrix shows how CorMER does in comparing screens:

CorMER:   gFinance  pFinance  gHealth  pHealth  gStaples  pStaples  gTech  pTech  gUtils  pUtils
gFinance
1.00 0.98 0.05 0.02 0.19 0.11 0.12 0.10 -0.08 -0.12
pFinance 0.98 1.00 0.10 0.06 0.16 0.12 0.20 0.18 -0.14 -0.18
gHealth 0.05 0.10 1.00 0.99 0.20 0.35 0.62 0.58 -0.11 -0.05
pHealth 0.02 0.06 0.99 1.00 0.20 0.35 0.62 0.57 -0.09 -0.04
gStaples 0.19 0.16 0.20 0.20 1.00 0.72 0.06 0.05 0.13 0.08
pStaples 0.11 0.12 0.35 0.35 0.72 1.00 0.32 0.28 0.07 0.06
gTech 0.12 0.20 0.62 0.62 0.06 0.32 1.00 0.98 -0.22 -0.19
pTech 0.10 0.18 0.58 0.57 0.05 0.28 0.98 1.00 -0.26 -0.23
gUtils -0.08 -0.14 -0.11 -0.09 0.13 0.07 -0.22 -0.26 1.00 0.93
pUtils -0.12 -0.18 -0.05 -0.04 0.08 0.06 -0.19 -0.23 0.93 1.00


=== screen definitions ===

P123 {Foreign} is {Base} with
!Universe(PRIMARYUSA)

P123 {IPO}
Universe(ALLFUND)
!IsMLP & !IsOTC & !IsUnlisted & !IsADR
SecurityType = Common
Close(0) >= 1
AvgDailyTot(63) >= 1000 * 1000
SalesQ > 0
Close(0) * Max (SharesFDQ, SharesQ) >= 50
Close(63) > 0
Close(300) = NA

P123 {ADR} is {Base} with
IsADR

P123 {Finance} is {Base} with
[OFF] RBICS(NONCYCLICAL)
[OFF] RBICS(TECH)
[OFF] RBICS(UTIL)
[OFF] RBICS(HEALTHCARE)
RBICS(FINANCIAL) //2 digit

P123 {REIT} is {Base} with
RBICS(REIT) = 1 //6 digit

=== links ===
https://gtr1.net/2013/?~gADR:h19::styp.a:et30!31:a...
https://gtr1.net/2013/?~gIPO:h19::styp.a:et10!11!1...
https://gtr1.net/2013/?~gForeign:h19::styp.a:et12:...
https://gtr1.net/2013/?~gREIT:h19::styp.a:et18!48:...
https://gtr1.net/2013/?~gFinance:h19::styp.a:et10!...
https://gtr1.net/2013/?~gHealth:h19::styp.a:et10!1...
https://gtr1.net/2013/?~gStaples:h19::styp.a:et10!...
https://gtr1.net/2013/?~gTech:h19::styp.a:et10!11!...
https://gtr1.net/2013/?~gUtils:h19::styp.a:et10!11...
Print the post


Author: lizgdal 🐝  😊 😞
Number: of 75974 
Subject: Re: Portfolio123 Testing 2026
Date: 03/09/26 12:35 PM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 5
*** 7. High Net Income Low PE screen ***

These are a series of extreme screens, run at depths of 10 and 100. The {NIPE} screen looks for high net income and very low PE, and can uncover survivorship bias. CAGR for these screens over the 10-year backtest:

    Screen      GTR1    P123   diff  CorMER  sdCG  nSD
Low10Volume -19.7% -16.3% 3.5% 0.67 3.2% 1
High10Volume -14.4% -10.9% 3.5% 0.77 5.3% 1
NIPE10 -8.3% -1.6% 6.7% 0.88 1.2% 6
Low10Price -13.5% -5.8% 7.7% 0.90 4.7% 2
High100Volume 4.5% 8.5% 4.0% 0.93 1.9% 2
Low100Volume 0.0% 5.2% 5.3% 0.95 1.1% 5
NIPE100 7.2% 8.7% 1.5% 0.98 1.0% 2
Low100Price -2.6% 2.2% 4.8% 0.99 1.2% 4


sdCG is the standard deviation of the 19 GTR1 daily start dates.
nSD is the number of sdCG that separate GTR1 and P123.

There is good general agreement, with similar CAGR and high CorMER. But all 8 screens show higher P123 CAGR.

The 10-deep volume screens have lower CorMER, highlighting a possible difference between GTR1 and P123. The high sdCG indicates the difference may be due to the backtest start date for these screens.


=== screen definitions ===

P123 {NIPE10}
Universe(ALLFUND)
!IsMLP & !IsOTC & !IsUnlisted & !IsADR
SecurityType = Common
NetIncBXorTTM >= 100
PEExclXorTTM > 0
FOrder("PEExclXorTTM", #Previous, #ASC) <= 10 // lowest PE

P123 {High100Volume} is {Base} with
FOrder("AvgDailyTot(10) / AvgDailyTot(63)", #Previous) <= 100

P123 {LowPrice10} is {Base} with
FOrder("Price", #Previous, #ASC) <= 10

=== links ===
https://gtr1.net/2013/?~gNIPE10:h19::styp.a:et10!1...
https://gtr1.net/2013/?~gHigh100Volume:h19::styp.a...
https://gtr1.net/2013/?~gLowPrice10:h19::styp.a:et...
Print the post


Author: lizgdal 🐝  😊 😞
Number: of 75974 
Subject: Re: Portfolio123 Testing 2026
Date: 03/11/26 7:06 PM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 2
*** 8. Compare CAGR for several screens ***

I chose 16 monthly screens with high GTR1 backtest results. CAGR for these screens over the 10-year backtest:

  Screen   GTR1   P123   diff   CorMER  sdCG  nSD
screen153 19.8% 17.1% -2.7% 0.72 2.4% 1
screen841 21.9% 24.9% 3.0% 0.74 3.7% 1
screen139 24.4% 18.5% -5.9% 0.77 2.5% 2
screen562 34.4% 26.1% -8.4% 0.80 2.0% 4
screen548 23.9% 22.7% -1.2% 0.81 2.3% 1
screen236 23.6% 17.6% -6.0% 0.83 1.5% 4
screen797 27.8% 26.2% -1.6% 0.86 2.3% 1
screen225 30.3% 35.0% 4.7% 0.88 2.1% 2
screen186 25.7% 19.3% -6.4% 0.89 3.7% 2
screen920 23.0% 26.7% 3.7% 0.89 3.0% 1
screen694 24.1% 26.1% 2.0% 0.92 3.6% 1
screen296 25.1% 29.1% 4.0% 0.94 3.4% 1
screen657 24.2% 21.8% -2.4% 0.94 0.6% 4
screen118 24.9% 23.9% -1.0% 0.94 2.5% 0
screen638 14.0% 13.8% -0.2% 0.96 1.5% 0
screen451 21.4% 20.3% -1.0% 0.97 1.6% 1

average 24.3% 23.1% -1.2% 0.87 2.4% 2


There is good agreement between GTR1 and P123 with similar CAGR and high CorMER. Some of the screens have lower CorMER, indicating possibly a field definition difference or a coding mistake.

These P123 Screen backtest results all use the same start date: Monday 20160104. Other start dates can be tested, but P123 Screen backtests only trade on Mondays, and so, for a 4-week rebalance, there are only 4 independent start dates (start dates in the same week Monday to Friday will give about the same CAGR in a P123 Screen backtest). Running the 4 backtests and averaging the results would probably bring the P123 results closer to GTR1.

=== screen definitions ===
This thread is not about any particular screen, and so I only list definitions for two screens as examples of the type I tested.

P123 {screen153} is {Base} with
SharesQ > 0
SharesPYQ > 0
SetVar(@nYld,FOrder("Yield + 100 - 100 * SharesQ / SharesPYQ", #Previous))
SetVar(@nMo,FOrder("Ret%Chg(252)", #Previous))
SetVar(@nSort,FOrder("@nYld + @nMo", #Previous, #Asc))
@nSort <= 10

P123 {screen296}
Universe(ALLFUND)
!IsMLP & !IsOTC & !IsUnlisted & !IsADR
SecurityType = Common
RBICS(REIT) = 0
SalesA > 0
Close(300) > 0
AvgDailyTot(63) > 0
FRank("AvgDailyTot(63)", #Previous) >= 30
FRank("SalesA", #Previous) >= 20
BarsSince(PeriodDateQ) <= 252
SalesQ > 0
TRSD1YD > 0
FOrder("Ret%Chg(220,19) / TRSD1YD", #Previous) <= 100
FOrder("AvgDailyTot(63)", #Previous) <= 10

=== links ===
https://gtr1.net/2013/?~gscreen153:h19::styp.a:et1...
https://gtr1.net/2013/?~screen296:h19::SalesY1:gt0...
Print the post


Author: lizgdal 🐝  😊 😞
Number: of 75974 
Subject: Re: Portfolio123 Testing 2026
Date: 03/11/26 7:11 PM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 8
*** 9. Thanks for all the fish ***

All right, that's the end of my posts in this too long thread. My overall impression is P123 is adept, P123 has an excellent GUI and extra features, and GTR1 is amazing. I prefer GTR1's backtest methodology, the coding quality is solid, and GTR1 runs magically fast. A 100-year backtest in a few seconds. Amazing. Even frozen in time, GTR1 is a useful resource. Comparing two quality backtesters leads to higher confidence in both. Timing studies benefit from 100 year backtests. And long backtests help counter "this time is different".

A summary of all the backtests in this thread (10-year backtest CAGR) (LC are large-cap screens):

  type     Screen      GTR1     P123    diff   CorMER  depth  sdCG    nSD   MCap
univ RSP 12.01% 11.98% -0.03% 0.64 504 0.11% 0.24 LC
univ UnivZero 14.84% 29.08% 14.24% 0.69 5306
univ UnivOne 10.43% 10.46% 0.03% 1.00 3867
univ SP1500ew 11.28% 11.43% 0.15% 0.99 1499 0.22% 0.69
univ RS2000ew 8.99% 9.50% 0.51% 1.00 2000 0.34% 1.51
univ NasBig100 13.88% 12.29% -1.59% 0.94 100 0.27% 5.83 LC
univ Base 10.31% 11.12% 0.82% 1.00 2673 0.19% 4.42
univ BaseAlt 10.17% 10.83% 0.66% 1.00 2775 0.15% 4.28
univ Foreign 9.80% 15.97% 6.17% 0.73 285 0.17% 35.44
univ ADR 9.65% 9.82% 0.17% 0.99 192 0.26% 0.66
univ IPO 5.84% 4.45% -1.39% 0.94 106 2.44% 0.57
sector REIT 5.02% 4.97% -0.05% 1.00 182 0.21% 0.23
sector Finance 9.79% 10.94% 1.15% 0.98 557 0.17% 6.64
sector Health 6.13% 7.89% 1.76% 0.99 278 0.23% 7.54
sector Staples 5.47% 5.43% -0.03% 0.72 91 0.33% 0.10
sector Tech 13.95% 16.13% 2.18% 0.98 371 0.19% 11.72
sector Utils 11.78% 12.40% 0.63% 0.93 83 0.20% 3.07
stress Low10Prc -13.50% -5.80% 7.70% 0.90 10 4.68% 1.64
stress Low100Prc -2.62% 2.17% 4.79% 0.99 100 1.21% 3.97
stress Low10Vol -19.73% -16.27% 3.47% 0.67 10 3.21% 1.08
stress Low100Vol -0.04% 5.22% 5.25% 0.95 100 1.05% 5.00
stress High10Vol -14.42% -10.89% 3.53% 0.77 10 5.34% 0.66
stress High100Vol 4.50% 8.51% 4.01% 0.93 100 1.89% 2.12
stress NIPE10 -8.29% -1.60% 6.69% 0.88 10 1.21% 5.52
stress NIPE100 7.15% 8.66% 1.50% 0.98 100 0.99% 1.52
screen screen451 21.35% 20.33% -1.03% 0.97 5 1.64% 0.63 LC
screen screen118 24.92% 23.93% -0.99% 0.94 5 2.52% 0.39 LC
screen screen638 14.05% 13.83% -0.22% 0.96 10 1.54% 0.14 LC
screen screen694 24.06% 26.05% 1.99% 0.92 5 3.56% 0.56 LC
screen screen920 23.02% 26.73% 3.71% 0.89 5 2.99% 1.24 LC
screen screen841 21.89% 24.94% 3.04% 0.74 10 3.69% 0.82
screen screen153 19.80% 17.12% -2.68% 0.72 10 2.37% 1.13
screenz screen139 24.45% 18.53% -5.92% 0.77 10 2.50% 2.37
screenz screen548 23.95% 22.72% -1.23% 0.81 5 2.27% 0.54 LC
screenz screen657 24.20% 21.78% -2.42% 0.94 10 0.56% 4.30 LC
screenz screen797 27.84% 26.21% -1.63% 0.86 10 2.33% 0.70 LC
screenz screen562 34.44% 26.08% -8.36% 0.80 10 1.96% 4.26
screenz screen225 30.27% 35.00% 4.73% 0.88 10 2.07% 2.28
screenz screen186 25.69% 19.26% -6.43% 0.89 10 3.69% 1.74
screenz screen236 23.63% 17.63% -6.00% 0.83 10 1.49% 4.04
screenz screen296 25.14% 29.10% 3.96% 0.94 10 3.39% 1.17

avg average 12.47% 13.51% 1.05% 0.89 523 1.63% 3.35

Print the post


Author: musselmant   😊 😞
Number: of 75974 
Subject: Re: Portfolio123 Testing 2026
Date: 03/11/26 7:57 PM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 0
Could you post the link to the gtr version of screen 2 to play with.
Print the post


Author: RAMc   😊 😞
Number: of 75974 
Subject: Re: Portfolio123 Testing 2026
Date: 03/12/26 12:16 AM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 12
Lizgdal, “123 has an excellent GUI and extra features, and GTR1 is amazing. I prefer GTR1's backtest methodology, the coding quality is solid, and GTR1 runs magically fast. . . 123 has an excellent GUI and extra features, and GTR1 is amazing. I prefer GTR1's backtest methodology, the coding quality is solid, and GTR1 runs magically fast.”

I agree with your conclusions about GTR1’s backtest methodology being superior.
But I’ve been using both GTR1 and P123 for over 18 years and have equal confidence in both. To me the important differences are GTR1 backtests have the advantage of daily start data and detailed reports on variants giving a quick view on how returns fall off with depth.
P123’s basic Screener at $25/mo only has 5 Y of backtests and no access to ranking systems. GTR1 wins.

P123’s Backtest at $84/mo has 10 Y backtests (research suggests 10 Y or greater is best). Ranking Systems which are better than Screens. GTR1 is capable of building ranking systems but P123’s is user friendly. Many standard and easy to define custom universes (GTR1 and P123 create universes by excluding equities by features. My opinion GTR1 and P123 at this level each have their advantages (GTR1 is free and daily starts vs P123 ease of use) and I would want access to both.

P123 Portfolio at $125/mo has 15 Y of backtests. Adds modifying models, modifying Simulated Strategies, Short Strategies, Headging and AI Factor for predictive systems (with add on fees for CPU/GPU training and monthly predictions).

GTR1 still had the daily start and earlier historical data advantage but P123 has pulled ahead in every other aera. Robbie has outstanding capibilities but it is hard for one individual in his spare team to beat a team of full time developers working on the system for over 20 years gradually increasing their employee count to a current level of 8 employees.

P123’s Ultimate at $200 /mo has 20 Y of backtests, Optimizer functions, Rolling tests, Regression Functions and more AI Factor and Data access.

In my view neither GTR1 nor P123 are an easy way to outperform the market. The individuals that I have observed achieving this have typically had either a STEM or finance background and spent a significant amount of time achieving their expertise. Both the MI board and P123 have had a large number of short-term users that were unable to profit from screens and drifted away.
Print the post


Author: rayvt   😊 😞
Number: of 75974 
Subject: Re: Portfolio123 Testing 2026
Date: 03/12/26 9:23 AM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 9
P123’s Ultimate at $200 /mo has 20 Y of backtests,

Wow.

And it's not 20 years of backtest, I believe. It's back to 1999.

I was grandfathered in from my stockscreener123 account at $20/mo, when they folded SS123 into P123. I could backtest all the way back to 1999.

Cancelled it a few years later because it wasn't worth $20/mo to me.
They were pushing to get you to sign up for blackbox screens that other subscribers had invented. At an additional cost.

Their database seemed to be really really good, totally free of survivorship bias. But $2400/year is a lot.
Print the post


Author: Taz2   😊 😞
Number: of 75974 
Subject: Re: Portfolio123 Testing 2026
Date: 03/12/26 10:40 AM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 3
RAMc said:

'P123’s basic Screener at $25/mo only has 5 Y of backtests and no access to ranking systems. GTR1 wins.'

At the base level P123 provides access to its 64 predefined ranking systems, but no ability to alter them.


Taz
Print the post


Author: lizgdal 🐝  😊 😞
Number: of 75974 
Subject: Re: Portfolio123 Testing 2026
Date: 03/12/26 12:02 PM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 9
musselmant wrote: Could you post the link to the gtr version of screen 2 to play with.

I will start separate threads on some of the screens (maybe about one per month). Several of the screens are based on ideas posted here. So, maybe nothing new, but worth a post.
Print the post


Author: RAMc   😊 😞
Number: of 75974 
Subject: Re: Portfolio123 Testing 2026
Date: 03/12/26 1:45 PM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 3
Rayvt; “Their database seemed to be really really good, totally free of survivorship bias. But $2400/year is a lot.”
Ray your obviously an astute long-term investor. Seems like I remember back near the turn of the century you posted about spending several hours a day on the subject. Retired early around 2006 mostly from investments.
In all likelihood your portfolio has increased significantly in the last 20 years as by my reckoning you will always live below your means. My point is that perhaps you may just be a little penny wise and pound foolish.
With even a 500K investment if the ultimate version could increase your investment income by only 0.5% it would pay for itself. I wouldn’t make a bet that most people would come out ahead using p123 but I’m pretty convinced you would.

But then again perhaps I’m just an impulsive risk taker.
Print the post


Author: rayvt   😊 😞
Number: of 75974 
Subject: Re: Portfolio123 Testing 2026
Date: 03/12/26 3:36 PM
Post Reply | Report Post | Recommend It!
No. of Recommendations: 5
With even a 500K investment if the ultimate version could increase your investment income by only 0.5% it would pay for itself.

That "if" is doing a lot of heavy lifting.

The value I got out of StockScreener123 and P123 when they folded SS123 into P123 was the backtesting.

After you've backtested enough you hit the spot of diminishing returns. You've identified screens that don't work so well and screens that work well. What do you need after that? Nothing.

(Just found this note from an old post I saved:
"https://boards.fool.com/i-emulated-this-screen-usi...

I emulated this screen using Portfolio123. From May 2020 to this month it performed superbly. For the 5 years prior to May 2020, it had a cumulative return of 0%.

Taz "
)

I ran a backtest on SS123 on a screen that worked great in the late 90's tech boom. Turned out that it only worked good in that tech boom. Outside of that one period it was a total loser. Good to know.

One downside of backtesters that have hundreds of possible rules is the risk of tweaking the knobs until you get a result that matches the data it was trained on but is the equivalent of shooting at the side of a barn and then drawing targets. That is one thing I saw at P123 with people selling subscriptions to blackbox screens.

What little backtesting I do now can be done by GTR1.


You don't need to run dozens of screens that use handfuls of criteria.
One or 2 or 3 broad market indexes, 3-5 actively managed monthly/quarterly screens that have only 4 or so criteria.

Frankly, the last few years it has been almost impossible to beat the S&P 500.

A quote:
"Everything you need to know about successful trading and investing is on the web, gratis. There are no secrets. The rules of the game are known for each of the major market approaches – momentum, value and statistical arbitrage.
...
The main edge you need is called discipline. There are multiple market approaches that have been proven to work (momentum and valuation driven)..."



Right now I have only one paid investment subscription. Called "CEFs: Income + Opportunity" $320/yr I only for pay that because he does all the legwork sussing out the data, so I don't have to do it myself. The dividends are killing me at tax time, though, so I may quit sooner or later.
Print the post


Post New
Unthreaded | Threaded | Whole Thread (20) |


Announcements
US Policy FAQ
Contact Shrewd'm
Contact the developer of these message boards.

Best Of Politics | Best Of | Favourites & Replies | All Boards | Followed Shrewds