exp_1186

Explore Regime Momentum Recovery Quality Hybrid (Conflict-Arbitrated Relay, v1186)

← All V2 experiments
Relative return
1.061x
Excess vs bench
6.05%
Benchmark
CAPW_UNIV
Rolling windows
179 · monthly
Mean strategy gain
20.98%
Mean benchmark gain
14.08%
Mean excess gain
6.89%
Dispersion (ref)
5.88%
Win-rate vs bench (ref)
100.00%
Worst / best ratio (ref)
1.009x / 1.132x
Logic variants
4
Updated
Jul 21, 2026
Anchored windows (reference — strategy vs benchmark)
Kept from V1 for continuity; the objective ranks on the full rolling set, not these four.
WindowStrategyBenchmarkRatio
2006-07-03 … 2011-06-30 12.53% 2.22% 1.101x
2011-07-01 … 2016-06-30 21.99% 13.74% 1.073x
2016-07-01 … 2021-06-30 26.66% 20.63% 1.050x
2021-07-01 … 2026-06-26 38.20% 15.48% 1.197x
All rolling windows — the objective set (equal-weighted mean ratio)
Strategy Benchmark (CAPW_UNIV) Excess
2006200720082009201020112012201320142015201620172018201920202021 -10%0%10%20%30%40%
rolling 5y windows, monthly step — 179 windows · mean ratio 1.061x · beat benchmark in 179/179
#WindowStrategyBenchmarkRatio
1 2006-07-31 … 2011-07-29 10.58% 1.79% 1.086x
2 2006-08-31 … 2011-08-31 9.52% 0.21% 1.093x
3 2006-09-29 … 2011-08-31 9.51% -0.14% 1.097x
4 2006-10-31 … 2011-10-31 7.42% 0.23% 1.072x
5 2006-11-30 … 2011-11-30 7.03% -0.05% 1.071x
6 2006-12-29 … 2011-11-30 7.14% -0.32% 1.075x
7 2007-01-31 … 2012-01-31 8.16% 0.93% 1.072x
8 2007-02-28 … 2012-01-31 8.54% 1.43% 1.070x
9 2007-03-30 … 2012-03-30 11.44% 3.09% 1.081x
10 2007-04-30 … 2012-04-30 11.04% 2.42% 1.084x
11 2007-05-31 … 2012-05-31 8.50% 0.60% 1.079x
12 2007-06-29 … 2012-06-29 9.09% 1.92% 1.070x
13 2007-07-31 … 2012-07-31 9.06% 2.69% 1.062x
14 2007-08-31 … 2012-08-31 8.67% 2.95% 1.056x
15 2007-09-28 … 2012-09-28 8.57% 3.20% 1.052x
16 2007-10-31 … 2012-10-31 8.08% 2.60% 1.053x
17 2007-11-30 … 2012-11-30 9.12% 3.45% 1.055x
18 2007-12-31 … 2012-12-31 8.30% 3.69% 1.044x
19 2008-01-31 … 2013-01-31 11.45% 5.85% 1.053x
20 2008-02-29 … 2013-02-28 12.64% 6.82% 1.054x
21 2008-03-31 … 2013-03-28 15.47% 7.73% 1.072x
22 2008-04-30 … 2013-04-30 13.60% 7.51% 1.057x
23 2008-05-30 … 2013-04-30 12.38% 7.81% 1.042x
24 2008-06-30 … 2013-06-28 11.61% 9.33% 1.021x
25 2008-07-31 … 2013-07-31 13.90% 10.48% 1.031x
26 2008-08-29 … 2013-07-31 13.27% 10.52% 1.025x
27 2008-09-30 … 2013-09-30 18.01% 11.48% 1.059x
28 2008-10-31 … 2013-10-31 20.63% 15.76% 1.042x
29 2008-11-28 … 2013-10-31 21.82% 17.46% 1.037x
30 2008-12-31 … 2013-12-31 22.95% 18.44% 1.038x
31 2009-01-30 … 2013-12-31 24.64% 20.64% 1.033x
32 2009-02-27 … 2014-01-31 27.81% 21.63% 1.051x
33 2009-03-31 … 2014-03-31 26.16% 20.60% 1.046x
34 2009-04-30 … 2014-04-30 26.01% 19.00% 1.059x
35 2009-05-29 … 2014-04-30 28.15% 18.32% 1.083x
36 2009-06-30 … 2014-06-30 29.93% 19.01% 1.092x
37 2009-07-31 … 2014-07-31 25.96% 17.39% 1.073x
38 2009-08-31 … 2014-08-29 26.77% 17.70% 1.077x
39 2009-09-30 … 2014-09-30 24.42% 16.64% 1.067x
40 2009-10-30 … 2014-09-30 26.64% 17.08% 1.082x
41 2009-11-30 … 2014-11-28 26.41% 16.82% 1.082x
42 2009-12-31 … 2014-12-31 24.79% 16.28% 1.073x
43 2010-01-29 … 2014-12-31 26.82% 17.23% 1.082x
44 2010-02-26 … 2015-01-30 25.47% 15.80% 1.084x
45 2010-03-31 … 2015-03-31 24.26% 15.40% 1.077x
46 2010-04-30 … 2015-04-30 21.40% 15.38% 1.052x
47 2010-05-28 … 2015-04-30 22.67% 17.09% 1.048x
48 2010-06-30 … 2015-06-30 24.57% 17.45% 1.061x
49 2010-07-30 … 2015-06-30 24.34% 16.43% 1.068x
50 2010-08-31 … 2015-08-31 22.96% 15.76% 1.062x
51 2010-09-30 … 2015-09-30 21.68% 13.61% 1.071x
52 2010-10-29 … 2015-09-30 20.74% 13.06% 1.068x
53 2010-11-30 … 2015-11-30 21.24% 15.09% 1.053x
54 2010-12-31 … 2015-12-31 21.03% 13.55% 1.066x
55 2011-01-31 … 2016-01-29 20.93% 11.90% 1.081x
56 2011-02-28 … 2016-01-29 20.09% 11.53% 1.077x
57 2011-03-31 … 2016-03-31 20.44% 12.90% 1.067x
58 2011-04-29 … 2016-04-29 18.86% 12.39% 1.058x
59 2011-05-31 … 2016-05-31 19.98% 12.94% 1.062x
60 2011-06-30 … 2016-06-30 20.50% 13.30% 1.064x
61 2011-07-29 … 2016-07-29 21.25% 14.52% 1.059x
62 2011-08-31 … 2016-08-31 22.05% 15.19% 1.060x
63 2011-09-30 … 2016-09-30 24.84% 16.32% 1.073x
64 2011-10-31 … 2016-10-31 22.66% 14.02% 1.076x
65 2011-11-30 … 2016-11-30 23.99% 14.66% 1.081x
66 2011-12-30 … 2016-12-30 23.51% 14.92% 1.075x
67 2012-01-31 … 2017-01-31 23.16% 14.63% 1.074x
68 2012-02-29 … 2017-02-28 21.43% 14.78% 1.058x
69 2012-03-30 … 2017-02-28 20.73% 14.43% 1.055x
70 2012-04-30 … 2017-04-28 21.03% 14.61% 1.056x
71 2012-05-31 … 2017-05-31 23.62% 15.98% 1.066x
72 2012-06-29 … 2017-05-31 23.16% 15.44% 1.067x
73 2012-07-31 … 2017-07-31 22.50% 15.43% 1.061x
74 2012-08-31 … 2017-08-31 22.83% 15.12% 1.067x
75 2012-09-28 … 2017-08-31 22.32% 14.77% 1.066x
76 2012-10-31 … 2017-10-31 23.77% 16.12% 1.066x
77 2012-11-30 … 2017-11-30 22.86% 16.79% 1.052x
78 2012-12-31 … 2017-12-29 23.32% 16.93% 1.055x
79 2013-01-31 … 2018-01-31 24.00% 17.57% 1.055x
80 2013-02-28 … 2018-02-28 22.97% 16.21% 1.058x
81 2013-03-28 … 2018-02-28 21.54% 15.81% 1.049x
82 2013-04-30 … 2018-04-30 20.69% 14.25% 1.056x
83 2013-05-31 … 2018-05-31 21.98% 14.57% 1.065x
84 2013-06-28 … 2018-05-31 22.50% 14.97% 1.066x
85 2013-07-31 … 2018-07-31 21.15% 14.83% 1.055x
86 2013-08-30 … 2018-07-31 20.74% 15.59% 1.045x
87 2013-09-30 … 2018-09-28 20.43% 15.84% 1.040x
88 2013-10-31 … 2018-10-31 16.63% 12.89% 1.033x
89 2013-11-29 … 2018-10-31 16.00% 12.60% 1.030x
90 2013-12-31 … 2018-12-31 13.58% 9.93% 1.033x
91 2014-01-31 … 2019-01-31 13.33% 12.37% 1.009x
92 2014-02-28 … 2019-02-28 14.18% 12.38% 1.016x
93 2014-03-31 … 2019-03-29 16.66% 12.76% 1.035x
94 2014-04-30 … 2019-04-30 17.50% 13.73% 1.033x
95 2014-05-30 … 2019-04-30 16.81% 13.54% 1.029x
96 2014-06-30 … 2019-06-28 15.18% 12.81% 1.021x
97 2014-07-31 … 2019-07-31 17.15% 13.30% 1.034x
98 2014-08-29 … 2019-07-31 16.10% 12.80% 1.029x
99 2014-09-30 … 2019-09-30 16.51% 12.70% 1.034x
100 2014-10-31 … 2019-10-31 17.55% 12.91% 1.041x
101 2014-11-28 … 2019-10-31 17.06% 12.60% 1.040x
102 2014-12-31 … 2019-12-31 19.46% 14.16% 1.046x
103 2015-01-30 … 2019-12-31 19.66% 14.85% 1.042x
104 2015-02-27 … 2020-01-31 19.63% 14.04% 1.049x
105 2015-03-31 … 2020-03-31 13.53% 8.56% 1.046x
106 2015-04-30 … 2020-04-30 17.46% 11.65% 1.052x
107 2015-05-29 … 2020-05-29 17.36% 12.61% 1.042x
108 2015-06-30 … 2020-06-30 17.89% 13.64% 1.037x
109 2015-07-31 … 2020-07-31 19.73% 14.60% 1.045x
110 2015-08-31 … 2020-08-31 25.21% 18.07% 1.060x
111 2015-09-30 … 2020-09-30 23.28% 17.05% 1.053x
112 2015-10-30 … 2020-10-30 22.39% 14.60% 1.068x
113 2015-11-30 … 2020-11-30 26.75% 17.43% 1.079x
114 2015-12-31 … 2020-12-31 27.46% 18.65% 1.074x
115 2016-01-29 … 2021-01-29 28.43% 19.26% 1.077x
116 2016-02-29 … 2021-02-26 28.02% 19.79% 1.069x
117 2016-03-31 … 2021-03-31 27.10% 19.42% 1.064x
118 2016-04-29 … 2021-03-31 28.02% 19.66% 1.070x
119 2016-05-31 … 2021-05-28 27.11% 20.42% 1.056x
120 2016-06-30 … 2021-06-30 26.06% 21.06% 1.041x
121 2016-07-29 … 2021-06-30 26.66% 20.63% 1.050x
122 2016-08-31 … 2021-08-31 31.23% 21.75% 1.078x
123 2016-09-30 … 2021-09-30 28.40% 20.22% 1.068x
124 2016-10-31 … 2021-10-29 32.08% 22.50% 1.078x
125 2016-11-30 … 2021-11-30 31.76% 21.87% 1.081x
126 2016-12-30 … 2021-11-30 32.01% 21.75% 1.084x
127 2017-01-31 … 2022-01-31 29.25% 20.17% 1.076x
128 2017-02-28 … 2022-02-28 30.59% 18.51% 1.102x
129 2017-03-31 … 2022-03-31 32.39% 19.46% 1.108x
130 2017-04-28 … 2022-03-31 31.98% 19.46% 1.105x
131 2017-05-31 … 2022-05-31 30.27% 15.59% 1.127x
132 2017-06-30 … 2022-06-30 26.59% 13.08% 1.119x
133 2017-07-31 … 2022-07-29 25.03% 15.16% 1.086x
134 2017-08-31 … 2022-08-31 24.69% 13.72% 1.096x
135 2017-09-29 … 2022-08-31 25.31% 13.56% 1.103x
136 2017-10-31 … 2022-10-31 25.02% 11.86% 1.118x
137 2017-11-30 … 2022-11-30 25.07% 12.52% 1.112x
138 2017-12-29 … 2022-11-30 25.10% 12.46% 1.112x
139 2018-01-31 … 2023-01-31 22.76% 11.01% 1.106x
140 2018-02-28 … 2023-02-28 22.32% 11.03% 1.102x
141 2018-03-29 … 2023-02-28 22.90% 11.72% 1.100x
142 2018-04-30 … 2023-04-28 21.66% 13.01% 1.077x
143 2018-05-31 … 2023-05-31 20.14% 12.95% 1.064x
144 2018-06-29 … 2023-05-31 20.47% 13.01% 1.066x
145 2018-07-31 … 2023-07-31 22.64% 14.67% 1.069x
146 2018-08-31 … 2023-08-31 19.29% 13.51% 1.051x
147 2018-09-28 … 2023-08-31 18.98% 13.56% 1.048x
148 2018-10-31 … 2023-10-31 17.30% 12.60% 1.042x
149 2018-11-30 … 2023-11-30 19.51% 14.58% 1.043x
150 2018-12-31 … 2023-12-29 21.31% 17.26% 1.035x
151 2019-01-31 … 2024-01-31 21.22% 16.27% 1.043x
152 2019-02-28 … 2024-01-31 19.72% 15.94% 1.033x
153 2019-03-29 … 2024-03-28 22.46% 17.50% 1.042x
154 2019-04-30 … 2024-04-30 21.35% 15.50% 1.051x
155 2019-05-31 … 2024-05-31 24.08% 18.12% 1.050x
156 2019-06-28 … 2024-06-28 22.98% 17.99% 1.042x
157 2019-07-31 … 2024-07-31 19.60% 17.70% 1.016x
158 2019-08-30 … 2024-08-30 19.80% 18.41% 1.012x
159 2019-09-30 … 2024-09-30 20.25% 18.65% 1.013x
160 2019-10-31 … 2024-10-31 20.19% 17.87% 1.020x
161 2019-11-29 … 2024-11-29 24.66% 18.64% 1.051x
162 2019-12-31 … 2024-12-31 22.23% 17.62% 1.039x
163 2020-01-31 … 2025-01-31 23.53% 18.07% 1.046x
164 2020-02-28 … 2025-02-28 23.53% 19.00% 1.038x
165 2020-03-31 … 2025-03-31 24.93% 19.24% 1.048x
166 2020-04-30 … 2025-04-30 21.99% 16.49% 1.047x
167 2020-05-29 … 2025-04-30 21.60% 15.80% 1.050x
168 2020-06-30 … 2025-06-30 23.80% 18.19% 1.048x
169 2020-07-31 … 2025-07-31 21.92% 17.87% 1.034x
170 2020-08-31 … 2025-08-29 18.65% 16.69% 1.017x
171 2020-09-30 … 2025-09-30 22.71% 18.57% 1.035x
172 2020-10-30 … 2025-09-30 22.62% 19.43% 1.027x
173 2020-11-30 … 2025-11-28 22.53% 17.77% 1.040x
174 2020-12-31 … 2025-12-31 22.11% 16.92% 1.044x
175 2021-01-29 … 2025-12-31 21.93% 17.20% 1.040x
176 2021-02-26 … 2026-01-30 26.87% 17.04% 1.084x
177 2021-03-31 … 2026-03-31 25.44% 14.07% 1.100x
178 2021-04-30 … 2026-04-30 31.38% 16.03% 1.132x
179 2021-05-28 … 2026-04-30 31.17% 16.22% 1.129x
Notes
mode=explore; family=regime-momentum-recovery-quality-hybrid New hybrid family built as a conflict-arbitrated relay instead of a static blend: leadership momentum, repair-and-recovery, and quality-franchise defense each earn the right to lead only when their own confirmation tests pass, and the regime branch decides how harshly conflicting evidence is penalized. The explicit arbitration is stock-level: leadership is blocked when momentum outruns trend quality or volatility control, repair is blocked when drawdown lacks internal improvement, and defensive franchise names jump the queue when tape conditions are weak or dispersion is likely high. Deliberate metric coverage this run: momentum actively uses 1m, 3m, 6m, and 12_1 with different sleeve roles; trend/recovery actively uses both 200d distance and 52-week-high distance; volatility is active through realized_vol_3m; liquidity actively uses avg_daily_dollar_volume_3m, avg_daily_volume_3m, and trading_days_3m; income actively uses dividend_yield_ttm_pct; valuation actively uses forward_pe and peg; growth actively uses revenue_growth_pct, forward_eps, and free_cash_flow_growth_pct; quality actively uses operating_margin_pct and free_cash_flow_margin_pct; size is deliberately active only as a mild market_cap stability tilt. Deliberate weight-0 metrics this run: return_12m_pct, dividend_ttm, pe, eps_growth_pct, operating_income_growth_pct, shares_outstanding, close, adj_close, high_52w, ma_200d, eps_ttm, revenue_ttm, operating_income_ttm, free_cash_flow_ttm.
Lesson notes
#886 · degrade · relative_return Δ -0.3219 · parent exp_1154 · Jul 21, 2026 · auto/explore; benchmark CAPW_UNIV
explore/regime-momentum-recovery-quality-hybrid: relative_return 1.0605x (delta -0.3219 vs exp_1154); win-rate 100.0%, worst-window 1.008527, dispersion 5.8753%.
Monthly picks — top stocks selected each month (whole timeline)
timeline — 240 months · top 15 each
Month 123456789101112131415
2006-07-31 T MRK SLG BXP ADM BAC AKAM LMT MO WFC AVB CPB CPT VNO JPM
2006-08-31 T MRK BXP LH DGX NVDA ESS AT MO LMT VTR AIV EQR VNO L
2006-09-29 T ORCL LMT MS MRK BAC TROW AIV AKAM CMCSA GILD HUM HOG AT JPM
2006-10-31 AT GS CMCSA NVDA INCLF LVLT ALB BMET MAT T HAS OMX MRK ALXN KSS
2006-11-30 CSCO VNO ES HOG CTSH ATI NEE GS ICE BXP SLG ETR RL LVS NVDA
2006-12-29 AT LVLT BKNG CMCSA ICE BMET MCD OMX CSCO ALXN NEE T KMX GS ADS
2007-01-31 DOC BXP ICE WYNN PSA EOP ATI T VMC NEE LVS HPQ MGM SPG MAT
2007-02-28 MAT NEE ICE ETR NRG SYK SRE BKNG CNP MGM FDS TAP EOP ALXN ANDV
2007-03-30 NRG SYK AEP ES ETR MAT T NEE PEG TAP GT KR ANDV PPL CE
2007-04-30 ETR CI NRG BAX NEE ANDV PEG SVU GT PCAR AEP CMI CE TEX ALXN
2007-05-31 NRG AAPL MA AMZN CE ALXN MDR AT CLF MOS JEC X GT CI HON
2007-06-29 CE MA MDR JEC AL ALXN AAPL X MOS CF DECK NOV FCX CMI APOL
2007-07-31 MDR AL JEC ALXN AMZN X NVDA AAPL APOL FCX ATGE CMI DJ NOV AT
2007-08-31 DE BIIB IBM CSCO GRMN NVDA SLB NOV AAPL CVX GME VRSN HPQ INTC ISRG
2007-09-28 FLR DE BG AMZN SLB GRMN BIIB NOV FTI AAPL COP CSCO CVX WYNN FCX
2007-10-31 GOOGL GOOG APA AAPL ISRG BG DE MCD MOS FLR FMC OXY FCX EXPE CF
2007-11-30 MDR JEC FSLR HES DE ESRX MCD ALXN KO BRK-B MA MRK BKNG WAT CL
2007-12-31 AAPL ESRX MOS DE FSLR EOG CME CF WAT CNX J JEC OI BRK-B MA
2008-01-31 ESRX HUM MO MOS PEG CNX BRK-B BAX X MEE APOL FE CL EOG ATGE
2008-02-29 OXY MOS DVN APA EQT CF AFL WMB HAL FCX BDX BRK-B CLF ADM MUR
2008-03-31 WMT AFL MA MEE APA GILD CSX KO DVN ESV BTUUQ PRGO CL SWN NKE
2008-04-30 MOS HAL CF MA WMT MEE APA UNP FSLR CVX CSX CLF OXY ESV DVN
2008-05-30 CSX MEE X BTUUQ MA APOL ESV CLF BCR ATGE UNP SWN SRCL MHS HAL
2008-06-30 HAL NBR FMC MEE X BTUUQ BCR ESV MOS APOL CLF CNX ATGE CF HP
2008-07-31 BCR APOL ATGE CEPH SWN SRCL CELG HRS DF ACS MHS BNI FDO STJ FI
2008-08-29 BCR APOL SWN CEPH ATGE DF CELG FDO SRCL HRS BNI ACS FI BIG STJ
2008-09-30 BCR WMT GIS SWN MCD MRSH DF APOL CEPH ATGE FDO BNI AMGN CELG BAX
2008-10-31 MRSH GIS WWY ABT WMT MCD BAX CPB SO CLX CHD AMGN PG MDLZ ED
2008-11-28 MCD DLTR WMT ED AMGN KR SO GIS ABT CLX SHW PG HSY AON SJM
2008-12-31 AMGN MCD BMY GILD AZO CHRW WM ABT WMT SHW DLTR GIS AON SO CL
2009-01-30 ABT ROH GILD DLTR MCD EW BMY BAX SWN SJM AMGN DGX XEL SO PCG
2009-02-27 AZO EW PCG VTRS LDOS AAP VRTX NFLX ORLY DLTR NEM DRI TYL MNST HRL
2009-03-31 ROST AZO BR NFLX BMY DLTR VTRS INTU AMZN ED EW DRI AAP NEM ROH
2009-04-30 BR AZO KSS MNST ORLY AAP AN NFLX IRM RHI BBY DRI AMZN ROST YUM
2009-05-29 GPS FFIV F ROST WBD PALM SWKS CMG IBM UHS YUM ORCL NEE DXC DRI
2009-06-30 F PALM TJX FFIV AMZN MSFT ELV FISV BKNG SJM TDC ESRX ICE GMCR CTSH
2009-07-31 AAPL F TJX TXN BKNG PALM FIS SWKS WBD MCHP MU WDC BEN MMM SBUX
2009-08-31 PALM WDC AAPL CAR MU BKNG SNDK CTSH NVR GMCR EXPE SBUX MMM LEN VTSS
2009-09-30 AAPL WBD WLL GNW CTSH MU CAR GS BKNG ISRG SNDK ASH KLAC STX SBUX
2009-10-30 AAPL MSFT GOOG HAL GOOGL FCX CAT MCK AMZN BEN CTSH GPS TT WBD KSS
2009-11-30 ISRG WLL CCI BKNG AAPL AMZN GGP WBD MSFT GOOG SNDK GOOGL CTSH WFM PXD
2009-12-31 WLL ISRG CRM GOOG GOOGL AMD F MU GGP MA V AAPL PXD WFM WDC
2010-01-29 ISRG GNW F WLL FITB MA RCL INCY EL COR CCI DD AFL SANM TDG
2010-02-26 WLL ISRG GNW BBWI PXD ACS EL CLF F GGP UAL STX SNDK WFM GMCR
2010-03-31 WLL BBWI ETFC GNW CLF UAL PXD F BKNG BA VIAV AAPL FITB LVS CXO
2010-04-30 WLL BBWI AAPL VSTNQ ETFC PXD LVS UAL WBD CXO SNDK ZION NFLX JOY HST
2010-05-28 AAPL NFLX BBWI CRM WBD WLL COR ETFC AAL LVS HD FFIV EQR UAL KDP
2010-06-30 AAPL COR NFLX KDP HAS UAL NTAP CRM NEM SBUX WBD DLTR MO EW AKAM
2010-07-30 NTAP CRM MO INTU DE AAPL LVS AZO CAT FFIV UAL WBD CMI DLTR CMCSA
2010-08-31 MCD MO BKNG NEM AMT INTU CRM NFLX CCI BMY AZO CTSH EW SPG T
2010-09-30 NTAP AMZN BKNG CAT NFLX MO AAPL VZ WLL LVS WBD DE CMI CTSH FFIV
2010-10-29 BKNG NTAP MO AAPL NFLX LVS WLL SWKS INTU DE BWA WYNN UAL FFIV EBAY
2010-11-30 BBWI AAPL BKNG TXN NFLX CAT ILMN WLL F BWA AZO LVS EXPD ETN FFIV
2010-12-31 WLL LULU BWA CXO AIG PXD CAT ETFC ANF ACAS XEC FDO DE RCL FCX
2011-01-31 DE NFLX CAT NOV ILMN TER BKNG SWKS AAPL WYNN VIAV ETN URI TXN ON
2011-02-28 QCOM KLAC TER COP LULU NOV PSKY CMCSA VIAV CAT WY CVX SWKS ROK CIEN
2011-03-31 BKNG CAT LULU DE WYNN NFLX CMG CVX HAL ROK PSKY TMUS ANDV BKR HP
2011-04-29 BBWI BKNG WYNN LULU MCO LYB CHTR CAT ANF ULTA UNH TMUS CXO BIIB GR
2011-05-31 MCO ANF NFLX MSI GR ULTA HUM KSU PSKY TMUS EP ADS GMCR PETM REGN
2011-06-30 LULU MNST UNH GR BIIB ADS CMG KSU TDC WCG PETM GMCR BBWI SBNY ARG
2011-07-29 WYNN LULU CMG BKNG AMZN AAPL SBUX MCD NFLX EL ANF CF SPG HAL UNH
2011-08-31 CF AAPL BKNG WYNN BBWI MCD MA AMZN BIIB CMG SBUX ISRG LULU DLTR VFC
2011-09-30 AAPL MCD BBWI ED D MA V SO BMY DLTR MO DUK AMZN AZO MTCH
2011-10-31 KLAC ISRG BIIB CF INTC AAPL MCD ORLY V MA RL BBWI SPG BMY ED
2011-11-30 MA V FAST BMY INTC HD ISRG OKE MCD GWW SBUX EL AEE DUK M
2011-12-30 ISRG V MCD KLAC HD PFE SBUX PM BMY FAST MA ROST OKE ORLY MO
2012-01-31 AAPL HD FAST AMGN STX ROST AMT GILD ADS TJX YUM REGN URI SBUX WCG
2012-02-29 AAPL V FAST HD ISRG STX M EQIX CMCSA BBWI MA TJX JWN MSFT BKNG
2012-03-30 AAPL BKNG EQIX HD QCOM SBUX M ULTA ISRG LULU FAST STX PSKY LEN TJX
2012-04-30 HD ISRG V MA BKNG ORLY CCI M ROST SPG SHW TJX STX MO WBD
2012-05-31 ROST AAPL T SHW MO ABT HD CCI NEE TJX VZ DLTR AMGN SPG SRE
2012-06-29 MO CMCSA CCI HD DG V AMT T SPG SBAC WBD VZ BIIB WMT EBAY
2012-07-31 MO AMGN T AAPL WMT VZ CMCSA V ABT CCI NEE ROST AMT KMB SPG
2012-08-31 AAPL HD AMGN CMCSA GILD STX EBAY CCI GPS PHM LEN MPC SHW WY ROST
2012-09-28 HD GILD CF CMCSA GE ALL MPC PHM AMGN WMB AAPL WBD WY TWX SHW
2012-10-31 CMCSA HD GILD AMGN V CCI PHM LEN WY SBAC PARA ALL MCO SPGI STZ
2012-11-30 V GILD HD EBAY LOW AMGN CMCSA NWL MA MPC SBAC TWX WHR MCO EXPE
2012-12-31 APTV CCI PHM BAC V PPG LYB MCO MPC NWL ADBE SBAC GM LPX TEX
2013-01-31 MPC VLO HCA PHM CPAY WBD LYB TMO VRTS STT THC WHR BLK ANDV OMX
2013-02-28 GILD WBD MPC NFLX DAL CAG ANDV ALL HRB STT ALK TRV CTRA JPM LUV
2013-03-28 GILD LUV AMGN WBD LEG MPC NWL DAL ALL HRB TRV KR CPB HCA HRL
2013-04-30 GILD VZ TWX NFLX LUV ADBE KR VRTX HAS COR DIS FSLR REGN BIIB DAL
2013-05-31 STX TMO MCO GILD BA WDC REGN MU FSLR TSLA SLM C STT JPM CHTR
2013-06-28 STX BA MU TSLA CHTR HD CI CBOE SCHW NOC CME TMUS OMX AET NKE
2013-07-31 GILD NOC TSLA LMT OMX REGN DAL RTX GME TMO BSX CBOE ORLY GPS F
2013-08-30 BKNG META LMT OMX TSLA NOC CI NFLX GILD FLT BBY KATE MU ELV GHC
2013-09-30 META BKNG REGN OMX TSLA DAL WYNN FLT MU MGM ADS CELG BA KATE HBI
2013-10-31 BA OMX BKNG DAL GILD MA SBUX NOC BBY FL META MU STX LUV BMY
2013-11-29 BKNG MU MA DAL LUV OMX MCK NOC BA GILD AMP HII STZ NFLX SPGI
2013-12-31 MA WYNN URI BX HII TMO LVS AMP MU FLT LUV CELG META VLO KATE
2014-01-31 META MU WYNN DAL URI ILMN LUV BX GILD HII NFLX AAL TMO LMT INCY
2014-02-28 BKNG WYNN META TMO URI LMT TSLA MU MTCH MGM ILMN DAL BX AAL LUV
2014-03-31 URI LUV DAL HP LMT MSFT TSN GLW HPQ NOC RCL FSLR STZ AVGO GD
2014-04-30 MU DAL HPQ LUV LYB LMT DD CAT HAL URI BKR GD TRGP HP GLW
2014-05-30 MU LUV URI GD DAL WLL EOG MAR LYB SLB MRO AAPL WMB GMCR AVGO
2014-06-30 MU HAL SLB EOG WLL COP MRO MAR META PANW DVN FRX ILMN URI AAPL
2014-07-31 AAPL META LUV INTC MAR URI LRCX AMT MSFT GILD LYB GMCR COP SWKS GD
2014-08-29 GILD AAPL URI LUV MAR KLAC MSFT MU LYB INTC STX HPQ AMAT AMT MCO
2014-09-30 META MO MSFT GILD LUV LMT LRCX GD MU KLAC MAR RCL INTC UNP AAPL
2014-10-31 MO AAPL GD GILD AMGN UNH MAR LMT MCO CVS ABBV LUV REGN PANW KDP
2014-11-28 AAPL LUV MO ABBV LOW GD PANW AMGN MU KR RCL GMCR INTC BBWI MNST
2014-12-31 BBWI KR LOW ORLY RCL DAL CVS HD UAL LUV FTNT WELL SHW EA SWKS
2015-01-30 MO KR CVS BBWI LUV WELL SHW LOW ED KDP PCG AAPL SWKS PANW UNH
2015-02-27 BBWI MO LOW DLTR CVS KR COR PANW ROST CI CNC HD TXN AAPL MNST
2015-03-31 COR KR BBWI CNC CI DRI DLTR SWKS TGT LOW PANW ELV CVS KSS UNH
2015-04-30 BX COR SBUX HSP ABMD PANW FTNT ULTA SPGI VMC AAPL AET ORLY NFLX DIS
2015-05-29 BX SBUX PANW REGN SWKS CI AET GILD ELV ABMD EXPE HSP UNH NXPI AVGO
2015-06-30 GILD SBUX PANW DIS NKE HAS AET MA CI EA KRFT EXPE AMZN CVS BTUUQ
2015-07-31 SBUX NKE AMZN ORLY DIS REGN PANW EXPE AYI CVS HD FTNT HAS V NCLH
2015-08-31 ORLY NKE HD SBUX AMZN MO STZ PGR LMT AZO CASY AYI EBAY DHI V
2015-09-30 MO ORLY SBUX ED PSA NKE AMZN PANW PGR HD EXR LMT HRL BBWI EQIX
2015-10-30 MO AMZN ORLY SBUX MCD EXPE META BKNG NOC PSA V EQIX MAS HD LUV
2015-11-30 GOOGL HD AMZN PSA MCD HRL META NVDA ABMD SBUX VLO GOOG GE VRSN V
2015-12-31 MCD GE GOOGL PSA HRL AMZN HD META MSFT GOOG ABMD NVDA MO EQIX NOC
2016-01-29 MCD PSA HRL GOOGL META MO MSFT VZ STZ GE T GOOG EXR EQIX HD
2016-02-29 T VZ MO HRL ED CPB MCD ISRG TSN NOC AEP KLAC KMB O SO
2016-03-31 VZ PSA T MCD ED DLR PM KLAC NI ISRG GE AEP SO EVRG AEE
2016-04-29 ISRG IDXX T BAX EW EVRG NOC AWK NVDA UNH CZR MCD TSN HAS LMT
2016-05-31 NVDA DLR ABMD EQIX ULTA AMZN MDR WCG EVRG AMAT IDXX SPGI CPRT CZR AMD
2016-06-30 T MO DLR CCI AWK EQIX NOC ISRG IDXX IRM SYK LMT WM HII NI
2016-07-29 NVDA TXN AMAT DHR PLD WCG NEM AMZN LLTC MDR TSN ULTA ABMD SIVB T
2016-08-31 AMAT NVDA AMZN DHR CHTR TXN MKTX GEN X MCHP ALGN IDXX XYL AMD INTC
2016-09-30 AMZN NVDA AMAT SPGI GEN ISRG CHTR HPQ QCOM EBAY X META INTC MPWR EW
2016-10-31 DHR NVDA META TXN GEN QCOM LRCX AMAT DPZ MSFT ANET TDG HPE ADBE AMZN
2016-11-30 AMAT NVDA LRCX UNH TXN NOC BBY ADI STLD MCHP PH AMD CAT LVS ROST
2016-12-30 NVDA JPM GS X UAL AMD RF KEY PNC TWX ZION CFG URI PRU BAC
2017-01-31 CHTR URI AMAT IP MU CSX SCHW NVDA TMUS WDC CMCSA LRCX NSC IDXX MTB
2017-02-28 BA AAPL JPM BAC IDXX BKNG AMD PNC HII NTAP AMAT UNM INCY LUV CLF
2017-03-31 AMAT LRCX BKNG ADBE AAPL IDXX KLAC GEN MU MAR PH ANET META TER WDC
2017-04-28 AMAT LRCX ADBE CHTR BKNG BA IDXX AAPL ISRG HPQ CCL META BBY TER GEN
2017-05-31 AMAT ADBE ISRG LRCX AAPL NVDA MAR GOOGL ANET MU PYPL AMZN PAYC IDXX MCD
2017-06-30 BA ISRG ADBE PYPL CCL MCD VRTX LUV SPGI CSX TSLA NVDA REGN ELV ANET
2017-07-31 PYPL BA BKNG NVDA META LRCX PGR SPGI ADBE AMAT CHTR VRTX MA CDNS MCD
2017-08-31 RCL UNH PYPL AMT ADBE CCL VRTX ISRG META NVDA MCD BA ANET MA LRCX
2017-09-29 LRCX AMAT MU BA MA PYPL CBOE NVDA CAT ISRG ABBV ANET V XYZ CDNS
2017-10-31 MU LRCX AMAT CAT ISRG PYPL NVDA CDNS TXN MA ON CBOE ADBE MAR XYZ
2017-11-30 BA PHM DHI ISRG ANET URI ABBV DE MAR PYPL CBOE CAT HD TWTR VLO
2017-12-29 BA MAR TXN CAT URI DHI HD DE PGR WYNN ANET BBBY PH V EL
2018-01-31 BA MAR AMZN ANET MSFT MA PYPL NVDA HD ADBE ABBV CSCO DE ON TWTR
2018-02-28 MA BA EL ADBE MU AMZN ANET NOW ABBV CSCO MSFT NFLX NVDA NOC MAR
2018-03-29 EL MU MA ADBE PANW MPC NOW ABMD BR XYZ PGR INTC INTU CSGP LULU
2018-04-30 VLO PANW EL LULU ADBE PSX NTAP INTU MA ABMD AMZN CSCO WYNN PAYC PGR
2018-05-31 VLO ADBE PANW INTU MA OXY MU LULU PSX FTNT COP V M INTC OKE
2018-06-29 NTAP MA CRM INTU AMZN LULU V SPGI ADBE M NFLX ETSY ISRG OXY COP
2018-07-31 MSFT CTAS ORLY ISRG AMZN PSX ABMD M PFE CSX WAB V EHC RHI AAPL
2018-08-31 ORLY AMZN ISRG ABMD NTAP LULU TJX MSFT AAPL V CNC ETSY MA ROST CRM
2018-09-28 PFE ABMD ORLY V ISRG ABT AMD MA CRM LULU MSFT HET FTNT INTU TJX
2018-10-31 VZ ROST PFE TJX MRK AAPL ESRX LLY SPG MKC DG HRL ABT HCA CME
2018-11-30 PFE VZ UAL MRK SBUX LLY MCD ESRX ABT KO ETSY PG MKC HCA DELL
2018-12-31 SBUX PFE MRK VZ LLY CME ABT MCD AMT ORLY YUM PG KO AET HRL
2019-01-31 SBUX AMT REGN NOW BALL PG ETSY CMG HET PAYC WELL DOC TTD WDAY KEYS
2019-02-28 ETSY HET TTD SBUX INTU CMG AZO PGR LLY CDNS PAYC NOW DHR BA WDAY
2019-03-29 CDNS CMG INTU HET SBUX PG CSCO GIS AZO SNPS PYPL BALL AMT K O
2019-04-30 PYPL CDNS MA MSFT SBUX HET AVGO SNPS TTD V ADI MSCI CSCO NOW MCO
2019-05-31 MA SBUX PYPL PAYC CCI HSY AMT CHTR V MTCH MSFT DHR BALL GPN MCD
2019-06-28 SBUX BALL APD HET CDNS BX MSFT MA DHR V ERIE SNPS LMT MSI TTD
2019-07-31 SBUX PG HSY V MA BX MTCH CMG SNPS PAYC TTD ABT LULU SPGI HET
2019-08-30 SBUX CMG BALL HET CCI SPGI HSY LMT SBAC PG SYK SNPS TSN YUM KO
2019-09-30 T HET LRCX PG NEE KLAC SO ETR PHM MLM ES TER LMT CPB DHI
2019-10-31 T CHTR PHM HET LRCX BMY KLAC NEE STX ETR WU EW SO AMAT LEN
2019-11-29 AAPL HET LULU TGT ANSS MSFT AMGN AMAT CDAY AMD PODD VRTX URI WU FTNT
2019-12-31 AAPL HET LRCX MSFT ANSS TER BMY MCO MU JPM AMGN URI NVDA LULU AMD
2020-01-31 MSFT HET AAPL SPGI MCO LMT NEE PAYC MA TDG CHTR CPRT ADBE TYL SO
2020-02-28 HET MSFT ADBE BMY CHTR LRCX ENPH NEE SEDG MCO NOW GOOGL NVDA VRTX AMAT
2020-03-31 MSFT NEM VRTX BMY GILD ADBE REGN NEE GEN CCI DVA TMUS CPB AMZN AMT
2020-04-30 NEM REGN GILD AMZN AMGN MSFT GIS LLY TSLA ABBV NOW TGT VRTX TMO DHR
2020-05-29 REGN VRTX EBAY ENPH LULU SNPS CDNS NEM AAPL NOW DG SPGI NVDA WST GIS
2020-06-30 EBAY AAPL MSFT ADBE AMZN TSLA PYPL ABBV SNPS NVDA CDNS CRWD NEM LULU NOW
2020-07-31 AAPL TSLA CDNS LOW NVDA PYPL DHR AMZN EBAY FAST AMD QCOM TMO LRCX NEM
2020-08-31 AAPL NVDA ADBE LOW AMZN MSFT ENPH LULU TSLA AMD META PYPL NOW BBY SEDG
2020-09-30 LOW DHR ENPH CHTR TGT DE BBY TMO TTD SEDG CRWD DHI FDX LEN NVDA
2020-10-30 ENPH DHR SEDG TTD TMO DE QCOM NOW ABMD BBY FDX MPWR POOL CTLT GNRC
2020-11-30 ENPH ETSY MRNA TTD DE TER LRCX QCOM TGT XYZ TSLA FCX CRWD GME ABMD
2020-12-31 ENPH TSLA CRWD ETSY TER FCX CDNS SEDG DE PANW LRCX TUP AVGO AMAT MPWR
2021-01-29 ENPH MRNA TSLA ETSY AMAT GME DE AVGO CRWD PENN ALB KLAC FCX CVNA CLF
2021-02-26 WBD AMAT DE VIAC ETSY PSKY BBWI ENPH FCX URI CAT MU LRCX DISCA ON
2021-03-31 AMAT VIAC BBWI GM URI DE XEC DISCA DISCK CLF IVZ WSM KSS MHK CAR
2021-04-30 FCX XEC BBWI COF HPQ KKR TPR SPG CAR CZR MOS LPX QEP STX GS
2021-05-28 BBWI XEC FCX COF DVN IVZ CLF NUE F SPG AMAT GS MS SCHW ANF
2021-06-30 MRNA TGT BBWI SIVB BX GOOGL NVDA SBNY EXR GNRC TWTR ANF DVN F IDXX
2021-07-30 MRNA TGT BX INTU GOOGL BBWI SBNY SIVB RRD FTNT CLF IDXX CRL MDP EXR
2021-08-31 SIVB GOOGL SBNY BX INTU FTNT RRD MDP PKI DHR EXR KSU GOOG CRL EPAM
2021-09-30 INTU GOOGL PANW BX SBNY MRO DVN RRD M COP NTAP DHR MDP SIVB MPWR
2021-10-29 INTU TSLA BX MSFT COP SPG NVDA FTNT GOOGL M AON KKR ORCL F ETSY
2021-11-30 MSFT PANW LOW NVDA HD AAPL ON TSLA INTU AVGO PLD MRO AMD BBWI TMO
2021-12-31 PLD EXR LOW AVGO PFE ON ABBV HD UNH PSA TMO RRD AZO SBNY ACN
2022-01-31 CVX COP ABBV EOG XOM MRO CVS DVN PFE HPQ PLD MPC AAPL MCK SCHW
2022-02-28 ABBV CVX XOM COP EOG RTX MRO GD MCK DVN OXY MPC KO LMT EXC
2022-03-31 ABBV CVX CF COP MPC REGN OXY MOS EXC MCK FCX XOM ADM EOG BRK-B
2022-04-29 ABBV BMY VRTX MO CVX KO MPC MCK XOM LLY WMB VLO COP CF EXC
2022-05-31 CVX MPC XOM EOG PFE OXY MRO DVN ABBV AMGN LLY COP VLO MCK BMY
2022-06-30 ABBV BMY PFE KO NOC VRTX K LMT LLY GIS MRK T MCK UNH AMGN
2022-07-29 XOM ON OXY CVX SNPS ENPH CF LLY CDNS CTRA MCK VICI UNH CI EQT
2022-08-31 CF GIS K MCK VRTX CI OXY CAH CPB SO ENPH MPC GPC ORLY ON
2022-09-30 MPC VRTX GIS CI ENPH K ORLY COP XOM CVS CAH CDNS UNH GPC LLY
2022-10-31 ORLY CI XOM CVX DVN AMGN MRO LMT COP MPC GILD NOC SLB AZO EOG
2022-11-30 GILD MRK ORLY DE MPC ABBV AMGN FSLR HES XOM CI GIS ODP K TJX
2022-12-30 XOM GILD SLB CAT DE CVX MRK CI ORLY PCG AIG HAL MPC ACGL LMT
2023-01-31 URI MPC FCX STLD CAT LVS ULTA FSLR BKNG SBUX GILD SLB GE NUE RE
2023-02-28 BKNG URI ACGL PH ULTA ORCL LIN STLD PGR GE ADI BWA EG RE CAT
2023-03-31 BKNG GE ADI ORCL MPC AVGO LEN CDNS ULTA DHI FSLR ON AXON JBL MCHP
2023-04-28 GE BKNG SBUX DHI LEN ORCL ORLY LW AVGO HCA LIN LVS CDNS MSFT CMG
2023-05-31 ORCL GE AAPL AVGO MSFT CRM CDNS CMG NFLX META PHM DHI PANW DRI LLY
2023-06-30 AAPL PANW ORCL PHM GE LEN RCL AVGO DHI META DAL NFLX ISRG UBER ON
2023-07-31 META TTD ON PLTR AVGO UBER LRCX ADBE BKNG RCL ABNB SMCI GE AAPL AMAT
2023-08-31 ADBE ETN AVGO BKNG CSCO PH ORCL CAT CMCSA LLY MPC NVDA INTU GE TJX
2023-09-29 BKNG HAL MPC PSX META CAT SLB CHTR FDX SNPS GOOGL APO MAR UBER CMCSA
2023-10-31 MSFT ADBE MPC SNPS NOW CSCO ANET AVGO CME CDNS ETN META LIN LLY VRTX
2023-11-30 NOW PANW UBER CRWD ADBE PLTR MSFT SNPS INTU META IBM CRM CDNS RCL COIN
2023-12-29 AVGO BKNG UBER RCL INTU CRWD LULU DHI QCOM COIN META AMD NOW LRCX CRM
2024-01-31 NVDA NOW META UBER PANW CRWD CRM AVGO IBM NFLX ANF AMGN SMCI INTU KKR
2024-02-29 GE META NVDA AVGO UBER PLTR CRM ANF SMCI CMG CRWD LLY LRCX AMAT NFLX
2024-03-28 GE NVDA CAT SMCI CMG PGR ALL ETN NRG PCAR VRT COIN VST HOOD JPM
2024-04-30 GE APH ETN NVDA CMG DAL PH AXP VRT PGR WFC NRG VST NXPI DELL
2024-05-31 NVDA APH QCOM NTAP ANF ETN VST GPS EME HOOD AMAT CEG GE GDDY RCL
2024-06-28 NVDA NTAP AMAT LLY CRWD GOOGL COST AVGO APH META ANET REGN NFLX KLAC AMZN
2024-07-31 KKR NVDA IRM GS CTAS NTAP THC VRTX TRGP RTX LMT HWM GDDY AXP URI
2024-08-30 PGR MCO PLTR MO CTAS WMT GDDY MSI IRM TRGP REGN RTX PM TMUS LMT
2024-09-30 PLTR IBM LMT FICO T TMUS GE CVNA ORCL WELL VST APP EBAY WMT KKR
2024-10-31 BKNG PLTR NVDA TMUS T NFLX META KKR RCL CVNA APP TRGP FISV BX IRM
2024-11-29 PLTR BKNG TMUS RCL NFLX UAL WMT DASH HOOD KKR APP FISV FICO TRGP CCL
2024-12-31 PLTR NFLX WMT BKNG NOW HOOD AVGO UAL FOX PYPL FTNT MRVL V KMI GDDY
2025-01-31 META NFLX WMT PLTR HOOD COIN BSX VST RCL MMM AMZN UAL V CCL DASH
2025-02-28 T V GILD TMUS FOX CSCO NFLX FOXA MMM FTNT MA ETR META BSX WELL
2025-03-31 MO T GILD TMUS V AJG PGR ORLY PM VRSN DUK WELL BRO AEP BRK-B
2025-04-30 NFLX T MO PM PLTR BKNG VRSN AMT GILD CME ORLY MCK FTNT V PGR
2025-05-30 AVGO NFLX PLTR HOOD PM BKNG GE CAH MO EBAY CME INTU GEV CRWD HWM
2025-06-30 NFLX RCL HOOD IBM AVGO BKNG APH META CAH PLTR GE GEV CSCO UBER DASH
2025-07-31 NVDA APH AVGO MSFT GE PLTR STX HOOD WDC GEV ORCL C SCHW CAT EBAY
2025-08-29 RCL STX APH GOOGL NEM CCL NVDA AVGO C WDC ANET MO LITE PLTR HOOD
2025-09-30 APH STX NVDA PLTR GOOGL WDC AVGO NEM HOOD LRCX GE C APP GLW GS
2025-10-31 GOOGL MU APH LRCX AVGO WDC STX PLTR NVDA KLAC TEL GOOG GE GLW WBD
2025-11-28 GOOGL AVGO MU JNJ STX WDC NEM AMAT GOOG WELL LITE APH WBD LRCX HCA
2025-12-31 MU LRCX WDC WBD C GOOGL JNJ NEM EXPE GM LITE KLAC ECHO CIEN LLY
2026-01-30 MU JNJ GOOGL WDC LRCX NEM STX KLAC ADI AMAT GILD TER CAT XOM GOOG
2026-02-27 ADI JNJ WDC NEM AMAT CAT TER ATI MU FDX LITE LRCX FCX KLAC FTI
2026-03-31 WDC JNJ STX XOM ROST KLAC LITE LRCX FTI NEE CVX CAT AMAT CIEN CF
2026-04-30 WDC ADI MU STX GOOGL AMD MRVL CAT MPWR AMAT LRCX KLAC TER LITE FDX
2026-05-29 MU WDC STX AMD LRCX MRVL CSCO AMAT KLAC ADI AAPL TXN ON AVGO DELL
2026-06-26 MU MRVL LRCX KLAC AMAT STX CAT TER SPG AMD GLW DAL INTC PANW FTNT
Scoring script (python)
FORMULA_NAME = "Explore Regime Momentum Recovery Quality Hybrid (Conflict-Arbitrated Relay, v1186)"
LOGIC_VARIANT_COUNT = 4
NOTES = """mode=explore; family=regime-momentum-recovery-quality-hybrid
New hybrid family built as a conflict-arbitrated relay instead of a static blend: leadership momentum, repair-and-recovery, and quality-franchise defense each earn the right to lead only when their own confirmation tests pass, and the regime branch decides how harshly conflicting evidence is penalized. The explicit arbitration is stock-level: leadership is blocked when momentum outruns trend quality or volatility control, repair is blocked when drawdown lacks internal improvement, and defensive franchise names jump the queue when tape conditions are weak or dispersion is likely high.
Deliberate metric coverage this run: momentum actively uses 1m, 3m, 6m, and 12_1 with different sleeve roles; trend/recovery actively uses both 200d distance and 52-week-high distance; volatility is active through realized_vol_3m; liquidity actively uses avg_daily_dollar_volume_3m, avg_daily_volume_3m, and trading_days_3m; income actively uses dividend_yield_ttm_pct; valuation actively uses forward_pe and peg; growth actively uses revenue_growth_pct, forward_eps, and free_cash_flow_growth_pct; quality actively uses operating_margin_pct and free_cash_flow_margin_pct; size is deliberately active only as a mild market_cap stability tilt. Deliberate weight-0 metrics this run: return_12m_pct, dividend_ttm, pe, eps_growth_pct, operating_income_growth_pct, shares_outstanding, close, adj_close, high_52w, ma_200d, eps_ttm, revenue_ttm, operating_income_ttm, free_cash_flow_ttm.
"""


