exp_1142

Recovery Quality Contrarian 52-Week Hybrid (Relay Ladder Arbitration, v1142)

← All V2 experiments
Relative return
1.199x
Excess vs bench
19.86%
Benchmark
CAPW_UNIV
Rolling windows
179 · monthly
Mean strategy gain
36.92%
Mean benchmark gain
14.08%
Mean excess gain
22.84%
Dispersion (ref)
11.98%
Win-rate vs bench (ref)
100.00%
Worst / best ratio (ref)
1.089x / 1.375x
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 19.98% 2.22% 1.174x
2011-07-01 … 2016-06-30 34.76% 13.74% 1.185x
2016-07-01 … 2021-06-30 60.80% 20.63% 1.333x
2021-07-01 … 2026-06-26 34.11% 15.48% 1.161x
All rolling windows — the objective set (equal-weighted mean ratio)
Strategy Benchmark (CAPW_UNIV) Excess
2006200720082009201020112012201320142015201620172018201920202021 -20%0%20%40%60%80%
rolling 5y windows, monthly step — 179 windows · mean ratio 1.199x · beat benchmark in 179/179
#WindowStrategyBenchmarkRatio
1 2006-07-31 … 2011-07-29 17.27% 1.79% 1.152x
2 2006-08-31 … 2011-08-31 16.42% 0.21% 1.162x
3 2006-09-29 … 2011-08-31 14.04% -0.14% 1.142x
4 2006-10-31 … 2011-10-31 13.08% 0.23% 1.128x
5 2006-11-30 … 2011-11-30 10.86% -0.05% 1.109x
6 2006-12-29 … 2011-11-30 11.77% -0.32% 1.121x
7 2007-01-31 … 2012-01-31 11.77% 0.93% 1.107x
8 2007-02-28 … 2012-01-31 11.43% 1.43% 1.099x
9 2007-03-30 … 2012-03-30 14.24% 3.09% 1.108x
10 2007-04-30 … 2012-04-30 14.58% 2.42% 1.119x
11 2007-05-31 … 2012-05-31 14.87% 0.60% 1.142x
12 2007-06-29 … 2012-06-29 14.77% 1.92% 1.126x
13 2007-07-31 … 2012-07-31 15.45% 2.69% 1.124x
14 2007-08-31 … 2012-08-31 15.26% 2.95% 1.120x
15 2007-09-28 … 2012-09-28 14.83% 3.20% 1.113x
16 2007-10-31 … 2012-10-31 12.79% 2.60% 1.099x
17 2007-11-30 … 2012-11-30 12.62% 3.45% 1.089x
18 2007-12-31 … 2012-12-31 12.90% 3.69% 1.089x
19 2008-01-31 … 2013-01-31 16.99% 5.85% 1.105x
20 2008-02-29 … 2013-02-28 17.93% 6.82% 1.104x
21 2008-03-31 … 2013-03-28 20.18% 7.73% 1.116x
22 2008-04-30 … 2013-04-30 21.01% 7.51% 1.126x
23 2008-05-30 … 2013-04-30 20.97% 7.81% 1.122x
24 2008-06-30 … 2013-06-28 22.20% 9.33% 1.118x
25 2008-07-31 … 2013-07-31 25.63% 10.48% 1.137x
26 2008-08-29 … 2013-07-31 25.74% 10.52% 1.138x
27 2008-09-30 … 2013-09-30 31.19% 11.48% 1.177x
28 2008-10-31 … 2013-10-31 34.65% 15.76% 1.163x
29 2008-11-28 … 2013-10-31 35.86% 17.46% 1.157x
30 2008-12-31 … 2013-12-31 37.60% 18.44% 1.162x
31 2009-01-30 … 2013-12-31 38.80% 20.64% 1.151x
32 2009-02-27 … 2014-01-31 42.60% 21.63% 1.172x
33 2009-03-31 … 2014-03-31 42.82% 20.60% 1.184x
34 2009-04-30 … 2014-04-30 40.75% 19.00% 1.183x
35 2009-05-29 … 2014-04-30 41.23% 18.32% 1.194x
36 2009-06-30 … 2014-06-30 43.44% 19.01% 1.205x
37 2009-07-31 … 2014-07-31 40.63% 17.39% 1.198x
38 2009-08-31 … 2014-08-29 42.08% 17.70% 1.207x
39 2009-09-30 … 2014-09-30 39.89% 16.64% 1.199x
40 2009-10-30 … 2014-09-30 42.71% 17.08% 1.219x
41 2009-11-30 … 2014-11-28 40.32% 16.82% 1.201x
42 2009-12-31 … 2014-12-31 37.78% 16.28% 1.185x
43 2010-01-29 … 2014-12-31 40.83% 17.23% 1.201x
44 2010-02-26 … 2015-01-30 39.26% 15.80% 1.203x
45 2010-03-31 … 2015-03-31 39.20% 15.40% 1.206x
46 2010-04-30 … 2015-04-30 37.08% 15.38% 1.188x
47 2010-05-28 … 2015-04-30 39.49% 17.09% 1.191x
48 2010-06-30 … 2015-06-30 42.02% 17.45% 1.209x
49 2010-07-30 … 2015-06-30 41.89% 16.43% 1.219x
50 2010-08-31 … 2015-08-31 38.82% 15.76% 1.199x
51 2010-09-30 … 2015-09-30 37.05% 13.61% 1.206x
52 2010-10-29 … 2015-09-30 36.53% 13.06% 1.208x
53 2010-11-30 … 2015-11-30 36.38% 15.09% 1.185x
54 2010-12-31 … 2015-12-31 34.34% 13.55% 1.183x
55 2011-01-31 … 2016-01-29 31.55% 11.90% 1.176x
56 2011-02-28 … 2016-01-29 31.60% 11.53% 1.180x
57 2011-03-31 … 2016-03-31 32.78% 12.90% 1.176x
58 2011-04-29 … 2016-04-29 31.09% 12.39% 1.166x
59 2011-05-31 … 2016-05-31 32.34% 12.94% 1.172x
60 2011-06-30 … 2016-06-30 32.45% 13.30% 1.169x
61 2011-07-29 … 2016-07-29 35.66% 14.52% 1.185x
62 2011-08-31 … 2016-08-31 35.32% 15.19% 1.175x
63 2011-09-30 … 2016-09-30 36.66% 16.32% 1.175x
64 2011-10-31 … 2016-10-31 35.11% 14.02% 1.185x
65 2011-11-30 … 2016-11-30 38.03% 14.66% 1.204x
66 2011-12-30 … 2016-12-30 38.74% 14.92% 1.207x
67 2012-01-31 … 2017-01-31 39.77% 14.63% 1.219x
68 2012-02-29 … 2017-02-28 38.78% 14.78% 1.209x
69 2012-03-30 … 2017-02-28 37.84% 14.43% 1.205x
70 2012-04-30 … 2017-04-28 34.95% 14.61% 1.177x
71 2012-05-31 … 2017-05-31 35.55% 15.98% 1.169x
72 2012-06-29 … 2017-05-31 35.42% 15.44% 1.173x
73 2012-07-31 … 2017-07-31 34.60% 15.43% 1.166x
74 2012-08-31 … 2017-08-31 35.79% 15.12% 1.180x
75 2012-09-28 … 2017-08-31 35.75% 14.77% 1.183x
76 2012-10-31 … 2017-10-31 39.10% 16.12% 1.198x
77 2012-11-30 … 2017-11-30 39.27% 16.79% 1.192x
78 2012-12-31 … 2017-12-29 38.36% 16.93% 1.183x
79 2013-01-31 … 2018-01-31 38.29% 17.57% 1.176x
80 2013-02-28 … 2018-02-28 40.94% 16.21% 1.213x
81 2013-03-28 … 2018-02-28 39.35% 15.81% 1.203x
82 2013-04-30 … 2018-04-30 36.97% 14.25% 1.199x
83 2013-05-31 … 2018-05-31 35.83% 14.57% 1.186x
84 2013-06-28 … 2018-05-31 36.93% 14.97% 1.191x
85 2013-07-31 … 2018-07-31 34.58% 14.83% 1.172x
86 2013-08-30 … 2018-07-31 33.90% 15.59% 1.158x
87 2013-09-30 … 2018-09-28 35.42% 15.84% 1.169x
88 2013-10-31 … 2018-10-31 28.17% 12.89% 1.135x
89 2013-11-29 … 2018-10-31 27.71% 12.60% 1.134x
90 2013-12-31 … 2018-12-31 26.26% 9.93% 1.148x
91 2014-01-31 … 2019-01-31 27.15% 12.37% 1.132x
92 2014-02-28 … 2019-02-28 26.07% 12.38% 1.122x
93 2014-03-31 … 2019-03-29 28.82% 12.76% 1.142x
94 2014-04-30 … 2019-04-30 30.82% 13.73% 1.150x
95 2014-05-30 … 2019-04-30 30.14% 13.54% 1.146x
96 2014-06-30 … 2019-06-28 30.68% 12.81% 1.158x
97 2014-07-31 … 2019-07-31 33.66% 13.30% 1.180x
98 2014-08-29 … 2019-07-31 32.46% 12.80% 1.174x
99 2014-09-30 … 2019-09-30 33.69% 12.70% 1.186x
100 2014-10-31 … 2019-10-31 33.57% 12.91% 1.183x
101 2014-11-28 … 2019-10-31 32.67% 12.60% 1.178x
102 2014-12-31 … 2019-12-31 36.33% 14.16% 1.194x
103 2015-01-30 … 2019-12-31 36.30% 14.85% 1.187x
104 2015-02-27 … 2020-01-31 38.03% 14.04% 1.210x
105 2015-03-31 … 2020-03-31 35.09% 8.56% 1.244x
106 2015-04-30 … 2020-04-30 37.14% 11.65% 1.228x
107 2015-05-29 … 2020-05-29 36.84% 12.61% 1.215x
108 2015-06-30 … 2020-06-30 36.32% 13.64% 1.200x
109 2015-07-31 … 2020-07-31 38.43% 14.60% 1.208x
110 2015-08-31 … 2020-08-31 43.71% 18.07% 1.217x
111 2015-09-30 … 2020-09-30 41.73% 17.05% 1.211x
112 2015-10-30 … 2020-10-30 39.46% 14.60% 1.217x
113 2015-11-30 … 2020-11-30 45.49% 17.43% 1.239x
114 2015-12-31 … 2020-12-31 47.64% 18.65% 1.244x
115 2016-01-29 … 2021-01-29 59.21% 19.26% 1.335x
116 2016-02-29 … 2021-02-26 54.75% 19.79% 1.292x
117 2016-03-31 … 2021-03-31 58.09% 19.42% 1.324x
118 2016-04-29 … 2021-03-31 60.32% 19.66% 1.340x
119 2016-05-31 … 2021-05-28 60.16% 20.42% 1.330x
120 2016-06-30 … 2021-06-30 61.14% 21.06% 1.331x
121 2016-07-29 … 2021-06-30 60.80% 20.63% 1.333x
122 2016-08-31 … 2021-08-31 67.07% 21.75% 1.372x
123 2016-09-30 … 2021-09-30 63.36% 20.22% 1.359x
124 2016-10-31 … 2021-10-29 66.75% 22.50% 1.361x
125 2016-11-30 … 2021-11-30 64.78% 21.87% 1.352x
126 2016-12-30 … 2021-11-30 64.62% 21.75% 1.352x
127 2017-01-31 … 2022-01-31 57.94% 20.17% 1.314x
128 2017-02-28 … 2022-02-28 57.71% 18.51% 1.331x
129 2017-03-31 … 2022-03-31 59.09% 19.46% 1.332x
130 2017-04-28 … 2022-03-31 60.46% 19.46% 1.343x
131 2017-05-31 … 2022-05-31 56.86% 15.59% 1.357x
132 2017-06-30 … 2022-06-30 55.53% 13.08% 1.375x
133 2017-07-31 … 2022-07-29 55.76% 15.16% 1.353x
134 2017-08-31 … 2022-08-31 54.09% 13.72% 1.355x
135 2017-09-29 … 2022-08-31 54.08% 13.56% 1.357x
136 2017-10-31 … 2022-10-31 48.82% 11.86% 1.330x
137 2017-11-30 … 2022-11-30 48.26% 12.52% 1.318x
138 2017-12-29 … 2022-11-30 49.26% 12.46% 1.327x
139 2018-01-31 … 2023-01-31 45.88% 11.01% 1.314x
140 2018-02-28 … 2023-02-28 42.70% 11.03% 1.285x
141 2018-03-29 … 2023-02-28 43.05% 11.72% 1.280x
142 2018-04-30 … 2023-04-28 39.45% 13.01% 1.234x
143 2018-05-31 … 2023-05-31 36.68% 12.95% 1.210x
144 2018-06-29 … 2023-05-31 36.60% 13.01% 1.209x
145 2018-07-31 … 2023-07-31 40.61% 14.67% 1.226x
146 2018-08-31 … 2023-08-31 36.33% 13.51% 1.201x
147 2018-09-28 … 2023-08-31 35.33% 13.56% 1.192x
148 2018-10-31 … 2023-10-31 35.89% 12.60% 1.207x
149 2018-11-30 … 2023-11-30 37.74% 14.58% 1.202x
150 2018-12-31 … 2023-12-29 41.70% 17.26% 1.208x
151 2019-01-31 … 2024-01-31 39.64% 16.27% 1.201x
152 2019-02-28 … 2024-01-31 38.25% 15.94% 1.192x
153 2019-03-29 … 2024-03-28 44.60% 17.50% 1.231x
154 2019-04-30 … 2024-04-30 41.89% 15.50% 1.228x
155 2019-05-31 … 2024-05-31 45.79% 18.12% 1.234x
156 2019-06-28 … 2024-06-28 44.32% 17.99% 1.223x
157 2019-07-31 … 2024-07-31 41.56% 17.70% 1.203x
158 2019-08-30 … 2024-08-30 41.07% 18.41% 1.191x
159 2019-09-30 … 2024-09-30 40.67% 18.65% 1.186x
160 2019-10-31 … 2024-10-31 41.22% 17.87% 1.198x
161 2019-11-29 … 2024-11-29 46.45% 18.64% 1.234x
162 2019-12-31 … 2024-12-31 40.53% 17.62% 1.195x
163 2020-01-31 … 2025-01-31 39.02% 18.07% 1.177x
164 2020-02-28 … 2025-02-28 36.37% 19.00% 1.146x
165 2020-03-31 … 2025-03-31 36.83% 19.24% 1.147x
166 2020-04-30 … 2025-04-30 35.67% 16.49% 1.165x
167 2020-05-29 … 2025-04-30 35.12% 15.80% 1.167x
168 2020-06-30 … 2025-06-30 35.28% 18.19% 1.145x
169 2020-07-31 … 2025-07-31 34.47% 17.87% 1.141x
170 2020-08-31 … 2025-08-29 32.71% 16.69% 1.137x
171 2020-09-30 … 2025-09-30 39.27% 18.57% 1.175x
172 2020-10-30 … 2025-09-30 39.93% 19.43% 1.172x
173 2020-11-30 … 2025-11-28 34.85% 17.77% 1.145x
174 2020-12-31 … 2025-12-31 34.10% 16.92% 1.147x
175 2021-01-29 … 2025-12-31 28.24% 17.20% 1.094x
176 2021-02-26 … 2026-01-30 35.53% 17.04% 1.158x
177 2021-03-31 … 2026-03-31 31.78% 14.07% 1.155x
178 2021-04-30 … 2026-04-30 32.48% 16.03% 1.142x
179 2021-05-28 … 2026-04-30 32.24% 16.22% 1.138x
Notes
mode=explore; family=recovery-quality-contrarian-52w-hybrid This hybrid combines three orthogonal parent strengths through a relay-ladder instead of a blended average. Controlled 52-week washouts only qualify when they show repair evidence and business quality; repaired names can hand off into trend leadership in stronger tapes; and when signals conflict, a separate support sleeve decides whether the stock is an unfinished turnaround or a durable franchise. In risk-off conditions, deep drawdowns are sharply de-emphasized unless low volatility, liquidity, income, and valuation sanity all agree. Deliberate metric coverage: actively use momentum/return (return_1m_pct, return_3m_pct, return_6m_pct, return_12m_pct, momentum_12_1_pct), both recovery metrics (from_200d_ma_pct, from_52w_high_pct), volatility (realized_vol_3m), liquidity (avg_daily_dollar_volume_3m, trading_days_3m), income (dividend_yield_ttm_pct, dividend_ttm), valuation (pe, peg), growth (revenue_growth_pct, free_cash_flow_growth_pct, forward_eps), quality (operating_margin_pct, free_cash_flow_margin_pct), and size (market_cap). Deliberately weight forward_pe, eps_growth_pct, operating_income_growth_pct, avg_daily_volume_3m, shares_outstanding, close, adj_close, high_52w, ma_200d, eps_ttm, revenue_ttm, operating_income_ttm, and free_cash_flow_ttm at zero this run to avoid overstacking correlated momentum/valuation bets and to rotate underused revenue-plus-income evidence into the family.
Lesson notes
#849 · degrade · relative_return Δ -0.1923 · parent exp_1118 · Jul 21, 2026 · auto/explore; benchmark CAPW_UNIV
explore/recovery-quality-contrarian-52w-hybrid: relative_return 1.1986x (delta -0.1923 vs exp_1118); win-rate 100.0%, worst-window 1.088585, dispersion 11.9799%.
Monthly picks — top stocks selected each month (whole timeline)
timeline — 240 months · top 15 each
Month 123456789101112131415
2006-07-31 GOOG GOOGL GE JNJ C USB BAC KO CPQ TWX LH PEP XOM BRK-B MSFT
2006-08-31 MAY GOOG GOOGL XOM T JNJ USB BAC GE MSFT LH DGX KO MO ETR
2006-09-29 MAY GOOG BAC GOOGL XOM T C JNJ USB MRK LH AIZ JPM PFE BXP
2006-10-31 MAY MSFT T XOM BAC ES GS VNO C MRK DECK OKE CMCSA PFE GOOG
2006-11-30 MAY MSFT ES OKE GOOG GOOGL XOM AAPL BAC C T PFE MRK GS NEE
2006-12-29 MAY MSFT ES OKE TWX T AT XOM CNP ETR C MCD CSCO XEL PNW
2007-01-31 MAY MSFT UIS NEE T GOOG MO C GOOGL AT TWX ES HAS BKNG OKE
2007-02-28 MAY CF ES NEE T ALB MAT EOP HAS AT SRE CL MO MSFT GOOG
2007-03-30 MAY ES DLX NRG CE CF NEE ETR GT CHD MAT AT SRE ALXN BKNG
2007-04-30 GT MAY ES NRG ETR CE BAX CHD ALXN AAPL ANDV XOM BKNG NEE PRU
2007-05-31 MAY GT AAPL CE NRG XOM BAX ALXN GOOG CF T PRU ETR VFC CI
2007-06-29 MAY AAPL CF FSLR GT GOOG AL DECK JEC ALXN CE MDR XOM ATGE GOOGL
2007-07-31 AL GOOG CVG GHC DJ AAPL JEC CPQ ALXN BRK-B WTW MDR GE GOOGL ATGE
2007-08-31 GOOG CVG AAPL GOOGL AL BRK-B WTW BIIB IBM CRL CPQ MMM KO GE ELV
2007-09-28 GOOG CVG PENN AAPL BRK-B GOOGL IBM CRL CPQ JNJ PG MMM CSCO WTW KMB
2007-10-31 AAPL CF GOOG MOS ISRG AL PENN GOOGL OI CVG FLR CMG JEC FMC EXPE
2007-11-30 GOOG AAPL GOOGL PENN CL CVG BRK-B MRK JNJ CLX MO JEC ELV PG KO
2007-12-31 GOOG PENN CVG CL CLX AAPL WEC ELV JNJ MRK DGX CMS BRK-B FE MO
2008-01-31 MAY CL JNJ CVG DGX CLX LH ATO KMB XOM PG WEC EW MSFT GOOG
2008-02-29 MAY CVG CL KMB XOM CHD GE JNJ WEC ATO MO LH GOOG XEL CPQ
2008-03-31 MAY CVG KMB CL XOM CHD ATO WEC GE JNJ BRK-B HSIC MO LH EW
2008-04-30 MAY CVG KMB CHD WEC BRK-B GE XOM AFL BAX MEE AAPL CL LNT XEL
2008-05-30 MEE MAY ESV AAPL TTWO SWN MA BTUUQ APA BCR CHD KMB WEC CVX CSX
2008-06-30 MAY TTWO MEE BAX AAPL ESV MKC KMB XEL XOM WEC CHD FE OKE SWN
2008-07-31 MAY SWN ESV BCR AAPL DF EW GS BAX BTUUQ APOL ATGE XOM CELG FDO
2008-08-29 SWN BCR DF ESV FDO APOL CELG ATGE FI CEPH HRS HCBK BIG COG CERN
2008-09-30 XOM MDLZ CVG BAX CRL EDS MKC SWN CLX BDX TECH WEC BCR JNJ XEL
2008-10-31 CLX CHD MDLZ MKC LDOS XOM KR CVG WWY SJM WEC KMB BRK-B BAX GOOG
2008-11-28 CLX CHD MDLZ LH KR KMB XOM MKC GPC LDOS CL DLTR TECH XEL BDX
2008-12-31 XOM LDOS MDLZ LH KMB TECH CLX CHD KR WEC MKC XEL BDX GOOG DLTR
2009-01-30 XOM LDOS CL BDX WEC GOOG HET MDLZ LH PNW KMB COR CNP ABT PM
2009-02-27 XOM HET GOOG PCG PM LDOS ETR AAPL XEL WEC MDLZ BDX CVX DTE LH
2009-03-31 XOM PCG GOOG T HET EW IBM CL CMS CHD KMB VZ XEL PM CVX
2009-04-30 XOM GOOG T HET CVX AAPL VZ ECL LH CMS IBM UPS DGX CHD WEC
2009-05-29 GOOG UPS XOM CVX AZO LH HET CMS VZ DGX KMB XEL DLTR CHD ECL
2009-06-30 GOOG HET EOG AAPL PALM AZO XOM IBM BKNG WBD GS MDLZ MKC MCD DLTR
2009-07-31 HET GOOG PALM IBM XOM AAPL EOG AZO FISV GE GGP WBD LH CL CLX
2009-08-31 PALM HET IBM BAC AAPL EOG GOOG XOM GS GGP WBD BKNG GE AMGN MTCH
2009-09-30 PALM BKNG AAPL CAR WBD IBM GS GOOG BAC GE XOM AZO EOG SNDK GGP
2009-10-30 CAR KMG GGP SW SNDK BKNG AAPL PALM WBD GS WFM GOOG GNW WLL IBM
2009-11-30 KMG GGP BKNG GS CAR SW SNDK GOOG WFM WLL AAPL FCX GMCR VTSS WBD
2009-12-31 CAR GGP BKNG WFM WLL GOOG GS PXD TIN MEE GMCR SNDK VTSS AAPL SW
2010-01-29 SW GGP CAR SANM BKNG WLL WFM AAPL ACS F PXD GOOG EW SNDK GMCR
2010-02-26 SANM GGP GNW CAR ACS BKNG WLL WFM SW F PXD SNDK GMCR VSTNQ AAPL
2010-03-31 GGP SANM GNW ETFC WLL BBWI BKNG GS WFM VSTNQ PXD STI SNDK GMCR AAPL
2010-04-30 ETFC GGP WLL INCY SANM VSTNQ UAL LYV BBWI BKNG GNW WFM PXD SNDK STI
2010-05-28 ETFC VSTNQ WLL AAPL BBWI UAL NFLX GGP SSP WHR AAL LULU GS DDS UST
2010-06-30 CVG KMB AAPL UST CLX LLY CL LDOS T MKC BDX LUMN DLTR ED MDLZ
2010-07-30 WY AAPL SW GS UST ETFC CVG KMB DLTR CLX CASY LUMN HSY KDP CPQ
2010-08-31 WY CVG AAPL LUMN KMB CPQ CLX CASY UST SW PM MDLZ MKC BRK-B MRK
2010-09-30 WY ETFC AAPL NEM CPQ BKNG ERIE CCU LUMN PM CVG UST KMB AZO NFLX
2010-10-29 ETFC NFLX BKNG AAPL LVS UAL WY WLL ERIE AZO LUMN AAL AAP ACAS CPQ
2010-11-30 ETFC LVS VRTS BKNG AIG UAL NFLX AAPL AZO WLL ACAS ERIE CMG BWA ILMN
2010-12-31 ETFC ACAS VRTS AIG WLL BKNG WY NFLX AZO AAPL BWA LYB ERIE LVS CMI
2011-01-31 ETFC AIG WY AAPL ACAS WLL BKNG AZO URI VRTS AMAT LULU MAY NFLX BBWI
2011-02-28 MAY ETFC WY AIG AAPL URI NFLX LULU AMAT ACAS NOV VRTS BKNG AZO LVS
2011-03-31 MAY WY ETFC URI AAPL COP BKNG VRTS AZO ECHO CVX XOM NOV CAT TER
2011-04-29 MAY ETFC AAPL BKNG WY AZO LULU PM COP ERIE CVX NFLX CAT ULTA XOM
2011-05-31 MAY IPGP BKNG ETFC AAPL PM LULU EP CAT AZO WYNN MNST ABMD OKE HUM
2011-06-30 MAY IPGP BKNG EP WCG ABMD MNST AAPL COG ETFC GMCR KSU WFM PETM CBS
2011-07-29 LULU AIG AAPL MDLZ WYNN CNP CPQ PPL OKE KMB XEL WEC PNW EXC EVRG
2011-08-31 AIG KMB MDLZ UST CL AAPL SYY HSY PPL EXC CVG PCG XEL PM WEC
2011-09-30 AIG KMB UST MDLZ AAPL PPL SYY HSY EXC CVG XEL CL PCG PM WEC
2011-10-31 AIG UST KMB AAPL CVG MDLZ PPL DLTR AZO HSY XEL CL CF EXC PM
2011-11-30 AIG AAPL DLTR CVG GOOG UST PPL KMB MDLZ XEL EXC HSY PM SJM ETR
2011-12-30 AAPL GOOG PM MDLZ DLTR UST KMB CVG HSY CHD PPL CL XEL TJX ETR
2012-01-31 AAPL DLTR TJX HSY MDLZ UST GRMN KMB MRK SHW PM AAP AWK DLR CVG
2012-02-29 AAPL URI STX REGN MNST DLTR AZO TJX BKNG BIIB WCG EQIX COG ULTA SHW
2012-03-30 AAPL BKNG STX EQIX MNST ULTA TJX DPZ REGN DLTR URI AZO HFC SBAC BIIB
2012-04-30 AAPL VRTX BKNG HET PEG PM SBAC AZO DLTR SHW EXPE TJX KMB CL WEC
2012-05-31 AAPL BKNG HET VRTX EXPE KMB MKC WEC SHW SBAC AZO PM CHD SRE STX
2012-06-29 AAPL VRTX EXPE HET BKNG WEC KMB SRE CHD UST MRK DTE FE SBAC XEL
2012-07-31 VRTX AAPL EXPE STX HET WEC KMB CHD SRE BKNG PNW SBAC DTE XEL MRK
2012-08-31 STX VRTX AAPL EXPE HET SBAC MRK WEC VTR CPQ KMB PNW SHW USB DTE
2012-09-28 PHM STX EXPE AAPL VRTX SHW REGN SBAC LEN DHI LYB ANDV GOOG STZ GPS
2012-10-31 VRTX EXPE AAPL STX NCC SBAC PHM CPQ TMUS MRK ACGL OKE CVG MKC GOOG
2012-11-30 PHM REGN EXPE AAPL STZ SBAC WHR STX ALL LEN LPX CPAY BBBY WY PSX
2012-12-31 REGN PHM STX LPX CPAY WHR DDS SBAC OMX VRTS SW AAPL ALL PKG APTV
2013-01-31 STX OMX PHM LPX VRTS REGN CPAY WHR DDS ALL LEN THC MPC KBH SBAC
2013-02-28 OMX VRTS APO LPX THC MPC PHM STX ALL NFLX GILD TYL CPAY EXPE ALK
2013-03-28 OMX KKR VRTS NFLX MHK THC PHM GILD MPC LPX CPAY AOS ALK HRB HCA
2013-04-30 OMX KKR NFLX VRTS GILD REGN MHK THC MPC HRB KBH CAR TWX CPAY COST
2013-05-31 OMX TSLA KKR PHM NFLX STZ VRTS REGN MPC GS GILD WDC BLK CPAY TMUS
2013-06-28 OMX TSLA KKR REGN BKNG TMUS GOOG GILD WDC CPAY MU STX STZ GS CBOE
2013-07-31 OMX TSLA KKR GME MTG BKNG REGN BBBY NFLX GOOG CBOE TMUS CPAY GILD GNW
2013-08-30 OMX TSLA MTG BKNG GME KATE GS DAL GOOG AZO GHC FLT REGN BBY BLK
2013-09-30 OMX TSLA BKNG NFLX KATE AAPL MTG FLT GS ETFC CELG RRD HBI GHC WYNN
2013-10-31 OMX TSLA BKNG META MU KATE FLT ETFC CELG RRD AAPL BBY REGN GS CSGP
2013-11-29 OMX TSLA META BKNG MU NFLX MKTX BR FL AAPL DAL CSGP HII IBKR KATE
2013-12-31 TSLA META MU BKNG HII KATE FNMA NFLX MOLX AAPL FMCC BR DAL IBKR INCY
2014-01-31 TSLA MU INCY FNMA FMCC TKO BKNG HII GOOG META WYNN ILMN KATE AAPL TMUS
2014-02-28 FNMA FMCC TSLA MU ILMN WYNN GOOG META BKNG TKO PHM DXCM AAPL NCC HII
2014-03-31 TSLA TKO DAL META MU WYNN NCC HP BKNG ILMN RCL AAL URI HII GOOG
2014-04-30 TSLA MU DAL TRGP HP FANG META RCL HII URI DD NCC LYB BKNG TSN
2014-05-30 META MU DAL FRX TSLA LUV WLL TRGP TPL URI AAPL GMCR OKE AAL HP
2014-06-30 META DAL MU FRX TSLA WLL LUV AAPL TPL GMCR URI NFX AAL OKE FANG
2014-07-31 MU META FRX DAL TPL AAPL TSLA LUV URI GMCR NFX ODP ABMD SWKS FSL
2014-08-29 MU DAL GILD META AAPL TPL LUV URI GMCR CAR LYB TSLA INTC SWKS ODP
2014-09-30 GILD MU AAPL META LUV URI TRGP GMCR PANW SWKS WMB ENPH UNP ODP FSL
2014-10-31 PANW GILD META AAPL MU MMI GMCR LUV DLR EW ODP FSL TSLA KDP URI
2014-11-28 PANW AAPL META GILD EW MNST TSLA GMCR KLAC LUV MU DAL DLR PAYC KDP
2014-12-31 PANW AAPL RCL LUV KR SWKS GILD EA MU EW KLAC DAL WELL GMCR AMGN
2015-01-30 RCL KR GILD AAPL CVG PANW SHW DAL WELL WM KDP BX VNO ARE KLAC
2015-02-27 SWKS PANW KR AAPL CNC COR SBUX RCL LUV KDP EA EW ULTA SHW DLTR
2015-03-31 AAPL CNC GILD SWKS PANW COR KR HSP AZO ABMD DLTR EA SHW LII BBWI
2015-04-30 PANW AAPL SWKS HSP ABMD COR GILD EA KMG AZO DXCM BTUUQ BBWI BKNG ULTA
2015-05-29 GILD PANW BTUUQ ABMD HSP AAPL CNXT SWKS CZR DXCM AZO INCY COR SBUX ULTA
2015-06-30 GILD PANW BTUUQ AAPL BKNG KLAC AZO BX ABMD KRFT TSLA HSP BLK REGN GS
2015-07-31 GILD PANW BKNG AAPL AZO KRFT ABMD KLAC META BTUUQ AMCR EA BLK DXCM HSP
2015-08-31 KLAC GILD AAPL CVG GE BRK-B BKNG BLK UST CCI PSA DVA BDX NVR SPG
2015-09-30 KLAC CVG UST GILD AAPL BRK-B WTW PSA WM BKNG CCI ACGL GE DVA SPG
2015-10-30 CVG UST GILD AZO BKNG WM ATO AAPL CLX CCI ACGL KLAC CASY PSA CBOE
2015-11-30 BKNG META ABMD AZO AMCR GOOG AAPL MHK GILD PSA CINF ACGL CVG CLX UAL
2015-12-31 ABMD ATVI GOOG META BKNG GILD MHK GE PSA UAL AAPL JKHY AZO TSS COST
2016-01-29 GE CVG UST SYY GILD GOOG PSA AAPL ACGL BRK-B PM EG AMCR COST SPG
2016-02-29 GE CVG UST T GOOG PM SPG GILD BRK-B PSA META XEL AAPL AMCR CMS
2016-03-31 UAL PM TSN XEL META CMS LNT ATO WEC SCG T GOOG NI KMB UST
2016-04-29 META UAL PM T PSA ATO MRSH ITW WM GOOG BKNG GILD SPG CMS LNT
2016-05-31 META BKNG X BLK ABMD T MRSH PM AZO MDT ITW DLR GOOG WM OMC
2016-06-30 X AWK EVRG NVDA DLR ABMD EQIX META CZR MDR IRM WM ATO NI HII
2016-07-29 X DHR META WM AWK BKNG NI IRM DLR AZO EVRG RSG CNP VTR PCG
2016-08-31 AMD WB X DHR NVDA SPGI WPX MDR META NAV MKTX DXC ABMD EVRG AMZN
2016-09-30 WB AMD X DHR NVDA SPGI WPX NAV LITE MDR META AMAT DXC AMZN VEEV
2016-10-31 X DHR NVDA AMD SPGI WB WPX DXC JOY NAV GEN TPL LITE META AMAT
2016-11-30 X DHR AMD NVDA SPGI WB CLF WPX CHTR NAV TPL DXC JOY STLD OKE
2016-12-30 NVDA X DHR AMD CLF SPGI WPX TPL NAV OKE FMCC FNMA CHTR BAC STLD
2017-01-31 NVDA X DHR AMD TPL SPGI CLF FMCC FNMA NAV TRGP CHTR WPX URI BAC
2017-02-28 AMD X NVDA DHR SPGI CLF NAV BAC URI CHTR SLM CSX WDC RF WPX
2017-03-31 AMD NVDA X DHR URI CHTR BKNG NAV BAC GS SLM META ANET AAPL RF
2017-04-28 NVDA X AMD DHR CHTR KMG WDC BKNG NAV CSX ANET HPQ AAPL AMAT META
2017-05-31 NVDA CHTR KMG DHR X XYZ BKNG CSX TSLA NAV WDC META AAPL ANET LRCX
2017-06-30 NVDA XYZ ANET CHTR TSLA DHR CSX BKNG AAPL META AMAT BBY NAV MU TTWO
2017-07-31 NVDA XYZ CHTR ANET BKNG ALGN META MU VRTX TTWO LRCX AMAT LITE BA XRX
2017-08-31 NVDA BA WB META TTWO XYZ ALGN ETSY BKNG SEDG VRTX TPL IPGP MU TSLA
2017-09-29 NVDA TTWO XYZ WB ETSY BA IPGP VRTX ALGN MU META ANET TTD SEDG XRX
2017-10-31 BBBY XYZ NVDA MU TTD TTWO ALGN ETSY IPGP SEDG NRG MTW BA NVR META
2017-11-30 SEDG MU NVDA ENPH BBBY ALGN IPGP XYZ BKNG TWTR NRG ANET NVR META VRTX
2017-12-29 SEDG BBBY ANET TWTR MU VRTX NVDA BKNG NRG ENPH PENN META BA NVR KBH
2018-01-31 NKTR SEDG BBBY ANET TWTR MU PENN BKNG ABBV BA VRTX NVDA EC XYZ META
2018-02-28 NKTR BKNG AMZN TWTR NVDA MU BA ANET ABBV SEDG XYZ MTCH NOW VRTX TKO
2018-03-29 NKTR SEDG GE MTCH MU RCL NVDA NXPI BLK META NOW BKNG BA ADBE HET
2018-04-30 MU NKTR SEDG GE HET KDP BLK RCL BA META NOW BKNG NXPI ANET CCI
2018-05-31 MU SEDG META CCI ETSY HET GE KDP BLK ENPH BKNG ANET AMZN PSX EXR
2018-06-29 MU NFLX META HET CCI ANF TKO BLK GE ADBE NVDA NOW ETSY ANET AMZN
2018-07-31 HET ETSY TKO MU ENPH AXON CVNA THC AMZN NFLX ANF ABMD ALGN LULU CCI
2018-08-31 HET TKO CVNA AXON ABMD ETSY XYZ AMZN MOS AMD CCI NFLX MU TTD ENPH
2018-09-28 HET AMD TKO CVNA XYZ ABMD ETSY AMZN TTD MOS CCI AXON DXCM UIS LULU
2018-10-31 CCI HET MOS AMZN BEN AVGO CHTR META EVHC EXR SPG AAPL DXCM MKC VZ
2018-11-30 CCI HET EOG EXR MOS AMZN BEN MRK MKC KMG SAF UAA ESRX VZ TSLA
2018-12-31 CCI EXR HET BEN AMZN UST AET VRT MRK SAF PSA BRK-B SPG EOG BLK
2019-01-31 HET CCI TTD MOS EOG EXR AMZN PAYC RHT TSLA MTCH MRK UST LULU ETSY
2019-02-28 HET CCI EOG MOS AMZN EXR META UAA TSLA RHT AMD XLNX KEYS BLK ERIE
2019-03-29 HET TTD ETSY ENPH AZO CCI RHT ERIE XLNX KEYS AES AVP CDAY LLY SSP
2019-04-30 HET TTD ENPH AVP AZO ETSY CCI AMD AMZN MRO VEEV KEYS CVNA SSP XLNX
2019-05-31 HET CCI EXR AMZN VRT SAF BKNG MDLZ BLK UST ECL AZO VRSK HSY WRB
2019-06-28 HET CCI ENPH TTD EXR AMZN ERIE MTCH BLK BKNG BALL AZO AVP HSY WRB
2019-07-31 HET ENPH TTD AVP CCI AZO BALL HSY AMZN FICO MTCH CINF WRB BKNG APD
2019-08-30 ENPH HET CCI EXR HSY SAF AVP WEC VRT BKNG SBAC AZO UST VRSK ETR
2019-09-30 HET CCI SEDG EXR ETR ES ENPH EVRG AVP WEC FE VRT HSY NCC XEL
2019-10-31 HET ENPH AVP SEDG CCI BLDR ETR KBH MAA INVH ES MLM EQR WEC WU
2019-11-29 HET AVP CCI AAPL BLDR ENPH NCC SEDG KLAC CDAY LRCX TER AIZ BF.B BF-B
2019-12-31 HET AVP ENPH CCI AAPL TSLA CDAY BLDR ANSS THC LLY BKNG TYL APO FBHS
2020-01-31 HET TSLA ENPH CCI AAPL AVP TYL LLY TDG CPRT CDAY SEDG ANSS LM PODD
2020-02-28 HET CCI EXR SAF UST BRK-B KMB BLK DGX NCC RSG TYL NI MRK ETR
2020-03-31 EXR UST TE NCC GEN KR TECH MRK CLX CHRW CVG CCI DVN CCU GOOG
2020-04-30 EXR TE UST NCC GEN CHRW CCI KR CLX CVG GOOG MRK CHIR BRK-B CNXT
2020-05-29 TE UST ENPH EXR GEN NCC TSLA CLX KR CHRW CI GOOG BIO INCY CNXT
2020-06-30 TSLA TE UST AZO CLX NCC KMB KR EA CL CCI BLK ENPH GOOG MKC
2020-07-31 TSLA BBBY ENPH AZO UST CLX TE NEM CTLT CDAY BLK LM VRTX GOOG ANSS
2020-08-31 TSLA BBBY ETSY REGN AZO AAPL ENPH AMZN WST NVDA BLK AMD CTLT ODFL SEDG
2020-09-30 TSLA BBBY ENPH TUP NVDA ETSY AMD AZO SEDG AAPL AMZN GME BLK REGN PENN
2020-10-30 TUP ENPH GME EXR SEDG AZO UST BLK NVDA TE BBWI VIAC NCC AMD ETSY
2020-11-30 TUP MRNA EXR ENPH CCI AZO TSLA GME BLK VIAC XEC SEDG AMZN UST TE
2020-12-31 TUP TSLA MRNA ENPH ETSY TTD CCI BLK SEDG XYZ AZO AMD ABMD GME CTLT
2021-01-29 GME MRNA TSLA ENPH TUP AZO ETSY CCI BLK EXR AAPL AMZN ABMD ABX NVDA
2021-02-26 GME MRNA TUP VIAC CCI AZO TSLA QEP ETSY ENPH BLK EXR DISCA DISCK CPRI
2021-03-31 GME DVN TUP VIAC MRNA DISCA DISCK AZO QEP CCI ETSY FCX EXR TSLA AMT
2021-04-30 GME DVN TUP MRNA VIAC XEC QEP ANF AZO DISCA DISCK TSLA CAR BBWI EXR
2021-05-28 GME DVN XEC AZO MRNA TUP RRD BLK EXR COF GS CRM BIG NAVI CCI
2021-06-30 GME MRNA RRD GS XEC AZO MDP BX BLK SBNY BIG TUP ANF TWTR MRO
2021-07-30 MRNA GME RRD MDP AZO BX XEC SBNY GS GOOG SIVB EPAM CPT TWTR NVDA
2021-08-31 MRNA GME RRD MDP SBNY DDS KKR XEC GS BX SIVB GOOG CRL TWTR EPAM
2021-09-30 MRNA RRD GME MDP SBNY KKR GS M BX SIVB XEC FTNT GOOG XLNX IT
2021-10-29 MRNA RRD GME MDP KKR GS M MRO DVN SBNY JWN BX DDS TRGP TSLA
2021-11-30 MRNA DVN MRO TSLA RRD EXR AZO ABX GS DDOG MDP FDS COST BX BLK
2021-12-31 RRD DVN MRNA TSLA NVDA MRO EXR AZO BLDR AMD SBNY GS DDOG FDS GME
2022-01-31 DVN EXR ABX RRD AZO GS MRO HSY PPL BLK EXC BRK-B FE DTE EIX
2022-02-28 DVN ABX EXR RRD GS BRK-B MCK MRO EXC COR HSY NI UST MDLZ MRNA
2022-03-31 COP DVN MRO RRD EXR OXY CF ABX MCK MOS TRGP EXC MRNA XOM CVX
2022-04-29 EXR ABX AMT COP BRK-B CVG NI WEC SRE MRK XEL HSY MCK CMS DTE
2022-05-31 EXR ABX AMT FHN MRK CCI BRK-B XEL EVRG DTE NI PPL WEC CNP ES
2022-06-30 EXR ABX AMT FHN CCI MRK ATO DTE XEL EVRG LDOS ES WEC FE WRB
2022-07-29 ABX EXR AMT FHN MRK PSA MCK ATO LW DTE KDP XOM KMB CCI XEL
2022-08-31 EXR ABX AMT CCI PSA FHN HSY MDLZ MRK CL KDP MCK KMB WM GPC
2022-09-30 EXR AMT ABX CCI FHN PSA HSY SJM MRK WM KMB RSG BF.B BF-B KDP
2022-10-31 ABX EXR NCLH FHN AMT TKO DVN HSY SJM MCK MRK LW CCI ERIE AZO
2022-11-30 NCLH MPC FHN ABX EXR MRK BKNG CF TKO AZO SJM GPC UNM LW ERIE
2022-12-30 MPC NCLH FHN BKNG ABX MRK EXR SJM HES AZO CCI GPC LW CAH ODP
2023-01-31 NCLH MPC BKNG FHN EXR ABX CCI ACGL MRK PSA AZO VLO SJM HES BLK
2023-02-28 NCLH MPC EXR BKNG FHN PSA CCI RCL ACGL BLK HES ABX TJX AMT ULTA
2023-03-31 VLO TSLA BKNG NCLH RCL EXR WBD CCI PSA MPC CCL ULTA COTY AMT BLK
2023-04-28 BKNG LW EXR CCI ABX ULTA CPRT PSA HSY MPC MDLZ NCLH BSX VLO KMB
2023-05-31 EXR NCLH BKNG ABX AMT LW CCI PSA HSY MDLZ BLK BRK-B MNST KMB WM
2023-06-30 SMCI RCL NCLH BKNG NVDA CCL PLTR TSLA META EXR FICO BLDR LW CPRT UBER
2023-07-31 SMCI RCL NCLH BKNG NVDA CCL META JBL UBER TSLA BLDR VRT PLTR NFLX ROST
2023-08-31 EXR RCL NCLH BKNG CCL NFLX TSLA ROST META BLK CCI AZO AMT NVDA MRSH
2023-09-29 EXR BKNG BLK NCLH CCI NFLX BRK-B MRSH AZO AMT L VRSK MEDI ROP TJX
2023-10-31 EXR CCI BLK AMT BRK-B CVG MRSH AFL ROP L CME MEDI RSG VRSK TJX
2023-11-30 EXR NVDA PHM BKNG CBOE TSLA AKAM RSG AFL L BRK-B COR CME NCLH MCK
2023-12-29 ANF COIN EXR BKNG NVDA CRWD PHM VRT CVNA GPS APP UBER TSLA META RCL
2024-01-31 VRT ANF EXR NVDA CRWD SMCI BKNG PHM META ANET VST AVGO UBER KKR RCL
2024-02-29 EXR NVDA ANF SMCI CRWD VRT GE KKR VST META NRG CVNA UBER AMD GDDY
2024-03-28 NVDA EXR ANF SMCI VRT CVNA GE KKR UBER VST META COIN CRWD EME PLTR
2024-04-30 NVDA CVNA ANF VRT EXR GE VST KKR SMCI NRG EME URI TDG UBER RSG
2024-05-31 ANF NVDA VRT EXR VST COIN CVNA EME KKR TT APP LDOS HOOD NRG URI
2024-06-28 ANF NVDA EXR CVNA APP KKR VST DYN EME HOOD GDDY TRGP COST LDOS COIN
2024-07-31 NVDA ANF EXR KKR CVNA THC COIN ANET AZO TRGP DYN GDDY IRM CCI BKNG
2024-08-30 NVDA EXR DYN ANF THC CVNA AZO GDDY CCI IRM TRGP VTR KKR GS MSI
2024-09-30 NVDA EXR CVNA THC CCI AZO FICO IRM KKR LUMN VTR MSI BLK WELL BKNG
2024-10-31 CVNA NVDA APP EXR PLTR GEV BKNG AZO KKR FICO IRM BLK VST HWM SLG
2024-11-29 CVNA APP NVDA LUMN CCI PLTR AIG HOOD TPL WYNN EXR FICO TRGP FISV VST
2024-12-31 PLTR NVDA AIG CCI EXR TSLA UAL EMR WYNN BLK URI CA BK BNY FISV
2025-01-31 APP PLTR HOOD TSLA NVDA CVNA CCI EXR UAL COIN WYNN AIG ALK GDDY TPR
2025-02-28 AIG CCI EXR NVDA WYNN EMR PLTR FOXA TSLA BSX CA BLK UNM EVRG GS
2025-03-31 EXR NEM CA VRSN AZO BRO WDC RSG MRSH BRK-B EVRG NVDA CME CAH UST
2025-04-30 EXR CA UST CNP EVRG WEC ATO PNW CME COR CMS BRK-B EXC DTE PPL
2025-05-30 WDC NEM AZO PM CA CME CNP VRSN BUD CAH MNST MCK RSG COR ATO
2025-06-30 WDC PLTR NEM HOOD PM AZO CA CAH BUD CNP CME TSLA WEC MNST MCK
2025-07-31 WDC NEM HOOD BKNG NVDA GS CA AZO ACV BNY BK RCL BLK ICE INFO
2025-08-29 HOOD FNMA PLTR FMCC NVDA GEV NEM AZO APP WDC GS STX LITE AMD MPWR
2025-09-30 HOOD APP WDC NEM NVDA STX FNMA PLTR FMCC AZO COIN AVGO GS TSLA MPWR
2025-10-31 MU HOOD NEM AZO NVDA EXR MPWR WDC ABI PCS CA STX COIN GS TEL
2025-11-28 MU WDC STX NEM NVDA NKTR EXR AZO LRCX AMD MPWR PCS ABI CA GOOG
2025-12-31 WDC MU ECHO NKTR LITE NEM STX CIEN GILD NVDA WBD PLTR GOOG AMD HOOD
2026-01-30 MU WDC STX NEM LRCX LITE ECHO TE NKTR NVDA EA GILD WBD GOOG AMD
2026-02-27 MU WDC LITE STX LRCX TER CIEN ATI NEM GILD GOOG NKTR MPWR FTI EA
2026-03-31 CCI EXR ABI PCS CAM CA EA UST BHF AMT AZO ATO FE NVDA GOOG
2026-04-30 MU CCI EXR WDC ABI PCS CAM AZO NVDA CA EA LITE AMT SEDG FTI
2026-05-29 MU EXR CCI WDC NVDA ABI STX PCS CAM EA CA AMD EQIX GS AZO
2026-06-26 MU STX WDC AMD MRVL INTC TER LRCX CCI AMAT EXR LITE KLAC DELL CIEN
Scoring script (python)
FORMULA_NAME = "Recovery Quality Contrarian 52-Week Hybrid (Relay Ladder Arbitration, v1142)"
LOGIC_VARIANT_COUNT = 4
NOTES = """mode=explore; family=recovery-quality-contrarian-52w-hybrid
This hybrid combines three orthogonal parent strengths through a relay-ladder instead of a blended average. Controlled 52-week washouts only qualify when they show repair evidence and business quality; repaired names can hand off into trend leadership in stronger tapes; and when signals conflict, a separate support sleeve decides whether the stock is an unfinished turnaround or a durable franchise. In risk-off conditions, deep drawdowns are sharply de-emphasized unless low volatility, liquidity, income, and valuation sanity all agree.
Deliberate metric coverage: actively use momentum/return (return_1m_pct, return_3m_pct, return_6m_pct, return_12m_pct, momentum_12_1_pct), both recovery metrics (from_200d_ma_pct, from_52w_high_pct), volatility (realized_vol_3m), liquidity (avg_daily_dollar_volume_3m, trading_days_3m), income (dividend_yield_ttm_pct, dividend_ttm), valuation (pe, peg), growth (revenue_growth_pct, free_cash_flow_growth_pct, forward_eps), quality (operating_margin_pct, free_cash_flow_margin_pct), and size (market_cap). Deliberately weight forward_pe, eps_growth_pct, operating_income_growth_pct, avg_daily_volume_3m, shares_outstanding, close, adj_close, high_52w, ma_200d, eps_ttm, revenue_ttm, operating_income_ttm, and free_cash_flow_ttm at zero this run to avoid overstacking correlated momentum/valuation bets and to rotate underused revenue-plus-income evidence into the family."""

