No. of Recommendations: 15
In an attempt to learn GTR1 backtester, I have been playing a round with
a version of YldEarnYear that uses the SIPRO universe available in the
GTR1 backtester. I thought I might share the screen here in case someone
else is also interested:

Create [pri]: [daily SI-adjusted Price; share_lag=0 days; quote_lag=2 days]
Create [dy]: [[SI Dividend 12m; lag=1 days]/[pri]]
Create [ey]: [[SI EPS 12m; lag=1 days]/[pri]]
Create [dolvol]: [[Actual Average daily Vol 63d; lag=1 days]*[Actual
closing Price; share_lag=1 days; quote_lag=1 days]]
step0: [pri] > 0
step1: [SI Dividend 12m; lag=1 days] > 0
step2: [dolvol] > 500000
step3: [[dy]*[ey]] Top 2.5%
step4: [[Simple Moving Avg over 10 days; lag=5 days]/[Simple Moving Avg
over 10 days; lag=250 days]] Top param0; Long, Cash When Fewer
Holding period = 20 mkt days; Fully rebalance every 1 periods

http://gtr1.backtest.org/2011/?s19970902::pri:gt0:dps12m.s:g...

English translation:

Step 0: keeps only stocks whose prices are positive.
        Surprisingly large number of stocks in SI database (on average)
        do not pass this test.
Step 1: keeps only stocks that have positive dividend per share in the
        most recent 12-month period
Step 2: keeps only stocks that have average daily dollar volume greater
        than $500 000
Step 3: keeps only stocks whose dividendyield * earningsyield is in the
        top 2.5%.
        The "top 2.5%" is copied from the YldEarnYear+ screen,
        introduced by rgearyiii in post 223044. The application of
        dividendyield * earningsyield instead of dividendyield/PE was
        recommended by mungofitch in post 233213.
Step 4: keeps the top N stocks based on total return one year. 
        In post 233603, mungofitch recommended replacing the start and
        end prices from the standard "total return one year" with
        average prices in a short window at both ends. Thus, 
        “ratio(sma(5,10),sma(250,10))” rather than “trp(10,250)”

Results 19970902 - 20130221:

Top 10:
                Avg		Min		Max		SD
CAGR:		23.68749	21.44209	25.22231	1.018383
TR:		2551.366	1885.571	3081.83		324.7257
GSD(20):	23.42388	22.06922	24.41732	0.590944
DD(20):		14.11683	12.2295		15.23777	0.790606
MDD:		-61.3755	-67.8336	-57.3486	2.729219
UI(20):		12.29897	10.18248	15.21874	1.344861
Sharpe(20):	1.002443	0.912618	1.063362	0.039502
Beta(20):	0.788164	0.740639	0.83628		0.021357
TI(20):		26.94475	23.93127	28.5264		1.274667
AT:		4.682557	4.573779	4.830008	0.077697

It seems to work pretty well also with larger daily dollar volume
cutoffs. However, the results are nowhere near as good as YldEarnYear+,
which should be a fair benchmark for this screen because both are
essentially YEY on a larger (approximately equally large) stock
universe. Would anyone have any comments on why the SIPRO version is no
match to the VL+ version? Any suggestions on how to improve the screen
so that the results would better match the YEY+ results?
Print the post Back To Top
No. of Recommendations: 5
Any suggestions on how to improve the screen so that the results would better match the YEY+ results?

A few things you might try

I'd try replacing the "top 2.5%" with "top N", and try various values of N.
Or, if you stick with top N%, try values other than 2.5. I found good luck with 3% with YLDEARNYEARPLUS.

Final sort using RRS is often quite nice.
I usually find a period a little over a year is better, even up to 300-340 days.
Or, similarly, just try a bigger lag on your "old" sma(250,10)

If you're going to use two SMAs, the most recent one probably needs a fair bit more lag.
You'd be amazed how old the momentum sort recent date can be and still work.

GTR1 has a cool facility for trying lots of different values for a given
parameter at the same time, have you tried that?
It leads rapidly to overtuning if you push it, but for trying to find
the basic range of plausible values it's great.

Jim
Print the post Back To Top
No. of Recommendations: 0
Create [pri]: [daily SI-adjusted Price; share_lag=0 days; quote_lag=2 days]

It's been a while since I did anything with SI, so I can't say this is necessarily true of that data source...

... but on Yahoo, the adjusted price for the current day is always the same as the closing price, and prior days' adjusted price are relative to that.

Thus, the (Yahoo) adjusted price always contains information about the future. It's inherently a crystal ball and should never be used in backtests except via calculations that eliminate the crystal-ball aspect (e.g. checking for dividends/splits that occurred during a certain period, at or after the end of that period).
Print the post Back To Top
No. of Recommendations: 2
Would anyone have any comments on why the SIPRO version is no match to the VL+ version? Any suggestions on how to improve the screen so that the results would better match the YEY+ results?

I'm not sure what the VL+ results are, but the 23% CAGR and 23% GSD for the period shown are very close to the standard VL results:

http://gtr1.backtest.org/2011/?s19970902::tim.v:am6:cpe:gt0:...

For the SI universe, I understood that different fields were to be used for dividends and earnings.

