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...