exp_1172

Explore Regime Momentum Recovery Quality Hybrid (Passport Arbitration, v1172)

← All V2 experiments
Relative return
1.023x
Excess vs bench
2.26%
Benchmark
CAPW_UNIV
Rolling windows
179 · monthly
Mean strategy gain
16.65%
Mean benchmark gain
14.08%
Mean excess gain
2.57%
Dispersion (ref)
5.30%
Win-rate vs bench (ref)
95.53%
Worst / best ratio (ref)
0.992x / 1.066x
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 4.31% 2.22% 1.020x
2011-07-01 … 2016-06-30 16.65% 13.74% 1.026x
2016-07-01 … 2021-06-30 22.58% 20.63% 1.016x
2021-07-01 … 2026-06-26 26.12% 15.48% 1.092x
All rolling windows — the objective set (equal-weighted mean ratio)
Strategy Benchmark (CAPW_UNIV) Excess
2006200720082009201020112012201320142015201620172018201920202021 -5%0%5%10%15%20%25%30%
rolling 5y windows, monthly step — 179 windows · mean ratio 1.023x · beat benchmark in 171/179
#WindowStrategyBenchmarkRatio
1 2006-07-31 … 2011-07-29 4.70% 1.79% 1.029x
2 2006-08-31 … 2011-08-31 4.91% 0.21% 1.047x
3 2006-09-29 … 2011-08-31 4.56% -0.14% 1.047x
4 2006-10-31 … 2011-10-31 3.36% 0.23% 1.031x
5 2006-11-30 … 2011-11-30 2.94% -0.05% 1.030x
6 2006-12-29 … 2011-11-30 2.86% -0.32% 1.032x
7 2007-01-31 … 2012-01-31 3.60% 0.93% 1.026x
8 2007-02-28 … 2012-01-31 4.22% 1.43% 1.028x
9 2007-03-30 … 2012-03-30 6.44% 3.09% 1.032x
10 2007-04-30 … 2012-04-30 6.13% 2.42% 1.036x
11 2007-05-31 … 2012-05-31 3.56% 0.60% 1.029x
12 2007-06-29 … 2012-06-29 5.38% 1.92% 1.034x
13 2007-07-31 … 2012-07-31 5.88% 2.69% 1.031x
14 2007-08-31 … 2012-08-31 5.97% 2.95% 1.029x
15 2007-09-28 … 2012-09-28 6.51% 3.20% 1.032x
16 2007-10-31 … 2012-10-31 4.90% 2.60% 1.022x
17 2007-11-30 … 2012-11-30 6.02% 3.45% 1.025x
18 2007-12-31 … 2012-12-31 5.89% 3.69% 1.021x
19 2008-01-31 … 2013-01-31 8.40% 5.85% 1.024x
20 2008-02-29 … 2013-02-28 7.92% 6.82% 1.010x
21 2008-03-31 … 2013-03-28 9.48% 7.73% 1.016x
22 2008-04-30 … 2013-04-30 9.39% 7.51% 1.018x
23 2008-05-30 … 2013-04-30 8.90% 7.81% 1.010x
24 2008-06-30 … 2013-06-28 8.57% 9.33% 0.993x
25 2008-07-31 … 2013-07-31 11.36% 10.48% 1.008x
26 2008-08-29 … 2013-07-31 11.43% 10.52% 1.008x
27 2008-09-30 … 2013-09-30 13.55% 11.48% 1.019x
28 2008-10-31 … 2013-10-31 15.80% 15.76% 1.000x
29 2008-11-28 … 2013-10-31 16.63% 17.46% 0.993x
30 2008-12-31 … 2013-12-31 17.93% 18.44% 0.996x
31 2009-01-30 … 2013-12-31 19.87% 20.64% 0.994x
32 2009-02-27 … 2014-01-31 22.04% 21.63% 1.003x
33 2009-03-31 … 2014-03-31 19.61% 20.60% 0.992x
34 2009-04-30 … 2014-04-30 18.71% 19.00% 0.998x
35 2009-05-29 … 2014-04-30 19.37% 18.32% 1.009x
36 2009-06-30 … 2014-06-30 21.91% 19.01% 1.024x
37 2009-07-31 … 2014-07-31 20.41% 17.39% 1.026x
38 2009-08-31 … 2014-08-29 21.64% 17.70% 1.033x
39 2009-09-30 … 2014-09-30 20.91% 16.64% 1.037x
40 2009-10-30 … 2014-09-30 21.59% 17.08% 1.039x
41 2009-11-30 … 2014-11-28 21.29% 16.82% 1.038x
42 2009-12-31 … 2014-12-31 19.68% 16.28% 1.029x
43 2010-01-29 … 2014-12-31 21.04% 17.23% 1.032x
44 2010-02-26 … 2015-01-30 20.73% 15.80% 1.043x
45 2010-03-31 … 2015-03-31 18.48% 15.40% 1.027x
46 2010-04-30 … 2015-04-30 17.16% 15.38% 1.015x
47 2010-05-28 … 2015-04-30 18.80% 17.09% 1.015x
48 2010-06-30 … 2015-06-30 19.79% 17.45% 1.020x
49 2010-07-30 … 2015-06-30 19.17% 16.43% 1.024x
50 2010-08-31 … 2015-08-31 18.00% 15.76% 1.019x
51 2010-09-30 … 2015-09-30 16.50% 13.61% 1.025x
52 2010-10-29 … 2015-09-30 15.87% 13.06% 1.025x
53 2010-11-30 … 2015-11-30 17.67% 15.09% 1.022x
54 2010-12-31 … 2015-12-31 17.17% 13.55% 1.032x
55 2011-01-31 … 2016-01-29 16.92% 11.90% 1.045x
56 2011-02-28 … 2016-01-29 16.20% 11.53% 1.042x
57 2011-03-31 … 2016-03-31 16.80% 12.90% 1.035x
58 2011-04-29 … 2016-04-29 15.39% 12.39% 1.027x
59 2011-05-31 … 2016-05-31 15.97% 12.94% 1.027x
60 2011-06-30 … 2016-06-30 16.76% 13.30% 1.031x
61 2011-07-29 … 2016-07-29 16.74% 14.52% 1.019x
62 2011-08-31 … 2016-08-31 16.28% 15.19% 1.009x
63 2011-09-30 … 2016-09-30 18.49% 16.32% 1.019x
64 2011-10-31 … 2016-10-31 16.26% 14.02% 1.020x
65 2011-11-30 … 2016-11-30 15.81% 14.66% 1.010x
66 2011-12-30 … 2016-12-30 15.28% 14.92% 1.003x
67 2012-01-31 … 2017-01-31 15.66% 14.63% 1.009x
68 2012-02-29 … 2017-02-28 15.60% 14.78% 1.007x
69 2012-03-30 … 2017-02-28 14.94% 14.43% 1.004x
70 2012-04-30 … 2017-04-28 15.46% 14.61% 1.007x
71 2012-05-31 … 2017-05-31 18.21% 15.98% 1.019x
72 2012-06-29 … 2017-05-31 17.26% 15.44% 1.016x
73 2012-07-31 … 2017-07-31 16.71% 15.43% 1.011x
74 2012-08-31 … 2017-08-31 17.12% 15.12% 1.017x
75 2012-09-28 … 2017-08-31 16.50% 14.77% 1.015x
76 2012-10-31 … 2017-10-31 18.81% 16.12% 1.023x
77 2012-11-30 … 2017-11-30 18.10% 16.79% 1.011x
78 2012-12-31 … 2017-12-29 17.97% 16.93% 1.009x
79 2013-01-31 … 2018-01-31 19.38% 17.57% 1.015x
80 2013-02-28 … 2018-02-28 19.55% 16.21% 1.029x
81 2013-03-28 … 2018-02-28 18.64% 15.81% 1.024x
82 2013-04-30 … 2018-04-30 17.23% 14.25% 1.026x
83 2013-05-31 … 2018-05-31 17.97% 14.57% 1.030x
84 2013-06-28 … 2018-05-31 18.66% 14.97% 1.032x
85 2013-07-31 … 2018-07-31 17.03% 14.83% 1.019x
86 2013-08-30 … 2018-07-31 17.82% 15.59% 1.019x
87 2013-09-30 … 2018-09-28 17.90% 15.84% 1.018x
88 2013-10-31 … 2018-10-31 15.23% 12.89% 1.021x
89 2013-11-29 … 2018-10-31 14.84% 12.60% 1.020x
90 2013-12-31 … 2018-12-31 12.12% 9.93% 1.020x
91 2014-01-31 … 2019-01-31 12.49% 12.37% 1.001x
92 2014-02-28 … 2019-02-28 12.50% 12.38% 1.001x
93 2014-03-31 … 2019-03-29 14.83% 12.76% 1.018x
94 2014-04-30 … 2019-04-30 16.13% 13.73% 1.021x
95 2014-05-30 … 2019-04-30 15.48% 13.54% 1.017x
96 2014-06-30 … 2019-06-28 14.13% 12.81% 1.012x
97 2014-07-31 … 2019-07-31 14.79% 13.30% 1.013x
98 2014-08-29 … 2019-07-31 13.99% 12.80% 1.011x
99 2014-09-30 … 2019-09-30 13.54% 12.70% 1.007x
100 2014-10-31 … 2019-10-31 13.81% 12.91% 1.008x
101 2014-11-28 … 2019-10-31 13.38% 12.60% 1.007x
102 2014-12-31 … 2019-12-31 15.24% 14.16% 1.009x
103 2015-01-30 … 2019-12-31 15.48% 14.85% 1.005x
104 2015-02-27 … 2020-01-31 15.56% 14.04% 1.013x
105 2015-03-31 … 2020-03-31 11.04% 8.56% 1.023x
106 2015-04-30 … 2020-04-30 14.38% 11.65% 1.025x
107 2015-05-29 … 2020-05-29 15.02% 12.61% 1.021x
108 2015-06-30 … 2020-06-30 16.56% 13.64% 1.026x
109 2015-07-31 … 2020-07-31 17.65% 14.60% 1.027x
110 2015-08-31 … 2020-08-31 21.53% 18.07% 1.029x
111 2015-09-30 … 2020-09-30 19.96% 17.05% 1.025x
112 2015-10-30 … 2020-10-30 17.05% 14.60% 1.021x
113 2015-11-30 … 2020-11-30 19.47% 17.43% 1.017x
114 2015-12-31 … 2020-12-31 21.32% 18.65% 1.023x
115 2016-01-29 … 2021-01-29 21.83% 19.26% 1.022x
116 2016-02-29 … 2021-02-26 23.67% 19.79% 1.032x
117 2016-03-31 … 2021-03-31 21.52% 19.42% 1.018x
118 2016-04-29 … 2021-03-31 22.33% 19.66% 1.022x
119 2016-05-31 … 2021-05-28 22.75% 20.42% 1.019x
120 2016-06-30 … 2021-06-30 22.56% 21.06% 1.012x
121 2016-07-29 … 2021-06-30 22.58% 20.63% 1.016x
122 2016-08-31 … 2021-08-31 26.56% 21.75% 1.040x
123 2016-09-30 … 2021-09-30 23.89% 20.22% 1.031x
124 2016-10-31 … 2021-10-29 26.73% 22.50% 1.035x
125 2016-11-30 … 2021-11-30 27.49% 21.87% 1.046x
126 2016-12-30 … 2021-11-30 27.71% 21.75% 1.049x
127 2017-01-31 … 2022-01-31 25.09% 20.17% 1.041x
128 2017-02-28 … 2022-02-28 24.57% 18.51% 1.051x
129 2017-03-31 … 2022-03-31 25.57% 19.46% 1.051x
130 2017-04-28 … 2022-03-31 25.39% 19.46% 1.050x
131 2017-05-31 … 2022-05-31 22.43% 15.59% 1.059x
132 2017-06-30 … 2022-06-30 20.58% 13.08% 1.066x
133 2017-07-31 … 2022-07-29 19.67% 15.16% 1.039x
134 2017-08-31 … 2022-08-31 19.04% 13.72% 1.047x
135 2017-09-29 … 2022-08-31 19.03% 13.56% 1.048x
136 2017-10-31 … 2022-10-31 18.57% 11.86% 1.060x
137 2017-11-30 … 2022-11-30 18.88% 12.52% 1.057x
138 2017-12-29 … 2022-11-30 19.23% 12.46% 1.060x
139 2018-01-31 … 2023-01-31 15.34% 11.01% 1.039x
140 2018-02-28 … 2023-02-28 14.28% 11.03% 1.029x
141 2018-03-29 … 2023-02-28 14.80% 11.72% 1.028x
142 2018-04-30 … 2023-04-28 14.64% 13.01% 1.014x
143 2018-05-31 … 2023-05-31 14.08% 12.95% 1.010x
144 2018-06-29 … 2023-05-31 14.55% 13.01% 1.014x
145 2018-07-31 … 2023-07-31 17.46% 14.67% 1.024x
146 2018-08-31 … 2023-08-31 15.41% 13.51% 1.017x
147 2018-09-28 … 2023-08-31 15.29% 13.56% 1.015x
148 2018-10-31 … 2023-10-31 13.55% 12.60% 1.008x
149 2018-11-30 … 2023-11-30 15.40% 14.58% 1.007x
150 2018-12-31 … 2023-12-29 18.00% 17.26% 1.006x
151 2019-01-31 … 2024-01-31 18.78% 16.27% 1.022x
152 2019-02-28 … 2024-01-31 18.24% 15.94% 1.020x
153 2019-03-29 … 2024-03-28 20.27% 17.50% 1.024x
154 2019-04-30 … 2024-04-30 18.18% 15.50% 1.023x
155 2019-05-31 … 2024-05-31 21.37% 18.12% 1.027x
156 2019-06-28 … 2024-06-28 21.81% 17.99% 1.032x
157 2019-07-31 … 2024-07-31 20.34% 17.70% 1.022x
158 2019-08-30 … 2024-08-30 20.91% 18.41% 1.021x
159 2019-09-30 … 2024-09-30 21.31% 18.65% 1.022x
160 2019-10-31 … 2024-10-31 20.64% 17.87% 1.024x
161 2019-11-29 … 2024-11-29 21.64% 18.64% 1.025x
162 2019-12-31 … 2024-12-31 19.76% 17.62% 1.018x
163 2020-01-31 … 2025-01-31 20.27% 18.07% 1.019x
164 2020-02-28 … 2025-02-28 21.23% 19.00% 1.019x
165 2020-03-31 … 2025-03-31 21.70% 19.24% 1.021x
166 2020-04-30 … 2025-04-30 19.08% 16.49% 1.022x
167 2020-05-29 … 2025-04-30 18.47% 15.80% 1.023x
168 2020-06-30 … 2025-06-30 19.17% 18.19% 1.008x
169 2020-07-31 … 2025-07-31 18.22% 17.87% 1.003x
170 2020-08-31 … 2025-08-29 16.07% 16.69% 0.995x
171 2020-09-30 … 2025-09-30 18.71% 18.57% 1.001x
172 2020-10-30 … 2025-09-30 19.67% 19.43% 1.002x
173 2020-11-30 … 2025-11-28 19.33% 17.77% 1.013x
174 2020-12-31 … 2025-12-31 17.38% 16.92% 1.004x
175 2021-01-29 … 2025-12-31 17.12% 17.20% 0.999x
176 2021-02-26 … 2026-01-30 19.83% 17.04% 1.024x
177 2021-03-31 … 2026-03-31 19.03% 14.07% 1.043x
178 2021-04-30 … 2026-04-30 23.50% 16.03% 1.064x
179 2021-05-28 … 2026-04-30 23.05% 16.22% 1.059x
Notes
mode=explore; family=regime-momentum-recovery-quality-hybrid This hybrid combines momentum leadership, repair-driven recovery, and durable quality carry through an explicit passport arbitration system rather than a static blend. Each stock competes for three passports: leader (trend-confirmed momentum), repair (damaged but repairing), and franchise (quality, value, income, low-vol carry). The active regime branch then decides which passport is allowed to dominate, and conflict is resolved with hard gates: damaged names cannot win on momentum alone, low-quality rallies cannot win on repair alone, and defensive franchises pre-empt both when tape quality weakens. Deliberate metric coverage this run: momentum actively uses return_1m_pct, return_6m_pct, and momentum_12_1_pct, while return_3m_pct and return_12m_pct are deliberately zeroed; trend/recovery actively uses from_200d_ma_pct and from_52w_high_pct; volatility actively uses realized_vol_3m; liquidity actively uses avg_daily_volume_3m, avg_daily_dollar_volume_3m, and trading_days_3m; income rotates to dividend_ttm and deliberately zeros dividend_yield_ttm_pct; valuation rotates to pe and forward_pe while peg is deliberately zeroed; growth rotates to revenue_growth_pct and eps_growth_pct while forward_eps, operating_income_growth_pct, and free_cash_flow_growth_pct are deliberately zeroed; quality uses operating_margin_pct and free_cash_flow_margin_pct; size is used only as a light market_cap stability tilt, never as a dominant factor. Deliberate weight-0 metrics this run: return_3m_pct, return_12m_pct, dividend_yield_ttm_pct, peg, forward_eps, operating_income_growth_pct, free_cash_flow_growth_pct, shares_outstanding, close, adj_close, high_52w, ma_200d, eps_ttm, revenue_ttm, operating_income_ttm, free_cash_flow_ttm.
Lesson notes
#875 · degrade · relative_return Δ -0.3927 · parent exp_1169 · Jul 21, 2026 · auto/explore; benchmark CAPW_UNIV
explore/regime-momentum-recovery-quality-hybrid: relative_return 1.0226x (delta -0.3927 vs exp_1169); win-rate 95.5307%, worst-window 0.991719, dispersion 5.2996%.
Monthly picks — top stocks selected each month (whole timeline)
timeline — 240 months · top 15 each
Month 123456789101112131415
2006-07-31 T BAC WFC MRK JPM MO XOM PEP CMCSA ABT CVX OXY MS KR LMT
2006-08-31 T MO HPQ BAC ORCL NVDA PFE MRK KSS CSCO CMCSA LMT PEP EXC JNJ
2006-09-29 BAC MS T CMCSA ORCL GILD GS ALL LMT VZ WFC MRK JPM PFE GIS
2006-10-31 CMCSA GS NEE T MRK IBM MS TWX MCD GOOGL OKE BEN MAT VNO NVDA
2006-11-30 CSCO NEE XOM CTSH CVX PCAR HOG MTCH LMT CMCSA T MCD GS MSFT VNO
2006-12-29 T MCD CMCSA MS HPQ TWX NEE IBM VZ CSCO USB MSFT C CAG GS
2007-01-31 T NEE HPQ CMCSA CTSH BMY GS VZ IBM DOC MAT MSFT MCD TWX JPM
2007-02-28 NEE NKE ABT MAT DD ETR MCD T ICE SRE CNP BAX WY HON DUK
2007-03-30 T NEE KR AEP BAX NRG ETR ES MO PEG MCD D SYK TAP MAT
2007-04-30 BAX NEE ETR MCD KO CI IBM CVX NRG HON ANDV XOM MO EXC AAPL
2007-05-31 NRG VZ T AAPL HON HPQ MA COP KR FCX AET PRU CI ICE AMZN
2007-06-29 CVX T CE FCX MA MCD BMY GOOGL BAX AAPL XOM GOOG NOV ACN MO
2007-07-31 HON IBM FCX HPQ MMM BA UNP VZ AAPL AMZN ESRX SLB RTX GE NVDA
2007-08-31 IBM CVX BIIB CSCO HPQ DE VRSN INTC MMM COP CVS ORCL HON AAPL XOM
2007-09-28 GOOGL CVX GOOG COP HAL DE APA KO RTX XOM OXY CSCO MCD EBAY HON
2007-10-31 GOOGL GOOG APA MCD KO NKE VZ OXY MRK DVN MSFT AAPL WMB INTC CVS
2007-11-30 MO PG PEP KO CL MRK MCD NEE ESRX DE BRK-B JNJ NKE VRSN GOOGL
2007-12-31 MCD COP EOG CVX CME XOM UNH PG KO AAPL ESRX HON OXY WMB DHR
2008-01-31 MO BAX CL KO WMT EOG ABT AFL ESRX HUM COST GILD NKE BRK-B CVS
2008-02-29 HAL KO CVX OXY XOM CL AFL DVN WMB WMT BRK-B MO APA PG CF
2008-03-31 WMT KO PG AFL ABT NKE MA PEP CL MCD CSX GILD ESRX MO JNJ
2008-04-30 WMT CVX HAL UNP MOS APA OXY DVN XOM CF MA CSX COST COP IBM
2008-05-30 HAL UNP IBM CSX OXY COP MA CVX WDC WMT QCOM GILD CLF DVN FMC
2008-06-30 HAL WMT CVX COP MOS WMB EXC APA DVN BAX FMC CF GILD OXY EOG
2008-07-31 IBM BAX WMT ABT GIS JNJ BCR UNP AMGN QCOM APOL CSX CF NSC MDLZ
2008-08-29 MCD JNJ BCR GIS SWN GEN APOL DF CEPH WMT ATGE FDO AAPL CELG PG
2008-09-30 WMT MCD GIS ABT BAX JNJ MDLZ ROST PG EW PEP IBM EDS AMGN SCHW
2008-10-31 ABT MCD WMT GIS MRSH AMGN KR ED WWY DLTR CPB CLX CHD WFC SHW
2008-11-28 MCD WMT KR SO GIS AMGN AON SHW DLTR ED XOM CHD CLX SJM BMY
2008-12-31 BMY AMGN MCD GILD WMT SO KR SHW PFE DGX EW VZ WM CHRW XOM
2009-01-30 ABT BMY MCD AMGN GILD ED EW SJM ROH DLTR HSY NFLX WEC SWN PCG
2009-02-27 VTRS NFLX PCG AZO DLTR AAP AMZN ORLY NEM MNST VRTX EW DRI BKNG XEL
2009-03-31 BMY ROST AMZN DLTR NFLX BR ED NEE MNST AZO NEM KSS EW DRI INTU
2009-04-30 YUM NFLX ORCL HD KSS ROST AMZN AAPL BKNG GEN IBM IRM MNST GWW ESRX
2009-05-29 IBM NEE KO GPS MCD ORCL AMZN NEM AAPL YUM ROST TJX WBD NKE CL
2009-06-30 AAPL ORCL MSFT TJX QCOM AMZN ELV CTSH NEE FISV CL NFLX BKNG WBD ROST
2009-07-31 AAPL MCHP AMGN INTC CSCO IBM TJX WBD TXN F BEN ROST ADBE BKNG ORCL
2009-08-31 AAPL MSFT WBD BSX JPM WDC BKNG CTSH TGT RTX MU INTC HPQ BEN EBAY
2009-09-30 AAPL WBD ISRG GS OXY MSFT CSCO CTSH GOOGL GNW KLAC BEN BKNG GOOG MSI
2009-10-30 AAPL MSFT MA V ISRG WBD GOOGL GOOG BEN TT TWX ADBE OXY IBM TJX
2009-11-30 MSFT ISRG AAPL WBD GOOGL MA BKNG CCI GOOG F BMY AXP MRK CTSH TT
2009-12-31 ISRG V AAPL MA GOOGL MMM GOOG MSFT SPG F CCI MU WDC CRM WLL
2010-01-29 MSFT ISRG PFE MA MMM V AMT SYK GE GIS PG F WBD MO RTX
2010-02-26 ISRG SPG AAPL MSFT BKNG WLL GNW CLF F UAL CCI PXD PG SNDK CTSH
2010-03-31 AAPL DIS BKNG BMY GE SYK WLL GNW HON MA HST V AMD ISRG CMCSA
2010-04-30 WBD AAPL ISRG DIS WLL LVS FITB MCD HBAN RF MMM HST PSKY CSX MSFT
2010-05-28 AAPL WBD INTU MCD TJX INTC HD HAS COR ESRX DAL MO TGT CMCSA SPG
2010-06-30 AAPL MO BMY MCD MMM WBD AMT NEM CMCSA INTU BRK-B CCI COR CTSH GIS
2010-07-30 MO AAPL CMCSA MCD INTU WBD SPG MCHP BBWI COP CRM LVS NTAP CTSH MMM
2010-08-31 MCD MO AAPL BMY T AMT NEM CCI CTSH INTU SPG BKNG WBD NFLX VZ
2010-09-30 AAPL MO TXN AMT ORCL WBD MCHP AMZN CCI BKNG QCOM NTAP VZ MCD BMY
2010-10-29 AAPL MO TXN ADI MCD ORCL INTU CMCSA EBAY AMT BKNG MCHP YUM SPGI UNP
2010-11-30 AAPL TXN QCOM MCHP ADI MCD BKNG KO HON F NKE UNP LVS CAT AZO
2010-12-31 ORCL COP AAPL FCX QCOM BKNG TXN WLL AIG DE CVX CAT CTSH OXY TT
2011-01-31 AAPL TXN QCOM BKNG ADI ORCL MCHP XOM COP DE CSX TER HON NOV DVN
2011-02-28 QCOM TXN AAPL CMCSA COP CVX BKNG KLAC PSKY NOV XOM TER CSX GE WMB
2011-03-31 BKNG LULU CAT CVX COP DE CMG CSX HAL TXN SBUX WMB PSKY BKR GILD
2011-04-29 BKNG MCO MCHP ORCL OXY LULU BBWI CMCSA WYNN QCOM XOM INTC CAT CVX LYB
2011-05-31 PFE MCO CF QCOM MA MO SPG PM PSKY MNST WYNN AXP NFLX MSI T
2011-06-30 BKNG ISRG MA LULU CMG MNST SBUX ACN UNH BEN TDC IBM MCD PSKY AXP
2011-07-29 AAPL MCD BKNG WYNN SPG CF D GILD MA V ISRG IBM LULU MO CMG
2011-08-31 AAPL CF MCD BKNG V MA WYNN ISRG ABT MO BMY VZ MSFT KO BBWI
2011-09-30 AAPL V INTC MA MCD BMY VZ ISRG MO IBM AMGN D DUK PG ABT
2011-10-31 KLAC AAPL CF INTC V ISRG MCD MA SPG BKNG BMY MSFT BIIB CTRA DECK
2011-11-30 MA V MCD INTC KLAC BMY MO VZ PFE QCOM ISRG AMT AAPL ED PM
2011-12-30 AAPL V MCD KLAC PFE BMY VZ ISRG MA INTC MO AMGN GE AEP SPG
2012-01-31 AAPL INTC GILD CF V KLAC MCD AMGN CMCSA MA MSFT SPG AMT ISRG TJX
2012-02-29 AAPL V MA MSFT CMCSA ISRG INTC BKNG FAST TJX QCOM AMGN MO PM HD
2012-03-30 AAPL QCOM BKNG INTC KLAC ISRG V WBD SPG CMCSA CSCO SBUX PFE TJX IBM
2012-04-30 V MA INTC BKNG ISRG AAPL CMCSA SPG WBD MSFT CCI AMGN MO CF PFE
2012-05-31 AAPL CMCSA NEE V GE MO AMGN SPG GILD CCI AMT MSFT DIS PFE BMY
2012-06-29 CMCSA V AAPL GE MO BKNG CF MSFT MA AMT WBD NEE GILD SPG CCI
2012-07-31 AAPL V CMCSA MO AMGN NEE GILD PFE AMT SPG GE MA CCI BMY BKNG
2012-08-31 AAPL GILD CMCSA AMGN STX WBD GE CF PFE SPG CCI EBAY HD AEP V
2012-09-28 GE CF CMCSA GILD AAPL WBD MA PFE V AMGN NEE DIS GOOGL HD GOOG
2012-10-31 CMCSA AMGN V AMT GILD CCI MA PFE WBD NEE MCO AEP ALL EBAY MRK
2012-11-30 AMGN V GILD MA CMCSA EBAY CF QCOM CSCO WBD TWX CCI HD MO MCO
2012-12-31 STX CMCSA ORCL CCI V ADBE WBD AMT MCO GILD AMGN BAC APTV LYB GS
2013-01-31 WBD MCO GILD STX CF PFE V EBAY GS WYNN STT ORCL CAG SYK SCHW
2013-02-28 GILD WBD AMGN CMCSA GE V MA MMM CAG BRK-B TWX JPM SYK PFE K
2013-03-28 GILD AMGN MA CMCSA PFE V WBD BMY ADBE STX KR JNJ HON NEE K
2013-04-30 GILD DIS NEE AMGN MCO JNJ MA ADBE WBD VZ TWX KR GIS STX K
2013-05-31 GILD CSCO GS JPM STX MCO BMY AXP BRK-B HD MSFT WFC BA WBD SLM
2013-06-28 MA BKNG V CSCO STX GILD CMCSA WFC NKE BA JNJ NEE HON SBUX KEY
2013-07-31 GILD MA MMM RTX TXN BKNG CSCO JNJ MCO AMGN CMCSA SPGI K JPM ORLY
2013-08-30 BKNG META GILD MA MSFT AMGN CI WYNN OMX MGM FLT NOC EOG DD TSLA
2013-09-30 BKNG META MA GILD WYNN REGN MCO MGM V SPGI NKE OMX BA RTX KR
2013-10-31 MA GILD BKNG MMM TXN GE SBUX META BMY KR SLB BA OMX GNW SPGI
2013-11-29 BKNG MA MMM GILD MSFT CMCSA MS NKE BX QCOM META SPGI MCO COR BAC
2013-12-31 MA V META WYNN MMM URI ABBV LVS GILD BX GE MCO VLO MGM ORCL
2014-01-31 META GILD BKNG MSFT CMCSA GOOGL GOOG WYNN AMGN URI MU V AAL ESRX QCOM
2014-02-28 BKNG V META MA GILD WYNN URI REGN BX DIS LYB BMY GOOGL GLW MCO
2014-03-31 MSFT ORCL QCOM EOG TXN WFC MCHP URI CF GLW FITB BX DD BAC UNP
2014-04-30 AAPL ORCL EOG QCOM GILD MMM MU LYB DD MSFT META AEP WFC SLB BKR
2014-05-30 META EOG AAPL BKNG AMT WMB COP LYB MU URI ORCL SLB MO DVN GILD
2014-06-30 META EOG COP SLB AAPL INTC MU AEP GILD HAL DVN MSFT WFC GLW NEE
2014-07-31 MSFT AAPL META GILD AMT ORCL INTC URI DIS SPG BKNG VZ EOG INTU KLAC
2014-08-29 GILD AAPL MSFT KLAC MU MO MCO AMT AMGN META URI INTC LYB UNP DIS
2014-09-30 MSFT META MO GILD KLAC MU AAPL ABBV MCO AMGN INTC UNP LRCX CSCO INTU
2014-10-31 AAPL GILD MO AMGN MSFT ABBV V MCO META MMM AMT SPG KR MA INTC
2014-11-28 AAPL MO INTC ABBV MU AMT V AMGN CSCO META MSFT KLAC KR LOW TXN
2014-12-31 KR MO V MMM META LOW HD MS ORLY ED CSCO AMGN PG CVS AAPL
2015-01-30 MO AAPL KR GILD CCI TXN SPG ED MMM PSA PCG SO V AMGN WELL
2015-02-27 MO TXN V AAPL MA DLTR DIS LOW SPGI CI KR CSCO INTU COR MMM
2015-03-31 META SBUX KR AAPL COR COST AMGN CI DLTR BX TGT CNC V LOW DG
2015-04-30 AAPL SBUX BX V MA MCO CSCO KMI CCI COR INTU DIS HAS BNY BK
2015-05-29 GILD AAPL SBUX BX V MA DIS CSCO MCO INTU REGN GS JPM ADI PFE
2015-06-30 GILD MA SBUX AAPL META DIS CMCSA MCO NKE JPM GS HAS V CVS BX
2015-07-31 SBUX MA META V AMGN DIS GILD NKE EBAY BKNG ORLY CMCSA KR MCO MO
2015-08-31 MO SBUX MA V META ORLY CCI BKNG PSA HD EBAY GOOGL NKE SYK DHR
2015-09-30 MO SBUX MA PSA META V BKNG MCD SO ORLY ED SPG NKE GOOGL MDLZ
2015-10-30 MO V META BKNG SBUX MCD MA GOOGL CMCSA INTC PSA CSCO AMT SPG ORLY
2015-11-30 GOOGL V META PSA MCD MO SBUX HD ADBE DHR GE MSFT EBAY VLO TXN
2015-12-31 MO GOOGL MCD GE PSA META V SBUX SO CCI MSFT MA MDT HD ISRG
2016-01-29 MCD MO GOOGL META PSA VZ SBUX SO MSFT GE TXN V PG ADBE CCI
2016-02-29 VZ MO MCD T ISRG GE SPG META GOOGL MMM MDT ED DAL PSA TXN
2016-03-31 VZ MCD PSA GE T SPG META ISRG GOOGL ED TXN MSFT PM MO EXC
2016-04-29 META MCD T MO ISRG BAX JNJ VZ HAS DHR ED NEE HON XOM PM
2016-05-31 META ADBE MO T SPGI HAS CCI ISRG GOOGL VZ CSCO TXN NVDA NEE ABBV
2016-06-30 MO VZ T CCI ISRG MDT SPG AMT TXN CMCSA ED JNJ NEE MMM K
2016-07-29 TXN CSCO T DHR ISRG META SPG SPGI QCOM TSN EW AMGN NVDA BSX ABBV
2016-08-31 META CSCO INTC TXN MSFT SPGI DHR AMZN AMAT EBAY ISRG GEN ADBE NVDA AMGN
2016-09-30 META ISRG BKNG INTC SPGI PG AMZN QCOM TXN HPQ NVDA GEN EBAY CSCO ADBE
2016-10-31 META TXN DHR MSFT MA GOOGL CSCO QCOM SPGI MO PG LRCX BKNG AMT ADBE
2016-11-30 TXN DHR CMCSA AMAT ADI JPM BKNG QCOM NVDA CSX IBM MSFT LRCX MS UNH
2016-12-30 NVDA MSFT AAPL JPM DHR T AMAT GS PNC USB DD TFC TXN HLT C
2017-01-31 CMCSA DHR AAPL BKNG AMAT TXN ADBE IBM NVDA MSFT SPGI GLW DIS MO GEN
2017-02-28 AAPL CSCO BKNG AMAT JPM ADI ADBE IBM MO BA SPGI AXP META MS BAC
2017-03-31 META AMAT AAPL TXN MSFT BKNG ADBE NVDA LRCX CCL GEN ADI KLAC MA DIS
2017-04-28 META MSFT AMAT GOOGL ISRG BKNG ADBE CMCSA CCL MCD AAPL HD LRCX UNH GEN
2017-05-31 ISRG AMAT GOOGL META AAPL MA ADBE MCD NVDA V MSFT CMCSA MO ADI MMM
2017-06-30 ABBV ADBE META ISRG MCD SPGI ORCL CCL AMGN MA NVDA AMT BKNG PYPL AMAT
2017-07-31 META MA V BKNG SPGI AMAT ADBE NVDA MSFT MCD PYPL AMT ISRG LRCX AAPL
2017-08-31 V MA MSFT META ADBE ABBV AMT MCD ISRG AAPL NVDA CCL LRCX CCI PYPL
2017-09-29 MA AMAT V LRCX TXN ABBV ISRG META NVDA PYPL SPGI MU BMY MSFT C
2017-10-31 TXN V MA NVDA MU ISRG AMAT META MCD MSFT LRCX INTC PYPL ADBE AAPL
2017-11-30 V ABBV ISRG ANET MSFT MA MMM MCD BA ADBE DHI PYPL HD CSCO NVDA
2017-12-29 TXN V MSFT MA ABBV CSCO MCD INTC META MAR HD ANET BA MU PGR
2018-01-31 MSFT MA GOOGL V NVDA ADBE ANET PYPL ABBV CSCO ISRG MU TXN MMM JPM
2018-02-28 MA MU ADBE V MSFT ABBV TXN INTC AMAT CSCO NVDA AAPL ISRG ANET BAC
2018-03-29 MU MA ADBE V BKNG INTC LRCX AMT NEE MSFT INTU EL NVDA YUM CSCO
2018-04-30 V BKNG MA ADBE ANET CSCO INTU PSX PANW MSFT MCD VLO ISRG YUM OXY
2018-05-31 MU V MA ADBE TXN MSFT AAPL NVDA INTU META INTC MCO SPGI EXR PANW
2018-06-29 MA V ADBE MSFT META SPGI INTU ISRG CSCO AAPL MCO EXR MU CRM TJX
2018-07-31 PFE V MSFT MA ISRG ADBE AAPL GOOGL AMGN MU INTU SPG PSX CSX AMZN
2018-08-31 V AAPL MSFT MA PFE ADBE NVDA CSCO INTU ISRG TJX SPG VZ MDT CPRT
2018-09-28 PFE V MA DIS MSFT ADBE INTU AAPL AMGN CSCO ORCL MDT ISRG NVDA TJX
2018-10-31 PFE AAPL DIS SPG VZ KO MO MRK MCD CMCSA JNJ V TJX MSFT PG
2018-11-30 PFE VZ SBUX KO MCD AMGN JNJ PG MRK CMCSA MDT DELL SPG V AMT
2018-12-31 PFE SBUX VZ MCD KO DIS PG AVGO AMT MRK AMGN YUM NEE DUK MDT
2019-01-31 SBUX PG AVGO AMT MA REGN PAYC MDLZ VRTX PFE SPG CSCO PLD YUM EXC
2019-02-28 SBUX MRK AVGO PG VZ MCD CMCSA MA V CSCO INTU DHR INTC AMT NEE
2019-03-29 AVGO PG V SBUX MA MCD CSCO CCI NEE MSFT PYPL INTU MRK ORCL PEP
2019-04-30 MSFT MA V PYPL SBUX CSCO ADBE CMCSA PG META AVGO TXN LRCX ADI MCO
2019-05-31 MA V MSFT SBUX MCD PYPL CCI NEE DIS PG KO DHR CMCSA CSCO PEP
2019-06-28 V MSFT MA SBUX ORCL LIN ADBE CDNS PG ADI PYPL DHR TMO AVGO DIS
2019-07-31 V MSFT MA DIS PG SBUX MCD AAPL SPGI TXN MDT KO MCO INTU CMCSA
2019-08-30 MSFT CCI MA V KO MCD MDT NEE T SBUX QCOM SPGI AMGN PEP INTU
2019-09-30 MSFT NEE T TXN SO AAPL LRCX PLD CMCSA KLAC MDT KO PEP JPM NXPI
2019-10-31 BMY MSFT AMGN T NEE AAPL V MDT INTC MA SPGI CCI LRCX PLD SO
2019-11-29 AMGN MSFT AAPL MA VRTX PLD QCOM ADBE JPM META INTC AVGO AMAT HET V
2019-12-31 MSFT AAPL BMY AMGN JPM QCOM NEE ADBE T MCO INTC MA SPGI LRCX MU
2020-01-31 MSFT MA NEE V GOOGL BMY ADBE SPGI KO INTC AAPL MCO MDT JNJ SO
2020-02-28 ADBE MSFT BMY NEE VRTX GOOGL ABBV KO T LRCX MA AMAT V MCO NVDA
2020-03-31 MSFT GILD BMY ADBE NEM NEE ABBV VRTX GEN AMGN KR AAPL CCI AMT NVDA
2020-04-30 MSFT ABBV AAPL META ADBE GOOGL NEM GILD BMY AMGN PFE DHR JNJ SPGI LLY
2020-05-29 ABBV GOOGL META MSFT ADBE AAPL REGN V PYPL VRTX EBAY NVDA MA SPGI INTC
2020-06-30 MSFT ABBV AAPL ADBE EBAY QCOM META NVDA PYPL ORCL GOOGL SPGI NEM CDNS DHR
2020-07-31 AAPL META QCOM NVDA EBAY MSFT ABBV DHR CDNS NEE ADBE PYPL NEM TMO SPGI
2020-08-31 AAPL MSFT META ADBE NVDA PG MA TXN V GOOGL PYPL AVGO SPGI EBAY AMGN
2020-09-30 DHR NVDA AVGO TXN MCD AMGN CMCSA ADBE PYPL TMO LOW PG SPGI EBAY AAPL
2020-10-30 DHR TXN META NEE QCOM GOOGL TMO ENPH CDNS EXR NVDA PG TER LRCX AVGO
2020-11-30 LRCX ETSY ENPH QCOM AMAT TER TXN AAPL AVGO NVDA PYPL TGT TTD AMD ABBV
2020-12-31 AVGO AAPL ENPH ETSY LRCX AMAT CDNS QCOM NEE TER PYPL ORCL ISRG TSLA MS
2021-01-29 AMAT AVGO ETSY QCOM MSFT TXN WBD ENPH AAPL GOOGL DHR LRCX TMO DD NVDA
2021-02-26 AMAT WBD LRCX ETSY AVGO GOOGL PYPL ABBV ENPH PSKY MS TER ORCL JPM CDNS
2021-03-31 AMAT TXN MO CSCO SPG CLF BAC URI XEC JPM VIAC GS LRCX LOW HD
2021-04-30 GOOGL SPG AMAT GS EXR MS XEC MRNA KKR PYPL COF META NVDA GOOG SCHW
2021-05-28 AMAT GS MS ORCL SPG JPM NVDA C SCHW BAC XEC DVN CLF BRK-B COF
2021-06-30 MRNA GOOGL NVDA AMAT META EXR INTU BX TGT BBWI PYPL MSFT LRCX EBAY IDXX
2021-07-30 GOOGL MRNA ORCL INTU ADBE BX BBWI DHR META TGT EXR NVDA MSFT GOOG MCO
2021-08-31 GOOGL DHR INTU META BX NVDA MRNA EXR ADBE CSCO EBAY ORCL MSFT GOOG ISRG
2021-09-30 GOOGL DHR ORCL MRNA INTU TMO NVDA MSFT ADI ISRG WFC MCD AVGO BX JPM
2021-10-29 MSFT GOOGL ORCL NVDA AVGO INTU ADBE BX TMO AON MCO EXR EBAY PLD SPGI
2021-11-30 MSFT AAPL AVGO NVDA GOOGL DHR PFE AMD ADBE ORCL PLD TMO AMAT QCOM MRNA
2021-12-31 ABBV AVGO PLD PFE AAPL ABT MCD MSFT CSCO EXR PG TMO CCI GOOGL DHR
2022-01-31 ABBV MO COP EOG KO AAPL CVX MCD MSFT PG PFE PLD AVGO WFC SCHW
2022-02-28 ABBV KO CVX COP MO EOG AVGO FCX QCOM AAPL PG BMY EXC XOM WMB
2022-03-31 ABBV PFE REGN COP AVGO AAPL FCX BMY CF CVX PLD EOG KO EXC VRTX
2022-04-29 ABBV KO BMY MO VRTX COP EOG MCD PG WY REGN JNJ CF CVX EXC
2022-05-31 ABBV PFE EOG AMGN BMY OXY CVX KO XOM CF GILD AVGO MRO MO REGN
2022-06-30 ABBV PFE BMY KO AMGN MCD JNJ MRK VZ VRTX AMT PEP OXY LLY EXC
2022-07-29 ON TXN OXY CF XOM CVX AAPL ADI ABBV MRO MCD CTRA KO VICI BMY
2022-08-31 MRO EOG CF VRTX OXY AMGN ON DVN KO COP GILD XOM CVX EXR MCK
2022-09-30 VRTX BMY GILD MRK COP ORLY GIS K CDNS XOM PCG UNH MPC LLY LW
2022-10-31 AMGN MRO MCD V EOG CVX ABBV OXY XOM GILD COP DVN ORLY BMY MRK
2022-11-30 ABBV AMGN GILD XOM ON MCHP MRK EOG VRTX TJX TXN ANET CVX ORLY V
2022-12-30 ABBV XOM CVX MO AVGO GILD MRK PG KO EOG MA COP SCHW CAT ORLY
2023-01-31 BKNG XOM VRTX ORCL GILD FCX URI EOG V MPC ON CAT LVS T COP
2023-02-28 BKNG AVGO ABBV ADI MCHP ORCL GILD XOM ON URI JPM MRK PCG MCD ORLY
2023-03-31 BKNG AVGO ORCL ADI V GILD CSCO TXN ABBV MCHP MCD ANET ON MA XOM
2023-04-28 BKNG V AVGO ORCL MA XOM MSFT MCD PG LIN AAPL VRTX SBUX MDLZ YUM
2023-05-31 ORCL AVGO MSFT AAPL BKNG V CSCO ADI MCD GOOGL ADBE MA ANET TXN CDNS
2023-06-30 ORCL AAPL BKNG AVGO MCHP ABNB ADBE ADI ON MSFT AMAT VRTX URI V META
2023-07-31 BKNG AVGO AAPL ADBE ON ABNB META LRCX GOOGL MCHP MSFT ORCL AMAT JPM ADI
2023-08-31 AVGO CSCO V BKNG MA ADBE ORCL MSFT GOOGL ANET AMAT AAPL TJX CDNS PG
2023-09-29 BKNG AMGN META AVGO MA GOOGL MSFT ABNB ADBE JPM HAL CSCO VRTX CDNS BKR
2023-10-31 MSFT AVGO ADBE V CSCO META ANET IBM VRTX GILD PG CDNS NVDA LIN SNPS
2023-11-30 MSFT IBM ADBE V BKNG AVGO NVDA META INTU AAPL AMAT ANET NOW CDNS ORCL
2023-12-29 BKNG AVGO META INTU QCOM SPG JPM AMGN ANET IBM AMAT NVDA LRCX GOOGL V
2024-01-31 NVDA MSFT META V IBM AVGO AMGN MA BKNG ANET VZ ADBE ABBV JPM NOW
2024-02-29 NVDA META MSFT AVGO GE CAT AMAT MA ANET JPM ABBV V QCOM CRM URI
2024-03-28 NVDA CAT JPM AVGO SPG GE META ANET PGR C BAC URI MSFT WFC SMCI
2024-04-30 NVDA AVGO GOOGL WFC AMAT APH AXP QCOM PGR GE JPM NXPI BSX CMG MCHP
2024-05-31 NVDA META AMAT BKNG VRTX NEE ANET QCOM GOOGL AVGO APH SPG WFC JPM MO
2024-06-28 NVDA MSFT META AVGO GOOGL MO BKNG ANET AMAT VRTX REGN ORCL LLY MCO LRCX
2024-07-31 MO NVDA IBM VRTX URI MCO AVGO PM KKR ABBV ANET AXP JPM GS TXN
2024-08-30 MO NVDA TMUS KO MCO META IBM SPGI PGR NFLX REGN PM JPM NEE EXR
2024-09-30 META IBM ORCL NVDA TMUS AAPL ANET AVGO NEE T BLK BKNG SPGI GE CAT
2024-10-31 NVDA BKNG MO META TMUS ABBV ORCL ANET BLK KMI T AVGO SPG PLTR NFLX
2024-11-29 BKNG TMUS PLTR MO NFLX FTNT NVDA ORCL COIN SPG CRM MCO IBM WMT KMI
2024-12-31 META V AAPL MA BKNG PLTR NFLX NVDA ANET AVGO MO CSCO CRM BLK FTNT
2025-01-31 META V NFLX MA GOOGL PLTR TMUS COIN BSX ISRG IBM WMT BLK CSCO ANET
2025-02-28 V MO META BKNG MA TMUS CSCO NFLX FTNT SPG T ABBV JPM AAPL SPGI
2025-03-31 MO V TMUS VZ MCD NFLX MA CSCO BMY ABBV BRK-B T PGR BKNG KMI
2025-04-30 MO NFLX V BKNG MCD FTNT PLTR AMT KO MA VZ ABT PM KR BRK-B
2025-05-30 GILD V MO META AVGO MSFT BKNG NFLX MA PLTR NVDA INTU CSCO GE IBM
2025-06-30 NFLX META AVGO MSFT BKNG NVDA GILD IBM CSCO MO ORCL PLTR COIN JPM RCL
2025-07-31 NVDA MSFT AVGO MO META PLTR APH BKNG COIN SCHW GILD GE C ANET CSCO
2025-08-29 GOOGL MO NVDA AVGO NFLX RCL LRCX ANET MSFT BKNG APH PLTR C MS NEM
2025-09-30 NVDA AVGO GOOGL APH MSFT PLTR LRCX GE MO META ANET MS C NFLX ABBV
2025-10-31 NVDA GOOGL AVGO APH MSFT LRCX PLTR CSCO AAPL GILD ANET JNJ MU QCOM GE
2025-11-28 GOOGL AVGO JNJ AAPL GILD AMAT CSCO NEE AMGN LRCX APH MU NEM ABBV C
2025-12-31 JNJ NVDA WDC LRCX GOOGL PLTR C AMAT MU CSCO APH AAPL NEM ADI SCHW
2026-01-30 JNJ GOOGL GILD LRCX MU WDC ADI AMAT NEE NVDA APH KO MPWR KLAC CSCO
2026-02-27 JNJ ADI GOOGL WDC AMAT GILD NEM KO NEE MU AMGN MO AEP LRCX BMY
2026-03-31 JNJ GOOGL NEE GILD WDC ADI CF STX LRCX BMY CSCO MRK AMAT XOM PLD
2026-04-30 GOOGL MU ADI AVGO WDC LRCX STX NVDA MO AMAT CSCO TXN NEE SPG APH
2026-05-29 MU AAPL NVDA WDC AVGO LRCX CSCO ADI GOOGL STX TXN AMAT JNJ QCOM SPG
2026-06-26 MU SPG LRCX JNJ AMAT WDC MO STX ABBV FTNT KLAC APH ADI C CSCO
Scoring script (python)
FORMULA_NAME = "Explore Regime Momentum Recovery Quality Hybrid (Passport Arbitration, v1172)"
LOGIC_VARIANT_COUNT = 4
NOTES = """mode=explore; family=regime-momentum-recovery-quality-hybrid
This hybrid combines momentum leadership, repair-driven recovery, and durable quality carry through an explicit passport arbitration system rather than a static blend. Each stock competes for three passports: leader (trend-confirmed momentum), repair (damaged but repairing), and franchise (quality, value, income, low-vol carry). The active regime branch then decides which passport is allowed to dominate, and conflict is resolved with hard gates: damaged names cannot win on momentum alone, low-quality rallies cannot win on repair alone, and defensive franchises pre-empt both when tape quality weakens.
Deliberate metric coverage this run: momentum actively uses return_1m_pct, return_6m_pct, and momentum_12_1_pct, while return_3m_pct and return_12m_pct are deliberately zeroed; trend/recovery actively uses from_200d_ma_pct and from_52w_high_pct; volatility actively uses realized_vol_3m; liquidity actively uses avg_daily_volume_3m, avg_daily_dollar_volume_3m, and trading_days_3m; income rotates to dividend_ttm and deliberately zeros dividend_yield_ttm_pct; valuation rotates to pe and forward_pe while peg is deliberately zeroed; growth rotates to revenue_growth_pct and eps_growth_pct while forward_eps, operating_income_growth_pct, and free_cash_flow_growth_pct are deliberately zeroed; quality uses operating_margin_pct and free_cash_flow_margin_pct; size is used only as a light market_cap stability tilt, never as a dominant factor.
Deliberate weight-0 metrics this run: return_3m_pct, return_12m_pct, dividend_yield_ttm_pct, peg, forward_eps, operating_income_growth_pct, free_cash_flow_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 get_num(stock, key):
        value = stock.get(key)
        if value is None:
            return None
        if isinstance(value, bool):
            return 1.0 if value else 0.0
        if isinstance(value, (int, float)):
            return float(value)
        return None

    def clamp(x, lo, hi):
        if x < lo:
            return lo
        if x > hi:
            return hi
        return x

    def percentile_map(key, higher_better=True):
        pairs = []
        for stock in stocks:
            value = get_num(stock, key)
            if value is not None:
                pairs.append((stock["symbol"], value))
        result = {}
        n = len(pairs)
        if n == 0:
            return result
        pairs.sort(key=lambda item: item[1], reverse=higher_better)
        if n == 1:
            result[pairs[0][0]] = 1.0
            return result
        i = 0
        while i < n:
            j = i + 1
            while j < n and pairs[j][1] == pairs[i][1]:
                j += 1
            rank = 1.0 - ((i + j - 1) * 0.5) / (n - 1)
            k = i
            while k < j:
                result[pairs[k][0]] = rank
                k += 1
            i = j
        return result

    def regime_name(regime_obj):
        if isinstance(regime_obj, dict):
            parts = []
            for key in ("state", "name", "label", "regime", "trend", "market_regime", "risk"):
                value = regime_obj.get(key)
                if value is not None:
                    parts.append(str(value).lower())
            text = " ".join(parts)
        else:
            text = str(regime_obj).lower()

        if any(token in text for token in ("bear", "risk_off", "risk-off", "defensive", "crash", "stress", "weak")):
            return "defense"
        if any(token in text for token in ("recovery", "rebound", "repair", "turn", "bottom")):
            return "repair"
        if any(token in text for token in ("sideways", "mixed", "neutral", "range", "chop", "transition")):
            return "carry"
        return "leader"

    p_return_1m = percentile_map("return_1m_pct", True)
    p_return_6m = percentile_map("return_6m_pct", True)
    p_mom_12_1 = percentile_map("momentum_12_1_pct", True)
    p_from_200d = percentile_map("from_200d_ma_pct", True)
    p_from_52w = percentile_map("from_52w_high_pct", True)
    p_low_vol = percentile_map("realized_vol_3m", False)

    p_adv = percentile_map("avg_daily_volume_3m", True)
    p_addv = percentile_map("avg_daily_dollar_volume_3m", True)
    p_trading_days = percentile_map("trading_days_3m", True)

    p_dividend = percentile_map("dividend_ttm", True)
    p_pe = percentile_map("pe", False)
    p_forward_pe = percentile_map("forward_pe", False)

    p_rev_growth = percentile_map("revenue_growth_pct", True)
    p_eps_growth = percentile_map("eps_growth_pct", True)

    p_oper_margin = percentile_map("operating_margin_pct", True)
    p_fcf_margin = percentile_map("free_cash_flow_margin_pct", True)
    p_market_cap = percentile_map("market_cap", True)

    active_regime = regime_name(regime)
    scores = {}

    for stock in stocks:
        symbol = stock["symbol"]

        liquid = (
            0.40 * p_adv.get(symbol, 0.5) +
            0.40 * p_addv.get(symbol, 0.5) +
            0.20 * p_trading_days.get(symbol, 0.5)
        )

        quality = (
            0.48 * p_oper_margin.get(symbol, 0.5) +
            0.32 * p_fcf_margin.get(symbol, 0.5) +
            0.20 * p_market_cap.get(symbol, 0.5)
        )

        value_carry = (
            0.40 * p_pe.get(symbol, 0.5) +
            0.30 * p_forward_pe.get(symbol, 0.5) +
            0.30 * p_dividend.get(symbol, 0.5)
        )

        growth = (
            0.55 * p_rev_growth.get(symbol, 0.5) +
            0.45 * p_eps_growth.get(symbol, 0.5)
        )

        momentum = (
            0.34 * p_return_1m.get(symbol, 0.5) +
            0.33 * p_return_6m.get(symbol, 0.5) +
            0.33 * p_mom_12_1.get(symbol, 0.5)
        )

        trend = (
            0.60 * p_from_200d.get(symbol, 0.5) +
            0.40 * p_from_52w.get(symbol, 0.5)
        )

        low_vol = p_low_vol.get(symbol, 0.5)

        from_200d = get_num(stock, "from_200d_ma_pct")
        from_52w = get_num(stock, "from_52w_high_pct")

        above_200d = 0.5
        if from_200d is not None:
            above_200d = clamp((from_200d + 12.0) / 24.0, 0.0, 1.0)

        repair_depth = 0.5
        if from_52w is not None:
            drawdown = -from_52w
            repair_depth = 1.0 - clamp(abs(drawdown - 22.0) / 22.0, 0.0, 1.0)

        leader_passport = (
            0.40 * momentum +
            0.25 * trend +
            0.15 * quality +
            0.10 * growth +
            0.10 * liquid
        )
        if from_200d is not None and from_200d < -2.0:
            leader_passport -= 0.18
        if from_52w is not None and from_52w < -18.0:
            leader_passport -= 0.08

        repair_passport = (
            0.26 * repair_depth +
            0.22 * above_200d +
            0.18 * p_return_1m.get(symbol, 0.5) +
            0.12 * p_return_6m.get(symbol, 0.5) +
            0.12 * quality +
            0.10 * liquid
        )
        if from_52w is not None and from_52w > -5.0:
            repair_passport -= 0.12
        if from_200d is not None and from_200d < -8.0:
            repair_passport -= 0.16

        franchise_passport = (
            0.28 * quality +
            0.20 * value_carry +
            0.18 * low_vol +
            0.14 * liquid +
            0.10 * growth +
            0.10 * above_200d
        )
        if from_200d is not None and from_200d < -10.0:
            franchise_passport -= 0.10

        conflict_penalty = 0.0
        if momentum > 0.72 and repair_depth > 0.72 and quality < 0.42:
            conflict_penalty += 0.10
        if momentum < 0.40 and leader_passport > franchise_passport and low_vol < 0.35:
            conflict_penalty += 0.08
        if repair_depth < 0.30 and repair_passport > leader_passport:
            conflict_penalty += 0.08

        if active_regime == "leader":
            score = (
                0.58 * leader_passport +
                0.20 * franchise_passport +
                0.14 * repair_passport +
                0.08 * low_vol
            )
            if leader_passport < 0.48:
                score -= 0.10
            if quality > 0.62 and momentum > 0.62:
                score += 0.05
        elif active_regime == "repair":
            score = (
                0.50 * repair_passport +
                0.24 * leader_passport +
                0.18 * franchise_passport +
                0.08 * growth
            )
            if repair_depth < 0.35:
                score -= 0.08
            if above_200d > 0.58 and momentum > 0.55:
                score += 0.06
        elif active_regime == "carry":
            score = (
                0.44 * franchise_passport +
                0.28 * leader_passport +
                0.18 * repair_passport +
                0.10 * value_carry
            )
            if low_vol > 0.65 and quality > 0.60:
                score += 0.05
        else:
            score = (
                0.56 * franchise_passport +
                0.18 * repair_passport +
                0.14 * leader_passport +
                0.12 * low_vol
            )
            if low_vol < 0.35:
                score -= 0.10
            if liquid < 0.40:
                score -= 0.06

        if liquid < 0.25:
            score -= 0.20
        elif liquid > 0.70:
            score += 0.03

        score -= conflict_penalty
        scores[symbol] = score

    return scores