Dividend - you used dps12m.s; I've seen dpsind.s used instead in other screens. I think the second one is "indicated yield" rather than the actual yield over the last 12 months. Although I'm not sure which one matches the "Yield" field in the SIPro data that can be downloaded weekly.

Earnings - you used eps12m.s; I've seen epscon12m.s used instead in other screens (the second is for "continuing operations", which removes special stuff).

If I do those replacements in your screen, and play with the percentage cutoff, it seems 5% is reasonable:

http://gtr1.backtest.org/2011/?pri:gt0:dpsind.s:gt0:dolvol:g...

with CAGR at 31% and GSD at 25%. I'm sure other things could be played with to achieve better.

fin
Print the post Back To Top
No. of Recommendations: 0
If I am not mistaken, they use a different universe of stocks. You get much more small cap stocks in the si version. Much more stocks in total.
Print the post Back To Top
No. of Recommendations: 6
Thank you for the suggestions mungofitch. One comment regarding this:

GTR1 has a cool facility for trying lots of different values for a
given parameter at the same time, have you tried that?

I assume you mean the "Shrink" feature? I suppose everyone knows this
already, but just in case there is someone else also learning GTR1:
I found a post 204352 from MainiacJoe which seems to describe the GTR1
"Shrink" feature. After reading that post I learned that you can also
test different values for more than one parameter in the same backtest.
In short, you can do this by:
(1) replacing the screen values of interest with param0, param1, ... up
    to paramN
(2) select the "Shrink" check-box in the top right corner of the GTR1 UI
(3) hit "Run backtest"
(4) insert the values for param0, param1, ... paramN to the 
    text-box that automatically opens when "Shrink" is selected 
    after "Run backtest" is hit.
(5) hit "Run backtest" again

So, for example, running the screen
http://gtr1.backtest.org/2011/?s::pri:gt0:dpsind.s:gt0:dolvo...
with "Shrink" selected, and then copy-pasting the below list of value
pairs to the text-box will test different values of both "top N" and the
"recent lag":
  100 10
  120 10
  140 10
  100 20
  120 20
  140 20

Would anyone know how to test a percentage value with "Shrink" feature
in GTR1? 

warrl wrote:
Create [pri]: [daily SI-adjusted Price; share_lag=0 days; quote_lag=2 days]
It's been a while since I did anything with SI, so I can't say this is
necessarily true of that data source...
... but on Yahoo, the adjusted price for the current day is always the
same as the closing price, and prior days' adjusted price are relative
to that.

If I got it right, the word 'adjusted' in the description of sprc field 
function refers to GTR1 internal price adjustment, not the adjustment 
performed by any external data provider. I believe the price values 
returned by sprc are simply SIPRO published weekly close prices,
adjusted as described by rgearyiii in posts 161591 and 155831. I may be
absolutely wrong here so feel free to correct me if I have understood
something incorrectly.

finfusion, thanks for the dpsind.s and epscon12m.s tips. I ended up
using dps12m.s and eps12m.s simply based on description of field files I
got after running a backtest with list:* in "Misc. Options"-field. I
found out that this document:
http://www.aaii.com/stockinvestor/programinfo/proflddefs.pdf...
also provides some clarification to the SI-fields in case the name
itself is not too descriptive.

mark19601962 wrote:
If I am not mistaken, they use a different universe of stocks. You
get much more small cap stocks in the si version. Much more stocks in
total.

I run a couple of simple tests to help compare the GTR1 VL+ and SI
universes:

VL+: http://gtr1.backtest.org/2011/?s19970829sc::pri:gt0:dolvol:g...
SI: http://gtr1.backtest.org/2011/?s19970829sc::pri:gt0:dolvol:g...

I used the "Shrink" and "Count" modes and the below list of Daily$Vol
values to replace the param0 in the above screens with different
cutoffs. I ended up with the following table that compares the VL+ and
SI universes:

start=19970829 end=20130222
Min Daily$Vol	     avg # stocks (SI)	          avg # stocks (VL+)
10,000			5946.1				4856.99
50,000			5216.46				4343.43
100,000			4791.86				4033.6
200,000			4332.73				3694.27
300,000			4047.95				3479.78
400,000			3834.28				3315.39
500,000			3665.69				3184.1
1,000,000		3128.38				2757.08
1,500,000		2815.66				2502.22
2,000,000		2593.2				2315.87
2,500,000		2417.95				2167.3
5,000,000		1876.32				1702.68
10,000,000		1373.19				1256.87

So measured with daily dollar volume, it seems that the GTR1 SI universe
is indeed somewhat larger than the VL+ universe. Theoretically, if SI
published the exact same fields that are used in the YEY+, we should
therefore be able to get better results with "YEY SI" than with "YEY+".
Print the post Back To Top
No. of Recommendations: 0
with "Shrink" selected...
You don't have to click the shrink box to test different parameters. The shrink feature means if your testing for 10 stocks and only 5 pass the screen in a given month, having shrink checked means the cash would be spread around just five stocks. Without having shrink checked, the size of each individual position stays constant no matter how many stocks pass, even if the # of stocks passing is less than the number specified in the final sort.
Print the post Back To Top
No. of Recommendations: 0
You don't have to click the shrink box to test different parameters

Thanks for correcting that. Not sure what made me think it needs to be
selected.
Print the post Back To Top
Advertisement