exp_1104

Contrarian 52-Week Recovery with Quality Arbitration (v1104)

← All V2 experiments
Relative return
1.369x
Excess vs bench
36.94%
Benchmark
CAPW_UNIV
Rolling windows
179 · monthly
Mean strategy gain
56.90%
Mean benchmark gain
14.08%
Mean excess gain
42.82%
Dispersion (ref)
30.09%
Win-rate vs bench (ref)
100.00%
Worst / best ratio (ref)
1.039x / 1.816x
Logic variants
3
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 24.51% 2.22% 1.218x
2011-07-01 … 2016-06-30 35.58% 13.74% 1.192x
2016-07-01 … 2021-06-30 107.88% 20.63% 1.723x
2021-07-01 … 2026-06-26 80.48% 15.48% 1.563x
All rolling windows — the objective set (equal-weighted mean ratio)
Strategy Benchmark (CAPW_UNIV) Excess
2006200720082009201020112012201320142015201620172018201920202021 -20%0%20%40%60%80%100%120%
rolling 5y windows, monthly step — 179 windows · mean ratio 1.369x · beat benchmark in 179/179
#WindowStrategyBenchmarkRatio
1 2006-07-31 … 2011-07-29 22.22% 1.79% 1.201x
2 2006-08-31 … 2011-08-31 22.15% 0.21% 1.219x
3 2006-09-29 … 2011-08-31 18.89% -0.14% 1.191x
4 2006-10-31 … 2011-10-31 16.07% 0.23% 1.158x
5 2006-11-30 … 2011-11-30 13.64% -0.05% 1.137x
6 2006-12-29 … 2011-11-30 14.41% -0.32% 1.148x
7 2007-01-31 … 2012-01-31 12.67% 0.93% 1.116x
8 2007-02-28 … 2012-01-31 11.40% 1.43% 1.098x
9 2007-03-30 … 2012-03-30 13.16% 3.09% 1.098x
10 2007-04-30 … 2012-04-30 11.80% 2.42% 1.092x
11 2007-05-31 … 2012-05-31 8.19% 0.60% 1.075x
12 2007-06-29 … 2012-06-29 6.77% 1.92% 1.048x
13 2007-07-31 … 2012-07-31 7.47% 2.69% 1.046x
14 2007-08-31 … 2012-08-31 8.34% 2.95% 1.052x
15 2007-09-28 … 2012-09-28 7.51% 3.20% 1.042x
16 2007-10-31 … 2012-10-31 7.18% 2.60% 1.045x
17 2007-11-30 … 2012-11-30 8.05% 3.45% 1.044x
18 2007-12-31 … 2012-12-31 7.69% 3.69% 1.039x
19 2008-01-31 … 2013-01-31 12.15% 5.85% 1.060x
20 2008-02-29 … 2013-02-28 12.71% 6.82% 1.055x
21 2008-03-31 … 2013-03-28 16.04% 7.73% 1.077x
22 2008-04-30 … 2013-04-30 16.65% 7.51% 1.085x
23 2008-05-30 … 2013-04-30 15.38% 7.81% 1.070x
24 2008-06-30 … 2013-06-28 22.27% 9.33% 1.118x
25 2008-07-31 … 2013-07-31 27.40% 10.48% 1.153x
26 2008-08-29 … 2013-07-31 28.15% 10.52% 1.160x
27 2008-09-30 … 2013-09-30 33.17% 11.48% 1.195x
28 2008-10-31 … 2013-10-31 41.80% 15.76% 1.225x
29 2008-11-28 … 2013-10-31 43.97% 17.46% 1.226x
30 2008-12-31 … 2013-12-31 46.70% 18.44% 1.239x
31 2009-01-30 … 2013-12-31 49.75% 20.64% 1.241x
32 2009-02-27 … 2014-01-31 53.37% 21.63% 1.261x
33 2009-03-31 … 2014-03-31 52.31% 20.60% 1.263x
34 2009-04-30 … 2014-04-30 48.77% 19.00% 1.250x
35 2009-05-29 … 2014-04-30 50.33% 18.32% 1.270x
36 2009-06-30 … 2014-06-30 50.91% 19.01% 1.268x
37 2009-07-31 … 2014-07-31 45.52% 17.39% 1.240x
38 2009-08-31 … 2014-08-29 44.27% 17.70% 1.226x
39 2009-09-30 … 2014-09-30 40.61% 16.64% 1.205x
40 2009-10-30 … 2014-09-30 45.67% 17.08% 1.244x
41 2009-11-30 … 2014-11-28 43.33% 16.82% 1.227x
42 2009-12-31 … 2014-12-31 40.22% 16.28% 1.206x
43 2010-01-29 … 2014-12-31 41.93% 17.23% 1.211x
44 2010-02-26 … 2015-01-30 39.90% 15.80% 1.208x
45 2010-03-31 … 2015-03-31 38.61% 15.40% 1.201x
46 2010-04-30 … 2015-04-30 37.85% 15.38% 1.195x
47 2010-05-28 … 2015-04-30 40.62% 17.09% 1.201x
48 2010-06-30 … 2015-06-30 45.47% 17.45% 1.239x
49 2010-07-30 … 2015-06-30 44.28% 16.43% 1.239x
50 2010-08-31 … 2015-08-31 40.24% 15.76% 1.211x
51 2010-09-30 … 2015-09-30 35.43% 13.61% 1.192x
52 2010-10-29 … 2015-09-30 33.13% 13.06% 1.177x
53 2010-11-30 … 2015-11-30 34.46% 15.09% 1.168x
54 2010-12-31 … 2015-12-31 33.71% 13.55% 1.178x
55 2011-01-31 … 2016-01-29 31.33% 11.90% 1.174x
56 2011-02-28 … 2016-01-29 31.60% 11.53% 1.180x
57 2011-03-31 … 2016-03-31 31.98% 12.90% 1.169x
58 2011-04-29 … 2016-04-29 31.46% 12.39% 1.170x
59 2011-05-31 … 2016-05-31 31.25% 12.94% 1.162x
60 2011-06-30 … 2016-06-30 33.70% 13.30% 1.180x
61 2011-07-29 … 2016-07-29 39.49% 14.52% 1.218x
62 2011-08-31 … 2016-08-31 40.74% 15.19% 1.222x
63 2011-09-30 … 2016-09-30 43.87% 16.32% 1.237x
64 2011-10-31 … 2016-10-31 40.24% 14.02% 1.230x
65 2011-11-30 … 2016-11-30 44.32% 14.66% 1.259x
66 2011-12-30 … 2016-12-30 44.00% 14.92% 1.253x
67 2012-01-31 … 2017-01-31 44.10% 14.63% 1.257x
68 2012-02-29 … 2017-02-28 42.58% 14.78% 1.242x
69 2012-03-30 … 2017-02-28 42.74% 14.43% 1.247x
70 2012-04-30 … 2017-04-28 39.01% 14.61% 1.213x
71 2012-05-31 … 2017-05-31 44.22% 15.98% 1.243x
72 2012-06-29 … 2017-05-31 44.77% 15.44% 1.254x
73 2012-07-31 … 2017-07-31 45.34% 15.43% 1.259x
74 2012-08-31 … 2017-08-31 45.93% 15.12% 1.268x
75 2012-09-28 … 2017-08-31 45.54% 14.77% 1.268x
76 2012-10-31 … 2017-10-31 48.59% 16.12% 1.280x
77 2012-11-30 … 2017-11-30 49.53% 16.79% 1.280x
78 2012-12-31 … 2017-12-29 48.17% 16.93% 1.267x
79 2013-01-31 … 2018-01-31 49.60% 17.57% 1.272x
80 2013-02-28 … 2018-02-28 52.02% 16.21% 1.308x
81 2013-03-28 … 2018-02-28 49.14% 15.81% 1.288x
82 2013-04-30 … 2018-04-30 45.53% 14.25% 1.274x
83 2013-05-31 … 2018-05-31 38.30% 14.57% 1.207x
84 2013-06-28 … 2018-05-31 41.02% 14.97% 1.227x
85 2013-07-31 … 2018-07-31 39.11% 14.83% 1.211x
86 2013-08-30 … 2018-07-31 40.36% 15.59% 1.214x
87 2013-09-30 … 2018-09-28 43.92% 15.84% 1.242x
88 2013-10-31 … 2018-10-31 33.91% 12.89% 1.186x
89 2013-11-29 … 2018-10-31 33.95% 12.60% 1.190x
90 2013-12-31 … 2018-12-31 30.30% 9.93% 1.185x
91 2014-01-31 … 2019-01-31 31.26% 12.37% 1.168x
92 2014-02-28 … 2019-02-28 29.60% 12.38% 1.153x
93 2014-03-31 … 2019-03-29 31.69% 12.76% 1.168x
94 2014-04-30 … 2019-04-30 34.10% 13.73% 1.179x
95 2014-05-30 … 2019-04-30 33.94% 13.54% 1.180x
96 2014-06-30 … 2019-06-28 36.74% 12.81% 1.212x
97 2014-07-31 … 2019-07-31 38.78% 13.30% 1.225x
98 2014-08-29 … 2019-07-31 38.61% 12.80% 1.229x
99 2014-09-30 … 2019-09-30 40.19% 12.70% 1.244x
100 2014-10-31 … 2019-10-31 40.71% 12.91% 1.246x
101 2014-11-28 … 2019-10-31 41.01% 12.60% 1.252x
102 2014-12-31 … 2019-12-31 46.08% 14.16% 1.280x
103 2015-01-30 … 2019-12-31 46.16% 14.85% 1.273x
104 2015-02-27 … 2020-01-31 48.10% 14.04% 1.299x
105 2015-03-31 … 2020-03-31 44.69% 8.56% 1.333x
106 2015-04-30 … 2020-04-30 51.32% 11.65% 1.355x
107 2015-05-29 … 2020-05-29 51.29% 12.61% 1.343x
108 2015-06-30 … 2020-06-30 53.55% 13.64% 1.351x
109 2015-07-31 … 2020-07-31 64.76% 14.60% 1.438x
110 2015-08-31 … 2020-08-31 73.61% 18.07% 1.470x
111 2015-09-30 … 2020-09-30 73.08% 17.05% 1.479x
112 2015-10-30 … 2020-10-30 67.85% 14.60% 1.465x
113 2015-11-30 … 2020-11-30 77.06% 17.43% 1.508x
114 2015-12-31 … 2020-12-31 79.00% 18.65% 1.509x
115 2016-01-29 … 2021-01-29 116.59% 19.26% 1.816x
116 2016-02-29 … 2021-02-26 112.29% 19.79% 1.772x
117 2016-03-31 … 2021-03-31 114.69% 19.42% 1.798x
118 2016-04-29 … 2021-03-31 116.21% 19.66% 1.807x
119 2016-05-31 … 2021-05-28 112.14% 20.42% 1.762x
120 2016-06-30 … 2021-06-30 110.83% 21.06% 1.742x
121 2016-07-29 … 2021-06-30 107.88% 20.63% 1.723x
122 2016-08-31 … 2021-08-31 105.83% 21.75% 1.691x
123 2016-09-30 … 2021-09-30 102.71% 20.22% 1.686x
124 2016-10-31 … 2021-10-29 108.67% 22.50% 1.703x
125 2016-11-30 … 2021-11-30 107.62% 21.87% 1.704x
126 2016-12-30 … 2021-11-30 110.12% 21.75% 1.726x
127 2017-01-31 … 2022-01-31 97.02% 20.17% 1.639x
128 2017-02-28 … 2022-02-28 98.42% 18.51% 1.674x
129 2017-03-31 … 2022-03-31 101.99% 19.46% 1.691x
130 2017-04-28 … 2022-03-31 105.70% 19.46% 1.722x
131 2017-05-31 … 2022-05-31 101.98% 15.59% 1.747x
132 2017-06-30 … 2022-06-30 92.80% 13.08% 1.705x
133 2017-07-31 … 2022-07-29 92.09% 15.16% 1.668x
134 2017-08-31 … 2022-08-31 91.08% 13.72% 1.680x
135 2017-09-29 … 2022-08-31 92.08% 13.56% 1.691x
136 2017-10-31 … 2022-10-31 85.84% 11.86% 1.661x
137 2017-11-30 … 2022-11-30 85.67% 12.52% 1.650x
138 2017-12-29 … 2022-11-30 87.53% 12.46% 1.668x
139 2018-01-31 … 2023-01-31 83.90% 11.01% 1.657x
140 2018-02-28 … 2023-02-28 79.48% 11.03% 1.616x
141 2018-03-29 … 2023-02-28 79.63% 11.72% 1.608x
142 2018-04-30 … 2023-04-28 75.66% 13.01% 1.554x
143 2018-05-31 … 2023-05-31 79.56% 12.95% 1.590x
144 2018-06-29 … 2023-05-31 79.94% 13.01% 1.592x
145 2018-07-31 … 2023-07-31 87.61% 14.67% 1.636x
146 2018-08-31 … 2023-08-31 83.10% 13.51% 1.613x
147 2018-09-28 … 2023-08-31 82.97% 13.56% 1.611x
148 2018-10-31 … 2023-10-31 79.81% 12.60% 1.597x
149 2018-11-30 … 2023-11-30 81.65% 14.58% 1.585x
150 2018-12-31 … 2023-12-29 88.07% 17.26% 1.604x
151 2019-01-31 … 2024-01-31 87.03% 16.27% 1.609x
152 2019-02-28 … 2024-01-31 87.20% 15.94% 1.615x
153 2019-03-29 … 2024-03-28 98.03% 17.50% 1.685x
154 2019-04-30 … 2024-04-30 93.48% 15.50% 1.675x
155 2019-05-31 … 2024-05-31 96.49% 18.12% 1.663x
156 2019-06-28 … 2024-06-28 93.88% 17.99% 1.643x
157 2019-07-31 … 2024-07-31 89.41% 17.70% 1.609x
158 2019-08-30 … 2024-08-30 90.93% 18.41% 1.612x
159 2019-09-30 … 2024-09-30 95.92% 18.65% 1.651x
160 2019-10-31 … 2024-10-31 97.13% 17.87% 1.673x
161 2019-11-29 … 2024-11-29 104.31% 18.64% 1.722x
162 2019-12-31 … 2024-12-31 96.23% 17.62% 1.668x
163 2020-01-31 … 2025-01-31 101.34% 18.07% 1.705x
164 2020-02-28 … 2025-02-28 97.70% 19.00% 1.661x
165 2020-03-31 … 2025-03-31 96.74% 19.24% 1.650x
166 2020-04-30 … 2025-04-30 89.60% 16.49% 1.628x
167 2020-05-29 … 2025-04-30 88.58% 15.80% 1.629x
168 2020-06-30 … 2025-06-30 92.72% 18.19% 1.631x
169 2020-07-31 … 2025-07-31 83.32% 17.87% 1.555x
170 2020-08-31 … 2025-08-29 79.85% 16.69% 1.541x
171 2020-09-30 … 2025-09-30 84.95% 18.57% 1.560x
172 2020-10-30 … 2025-09-30 88.81% 19.43% 1.581x
173 2020-11-30 … 2025-11-28 77.59% 17.77% 1.508x
174 2020-12-31 … 2025-12-31 80.67% 16.92% 1.545x
175 2021-01-29 … 2025-12-31 57.78% 17.20% 1.346x
176 2021-02-26 … 2026-01-30 66.40% 17.04% 1.422x
177 2021-03-31 … 2026-03-31 63.07% 14.07% 1.430x
178 2021-04-30 … 2026-04-30 72.91% 16.03% 1.490x
179 2021-05-28 … 2026-04-30 74.43% 16.22% 1.501x
Notes
mode=explore; family=contrarian-52w-recovery-quality-hybrid New hybrid family that combines the contrarian-52w recovery ladder with the recovery-quality relay, but not as a flat average: each regime runs an explicit arbitration between a price-repair sleeve and a business-durability sleeve so deep rebounds only survive when quality/liquidity evidence is good enough, while cleaner recoveries can outrank mediocre fundamentals in stronger tapes. Deliberate metric coverage: actively use one recovery cluster (from_52w_high_pct plus from_200d_ma_pct), one momentum cluster (return_3m_pct, return_6m_pct, momentum_12_1_pct, with return_12m_pct only as a repair confirmation), one volatility check, two liquidity checks, one income check, one valuation check, one growth cluster, one quality cluster, and one size tilt. Deliberately weight return_1m_pct, avg_daily_volume_3m, dividend_ttm, pe, eps_growth_pct, 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 collapsing into the same parent stack while still covering the full metric menu consciously. Sparse fundamentals are normalized by present weight before arbitration.
Lesson notes
#857 · degrade · relative_return Δ -0.2258 · parent exp_1104 · Jul 21, 2026 · auto/explore; benchmark CAPW_UNIV
explore/contrarian-52w-recovery-quality-hybrid: relative_return 1.1436x (delta -0.2258 vs exp_1104); win-rate 97.2067%, worst-window 0.990773, dispersion 15.6651%.
#850 · degrade · relative_return Δ -0.3282 · parent exp_1104 · Jul 21, 2026 · auto/explore; benchmark CAPW_UNIV
explore/contrarian-52w-recovery-quality-regime-momentum-hybrid: relative_return 1.0413x (delta -0.3282 vs exp_1104); win-rate 99.4413%, worst-window 0.983682, dispersion 6.4189%.
#847 · degrade · relative_return Δ -0.0915 · parent exp_1104 · Jul 21, 2026 · auto/explore; benchmark CAPW_UNIV
explore/contrarian-52w-recovery-quality-hybrid: relative_return 1.2779x (delta -0.0915 vs exp_1104); win-rate 94.4134%, worst-window 0.961218, dispersion 22.6979%.
#846 · improve · relative_return Δ 0.0169 · parent exp_1104 · Jul 21, 2026 · auto/explore; benchmark CAPW_UNIV
explore/contrarian-52w-recovery-quality-regime-momentum-hybrid: relative_return 1.3864x (delta +0.0169 vs exp_1104); win-rate 100.0%, worst-window 1.055402, dispersion 31.336%.
#840 · degrade · relative_return Δ -0.2711 · parent exp_1104 · Jul 21, 2026 · auto/explore; benchmark CAPW_UNIV
explore/contrarian-52w-recovery-quality-regime-momentum-hybrid: relative_return 1.0983x (delta -0.2711 vs exp_1104); win-rate 100.0%, worst-window 1.015473, dispersion 8.902%.
#835 · degrade · relative_return Δ -0.1417 · parent exp_1104 · Jul 21, 2026 · auto/explore; benchmark CAPW_UNIV
explore/contrarian-52w-recovery-quality-regime-momentum-hybrid: relative_return 1.2277x (delta -0.1417 vs exp_1104); win-rate 93.2961%, worst-window 0.962398, dispersion 17.9162%.
#830 · degrade · relative_return Δ -0.2886 · parent exp_1104 · Jul 21, 2026 · auto/explore; benchmark CAPW_UNIV
explore/contrarian-52w-recovery-quality-regime-momentum-hybrid: relative_return 1.0808x (delta -0.2886 vs exp_1104); win-rate 97.2067%, worst-window 0.968241, dispersion 10.7931%.
#827 · degrade · relative_return Δ -0.2960 · parent exp_1104 · Jul 21, 2026 · auto/explore; benchmark CAPW_UNIV
explore/contrarian-52w-recovery-quality-regime-momentum-hybrid: relative_return 1.0734x (delta -0.2960 vs exp_1104); win-rate 94.4134%, worst-window 0.95015, dispersion 9.9316%.
#822 · degrade · relative_return Δ -0.2550 · parent exp_1104 · Jul 21, 2026 · auto/explore; benchmark CAPW_UNIV
explore/contrarian-52w-recovery-quality-regime-momentum-hybrid: relative_return 1.1144x (delta -0.2550 vs exp_1104); win-rate 99.4413%, worst-window 0.999356, dispersion 11.684%.
#821 · degrade · relative_return Δ -0.0563 · parent exp_758 · Jul 21, 2026 · auto/explore; benchmark CAPW_UNIV
explore/contrarian-52w-recovery-quality-hybrid: relative_return 1.3694x (delta -0.0563 vs exp_758); win-rate 100.0%, worst-window 1.038568, dispersion 30.093%.
Monthly picks — top stocks selected each month (whole timeline)
timeline — 240 months · top 15 each
Month 123456789101112131415
2006-07-31 MNST GOOGL GOOG XOM ILMN T MRK AAPL CMCSA BAC CPB SLG MO MSFT DGX
2006-08-31 MAY ILMN GOOGL GOOG AAPL XOM AKAM ICE MSFT NVDA ATI DDS VTR MRK T
2006-09-29 MAY ILMN AAPL AKAM GOOG GOOGL ATI LVS AAL BKNG KMX MNST AT MTW ORCL
2006-10-31 MAY AKAM ALGN GOOG INTC AAPL BKNG AT ORCL EXPD GOOGL KSS GT UAA ILMN
2006-11-30 MAY GOOG MA GOOGL ILMN ICE AAPL REGN ALGN AKAM AT UAA BKNG GS INTC
2006-12-29 MAY MA ICE ALGN REGN EXPE ILMN AAPL ATI GOOG CF NVDA AT MTCH CRM
2007-01-31 MAY ICE CF MA AAPL UAL ALGN EXPE GT REGN MGM LVS DHI TTWO TEX
2007-02-28 MAY ICE CF ALGN MGM GT MA BKNG UAL DLX WYNN AAPL ON CBRE ALB
2007-03-30 MAY CF ICE GT DLX ON MGM BKNG WYNN MA MOS HP MLM DECK UIS
2007-04-30 MAY CF GT ICE DLX ALGN ANDV MOS AMZN HP ON TTWO OI TEX CMI
2007-05-31 MAY GT FSLR CF ALGN CLF HES AAPL BKNG AMZN DLX ANDV OI MA ICE
2007-06-29 MAY FSLR KMG CF CLF AAPL DLX AMZN ANDV MA GT NOV AL ICE NRG
2007-07-31 AAPL FSLR CF AL AXON AMZN DJ KMG MA MOS GOOGL GOOG ICE CE MAY
2007-08-31 AAPL FSLR CF AMZN KMG AXON GRMN AL ALGN ISRG FCX INTC DECK GOOGL GOOG
2007-09-28 AAPL GRMN CF WYNN MOS AMZN NOV GME LVS FTI ISRG MPWR VRTX GOOGL GOOG
2007-10-31 AAPL MOS GOOGL GOOG ISRG CF WYNN AMZN GRMN BBBY FLR NOV MPWR MSFT LVS
2007-11-30 FSLR AAPL GOOG GOOGL ISRG MOS CF MSFT AMZN FCX FTI NDAQ AL FLR NOV
2007-12-31 AAPL FSLR GOOG GOOGL MOS MSFT CF ISRG PG XOM ADM PRGO MCD AMZN JEC
2008-01-31 AAPL MOS CF FSLR GOOG GOOGL MSFT ESRX PRGO JEC MA ADM ILMN RRC HES
2008-02-29 MOS AAPL CF FSLR PRGO RRC CLF CNX CTRA GOOG MA OI XOM APA MEE
2008-03-31 MOS AAPL FSLR PRGO WMT MEE CSX MA GILD ILMN CLF RRC EOG STLD APA
2008-04-30 MOS AAPL FSLR MA CF MEE CLF WMT APA GOOG ESV HP XOM DVN PRGO
2008-05-30 FSLR AAPL MEE MOS ESV CLF SWN CF BTUUQ MA GOOG BCR HRS CELG GOOGL
2008-06-30 AAPL MEE MOS ESV CLF HP FSLR BTUUQ BCR SWN COP MA WMT NBR APA
2008-07-31 AAPL ESV MEE BCR SWN CLF BTUUQ IBM FSLR APOL MOS ATGE CELG FDO WYE
2008-08-29 SWN AAPL BCR CF ROH DF ESV MBI CLF FSLR FDO APOL CELG ATGE BTUUQ
2008-09-30 SWN BCR DF FDO CELG APOL ATGE WMT ROH CEPH HRS AAPL FI WFC COG
2008-10-31 SWN WFC AAPL BCR BRL WMT TFC STE ROH GIS DF XOM WWY CHD DLTR
2008-11-28 AAPL DLTR BRL SWN XOM WMT BCR ROH MCD CHD DF WFC CLX KR AMGN
2008-12-31 XOM AMGN AAPL BRL SHW DLTR DAL WFC AZO MCD WRB WMT GILD BMY GOOG
2009-01-30 XOM NFLX AAPL SWN DLTR BRL ROH ALK GILD VRTX MNST GOOG DISCA AMGN ABT
2009-02-27 XOM VRTX NFLX AAPL AZO GOOG ORLY VTRS DLTR MNST GOOGL AAP PCG WMT NEM
2009-03-31 XOM NFLX AZO VTRS AAPL AAP DLTR GOOG ROH ORLY NEM MNST EW AN DRI
2009-04-30 F AAPL NFLX AN GOOG AAP AZO ROH BR DRI XOM MNST GS IBM VTRS
2009-05-29 AAPL F GS AN GOOG AZO FFIV DRI FCX MNST IBM EW NFLX MS AAP
2009-06-30 CAR F WDC AAPL EXPE GS ASH GNW PALM AN GOOG MPWR TSN BWA NFLX
2009-07-31 CAR ASH STX F GT BAC AAPL THC PALM LULU BLDR TT TER DDS EBAY
2009-08-31 CAR GNW F BAC LULU LVS THC IP PALM FNMA UIS MTG CBRE GT FITB
2009-09-30 CAR GNW PALM MTG SSP UIS LVS FITB ASH F BAC SLG DDR C FNMA
2009-10-30 CAR GNW SSP BC SW HIG INCY LVS THC PALM SLG UIS EXPE STX BKNG
2009-11-30 CAR GNW KMG BC VSTNQ SSP UIS GGP LVS THC HIG MAC AAPL STI STX
2009-12-31 CAR SANM GGP VSTNQ SSP UAL UIS INCY DDS AMD LVS STI BKNG THC LPX
2010-01-29 SANM CAR UAL AMD UIS INCY GGP DDS F BC SLG MTW BKNG STX JBL
2010-02-26 CAR SANM UAL ACS AMD UIS NYT GNW MTW F AAL INCY MU GGP LVS
2010-03-31 SANM UAL F CLF INCY GNW AAL NYT SMCI LYV LULU GGP DDS ETFC UIS
2010-04-30 UAL MTG SANM GNW INCY LYV CLF DDS ETFC BC MBI LPX VIAV LULU NFLX
2010-05-28 UAL BC SANM MTG ETFC MBI LYV ZION INCY SSP BBWI AAL DPZ WLL DDS
2010-06-30 AAPL ETFC AAL UAL AKAM WLL NFLX LVS PRGO C HSY DECK FFIV CMG ALK
2010-07-30 AAPL ETFC AAL C LVS UAL FFIV AAP WLL DECK KDP INTU FIS GS AZO
2010-08-31 AAPL ETFC LVS NEM FFIV AKAM NFLX MBI BKNG CMS AZO WLL CMI CTSH NTAP
2010-09-30 ETFC NFLX AKAM LVS AAPL FFIV CRM MBI AAL BKNG FTNT URI CMG CCU NTAP
2010-10-29 ETFC LVS NFLX FTNT MBI AAPL AAL FFIV UAL CMG BKNG EC WLL URI VRTS
2010-11-30 ETFC LVS NFLX BKNG MBI CMG URI VRTS UAL EC FFIV WLL FTNT AAL AAPL
2010-12-31 ETFC LVS NFLX URI CMG FFIV ACAS DECK WLL VRTS LULU LYB BKNG FTNT MBI
2011-01-31 MAY ETFC LVS FFIV AIG CMG URI DECK WLL MBI LPX F CIEN MAS AAPL
2011-02-28 MAY ETFC URI VIAV NFLX NVDA LULU WLL AIG IPGP NXPI LPX ANDV AAPL MAS
2011-03-31 MAY IPGP VIAV NXPI URI ETFC NVDA NFLX ANDV SWKS TSLA LVS AAPL CIEN LPX
2011-04-29 MAY IPGP VIAV URI NVDA NXPI LULU TSLA ANDV DECK KLAC ETFC REGN DF BC
2011-05-31 MAY IPGP LULU MTW URI NXPI VIAV NVDA ANDV GMCR PETM EP WFM GR FDO
2011-06-30 MAY IPGP EP ANF NXPI COG WCG LULU NFLX DDS ULTA BKNG DPZ ABMD FTNT
2011-07-29 AAPL ULTA COG CTRA CEPH IPGP MNST DPZ MAY VRTS BIIB DDS NFLX EP LULU
2011-08-31 AAPL CF CTRA BIIB MCD DG LULU WYNN AZO ULTA DLTR EQT BKNG OKE IRM
2011-09-30 AAPL MNST AZO VFC DLTR CF DPZ NI ULTA V KMB IBM NEM DG MA
2011-10-31 AAPL CF MAY KLAC BIIB DLTR VFC MNST CTRA MCD AZO IBM GOOG ULTA DG
2011-11-30 AAPL INTC CTRA GOOG KLAC DLTR ULTA VFC BIIB PM IBM GOOGL MA GWW OKE
2011-12-30 AAPL GOOG KLAC GRMN INTC XOM PM GOOGL DLTR GPC OKE VFC MA DOC TJX
2012-01-31 URI COG REGN WCG GNRC AAPL MNST AAL MBI ABMD STX ADS DPZ LYB FAST
2012-02-29 URI STX AAPL MOH REGN WCG NXPI HCA LYB MBI ITT GRMN SWKS FAST COG
2012-03-30 AAPL STX BLDR URI REGN MOH NXPI MTG BKNG LYB EQIX WCG TEX COG HFC
2012-04-30 AAPL REGN BLDR URI EQIX STX NXPI FBHS FICO ULTA PHM BKNG EC GPS MNST
2012-05-31 AAPL AAL REGN STX BLDR BKNG EQIX EC ORLY GPS MNST LULU INCY URI MPWR
2012-06-29 AAPL AAL REGN BLDR STX MNST EXPE BKNG VRTX EQIX ROST TRIP ALGN SHW INCY
2012-07-31 AAPL EXPE LPX AAL MNST SHW EW EQIX VRTX DG STX V MRK STZ SBAC
2012-08-31 AAPL STX ANDV PHM STZ LPX KBH EQIX VLO UIS EXPE WOR SHW GPS GOOG
2012-09-28 PHM LPX STX AAPL KBH EXPE ANDV STZ VRTX BLDR LYB VLO AAL LEN BBBY
2012-10-31 AAPL PHM BBBY KBH ANDV LPX BLDR GNRC STZ GOOG GOOGL WSM MAS ALL HCA
2012-11-30 KBH PHM BBBY GNRC LPX ANDV AAPL STZ REGN FSLR WHR PSX AXON EXPE META
2012-12-31 FSLR GNRC LPX PHM REGN KBH BBBY GNW THC ANDV WHR AXON AAPL SW NFLX
2013-01-31 NFLX PHM LPX OMX META KBH THC BBBY VRTS URI WHR FSLR ANDV SW APO
2013-02-28 NFLX OMX THC MTG VRTS LPX GNRC PHM APO KBH META URI DAL MPC CAR
2013-03-28 NFLX FMCC FNMA OMX MTG SVU VRTS THC APO GNRC DAL GNW VLO CPAY LPX
2013-04-30 FNMA FMCC OMX MTG NFLX THC HRB ANDV VRTS PSX ALK GILD ENPH MPC APO
2013-05-31 FNMA FMCC OMX MTG TSLA NFLX APO SVU KBH FSLR VRTS REGN ALK GME AAPL
2013-06-28 FNMA FMCC OMX TSLA NFLX FSLR MTG SVU VRTS REGN BBBY CAR MU CPAY KBH
2013-07-31 FNMA FMCC OMX TSLA BBBY MTG FSLR NFLX SVU VRTS GME FANG GNW MU AAPL
2013-08-30 OMX FNMA TSLA FMCC MTG BBBY SVU NFLX AAPL FANG TRIP GME BBY REGN GNW
2013-09-30 OMX TSLA FNMA FMCC BBBY MTG NFLX META AAPL GME FANG FL AXON EA BBY
2013-10-31 OMX FMCC FNMA TSLA META MU FANG CIEN AXON GT AAPL BKNG MTG INCY EPAM
2013-11-29 OMX FNMA FMCC META INCY TSLA CLF AXON MU FANG NFLX PBI FL CIEN GME
2013-12-31 FNMA FMCC META INCY MU TSLA NFLX AXON BBY PBI KATE AAPL CLF FL TLAB
2014-01-31 FNMA FMCC INCY TKO ILMN MU META KATE CELG SMCI AXON MGM ETFC FLT RRD
2014-02-28 FMCC FNMA TKO ILMN META INCY TSLA AAL FRX MU DXCM PHM ALGN SMCI KBH
2014-03-31 FMCC FNMA TKO ILMN TSLA META INCY DXCM FRX AAL FANG WYNN FSLR VTRS NFLX
2014-04-30 FMCC FNMA TSLA TKO ILMN FRX META FANG CAR AAL HP NXPI SWKS MU VTRS
2014-05-30 FMCC FNMA META TSLA FRX ILMN AAL TPL SWKS FANG CAR MU WLL NBR DAL
2014-06-30 FNMA FMCC TRGP FANG AAL META FRX NFX SWKS NBR WLL DAL MU INCY ILMN
2014-07-31 FMCC FNMA SWKS FANG TRGP MU NFX NBR CAR WLL AAPL TPL WMB FRX ILMN
2014-08-29 ENPH MMI SWKS AAPL TRGP CAR TPL MU FMCC NFX FNMA LUV FANG SMCI URI
2014-09-30 ENPH TPL LUV SWKS AAPL GILD MMI HCA TRGP SMCI THC CAR STLD UHS MU
2014-10-31 ENPH MMI PANW AAPL SMCI SWKS EW GILD BBBY TPL AMGN SIAL LUV META TRGP
2014-11-28 PAYC SMCI AAPL SWKS PANW EW MNST LUV BBBY MMI ZTS GILD KLAC AXON VEEV
2014-12-31 AXON PAYC SWKS PANW EW MNST ENPH AAPL SMCI LUV CNC DXCM INCY KLAC UAL
2015-01-30 AAPL SWKS RCL AXON EA LULU KR RMD CSGP ALK LUV GILD CNC VTR DAL
2015-02-27 PAYC SWKS AAPL AXON KR MNST EA PANW ALK CNC LULU SMCI EPAM ENPH AVGO
2015-03-31 SWKS PAYC INCY AAPL CNC EA MNST NXPI BIIB PANW GHC AVGO HSP AXON SMCI
2015-04-30 SWKS PAYC BLDR CNC INCY PANW KMG MNST EPAM AAPL MOH NXPI ON HSP AVGO
2015-05-29 BTUUQ BLDR CNXT AXON PAYC SWKS CZR NFLX INCY KMG NFX AAPL CNC ABMD SSP
2015-06-30 AAPL BTUUQ BLDR SWKS AXON GILD PAYC SEDG HUM VTRS DXCM COTY ZBRA CI ANET
2015-07-31 AAPL BTUUQ META BLDR CNC INCY CI IBKR GILD DXCM AET COTY EA ABMD ANET
2015-08-31 SBUX AAPL META ABMD DXCM BLDR AYI EA HAS GOOG HSP GOOGL MDLZ ALK GPN
2015-09-30 SBUX META AAPL AMZN AIZ GOOG DXCM EA GOOGL HSP CBOE FIX CASY ABMD BKNG
2015-10-30 META SBUX GOOG AAPL GOOGL ABMD BKNG GILD AMZN VRSN KDP AIZ PSA CINF MO
2015-11-30 GE ABMD AAPL AMZN META GOOG GOOGL TSS ATVI TAP FIX MCD HOLX GPN TTWO
2015-12-31 AMZN ABMD GE GOOG META GOOGL ATVI AAPL VRSN KMB KR CLX CVC DLR MAA
2016-01-29 AMZN ABMD GE META GOOG ATVI ATO AAPL AWK DLR GOOGL NI CASY EQIX STZ
2016-02-29 META AMZN TSN ABMD MAT GOOG KMB CMS GE FSLR WEC CINF GOOGL LNT AWK
2016-03-31 TSN NEM LITE MAT FSLR WB ANF ABMD ARG FAST KLAC GNRC EVRG AMZN META
2016-04-29 CLF CNX TSN LITE NEM WB MUR MTW NVDA CPRI ANF MAT STLD ABMD TPR
2016-05-31 CLF AMD CNX DXC MTW RRC ALB NEM NVDA X CZR WB EW STLD STJ
2016-06-30 CLF X OKE CNX NVDA AMD DXC NEM MTW ALB MDR MUR JOY WB WCG
2016-07-29 CLF AMD X NEM WB NVDA DHR OKE CNX WLL DLR DXC WPX BLDR RRC
2016-08-31 AMD WB CLF X NEM NVDA CNX DHR JOY WMB GNW OKE TRGP ULTA WPX
2016-09-30 WB CLF AMD X WMB NVDA GNW TRGP DHR NEM KMI LITE JOY WPX CNX
2016-10-31 WB X LITE TPL NVDA GNW AAPL NBR WMB CNX META AMZN AMD DXC WPX
2016-11-30 CLF WB AMD X FMCC NVDA FNMA LITE WOR NBR DHR TPL ETSY MRVL EME
2016-12-30 CLF FMCC NVDA FNMA AMD X UIS NBR WB BAC SLM STLD BBY UAL LNC
2017-01-31 FMCC NVDA FNMA CLF AMD X NBR WB CSX TPL UIS BAC STLD CFG URI
2017-02-28 AMD CLF NVDA X NBR COHR SLM FMCC FNMA CSX LITE URI TPL BAC UIS
2017-03-31 AMD NVDA INCY CLF TTD URI CSX X MU RF ANET BAC COHR CFG UIS
2017-04-28 AMD NVDA TTD INCY KMG MU LITE ANET BAC CSX FMCC X FNMA LRCX NRG
2017-05-31 TTD NVDA WB AMD XYZ KMG ANET TSLA VEEV MU LRCX CSX TTWO ALGN BBY
2017-06-30 NVDA TTD WB XYZ LITE LRCX TSLA TTWO ANET VEEV VRTX AMAT KMG ADSK PAYC
2017-07-31 NVDA XYZ ALGN VRTX TTD WB LITE SEDG TSLA ANET VEEV PAYC NRG KMG MU
2017-08-31 NVDA SEDG WB VRTX NRG TTWO XYZ ALGN TSLA ANET IPGP CVNA LITE FSLR KMG
2017-09-29 NVDA WB TTWO SEDG XYZ BBBY VRTX FSLR ALGN IPGP TTD ANET NRG MU LRCX
2017-10-31 BBBY XYZ NVDA WB ALGN SEDG MU MTW FSLR TTWO TTD IPGP LRCX NRG CZR
2017-11-30 BBBY ENPH XYZ SEDG MU NVDA ALGN IPGP ANET LRCX WB NRG PYPL MTCH COHR
2017-12-29 BBBY ENPH XYZ SEDG ALGN WB MU IPGP FSLR ANET NVDA IBKR MTCH TKO LRCX
2018-01-31 BBBY NKTR XYZ EC SEDG KBH ENPH ANET WB FSLR MAY PENN KSS IPGP ALGN
2018-02-28 NKTR BBBY ENPH EC XYZ ANET MTCH SEDG FSLR WB MAY KSS NFLX NVDA AMZN
2018-03-29 NKTR XYZ AMZN MU NVDA SEDG ENPH ANET BA WB ALGN META HET THC TKO
2018-04-30 NKTR MU AMZN EC HET TWTR META GWW TKO SEDG ABMD BKNG ANET FSLR CVNA
2018-05-31 AXON ENPH NKTR THC TKO AMZN MU EC HET SEDG CCI META DXCM CVNA ANDV
2018-06-29 TKO AXON ENPH HET THC CVNA AMZN MU XYZ ALGN ETSY NKTR NFLX EC CCI
2018-07-31 TKO HET AXON CVNA XYZ MU AMZN ETSY TTD THC ALGN CCI TPL ENPH SVU
2018-08-31 HET CVNA TKO ENPH AXON TTD DXCM XYZ AMD ETSY NFLX THC LULU SVU M
2018-09-28 HET CVNA AMD XYZ TKO CCI AMZN DXCM ABMD UIS TTD AXON AAPL MOH ETSY
2018-10-31 HET CCI DXCM MOS AAPL ABMD UIS XYZ MOH AMZN TKO AAP ETSY CRM LULU
2018-11-30 HET CCI AMZN MOS KDP TTD MOH VZ DELL MRK CLX BALL PFE AET ETSY
2018-12-31 HET CCI AMZN AET KDP MKC SCG MRK NRG RHT WCG VZ AZO WELL XLNX
2019-01-31 HET CCI AMZN XLNX RHT BALL WELL DOC DXCM AVGO FNMA CDAY MRK ELV BLL
2019-02-28 HET FNMA ENPH FMCC TTD ETSY RHT CLF NYT CIEN ERIE CDAY AMD XLNX GRMN
2019-03-29 HET TTD FNMA FMCC ENPH ETSY CVNA CMG CIEN ERIE NYT AMD RHT CDAY GEN
2019-04-30 HET ENPH TTD FNMA FMCC AMD ETSY CVNA ALGN SMCI KEYS AVP CMG ANF CIEN
2019-05-31 HET CCI AMZN ENPH ERIE XRAY EXR CPRT MTCH EQIX TSN VEEV LHX MKTX AZO
2019-06-28 HET ENPH FNMA AVP FMCC TTD CVNA VEEV ERIE QCOM MTCH MKTX PAYC SEDG AMD
2019-07-31 HET ENPH TTD ERIE AVP MKTX VEEV MTCH XYZ CVNA COTY PAYC SBUX AAPL QCOM
2019-08-30 HET ENPH CCI AMZN EXR AAPL QCOM PODD SEDG AVP ERIE MKTX MSFT TTD TDY
2019-09-30 HET ENPH SEDG MKTX AVP QCOM PODD MTCH BALL HSY KBH LRCX FNMA SBAC CVNA
2019-10-31 HET ENPH SEDG PODD BLDR AVP MKTX KLAC GNRC KBH FNMA AAPL LRCX FMCC NWL
2019-11-29 HET ENPH DXCM TSLA SEDG AVP LRCX AAPL BLDR QRVO PODD TER GNRC KLAC LEG
2019-12-31 HET ENPH TSLA THC CVNA AAPL AMD QRVO DXCM MAT BLDR SWKS BMY PODD LRCX
2020-01-31 HET TSLA AAPL ENPH THC SEDG LM CVNA SWKS APO TER QRVO CDAY BLDR ANSS
2020-02-28 HET TSLA CCI ENPH DXCM MSFT AAPL LM GEN TYL PODD DVA MSCI RMD GNRC
2020-03-31 ENPH TSLA DXCM AMZN GEN AAPL KR LM DVA BIIB CLX NEM DLR REGN VRTX
2020-04-30 ENPH TSLA DXCM MSFT AMZN AAPL NEM PODD GEN BIO MKTX KR VEEV WST CLX
2020-05-29 ENPH TSLA DXCM DDOG AAPL AMZN VEEV GEN GOOG CCI MSFT AMT CRWD NEM TECH
2020-06-30 TSLA BBBY ENPH DDOG AAPL DXCM XYZ META AMZN NEM CCI MSFT EA NYT WST
2020-07-31 BBBY TSLA AAPL AMZN XYZ NVDA DDOG PENN META CVNA CCI DXCM ENPH EBAY MSFT
2020-08-31 BBBY TSLA MRNA CVNA RRC ETSY PENN XYZ AMD AAPL CNX EQT PBI NVDA LRCX
2020-09-30 BBBY TSLA PENN AAPL TUP GME AMD AMZN CVNA NVDA XYZ PBI FDX META ENPH
2020-10-30 TSLA TUP ENPH PENN AAPL GME XYZ FDX NVDA SEDG BBBY TTD VIAC PBI CVNA
2020-11-30 TUP TSLA BBBY MRNA GME ENPH TTD PBI PENN SEDG XYZ VIAC UA CLF PVH
2020-12-31 TUP TSLA ENPH MRNA BBBY PENN GME TTD XYZ CVNA PBI ETSY CLF BBWI CPRI
2021-01-29 GME TSLA ENPH BBBY TUP TTD SEDG CLF TER CVNA FDX DDS ETSY LRCX PVH
2021-02-26 GME TSLA DDS TUP MRNA ENPH TDC CLF AXON PBI COHR PENN XYZ PD MAC
2021-03-31 GME TSLA NBR TUP VIAC PENN TPL PSKY ENPH MRNA DVN APA TRIP CPRI FANG
2021-04-30 GME VIAC TSLA NBR TPL TRIP TUP DISCA DISCK QEP OXY CAR MAC AXON CLF
2021-05-28 GME MAC DDS TPL TSLA DISCA DISCK VIAC NBR LPX TRIP TDC CAR BBBY NUE
2021-06-30 GME DDS CAR MAC TSLA BBBY DISCK NUE DISCA NBR LPX PBI PSKY TPL XEC
2021-07-30 GME MRNA RRD DDS ASO NUE MUR ANF DVN TRGP CAR MDP RRC TPL GNRC
2021-08-31 GME MRNA DDS RRD MDP TSLA MAC CLF SBNY RRC NUE ASO TPL FTNT NAVI
2021-09-30 MRNA GME RRD MDP DDS RRC BX SBNY CAR AMD MAC FTNT NUE IT NAVI
2021-10-29 MRNA GME RRC CAR RRD DDS TSLA DVN MRO MDP TRGP MAC MUR M SBNY
2021-11-30 CAR TSLA DDS NVDA RRC DVN MRO RRD MDP AMD MRNA TRGP FANG KKR MUR
2021-12-31 CAR TSLA RRD DDS NVDA AMD BLDR DDOG BX ALB M APP ON DVN APA
2022-01-31 DVN RRD TSLA EXR MRO AAPL AZO EOG COP FANG BLDR XOM NVDA PFE CVX
2022-02-28 DVN RRD MRO AAPL TSLA TRGP EOG COP FCX CVX MCK FANG XOM BLDR CAR
2022-03-31 COP TSLA EXR RRD CAR DVN MUR MRO TRGP XOM OXY CF AAPL BKR RRC
2022-04-29 COP EQT RRC DVN TRGP CVX DDS MCK HP MUR MRO NUE CNX APA CTRA
2022-05-31 VLO EQT APA DVN XOM OXY CVX RRC CTRA EXE MRO PSX EOG BMY HRB
2022-06-30 VLO XOM MRK BMY MCK FHN AMT HRB UNM OXY HSY TSLA CVX EXR APA
2022-07-29 XOM EQT OXY VLO CVX LW DVN CTRA AMT HES HRB TSLA MRO JKHY ODP
2022-08-31 DVN HRB MPC EXR FSLR OXY CAH CF TSLA XOM AMT SMCI CTRA MCK MRO
2022-09-30 MPC HRB FSLR TSLA MCK CAH HES COP HUBB DVN LW UNM ODP EXR NLSN
2022-10-31 FSLR AZO DVN MPC GPC TKO HUM HII HES CF XOM FTI ERIE PFG TPL
2022-11-30 UCL FSLR SMCI TPL DYN HES SANM ODP DXCM UNM ABMD FTI MPC EME COP
2022-12-30 UCL SMCI MPC FSLR TPL AXON STLD HES COP SANM ABMD ODP MUR UNM FTI
2023-01-31 UCL NFLX HES SMCI ODP FSLR AXON FCX FTI LVS TPL ABMD STLD SANM BKR
2023-02-28 UCL MTW TSLA COTY FTI NVDA EXR MPC TEX CLF BLDR STLD PVH ALGN BKNG
2023-03-31 TSLA SMCI NVDA FTI FSLR UCL MTW TEX EXR GE STLD ATI BKNG AN AXON
2023-04-28 SMCI NVDA FSLR META TSLA AXON UCL WST EXR ASO TKO GE MSFT COTY ALGN
2023-05-31 SMCI EXR NVDA BKNG BLDR MSFT AVGO TSLA AAPL FICO PANW CPRT KBH COTY PHM
2023-06-30 SMCI CVNA TSLA NVDA PLTR APP BLDR META VRT RCL AMD CCL IAC CRWD FSLR
2023-07-31 SMCI CVNA TSLA APP NVDA PLTR META VRT BLDR RCL JBL CRWD PANW CCL AMD
2023-08-31 CVNA SMCI TSLA VRT NVDA APP EXR RCL META NFLX DASH BLDR PLTR HOOD BBBY
2023-09-29 NVDA SMCI VRT EXR APP TSLA CVNA BKNG GOOG EME META VST APO BKR FTI
2023-10-31 VRT NVDA EXR APP NFLX FTI META AIZ MCK DELL CNX LII RRC MSFT JBL
2023-11-30 EXR NVDA VRT ANF TSLA PHM PLTR SMCI META NRG COIN APP GPS FTI CVNA
2023-12-29 CVNA COIN ANF FNMA GPS VRT SMCI KEY PLTR TSLA APP FMCC CRWD VNO NVDA
2024-01-31 ANF FNMA CVNA SMCI VRT FMCC NVDA CRWD GPS APP ANET ADCT X AMD FICO
2024-02-29 SMCI ADCT CVNA ANF NVDA VRT CRWD DYN COIN FNMA AMD VST PANW GPS APP
2024-03-28 SMCI ADCT CVNA NVDA COIN FNMA ANF VRT DYN APP VST FMCC GPS AMD DELL
2024-04-30 SMCI CVNA ADCT DYN NVDA ANF VRT FNMA COIN APP VST GPS HOOD WSM COHR
2024-05-31 CVNA VST NVDA SMCI VRT DELL ANF DYN ADCT COIN FNMA APP HOOD NRG WSM
2024-06-28 NVDA VST CVNA SMCI VRT ANF DELL DYN APP COIN LU FNMA FSLR EME THC
2024-07-31 CVNA NVDA VST DYN ANF APP LUMN VRT COIN HOOD NRG LU COHR THC GPS
2024-08-30 LUMN NVDA CVNA DYN VST PBI LU HOOD THC FSLR ANF FICO PLTR SOLV DELL
2024-09-30 LUMN DYN CVNA NVDA APP PBI VST FSLR GEV COHR ECHO TPL THC PLTR GME
2024-10-31 LUMN CVNA APP VST NVDA PLTR COHR GEV HOOD FICO IRM TPL VNO ECHO CNX
2024-11-29 LUMN APP CVNA TPL FMCC PLTR FNMA VST NVDA GEV COHR TSLA AXON VRT HOOD
2024-12-31 APP FMCC FNMA PLTR NVDA TSLA CVNA HOOD VST AXON TPL LB CCI TRGP LITE
2025-01-31 APP FMCC FNMA PLTR TSLA VST HOOD GEV TPL CVNA LB AXON LUMN UAL VRT
2025-02-28 FNMA FMCC APP HOOD PLTR NVDA TPR CCI IBKR TSLA META EXR TKO VFC WSM
2025-03-31 FNMA FMCC NEM BRK-B NVDA CME CAH EXE GL TPL TPR HWM EXC AZO MCK
2025-04-30 FNMA NEM PLTR FMCC VRSN COR PM NVDA GEV HOOD EHC TKO ROL CNP ETR
2025-05-30 FNMA NEM FMCC PLTR APP NVDA TSLA HOOD GEV PM BUD MNST JCI HWM GILD
2025-06-30 FNMA HOOD FMCC CAR APP PLTR NVDA TSLA GEV COIN VRT NEM AXON NRG STX
2025-07-31 HOOD FNMA FMCC CAR APP NVDA GEV PLTR NEM COIN TSLA CVNA SMCI TPR HWM
2025-08-29 HOOD PLTR FNMA CAR UCL FMCC GEV APP ECHO FIX COIN LITE AMD NVDA VST
2025-09-30 FNMA FMCC HOOD ECHO APP LITE WDC CAR PLTR STX COIN TSLA GEV FIX AVGO
2025-10-31 TE FMCC FNMA APP ECHO HOOD LUMN MU NEM CIEN NVDA LITE WDC DYN AMD
2025-11-28 ECHO LITE TE WDC HOOD CIEN AMD STX MU PLTR APP LUMN KSS SANM NVDA
2025-12-31 LITE TE ECHO MU WDC CIEN COHR STX AMD NVDA AVGO LUMN ALB SSP VIAV
2026-01-30 TE ECHO MU WDC LITE STX ALB LRCX NEM CIEN LUMN COHR WBD TER KLAC
2026-02-27 LITE TE WDC MU CIEN COHR STX ECHO VIAV TER GLW LRCX ALB FIX IPGP
2026-03-31 LITE CIEN CCI MU WDC VIAV ECHO EXR NVDA FIX GILD ATI GLW TRGP COHR
2026-04-30 LITE CIEN VIAV MU WDC CCI COHR GLW NVDA STX APA TER ECHO EXR FIX
2026-05-29 MU LITE DELL VIAV NVDA WDC CCI INTC AMD CIEN STX COHR FIX NBR VRT
2026-06-26 MU WDC LITE STX DELL MRVL CIEN VIAV DD AMD TE INTC HPE FLEX GLW
Scoring script (python)
FORMULA_NAME = "Contrarian 52-Week Recovery with Quality Arbitration (v1104)"
LOGIC_VARIANT_COUNT = 3
NOTES = """mode=explore; family=contrarian-52w-recovery-quality-hybrid
New hybrid family that combines the contrarian-52w recovery ladder with the recovery-quality relay, but not as a flat average: each regime runs an explicit arbitration between a price-repair sleeve and a business-durability sleeve so deep rebounds only survive when quality/liquidity evidence is good enough, while cleaner recoveries can outrank mediocre fundamentals in stronger tapes.
Deliberate metric coverage: actively use one recovery cluster (from_52w_high_pct plus from_200d_ma_pct), one momentum cluster (return_3m_pct, return_6m_pct, momentum_12_1_pct, with return_12m_pct only as a repair confirmation), one volatility check, two liquidity checks, one income check, one valuation check, one growth cluster, one quality cluster, and one size tilt. Deliberately weight return_1m_pct, avg_daily_volume_3m, dividend_ttm, pe, eps_growth_pct, 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 collapsing into the same parent stack while still covering the full metric menu consciously. Sparse fundamentals are normalized by present weight before arbitration."""