def score_universe(stocks, regime, ctx):
    def _iter_items(obj):
        if isinstance(obj, dict):
            items = []
            for k, v in obj.items():
                if isinstance(v, dict):
                    row = dict(v)
                    if "symbol" not in row:
                        row["symbol"] = k
                    items.append((row["symbol"], row))
            if items:
                return items
        items = []
        for row in obj:
            if isinstance(row, dict):
                sym = row.get("symbol") or row.get("ticker") or row.get("Symbol")
                if sym is not None:
                    items.append((sym, row))
        return items

    items = _iter_items(stocks)
    if not items:
        return {}

    def _to_num(v):
        if v is None or isinstance(v, bool):
            return None
        try:
            x = float(v)
        except Exception:
            return None
        if x != x:
            return None
        return x

    def _get(row, key):
        return _to_num(row.get(key))

    def _rank_map(metric, direction):
        vals = []
        for sym, row in items:
            v = _get(row, metric)
            if v is not None:
                vals.append((sym, v))
        if not vals:
            return {}
        vals.sort(key=lambda x: x[1], reverse=(direction > 0))
        n = len(vals)
        if n == 1:
            return {vals[0][0]: 1.0}
        out = {}
        i = 0
        while i < n:
            j = i + 1
            while j < n and vals[j][1] == vals[i][1]:
                j += 1
            rank = (i + (j - 1)) * 0.5
            score = 1.0 - (rank / (n - 1))
            for k in range(i, j):
                out[vals[k][0]] = score
            i = j
        return out

    rank_cache = {}

    def rk(metric, direction, sym):
        key = (metric, direction)
        if key not in rank_cache:
            rank_cache[key] = _rank_map(metric, direction)
        return rank_cache[key].get(sym, 0.5)

    def raw(metric, sym):
        for s, row in items:
            if s == sym:
                return _get(row, metric)
        return None

    def gate(cond, pass_value, fail_value):
        if cond is None:
            return (pass_value + fail_value) * 0.5
        return pass_value if cond else fail_value

    regime_text = str(regime if regime is not None else "").lower()
    if ctx is not None:
        regime_text += " " + str(ctx).lower()

    if any(tag in regime_text for tag in ("bull", "risk_on", "expansion", "uptrend")):
        branch = "expansion"
    elif any(tag in regime_text for tag in ("recovery", "rebound", "repair", "bottom")):
        branch = "recovery"
    elif any(tag in regime_text for tag in ("bear", "crash", "contraction", "stress", "panic")):
        branch = "contraction"
    else:
        branch = "caution"

    scores = {}
    for sym, row in items:
        mom_1m = rk("return_1m_pct", +1, sym)
        mom_3m = rk("return_3m_pct", +1, sym)
        mom_6m = rk("return_6m_pct", +1, sym)
        mom_12_1 = rk("momentum_12_1_pct", +1, sym)

        trend_200 = rk("from_200d_ma_pct", +1, sym)
        recover_52w = rk("from_52w_high_pct", +1, sym)
        low_vol = rk("realized_vol_3m", -1, sym)

        liq_dollar = rk("avg_daily_dollar_volume_3m", +1, sym)
        liq_share = rk("avg_daily_volume_3m", +1, sym)
        liq_days = rk("trading_days_3m", +1, sym)

        income = rk("dividend_yield_ttm_pct", +1, sym)
        cheap_fwd = rk("forward_pe", -1, sym)
        cheap_peg = rk("peg", -1, sym)

        growth_rev = rk("revenue_growth_pct", +1, sym)
        growth_fwd = rk("forward_eps", +1, sym)
        growth_fcf = rk("free_cash_flow_growth_pct", +1, sym)

        qual_op = rk("operating_margin_pct", +1, sym)
        qual_fcf = rk("free_cash_flow_margin_pct", +1, sym)
        size = rk("market_cap", +1, sym)

        trend_raw = raw("from_200d_ma_pct", sym)
        drawdown_raw = raw("from_52w_high_pct", sym)
        vol_raw = raw("realized_vol_3m", sym)
        rev_raw = raw("revenue_growth_pct", sym)
        fcf_margin_raw = raw("free_cash_flow_margin_pct", sym)
        op_margin_raw = raw("operating_margin_pct", sym)

        leadership_core = (
            0.25 * mom_12_1 +
            0.24 * mom_6m +
            0.18 * mom_3m +
            0.12 * mom_1m +
            0.11 * trend_200 +
            0.10 * low_vol
        )
        leadership_confirm = (
            0.45 * gate(trend_raw is not None and trend_raw > -5.0, 1.0, 0.2) +
            0.35 * gate(drawdown_raw is not None and drawdown_raw > -18.0, 1.0, 0.35) +
            0.20 * gate(vol_raw is not None and vol_raw < 55.0, 1.0, 0.45)
        )
        leadership = leadership_core * leadership_confirm + 0.06 * liq_dollar + 0.04 * liq_days

        repair_core = (
            0.22 * recover_52w +
            0.20 * trend_200 +
            0.16 * mom_3m +
            0.12 * mom_1m +
            0.10 * growth_rev +
            0.10 * growth_fcf +
            0.10 * qual_fcf
        )
        repair_setup = (
            0.40 * gate(drawdown_raw is not None and drawdown_raw < -12.0, 1.0, 0.30) +
            0.30 * gate(trend_raw is not None and trend_raw > -18.0, 1.0, 0.40) +
            0.30 * gate(
                (rev_raw is not None and rev_raw > 0.0) or
                (fcf_margin_raw is not None and fcf_margin_raw > 0.0),
                1.0,
                0.35,
            )
        )
        repair = repair_core * repair_setup + 0.05 * liq_share + 0.05 * low_vol

        franchise_core = (
            0.20 * qual_fcf +
            0.18 * qual_op +
            0.14 * cheap_fwd +
            0.12 * cheap_peg +
            0.10 * income +
            0.09 * growth_fwd +
            0.07 * growth_fcf +
            0.05 * liq_dollar +
            0.05 * liq_days
        )
        franchise_confirm = (
            0.35 * gate(op_margin_raw is not None and op_margin_raw > 0.0, 1.0, 0.45) +
            0.35 * gate(fcf_margin_raw is not None and fcf_margin_raw > 0.0, 1.0, 0.45) +
            0.30 * gate(vol_raw is not None and vol_raw < 60.0, 1.0, 0.55)
        )
        franchise = franchise_core * franchise_confirm + 0.05 * size

        conflict_penalty = 0.0
        if leadership > 0.72 and repair > 0.72 and (drawdown_raw is not None and drawdown_raw < -20.0):
            conflict_penalty += 0.08
        if leadership > 0.74 and franchise > 0.74 and (vol_raw is not None and vol_raw > 60.0):
            conflict_penalty += 0.07
        if repair > 0.72 and franchise > 0.72 and (rev_raw is not None and rev_raw < 0.0):
            conflict_penalty += 0.06

        if branch == "expansion":
            dominant = leadership
            challenger = max(repair, franchise)
            score = (
                0.62 * leadership +
                0.20 * repair +
                0.12 * franchise +
                0.03 * liq_dollar +
                0.03 * low_vol
            )
            score += 0.08 * max(0.0, dominant - challenger)
            score -= 0.10 * max(0.0, franchise - leadership) * gate(trend_raw is not None and trend_raw > 0.0, 0.2, 1.0)
        elif branch == "recovery":
            dominant = repair
            challenger = max(leadership, franchise)
            score = (
                0.50 * repair +
                0.24 * leadership +
                0.18 * franchise +
                0.04 * growth_rev +
                0.04 * qual_fcf
            )
            score += 0.10 * max(0.0, dominant - challenger)
            score -= 0.10 * gate(drawdown_raw is not None and drawdown_raw > -8.0, 1.0, 0.0)
        elif branch == "contraction":
            dominant = franchise
            challenger = max(leadership, repair)
            score = (
                0.58 * franchise +
                0.18 * repair +
                0.12 * leadership +
                0.07 * low_vol +
                0.05 * liq_days
            )
            score += 0.10 * max(0.0, dominant - challenger)
            score -= 0.11 * gate(vol_raw is not None and vol_raw > 70.0, 1.0, 0.0)
        else:
            dominant = max(leadership, repair, franchise)
            score = (
                0.36 * leadership +
                0.30 * repair +
                0.28 * franchise +
                0.03 * liq_dollar +
                0.03 * size
            )
            score += 0.06 * (dominant - min(leadership, repair, franchise))

        score -= conflict_penalty
        scores[sym] = score

    return scores