WASHOUT_REPAIR = {
    "from_52w_high_pct": (0.22, -1),
    "from_200d_ma_pct": (0.18, +1),
    "return_1m_pct": (0.10, -1),
    "return_3m_pct": (0.16, +1),
    "revenue_growth_pct": (0.11, +1),
    "free_cash_flow_growth_pct": (0.09, +1),
    "operating_margin_pct": (0.08, +1),
    "avg_daily_dollar_volume_3m": (0.06, +1),
    "trading_days_3m": (0.05, +1),
    "pe": (0.08, -1),
    "market_cap": (0.07, -1),
}

TREND_RELAY = {
    "momentum_12_1_pct": (0.23, +1),
    "return_6m_pct": (0.19, +1),
    "return_12m_pct": (0.12, +1),
    "from_200d_ma_pct": (0.14, +1),
    "from_52w_high_pct": (0.09, +1),
    "forward_eps": (0.08, +1),
    "free_cash_flow_margin_pct": (0.07, +1),
    "avg_daily_dollar_volume_3m": (0.05, +1),
    "trading_days_3m": (0.03, +1),
}

FRANCHISE_DEFENSE = {
    "realized_vol_3m": (0.20, -1),
    "operating_margin_pct": (0.17, +1),
    "free_cash_flow_margin_pct": (0.17, +1),
    "dividend_yield_ttm_pct": (0.10, +1),
    "dividend_ttm": (0.06, +1),
    "peg": (0.10, -1),
    "pe": (0.08, -1),
    "trading_days_3m": (0.05, +1),
    "avg_daily_dollar_volume_3m": (0.04, +1),
    "market_cap": (0.03, +1),
}