CALM_BULL = {
    "from_52w_high_pct": (0.18, -1),
    "from_200d_ma_pct": (0.14, +1),
    "return_6m_pct": (0.10, +1),
    "momentum_12_1_pct": (0.08, +1),
    "realized_vol_3m": (0.05, -1),
    "avg_daily_dollar_volume_3m": (0.05, +1),
    "dividend_yield_ttm_pct": (0.03, +1),
    "market_cap": (0.04, -1),
}

STRESSED_BULL = {
    "from_52w_high_pct": (0.12, -1),
    "from_200d_ma_pct": (0.14, +1),
    "return_3m_pct": (0.08, +1),
    "momentum_12_1_pct": (0.07, +1),
    "realized_vol_3m": (0.07, -1),
    "avg_daily_dollar_volume_3m": (0.07, +1),
    "trading_days_3m": (0.05, +1),
    "free_cash_flow_margin_pct": (0.08, +1),
    "operating_margin_pct": (0.06, +1),
    "free_cash_flow_growth_pct": (0.05, +1),
    "forward_pe": (0.05, -1),
}

RISK_OFF = {
    "from_52w_high_pct": (0.08, -1),
    "from_200d_ma_pct": (0.15, +1),
    "return_12m_pct": (0.05, +1),
    "realized_vol_3m": (0.11, -1),
    "avg_daily_dollar_volume_3m": (0.08, +1),
    "trading_days_3m": (0.06, +1),
    "dividend_yield_ttm_pct": (0.06, +1),
    "forward_pe": (0.05, -1),
    "revenue_growth_pct": (0.05, +1),
    "operating_income_growth_pct": (0.06, +1),
    "free_cash_flow_growth_pct": (0.07, +1),
    "forward_eps": (0.04, +1),
    "operating_margin_pct": (0.08, +1),
    "free_cash_flow_margin_pct": (0.10, +1),
}


