P123 Community Sentiment Indicator

I don't think this is a bad idea. This can be done easily without the need for any involvement or endorsement by P123. With @marco 's permission I think I will just go ahead and implement a sentiment survey this month for the month of May. If there is continued interest (and something more popular is not implemented before then), I will let (request that) someone else take over next month (for June) with any desirable changes. Link here P123-member sentiment for the month of May - #2 by Jrinne

I would be happy to make any suggested changes or suggested changes could be made next month (with someone else posting the survey). Certainly P123 could direct this or facilitate it, I would think. Maybe make it a new forum category. Or decide it is not a good idea or should be done a different way.

Whether I end up using this or not myself will depend little on the discussion above but rather on the out-of-sample results if this is continued long enough to get meaningful data—which seems possible and potentially useful (depending on the results).

I personally have little faith in market timing, but I see that I unfortunately resort to it again and again, including this time. I have long subscribed to ALLOCATE SMARTLY, and they have a number of strategies that are publicly described. I do not know if a sentiment indicator for the members will give a good result or be useful, but there could advantageously be some form of timing indicator that utilizes more well-known economic signals that tell a bit more about the risk in the market.

I am including an overview of some of the strategies that Smartly offers, and the economic indicators they use in the timing, should it be of interest. I hope that it may be possible to create a more unified model, which utilizes well-known indicators.

PS; Another thing I miss is that P123 created a model portfolio based on the AI factors, like the other official models. That would give us better "live" insight into how the AI factors work out of sample based on an official model that P123 themselves have created.

