You can ignore authors, whether they are producing too much noise or being needlessly provocative, by clicking the yellow unhappy when reading their post.
- Manlobbi
Personal Finance Topics / Macroeconomic Trends and Risks
No. of Recommendations: 7
No. of Recommendations: 2
Same sharpe and beta as Nasdaq100 and S&P500 but 8% better CAGR than S&P and 4.7% better than Nasdaq100
Do I read it right, CAGR of 22%?
If so, hard to believe.
No. of Recommendations: 3
Same sharpe and beta as Nasdaq100 and S&P500 but 8% better CAGR than S&P and 4.7% better than Nasdaq100
Do I read it right, CAGR of 22%?
If so, hard to believe.Looking at GTR1 and using QQQ, I get CAGR=20% so I would think 22% is quite believable.
http://gtr1.net/2013/?s20081208f0.10000::QQQHaven't we all achieved 20% since 2008?? (Sadly not me!! I thought I was smarter than QQQ)
I think the backtest is limited to a start date of December 2012 due to the availability of some of the fields.
Aussi
No. of Recommendations: 10
That second last step is the ratio of the actual stock price to the total return multiplier over a certain period?
Sounds a bit overcooked, no?
Nominal stock price has no economic meaning within rounding error, and dividing by a total return doesn't seem to make it more sensible.
Jim
No. of Recommendations: 4
Nominal stock price has no economic meaning but I think it has a psychological meaning.
I think it would be much easier for most people to buy a stock that has risen from $5 to $10 and on its way to $50, than to buy a stock that has gone from $500 to $1,000 on its way to $5,000.
Of course this does not apply to mechanical investing.
Aussi
No. of Recommendations: 4
than to buy a stock that has gone from $500 to $1,000 on its way to $5,000.
You are talking about COSTCO, aren't you?
LOL
(I actually bought COST at $480 and $525. Now $1036.)
I remember having a lunch table discussion at work shortly after GOOGLE came out. Everybody except me said it was crazy to pay $100 for a stock, the only rational price to pay for a stock was $30-$50. I shrugged and said, "So? Only buy one share then."
That $100 share is now worth $6500.
No. of Recommendations: 2
When google came out, I said, the price sales ratio is 30. I won't touch it. What a mistake.
No. of Recommendations: 8
price has no economic meaning within rounding error
If price where a pure finance number I would agree that that’s the way it should be.
But running some performance evaluations over the last 10 years shows that the price of a stock does actually say something about it’s history and a can be used as a predictor. This doesn’t work at all for the large closely monitored SP500 type stocks.
But as illogically as it seems it does work for the mid and small caps and even for the NAS 100. A backtest of the upper 10% of NAS 100 by price alone had a return of 17.6% the lower 10% a return of 6%.
For the lower 2000 out of the top 3000 market cap the top 10% have a 3% higher return and the bottom 10% a -13% return!
The above is based on annualized returns with a 4 week trading cycle and no friction.
No. of Recommendations: 12
No. of Recommendations: 13
quantifiededges says:
pairing two ETFs with a once-a-year rebalance, has delivered a remarkable 18% compound annual growth rate (CAGR) since 2012, with a maximum open drawdown of -28%. An anti-beta ETF (BTAL) acting as a hedge, and a 3x leveraged Nasdaq fund, specifically TQQQ, which tracks the Nasdaq-100 Index with triple leverage. A once-a-year rebalance on the first trading day of January to restore the portfolio’s target weights. That’s it—just five minutes of work annually.
67% BTAL – long position. Market neutral, short beta exposure.
33% TQQQ – long position, 3x exposure to Nasdaq.
The result does not differ that much if you re-balance quarterly or annually. The annual return is 18%, and the max drawdown is 28% per post, from late 2011 forward.
You might want to swap TQQQ with QLD (2x leverage to Nasdaq 100) it notes.
Instead of a percent of each, I tested simply alternating between SPY and TQQQ by the best 200 day return from the latter's start date 19930129, with the usual BCC for timing used in many tests her. I also tested with QLD instead of treble leverage, and this was superior.
strategyTQQQ Nasdaq100 SPY strategyQLD
cagr 18.97 11% 11.3% 18.89
gsd 38.95 27.8 17.76 27.93
mdd -69.9 -80.79 -60.29 -51.7
shrp .64 .45 .58 .74
beta 1.29 1.3 1.0 1.0
2024 58.2 6.6 13.0 42.8
2008-27.5 -43.2 -40.9 -27.5
https://gtr1.net/2013/?s19930129h21i126::sp500.a:n...https://gtr1.net/2013/?s19930129h21::nas100.a:nenu...http://gtr1.net/2013/?h21::gprc%281%29gt0:tr%281,2...http://gtr1.net/2013/?h21::gprc%281%29gt0:tr%281,2...
No. of Recommendations: 3
An anti-beta ETF (BTAL) acting as a hedge, and a 3x leveraged Nasdaq fund, specifically TQQQ,Interesting.
Playing with this and a few variations, it looks like the "real" CAGR is more like 17% than 19%. Annual, semiannual, and quarterly rebalance were essentially the same up until Jan 2022. By the luck of the draw, the 2022 rebalance was lucky for the rest of the 2022 bear market. That is kinda wierd seeing what happened to TQQQ in 2022, down -79%. Ugh.
This confirms something I noticed a while ago. TQQQ seems like an arguably reasonable investment if you can apply some decent timing. Volatile as all get out!
I guess you have to ask yourself: do you feel lucky?
Link:
https://testfol.io/?s=jVb1sNKubQC
No. of Recommendations: 1
Hi,
"best 200 day return from the latter's start date 19930129"
Can you please explain what this means?
-Paul
No. of Recommendations: 2
Sorry gtr1 shorthand is hard for me to understand.
This screen is long when bcc is > 0 ?
200 day return, own the stronger of the SPY and 2xQQQ (QLD)?
How often does it switch or analyze the 200 day MA to determine which to own?
Thanks!
No. of Recommendations: 6
This screen is long when bcc is > 0 ?
BCC is Bear Catchers Combined. A timing signal using days from a new high, ratio of new high to new lows and the slope of a moving average. GTR1 for Dummies has extensive discussion on how to get BCC.
200 day return, own the stronger of the SPY and 2xQQQ (QLD)?
How often does it switch or analyze the 200 day MA to determine which to own? The link provided was checking every 21 days. The results average every start day for 21 days. You can change the frequency from 1 day to 253 days.
Note the combination of two different tickers can mask what is really happening. SPY starts in 1993. TQQQ starts in 2010. So for the first 17 years, the model is only picking SPY. You can control this by specifying the start date which is in the lower part of the form.
Aussi
No. of Recommendations: 1
Hi
If MDD is around around 60%, what is the use of bcc?
Regards
Paul
No. of Recommendations: 3
quantifiededges says:
pairing two ETFs with a once-a-year rebalance, has delivered a remarkable 18% compound annual growth rate (CAGR) since 2012, with a maximum open drawdown of -28%.
Do you have a link to that?
No. of Recommendations: 7
No. of Recommendations: 9
Here's a different view of the Portfolio Visualizer comparison - 10 years only. (Don't have an account.) Last 10 years, the 3x version has done better (for the obvious reason.) This model is certainly seductive.
Performance Summary
Portfolio performance statistics
Metric 2ASSET 2ASSET-QLD Vanguard 500 Index Investor
Start Balance $10,000 $10,000 $10,000
End Balance $54,315 $34,006 $31,720
CAGR 19.88% 14.01% 13.17%
Standard Dev 16.61% 10.84% 15.47%
Best Year 55.31% 28.73% 31.33%
Worst Year -12.38% -6.25% -18.23%
Maximum Drawdn -15.72% -12.39% -23.95%
Sharpe Ratio 1.06 1.09 0.75
Sortino Ratio 1.88 1.87 1.15
Benchmark Corr 0.64 0.48 1.00
Can someone post how to specify "hold 67% of this asset and 33% of that asset" on GTR1? The historical reference information is... difficult... to get at these days. I'd like to test it there with BCC but the first 2 links in musselmant's post show up blank for me.
FC
No. of Recommendations: 7
Here's a different view of the Portfolio Visualizer comparison - 10 years only.
Portfolio Visualizer being limited to 10 years is a big problem but is good as a "sanity" cross reference.
Did you look at the testfolio link I posted? When I first learned of testfolio I did several cross-checks with PV and found they agreed, so I feel confident in it.
Also, as I mentioned, the annual rebalance backtest gives an artificially high CAGR because of the fortuitous interaction with the 2022 mini-crash. To get a more realistic number you need to look at semiannual or quarterly.
Or, make 12 annual rebalance runs beginning with each month, then take the average. When you plot the value curves on one chart, there is a startling divergence around 2022, looks like an open shark's mouth, some went up and some went down. Other than that, all 12 curves track tightly.
(I did all this with Excel 2003.)
The historical reference information is... difficult... to get at these days.
Yes. But with a bit of cleverness you _can_ get it. Of course, what you need is the "adjusted close" prices, which includes dividends.
-------------
The BIG problems is the inception dates of BTAL(9/2011) and TQQQ (2/2010). That period doesn't include things like the bear markets of 2001 & 2008.
I have a feeling that TQQQ would get absolutely crushed in a bear.
The 2022 downturn, S&P500 lost -20%, TQQQ lost -80%, QQQ lost -34%.
Jan 2001 to Oct 2002, SPY lost -31% and QQQ lost -53%.
And the issue right now is that everybody thinks a bear market is overdue. ;-(
I played around a little bit trying to find a timing method for TQQQ and didn't find one that worked good enough.
No. of Recommendations: 2
My concern with this one - is the possible hidden risk of "implicit timing" in the calendar switch.
2 of the 3 sizeable bears in post 2009 era ended in Dec - ie 2018 and 2022 - thus significantly aiding the rebalance.
Similarly 2 great bulls ended early ie Feb 2020 ( COVID) and Jan 2022 ( Rate fear) - allowing a booking of TQQQ profits.
A much more robust view would be from GTR1 - which tests impact of Starts - but here it should be testing by moving the rebalance dates by 1 Qtrs say
ie Jan 1st, April 1st, July 1st, Oct 1st - and see if it holds.
Best
AC
No. of Recommendations: 4
Can someone post how to specify "hold 67% of this asset and 33% of that asset" on GTR1?There are several options available after a gtr1 'Run Backtest':
Command successful!
Skip to results
Save to URL
Save to URL (Compressed)
Download report
Add variant 0 to new blend
Add variant 0 to new universe
To start a blend, click 'Add variant 0 to new blend'.
For example, blend_Horse_Fried
https://gtr1.net/2013/blend.cgi?!!QlpoMTFBWSZTWW0h...
No. of Recommendations: 7
'QLD' Pricing Starts 20060621. The backtest can be extended using gtr1 indexes S5T and N1TL2.
Screen CAGR GSD MDD Sharpe AT From To
strategyQLD_20250522_musselmant 24 36 -52 0.82 1.9 20070621 20250522
switch_S5T_N1TL2 22 37 -51 0.78 2.1 20070621 20250522
S5T 10 19 -55 0.58 0.0 20070621 20250522
N1TL2 22 51 -83 0.68 0.0 20070621 20250522
Screen CAGR GSD MDD Sharpe AT From To
switch_S5T_N1TL2 19 39 -70 0.56 2.2 19731214 20250522
S5T 11 18 -55 0.49 0.0 19731214 20250522
N1TL2 16 59 -99 0.48 0.0 19731214 20250522
https://gtr1.net/2013/?~strategyQLD_20250522_musse...https://gtr1.net/2013/?~switch_S5T_N1TL2:h21::gprc...
No. of Recommendations: 3
The backtest can be extended using gtr1 indexes
I have found this feature of GTR1 very helpful, particularly since it has lost the ability to deal with Yahoo tickers. But I don't quite understand how the bear-catchers can be applied so far back into the past. DBE and SMA are obviously no problem. But does anyone know how Nasdaq NHNL works prior to the existence of the Nasdaq exchange?
Baltassar
No. of Recommendations: 6
Baltassar:But does anyone know how Nasdaq NHNL works prior to the existence of the Nasdaq exchange?
A very meaningful question for all those putting their trust into NHNL & BCC. Robbie has done amazing work on GTR1 and I’ll admit I’ve used BCC but I wouldn’t put much faith on a synthetic recreation of the historical results of what a NHNL signal based on NASDAQ stocks would look like before 2000. The NASDAQ which didn’t exist before 1971 and initially was just an automated quotation system with no trading. Until 1996 prices were quoted in 1/8th dollar increments.
But only using the BCC from 2000 where there is in my view a little more probability that it’s historical performance might indicate the future predictions will add value.
2000 till present helped with the 2008:
BCC CAGR 9.7, SAWR 6.7, MDD -33.5
SP500 CAGR 7.7, SAWR 4.6, MDD -54
2010 till present didn’t catch covid but no significant long term drawdowns:
BCC CAGR 12.4, SAWR 10.25, MDD -33.5
SP500 CAGR 13.4, SAWR 11.15, MDD -33.5
Probably worth keeping an eye on but wouldn't blindly accept the signal.
No. of Recommendations: 12
The NASDAQ which didn’t exist before 1971 and initially was just an automated quotation system with no trading.
You are correct.
I worked at Bunker Ramo in Bridegeport, CT. from 1973 to 1977 as a computer programmer on the NASDAQ stock quotation system. IIRC, it had first gone online the year before. Made several visits to major brokers in New York City for tech support and setting up the quote terminals for individual brokers.
The NASDAQ system took in bid and ask quotes from brokers and computed and displayed the RBA (representative bid & ask) in real-time on the terminals.
The RBA bid was the median of all the bids.
The RBA ask was the median of the bids plus the median bid-ask spread.
The communication network was 9600 baud async modems.
The NASDAQ system ran on a Univac 1108, the code was assembly language.
One of the original features was to also display the commission that the broker would earn on a trade, when they had a client on the phone. We eventually removed that; the brokers laughed at us and said that they all could compute their commission in their heads.
When I left, the new network cutting edge was ARPA-NET. We were looking for a better way to connect the existing 4 network hubs than 9600 baud sync lines.
No. of Recommendations: 1
But does anyone know how Nasdaq NHNL works prior to the existence of the Nasdaq exchange?step0 in [NHNLDiff] filters the exchange. Before 19731217, step0 passes all stocks (because 3==3). After 19731217, step0 filters to NASDAQ stocks.
step0:
if [Mkt Date] < 19731217:
TRUE
else
[Exchange] == NASDAQ
https://gtr1.net/2013/?lf-1lp-1h1::iflt%28linear%2...
No. of Recommendations: 7
All but a few stocks in gtr1 are in these exchanges:
excd.a Definition
1 NYSE
2 NYSE MKT (AMEX in SIP)
3 NASDAQ
4 NYSE Arca
5 Mutual Funds (as quoted by NASDAQ)
Count of stocks in gtr1 for these exchanges:
Date Active excd=1 excd=2 excd=3 excd=4 excd=5
19291231 720 720 0 0 0 0
19391229 781 781 0 0 0 0
19491230 990 989 0 0 0 0
19591231 1087 1087 0 0 0 0
19691231 2316 1291 1025 0 0 0
19791231 4819 1537 862 2420 0 0
19891229 6813 1671 891 4250 0 0
19991231 8363 2789 764 4810 0 0
20091231 6558 2403 517 2849 789 0
20191231 7583 2413 255 3128 1455 332
20250522 9975 2305 266 4164 2286 954
No. of Recommendations: 0
step0 in [NHNLDiff] filters the exchange. Before 19731217, step0 passes all stocks (because 3==3). After 19731217, step0 filters to NASDAQ stocks.
Is there a way to modify the NHNL bear-catcher so that it operates the same across all time periods, i.e. passes all stocks all the time?
Your help is much appreciated.
Baltassar
No. of Recommendations: 0
step0 in [NHNLDiff] filters the exchange. Before 19731217, step0 passes all stocks (because 3==3). After 19731217, step0 filters to NASDAQ stocks.
Is there a way to modify the NHNL bear-catcher so that it operates the same across all time periods, i.e. passes all stocks all the time?
Or maybe, hard as it may be to believe, I have figured something out!
If I change the date 19731217 to some later but still valid date, I assume that means that before that date all stocks will pass, and only after than date must they be NASDAQ stocks.
Correct?
Baltasar
No. of Recommendations: 1
The original article was positing BTAL/QLD switch. BTAL is a custom "anti-beta" fund, whatever that is, and unfortunately GTR1 doesn't / get that symbol from Yahoo. As the overlap between TQQQ's holdings and SPY is significant, I'm wondering if the majority of the results simply boil down to using 3x or 2x or no leverage?
FC
No. of Recommendations: 2
8 years later, my new role at Limu Emu was performance testing an IMS / Cobol mainframe system simulating hundreds of thousands of claims transactions a day across 600 offices nationally on a hard dedicated T3 telecomm system. Things were moving fast even back then.
FC
No. of Recommendations: 5
If I change the date 19731217 to some later but still valid date, I assume that means that before that date all stocks will pass, and only after than date must they be NASDAQ stocks.
Correct?A fine idea, but gtr1 rejects it:
"Field function 'date2ord' requires exactly one constant argument equal to a valid market date between 19211230 and 20250527."
gtr1 accepts this version of your idea:
step0: if(linear(1,ord(1),-1,date2ord(19731217))<30010203,3,excd.a) = 3
http://gtr1.net/2013/?~NHNLa1:lf-1lp-1h1::iflt%28l...==================
Some kind of version control or naming convention is needed. The original BCC uses [NHNLDiff]. With the change to include all exchanges, I changed the name to [NHNLa1]. Counts passing each step for [NHNLDiff]:
Create [NHNLDiff]: [1*[PcntNHC252WMA9] - 1*[PcntNLC252WMA9]]
step0: [[1*[Mkt Date as Ordinal] - 1*[19731217 as market date ordinal 13271]] < 0 ? 3 : [Exchange Code]] == 3
step1: [Security Type] == 10,11,18,48
step2: [Mkt Days Since Security Opened] >= 252
step3: [Rank by [Share Class #] (Asc), grouped by [Permanent Company ID], at step3] == 1
Date Active step0 step1 step2 step3
19291231 720 720 697 588 582
19391229 781 781 763 745 741
19491230 990 990 971 944 943
19591231 1087 1087 1060 1021 1021
19691231 2316 2316 2231 2019 2011
19791231 4819 2420 2334 2112 2106
19891229 6813 4250 3945 3584 3550
19991231 8363 4810 4352 3823 3798
20091231 6558 2849 2477 2403 2378
20191231 7583 3128 2185 2058 2032
20250527 9952 4146 2360 2269 2247
========================
Counts passing each step for [NHNLa1]:
Create [NHNLa1]: [1*[PcntNHC252WMA9] - 1*[PcntNLC252WMA9]]
step0: [[1*[Mkt Date as Ordinal] - 1*[19731217 as market date ordinal 13271]] < 3.00102e+07 ? 3 : [Exchange Code]] == 3
step1: [Security Type] == 10,11,18,48
step2: [Mkt Days Since Security Opened] >= 252
step3: [Rank by [Share Class #] (Asc), grouped by [Permanent Company ID], at step3] == 1
Date Active step0 step1 step2 step3
19291231 720 720 697 588 582
19391229 781 781 763 745 741
19491230 990 990 971 944 943
19591231 1087 1087 1060 1021 1021
19691231 2316 2316 2231 2019 2011
19791231 4819 4819 4608 4376 4361
19891229 6813 6813 5982 5573 5501
19991231 8363 8363 6864 6224 6145
20091231 6558 6558 4235 4100 4047
20191231 7583 7583 3758 3593 3547
20250527 9952 9952 3920 3784 3743
======================
Another possible version [NHNLa2] focuses on high liquidity stocks. I expect stocks with higher trading volume and higher market cap to have more information in the price.
Create [NHNLa2]: [1*[PcntNHC252WMA9] - 1*[PcntNLC252WMA9]]
step0: [Security Type] == 10,11,12,18,30,31,48
step1: [Mkt Days Since Security Opened] >= 253
step2: [Average dollar-volume over 63 days] > 0
step3: [Average dollar-volume over 63 days] Top 50%
step4: [Rank by [Share Class #] (Asc), grouped by [Permanent Company ID], at step4] == 1
step5: [MktCap] Top 1500
Date Active step0 step1 step2 step3 step4 step5
19291231 720 712 601 601 300 297 297
19391229 781 772 754 754 377 374 374
19491230 990 981 952 952 476 476 476
19591231 1087 1076 1037 1037 518 518 518
19691231 2316 2287 2074 2074 1037 1037 1037
19791231 4819 4734 4497 2332 1166 1164 1164
19891229 6813 6390 5935 5934 2967 2942 1500
19991231 8363 7743 7011 7011 3505 3481 1500
20091231 6558 4964 4797 4797 2398 2386 1500
20191231 7583 4684 4433 4433 2216 2203 1500
20250527 9952 5228 4950 4950 2475 2461 1500
http://gtr1.net/2013/?~NHNLa2:lf-1lp-1h1::styp.a:e...
No. of Recommendations: 0
Or maybe, hard as it may be to believe, I have figured something out!
That was just silly! Of course I haven't figured anything out.
What I'm wondering is if there is a way to modify NHNL so that it considers Nasdaq plus NYSE, rather than just Nasdaq.
Baltassar
No. of Recommendations: 0
Another possible version [NHNLa2] focuses on high liquidity stocks. I expect stocks with higher trading volume and higher market cap to have more information in the price.
This is very interesting. How do you convert something like that into the kind of "screen reference" that can be used with the other bearcatchers?
The original work on BCC was done in the context of investing in what were then typical MI stocks: mostly high flyers, and often smallish. I remember it well! But now I trade ETFs.
Thanks again.
Baltassar
No. of Recommendations: 3
I've asked if such a beast exists at Stockcharts. There is the alternative McClellan Oscillator, which is in a similar vein includes NYSE and Naz:
The McClellan Oscillator at StockCharts.com is ratio-adjusted to take into account the changing totals in issues traded on the NYSE and Nasdaq. Instead of using Net Advances, StockCharts.com calculates Net Advances as a percentage of advances plus declines. The result is then multiplied by 1000 to obtain whole numbers and eliminate decimals. This ratio adjustment makes it possible to compare McClellan Oscillator levels over a period of time. https://chartschool.stockcharts.com/table-of-conte...FC
No. of Recommendations: 12
How do you convert something like that into the kind of "screen reference" that can be used with the other bearcatchers?1. Save the URL.
2. Paste into gtr1 as a Screen Reference URL.
3. The Screen Reference URL should start with something like lf-1lp-1h1. Delete anything before that.
4. Add a Field Label to import the signal. e.g. NHNLDiff: imports(0,NHNLDiff,0,-99)
5. Add a condition to use the signal. e.g. Close all positions where NHNLDiff<=-0.4
S5T_NHNLDiff link is
https://gtr1.net/2013/?!!QlpoMTFBWSZTWdq38ToAAa!2F...
No. of Recommendations: 2
Wow, that is really helpful.
I cannot thank you enough!
Baltassar
No. of Recommendations: 4
The Screen Reference can start with "
https://gtr1.net/" if you want. To import a signal from a screen:
1. Paste the screen URL into gtr1 as a Screen Reference URL.
2. Add a Field Label to import the signal.
5. Add a condition to use the signal.
For example:
https://gtr1.net/2013/?~NHNLa1:lf-1lp-1h1::iflt%28...NHNLDiff: imports(0,NHNLDiff,0,-99)
Close all positions where NHNLDiff <= -0.4
No. of Recommendations: 3
testfol.io
A wonderful newer backtester