SUPPORT_CONFIRM = {
    "revenue_growth_pct": (0.20, +1),
    "free_cash_flow_growth_pct": (0.18, +1),
    "forward_eps": (0.14, +1),
    "dividend_yield_ttm_pct": (0.10, +1),
    "dividend_ttm": (0.08, +1),
    "peg": (0.12, -1),
    "pe": (0.08, -1),
    "realized_vol_3m": (0.10, -1),
}


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


def _weighted_score(symbol, weights, zcache):
    total = 0.0
    used = 0.0
    for metric, spec in weights.items():
        zmap = zcache.get(metric)
        if not zmap:
            continue
        z = zmap.get(symbol)
        if z is None:
            continue
        weight, direction = spec
        total += weight * direction * z
        used += weight
    if used <= 0.0:
        return 0.0
    return total / used


def score_universe(stocks, regime, ctx):
    metrics = {}
    for bundle in (WASHOUT_REPAIR, TREND_RELAY, FRANCHISE_DEFENSE, SUPPORT_CONFIRM):
        for metric in bundle:
            metrics[metric] = True

    zcache = {}
    for metric in metrics:
        zcache[metric] = ctx.z(metric)

    breadth = regime.get("breadth")
    if breadth is None:
        breadth = 0.5
    median_momo = regime.get("median_momentum_12_1_pct")
    if median_momo is None:
        median_momo = 0.0
    median_200d = regime.get("median_from_200d_ma_pct")
    if median_200d is None:
        median_200d = 0.0
    avg_vol = regime.get("avg_realized_vol_3m")
    if avg_vol is None:
        avg_vol = 0.0

    if regime.get("bull") and breadth >= 0.60 and median_momo > 2.5 and avg_vol < 30.0:
        branch = "breakout"
    elif breadth >= 0.48 and median_200d > -8.0 and avg_vol < 40.0:
        branch = "repair"
    elif breadth >= 0.35 and avg_vol < 48.0:
        branch = "skeptical"
    else:
        branch = "defense"

    scores = {}
    for stock in stocks:
        symbol = stock["symbol"]

        washout_repair = _weighted_score(symbol, WASHOUT_REPAIR, zcache)
        trend_relay = _weighted_score(symbol, TREND_RELAY, zcache)
        franchise_defense = _weighted_score(symbol, FRANCHISE_DEFENSE, zcache)
        support_confirm = _weighted_score(symbol, SUPPORT_CONFIRM, zcache)

        from_200d = stock.get("from_200d_ma_pct")
        if from_200d is None:
            from_200d = -999.0
        from_high = stock.get("from_52w_high_pct")
        if from_high is None:
            from_high = -999.0
        ret_1m = stock.get("return_1m_pct")
        if ret_1m is None:
            ret_1m = 0.0
        ret_3m = stock.get("return_3m_pct")
        if ret_3m is None:
            ret_3m = -999.0
        ret_6m = stock.get("return_6m_pct")
        if ret_6m is None:
            ret_6m = -999.0
        mom_121 = stock.get("momentum_12_1_pct")
        if mom_121 is None:
            mom_121 = -999.0
        realized_vol = stock.get("realized_vol_3m")
        if realized_vol is None:
            realized_vol = 999.0
        trading_days = stock.get("trading_days_3m")
        if trading_days is None:
            trading_days = 0.0
        dollar_volume = stock.get("avg_daily_dollar_volume_3m")
        if dollar_volume is None:
            dollar_volume = 0.0
        op_margin = stock.get("operating_margin_pct")
        fcf_margin = stock.get("free_cash_flow_margin_pct")
        rev_growth = stock.get("revenue_growth_pct")
        fcf_growth = stock.get("free_cash_flow_growth_pct")
        div_yield = stock.get("dividend_yield_ttm_pct")
        div_cash = stock.get("dividend_ttm")

        drawdown = 0.0
        if from_high < 0.0:
            drawdown = -from_high

        near_high = from_high > -10.0
        above_200d = from_200d > 0.0
        repaired = from_200d > -4.0 and ret_3m > -2.0
        strong_trend = above_200d and ret_6m > 6.0 and mom_121 > 0.0
        calm = realized_vol < 38.0
        liquid = trading_days >= 45.0 and dollar_volume >= 2500000.0

        quality_points = 0
        if op_margin is not None and op_margin > 6.0:
            quality_points += 1
        if fcf_margin is not None and fcf_margin > 3.0:
            quality_points += 1
        if rev_growth is not None and rev_growth > 0.0:
            quality_points += 1
        if fcf_growth is not None and fcf_growth > 0.0:
            quality_points += 1
        quality_ok = quality_points >= 2

        income_points = 0
        if div_yield is not None and div_yield > 0.0:
            income_points += 1
        if div_cash is not None and div_cash > 0.0:
            income_points += 1
        income_ok = income_points >= 1

        repair_window = drawdown >= 16.0 and drawdown <= 48.0
        shallow_pullback = drawdown >= 5.0 and drawdown <= 20.0
        too_deep = drawdown > 55.0
        overshot = ret_1m > 15.0
        fresh_shakeout = ret_1m >= -14.0 and ret_1m <= 4.0

        repaired_washout = repair_window and repaired and fresh_shakeout and quality_ok
        relay_candidate = shallow_pullback and strong_trend and quality_ok
        unfinished_turnaround = drawdown >= 22.0 and not repaired
        defensive_rebound = repaired and calm and liquid and (quality_ok or income_ok)

        if branch == "breakout":
            if relay_candidate:
                core = 0.60 * trend_relay + 0.20 * washout_repair + 0.12 * support_confirm + 0.08 * franchise_defense
            elif repaired_washout:
                core = 0.44 * washout_repair + 0.34 * trend_relay + 0.14 * support_confirm + 0.08 * franchise_defense
            else:
                core = 0.48 * trend_relay + 0.20 * franchise_defense + 0.18 * support_confirm + 0.14 * washout_repair
        elif branch == "repair":
            if repaired_washout:
                core = 0.52 * washout_repair + 0.18 * trend_relay + 0.18 * support_confirm + 0.12 * franchise_defense
            elif relay_candidate:
                core = 0.40 * trend_relay + 0.30 * washout_repair + 0.16 * support_confirm + 0.14 * franchise_defense
            else:
                core = 0.34 * washout_repair + 0.28 * franchise_defense + 0.22 * support_confirm + 0.16 * trend_relay
        elif branch == "skeptical":
            if defensive_rebound and repaired_washout:
                core = 0.34 * washout_repair + 0.34 * franchise_defense + 0.22 * support_confirm + 0.10 * trend_relay
            else:
                core = 0.40 * franchise_defense + 0.26 * support_confirm + 0.22 * washout_repair + 0.12 * trend_relay
        else:
            if defensive_rebound:
                core = 0.56 * franchise_defense + 0.20 * support_confirm + 0.14 * washout_repair + 0.10 * trend_relay
            else:
                core = 0.68 * franchise_defense + 0.18 * support_confirm + 0.08 * washout_repair + 0.06 * trend_relay

        conflict_penalty = 0.0
        if unfinished_turnaround and not quality_ok:
            conflict_penalty += 0.16
        if too_deep and not defensive_rebound:
            conflict_penalty += 0.12
        if trend_relay - washout_repair > 1.00 and not near_high:
            conflict_penalty += 0.14 * (trend_relay - washout_repair)
        if washout_repair - trend_relay > 1.05 and not repaired:
            conflict_penalty += 0.16 * (washout_repair - trend_relay)
        if overshot and drawdown < 8.0:
            conflict_penalty += 0.08
        if trading_days < 38.0:
            conflict_penalty += 0.10
        if realized_vol > 55.0 and branch != "breakout":
            conflict_penalty += 0.08

        quality_gate = 1.0 + 0.18 * _clamp(support_confirm, -0.8, 1.0)
        defense_gate = 1.0 + 0.14 * _clamp(franchise_defense, -0.8, 1.0)
        if branch in ("skeptical", "defense"):
            gate = 0.55 * quality_gate + 0.45 * defense_gate
        else:
            gate = 0.70 * quality_gate + 0.30 * defense_gate

        score = core * gate - conflict_penalty

        if branch == "breakout" and relay_candidate and trend_relay > 0.45:
            score += 0.06
        if branch == "repair" and repaired_washout and support_confirm > 0.15:
            score += 0.08
        if branch == "skeptical" and defensive_rebound and support_confirm > 0.20:
            score += 0.05
        if branch == "defense" and defensive_rebound and franchise_defense > 0.35 and income_ok:
            score += 0.07

        scores[symbol] = score

    return scores