def _regime_book(regime):
    if regime.get("bull"):
        if regime.get("avg_realized_vol_3m", 0) > 28 or regime.get("breadth", 0) < 0.62:
            return STRESSED_BULL, "stressed_bull"
        return CALM_BULL, "calm_bull"
    return RISK_OFF, "risk_off"


def _bounded(value, low, high):
    if value < low:
        return low
    if value > high:
        return high
    return value


def score_universe(stocks, regime, ctx):
    book, branch = _regime_book(regime)
    zmaps = {metric: ctx.z(metric) for metric in book}
    scores = {}

    for row in stocks:
        sym = row["symbol"]

        base_total = 0.0
        base_weight = 0.0
        for metric, (weight, sign) in book.items():
            z = zmaps[metric].get(sym)
            if z is not None:
                base_total += weight * sign * z
                base_weight += weight
        if base_weight > 0:
            total = base_total / base_weight
        else:
            total = 0.0

        drawdown = row.get("from_52w_high_pct")
        trend = row.get("from_200d_ma_pct")
        ret3 = row.get("return_3m_pct")
        ret6 = row.get("return_6m_pct")
        ret12 = row.get("return_12m_pct")
        mom = row.get("momentum_12_1_pct")
        vol = row.get("realized_vol_3m")
        dollar_vol = row.get("avg_daily_dollar_volume_3m")
        trading_days = row.get("trading_days_3m")
        div_yield = row.get("dividend_yield_ttm_pct")
        forward_pe = row.get("forward_pe")
        rev_growth = row.get("revenue_growth_pct")
        op_growth = row.get("operating_income_growth_pct")
        fcf_growth = row.get("free_cash_flow_growth_pct")
        forward_eps = row.get("forward_eps")
        op_margin = row.get("operating_margin_pct")
        fcf_margin = row.get("free_cash_flow_margin_pct")
        cap = row.get("market_cap")

        recovery_score = 0.0
        recovery_weight = 0.0

        if drawdown is not None:
            recovery_weight += 1.0
            if branch == "calm_bull":
                if drawdown < -42:
                    recovery_score -= 1.00
                elif drawdown < -30:
                    recovery_score += 0.45
                elif drawdown < -18:
                    recovery_score += 1.10
                elif drawdown < -8:
                    recovery_score += 0.60
                elif drawdown < -3:
                    recovery_score += 0.10
                else:
                    recovery_score -= 0.30
            elif branch == "stressed_bull":
                if drawdown < -45:
                    recovery_score -= 0.85
                elif drawdown < -32:
                    recovery_score += 0.20
                elif drawdown < -16:
                    recovery_score += 0.75
                elif drawdown < -6:
                    recovery_score += 0.55
                else:
                    recovery_score -= 0.20
            else:
                if drawdown < -30:
                    recovery_score -= 0.55
                elif drawdown < -16:
                    recovery_score += 0.25
                elif drawdown < -5:
                    recovery_score += 0.70
                else:
                    recovery_score -= 0.15

        if trend is not None:
            recovery_weight += 1.0
            if branch == "calm_bull":
                if trend > 14:
                    recovery_score += 0.85
                elif trend > 4:
                    recovery_score += 0.45
                elif trend < -4:
                    recovery_score -= 0.90
            elif branch == "stressed_bull":
                if trend > 10:
                    recovery_score += 0.65
                elif trend > 1:
                    recovery_score += 0.35
                elif trend < -3:
                    recovery_score -= 0.85
            else:
                if trend > 8:
                    recovery_score += 0.70
                elif trend > 2:
                    recovery_score += 0.35
                elif trend < 0:
                    recovery_score -= 0.90

        if ret3 is not None:
            recovery_weight += 0.7
            if ret3 > 16:
                recovery_score += 0.55
            elif ret3 > 4:
                recovery_score += 0.30
            elif ret3 < -10:
                recovery_score -= 0.65
            elif ret3 < 0:
                recovery_score -= 0.20

        if ret6 is not None:
            recovery_weight += 0.9
            if ret6 > 20:
                recovery_score += 0.60
            elif ret6 > 8:
                recovery_score += 0.35
            elif ret6 < -8:
                recovery_score -= 0.70
            elif ret6 < 0:
                recovery_score -= 0.25

        if mom is not None:
            recovery_weight += 0.8
            if mom >= 3 and mom <= 24:
                recovery_score += 0.50
            elif mom > 24:
                recovery_score += 0.18
            elif mom < -12:
                recovery_score -= 0.70
            elif mom < 0:
                recovery_score -= 0.20

        if ret12 is not None:
            recovery_weight += 0.5
            if branch == "risk_off":
                if ret12 > 8:
                    recovery_score += 0.30
                elif ret12 < -20:
                    recovery_score -= 0.55
            else:
                if ret12 > 12:
                    recovery_score += 0.18
                elif ret12 < -25:
                    recovery_score -= 0.35

        if vol is not None:
            recovery_weight += 0.6
            if vol < 22:
                recovery_score += 0.25
            elif vol > 44:
                recovery_score -= 0.45
            elif vol > 34:
                recovery_score -= 0.18

        if recovery_weight > 0:
            recovery_score = recovery_score / recovery_weight

        quality_score = 0.0
        quality_weight = 0.0

        if fcf_margin is not None:
            quality_weight += 1.1
            if fcf_margin > 12:
                quality_score += 1.00
            elif fcf_margin > 5:
                quality_score += 0.55
            elif fcf_margin < 0:
                quality_score -= 1.00
            elif fcf_margin < 3:
                quality_score -= 0.25

        if op_margin is not None:
            quality_weight += 0.9
            if op_margin > 18:
                quality_score += 0.80
            elif op_margin > 8:
                quality_score += 0.40
            elif op_margin < 0:
                quality_score -= 0.90
            elif op_margin < 4:
                quality_score -= 0.20

        growth_balance = 0.0
        growth_count = 0
        for metric in (rev_growth, op_growth, fcf_growth):
            if metric is not None:
                growth_count += 1
                if metric > 18:
                    growth_balance += 0.80
                elif metric > 6:
                    growth_balance += 0.35
                elif metric < -12:
                    growth_balance -= 0.90
                elif metric < 0:
                    growth_balance -= 0.30
        if growth_count > 0:
            quality_weight += 1.0
            quality_score += growth_balance / growth_count

        if forward_eps is not None:
            quality_weight += 0.5
            if forward_eps > 0:
                quality_score += 0.25
            else:
                quality_score -= 0.80

        if forward_pe is not None:
            quality_weight += 0.6
            if forward_pe > 0 and forward_pe < 18:
                quality_score += 0.35
            elif forward_pe > 40:
                quality_score -= 0.45

        if div_yield is not None:
            quality_weight += 0.4
            if div_yield >= 0.7 and div_yield <= 4.5:
                quality_score += 0.22
            elif div_yield > 5.5:
                quality_score -= 0.20
            elif div_yield == 0 and branch == "risk_off":
                quality_score -= 0.12

        if dollar_vol is not None:
            quality_weight += 0.5
            if dollar_vol > 30000000:
                quality_score += 0.35
            elif dollar_vol > 10000000:
                quality_score += 0.18
            elif dollar_vol < 3000000:
                quality_score -= 0.45

        if trading_days is not None:
            quality_weight += 0.4
            if trading_days >= 62:
                quality_score += 0.18
            elif trading_days <= 57:
                quality_score -= 0.35

        if quality_weight > 0:
            quality_score = quality_score / quality_weight

        if branch == "calm_bull":
            recovery_mix = 0.72
            quality_mix = 0.28
        elif branch == "stressed_bull":
            recovery_mix = 0.52
            quality_mix = 0.48
        else:
            recovery_mix = 0.34
            quality_mix = 0.66

        total += recovery_mix * recovery_score + quality_mix * quality_score

        if recovery_weight > 0 and quality_weight > 0:
            if recovery_score > 0.45 and quality_score > 0.25:
                total += 0.28
            elif recovery_score > 0.55 and quality_score < -0.20:
                total -= 0.48
            elif recovery_score < -0.25 and quality_score > 0.45 and branch != "calm_bull":
                total += 0.10
            elif recovery_score < -0.35 and quality_score < -0.20:
                total -= 0.22
        elif recovery_weight > 0 and quality_weight == 0 and branch != "calm_bull":
            total -= 0.12

        if branch == "calm_bull":
            if cap is not None:
                if cap < 3000000000:
                    total += 0.18
                elif cap < 10000000000:
                    total += 0.08
                elif cap > 200000000000:
                    total -= 0.10

            if drawdown is not None and trend is not None:
                if drawdown < -12 and drawdown > -28 and trend > 5:
                    total += 0.22

        elif branch == "stressed_bull":
            if vol is not None and vol > 40:
                total -= 0.18
            if quality_weight > 0 and quality_score > 0.35 and drawdown is not None and drawdown < -10:
                total += 0.16

        else:
            if vol is not None:
                if vol < 24:
                    total += 0.14
                elif vol > 34:
                    total -= 0.22
            if trend is not None and trend < 0:
                total -= 0.20
            if quality_weight > 0 and quality_score > 0.40 and drawdown is not None and drawdown > -4:
                total += 0.14

        total += 0.10 * _bounded(recovery_score - quality_score, -1.5, 1.5) * (0.25 if branch == "risk_off" else 0.55)

        scores[sym] = total

    return scores