Strategy Name Economic/Valuation Indicator(s) Used for Timing (More Detail) How Used (More Detailed Timing Logic)
Choi's Dividend & Growth Allocation (DGA) 1. S&P 500 Dividend Yield (DY): The trailing 12-month dividend per share divided by the current S&P 500 cash price.
2. Inverted Yield Curve (Lagged): Checks if the 10-Year US Treasury yield was more than 0.5% below the 3-Month US Treasury yield at any point between 7 and 15 months prior to the signal date.
3. TIPS Momentum ("Canary"): Momentum score for US TIPS (ETF: TIP), calculated as the average of its 1, 3, 6, and 12-month percentage returns.
Timing: Monthly (last day, using prior month's econ data).
Risk-Off Trigger: The strategy enters Defensive Mode IF:
a) The current S&P 500 DY (with 1-month lag) is < 1.6% , OR
b) The yield curve was inverted (>0.5%) 7-15 months ago, OR
c) Neither (a) nor (b) is true, BUT the TIPS Momentum score is negative .
Portfolio Choice: If Risk-Off, selects 1 defensive asset (BIL/Cash, TLT, PDBC) based on 6m price vs 6m avg. If Risk-On, selects 1 offensive asset (QQQ, SCHD) based on 1/3/6/9/12m momentum.
Novell's SPY-COMP / SPY-COMP [DB] 6 Unspecified Economic Indicators: Described as monitoring "key economic indicators" to signal potential recession. Uses monthly data with a 1-month lag. (Specific indicators not disclosed in the provided text). Timing: Monthly (last day).
Logic: IF at least one of the 6 indicators signals potential recession -> Activate Price Trend Check . Strategy then goes long SPY if SPY > 10m MA, otherwise defensive (IEF or Cash for DB version).
IF none of the 6 indicators signal recession -> Ignore Price Trend . Strategy remains/goes long SPY regardless of the 10m MA.
Growth-Trend Timing - Original (GTT-Orig) 1. Real Retail Sales YoY (RRSFS): Year-over-year % change in inflation-adjusted Retail and Food Services Sales.
2. Industrial Production Index YoY (INDPRO): Year-over-year % change in the Industrial Production Index.
Both calculated using data from the prior month-end.
Timing: Monthly (last day).
Logic: IF at least one of RRSFS YoY or INDPRO YoY is negative -> Activate Price Trend Check . Go long SPY if SPY > 10m MA, otherwise Cash.
IF both are positive -> Ignore Price Trend . Go/remain long SPY.
Growth-Trend Timing - UE Rate (GTT-UE) Unemployment Rate vs 12m Avg (UNRATE): Compares the prior month's Unemployment Rate to its 12-month simple moving average. Timing: Monthly (last day).
Logic: IF UNRATE (prior month) > 12m Avg -> Activate Price Trend Check . Go long SPY if SPY > 10m MA, otherwise Cash.
IF UNRATE <= 12m Avg -> Ignore Price Trend . Go/remain long SPY.
Risk Premium Value (RPV - Best & Wtd) Historically Normalized Risk Premiums (Z-scores): Calculated monthly using data since inception up to the prior month (earnings yield lagged 4+ months). Compares current premium to its historical mean and standard deviation.
1. ERP: (S&P 500 Earnings Yield) - (TLT Yield)
2. CRP: (LQD Yield) - (TLT Yield)
3. TRP: (TLT Yield) - (3M T-Bill Yield)
Timing: Monthly (last day).
Allocation Logic: Allocates to the asset class(es) (SPY for ERP, LQD for CRP, TLT for TRP) whose corresponding normalized Risk Premium (Z-score) is positive (i.e., higher than its historical average).
Best: 100% to the single highest positive Z-score.
Weighted: Proportionally to all assets with a positive Z-score.
If no Z-score is positive -> 100% Cash.
Pragmatic Asset Allocation (PAA - Vojtko) Inverted Yield Curve (10Y < 3M): Compares the 10-Year US Treasury yield to the 3-Month US Treasury yield. Timing: Quarterly (Months 1, 4, 7, 10, using prior month's data).
Regime Choice: IF 3M > 10Y (inverted curve) -> Select from defensive assets (IEF, GLD, BIL/Cash) based on 12m price vs 12m MA.
IF 10Y >= 3M (normal/flat curve) -> Select from risk assets (ACWI, QQQ, EEM) based on 12m price vs 12m MA. (Also has a secondary 12m MA stop-loss rule for inactive tranches).
Countercyclical Trend Following (CTF) 1. High Yield Spread vs 10Y Rolling Median: Difference between sub-investment grade corporate bond yield and US Treasury yield, compared to its own 10-year rolling median.
2. Yield Curve Slope (10Y-1Y) vs 10Y Rolling Median: Difference between 10Y and 1Y US Treasury yields, compared to its own 10-year rolling median.
Uses prior month-end data (with 2-day lag).
Timing: Monthly (last day) for regime selection.
Regime Determination:
IF HY Spread > Median -> Growth Regime .
IF HY Spread <= Median AND Slope <= Median -> Inflation Regime .
IF HY Spread <= Median AND Slope > Median -> Slowdown Regime .
Portfolio Choice: Each regime dictates a specific base portfolio. Daily 200d MA checks on SPY and GLD act as an overlay within that regime, switching portions to IEF if the trend turns down.
Link's Global Growth Cycle (GGC) OECD Composite Leading Indicators (CLI) Diffusion Index: Percentage of constituent countries in the OECD CLI index showing a month-over-month increase in their CLI value. Uses prior month's data. Timing: Monthly (around the 15th).
Logic: IF Diffusion Index >= 50% -> Go long SPY.
IF Diffusion Index < 50% -> Go to Cash.
Lethargic Asset Allocation (LAA) Unemployment Rate vs 12m Avg (UNRATE): Same indicator as GTT-UE Rate. Uses prior month's data. Timing: Monthly (last day).
Logic: Affects only 25% of the portfolio. IF UNRATE > 12m Avg -> Switch this 25% portion from QQQ to the better of IEF or Cash (based on 10m MA).
IF UNRATE <= 12m Avg -> Hold/buy QQQ in this 25% portion. The other 75% is static B&H (IWD, GLD, IEF).
TrendYCMacro (TYCM) 1. RRSFS YoY (>0)
2. INDPRO YoY (>0)
3. HOUST YoY (>0)
4. Yield Curve Steepness (10Y > 3M).
Uses prior month-end economic data.
Timing: Monthly (last day).
Logic (Complex):
a) IF already long SPY AND all 3 econ indicators (1-3) are positive -> Remain long SPY.
b) Otherwise: Check if all 3 price/yield conditions are met: (SPY > 200d MA) AND (SPY Rachev Ratio > 1) AND (10Y > 3M yield). If yes -> Go long SPY.
c) If neither (a) nor (b) -> Go to Cash.
Excess Earnings Yield Dynamic (EEYD) Excess Earnings Yield (EEY): Calculated as (1 / CAPE Ratio) - (Real 10Y TIPS Yield). Uses CAPE data lagged 3+ months. (Momentum version adds/subtracts 2% based on a separate price trend calculation). Timing: Monthly (last day).
Allocation Logic: Uses the calculated EEY in the Merton Rule formula (Stock Allocation = EEY / (2 * RiskAversion * StockVolatility²)) to determine the percentage allocation between SPY and TIP. It's a continuous adjustment, not a binary on/off switch based on the EEY value itself (though a very low EEY would result in 0% SPY).
Resilient Asset Allocation (RAA) 1. Unemployment Rate vs 12m Avg (UNRATE): Same indicator as GTT-UE and LAA.
2. "Canary" Momentum (EEM & AGG): Weighted 1/3/6/12m momentum score for Emerging Markets (EEM) and Aggregate Bonds (AGG).
Uses prior month-end data.
Timing: Monthly (last day).
Regime Choice: IF UNRATE <= 12m Avg -> Risk-On Regime (fixed 5-asset portfolio).
IF UNRATE > 12m Avg -> Check Canaries. IF at least one canary is negative -> Risk-Off Regime (50% IEF / 50% TLT, or DB version). IF both canaries are positive -> Override UNRATE signal and stay in Risk-On Regime .

Thanks for providing rules for these strategies.
I created Resilient Asset Allocation (RAA)

It seems like this strategy is optimised to capture the drawdown in 2008 and then the overperformance diminish.

setvar(@eem, GetSeries("EEM:USA")) and setvar(@hyg, GetSeries("HYG:USA"))
setvar(@empl_down, Close(0, ##UNRATE) < SMA(12,0, ##UNRATE))
showvar(@c_hyg, Avg(Ret%Chg_D(20,0,@hyg), Ret%Chg_D(62,0,@hyg), Ret%Chg_D(126,0,@hyg), Ret%Chg_D(252,0,@hyg)))
showvar(@c_eem, Avg(Ret%Chg_D(20,0,@eem), Ret%Chg_D(62,0,@eem), Ret%Chg_D(126,0,@eem), Ret%Chg_D(252,0,@eem)))
eval(@empl_down OR (@c_eem > 0 AND @c_hyg > 0), Ticker("SPY"), Ticker("IEF, TLT") )

You can try it in screener with: 0% slippage, daily rebalancing, 01/01/2004 - 05/04/2025