← All V2 experiments
Relative return
1.053x
Excess vs bench
5.29%
Benchmark
CAPW_UNIV
Rolling windows
179 · monthly
Mean strategy gain
20.25%
Mean benchmark gain
14.08%
Mean excess gain
6.16%
Dispersion (ref)
10.42%
Win-rate vs bench (ref)
75.42%
Worst / best ratio (ref)
0.939x / 1.265x
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.
| Window | Strategy | Benchmark | Ratio |
|---|---|---|---|
| 2006-07-03 … 2011-06-30 | 5.89% | 2.22% | 1.036x |
| 2011-07-01 … 2016-06-30 | 13.23% | 13.74% | 0.995x |
| 2016-07-01 … 2021-06-30 | 32.66% | 20.63% | 1.100x |
| 2021-07-01 … 2026-06-26 | 47.56% | 15.48% | 1.278x |
All rolling windows — the objective set (equal-weighted mean ratio)
Strategy
Benchmark (CAPW_UNIV)
Excess
rolling 5y windows, monthly step — 179 windows · mean ratio 1.053x · beat benchmark in 135/179
| # | Window | Strategy | Benchmark | Ratio |
|---|---|---|---|---|
| 1 | 2006-07-31 … 2011-07-29 | 4.90% | 1.79% | 1.031x |
| 2 | 2006-08-31 … 2011-08-31 | 4.75% | 0.21% | 1.045x |
| 3 | 2006-09-29 … 2011-08-31 | 4.24% | -0.14% | 1.044x |
| 4 | 2006-10-31 … 2011-10-31 | 3.54% | 0.23% | 1.033x |
| 5 | 2006-11-30 … 2011-11-30 | 3.29% | -0.05% | 1.033x |
| 6 | 2006-12-29 … 2011-11-30 | 2.83% | -0.32% | 1.032x |
| 7 | 2007-01-31 … 2012-01-31 | 0.47% | 0.93% | 0.995x |
| 8 | 2007-02-28 … 2012-01-31 | 0.53% | 1.43% | 0.991x |
| 9 | 2007-03-30 … 2012-03-30 | 3.21% | 3.09% | 1.001x |
| 10 | 2007-04-30 … 2012-04-30 | 2.60% | 2.42% | 1.002x |
| 11 | 2007-05-31 … 2012-05-31 | 0.59% | 0.60% | 1.000x |
| 12 | 2007-06-29 … 2012-06-29 | 1.35% | 1.92% | 0.994x |
| 13 | 2007-07-31 … 2012-07-31 | 2.24% | 2.69% | 0.996x |
| 14 | 2007-08-31 … 2012-08-31 | 1.89% | 2.95% | 0.990x |
| 15 | 2007-09-28 … 2012-09-28 | 0.97% | 3.20% | 0.978x |
| 16 | 2007-10-31 … 2012-10-31 | -0.85% | 2.60% | 0.966x |
| 17 | 2007-11-30 … 2012-11-30 | 0.62% | 3.45% | 0.973x |
| 18 | 2007-12-31 … 2012-12-31 | 1.32% | 3.69% | 0.977x |
| 19 | 2008-01-31 … 2013-01-31 | 5.48% | 5.85% | 0.997x |
| 20 | 2008-02-29 … 2013-02-28 | 4.82% | 6.82% | 0.981x |
| 21 | 2008-03-31 … 2013-03-28 | 7.14% | 7.73% | 0.995x |
| 22 | 2008-04-30 … 2013-04-30 | 5.29% | 7.51% | 0.979x |
| 23 | 2008-05-30 … 2013-04-30 | 4.43% | 7.81% | 0.969x |
| 24 | 2008-06-30 … 2013-06-28 | 2.64% | 9.33% | 0.939x |
| 25 | 2008-07-31 … 2013-07-31 | 5.03% | 10.48% | 0.951x |
| 26 | 2008-08-29 … 2013-07-31 | 6.40% | 10.52% | 0.963x |
| 27 | 2008-09-30 … 2013-09-30 | 9.95% | 11.48% | 0.986x |
| 28 | 2008-10-31 … 2013-10-31 | 13.44% | 15.76% | 0.980x |
| 29 | 2008-11-28 … 2013-10-31 | 15.14% | 17.46% | 0.980x |
| 30 | 2008-12-31 … 2013-12-31 | 17.22% | 18.44% | 0.990x |
| 31 | 2009-01-30 … 2013-12-31 | 19.17% | 20.64% | 0.988x |
| 32 | 2009-02-27 … 2014-01-31 | 22.01% | 21.63% | 1.003x |
| 33 | 2009-03-31 … 2014-03-31 | 20.94% | 20.60% | 1.003x |
| 34 | 2009-04-30 … 2014-04-30 | 19.35% | 19.00% | 1.003x |
| 35 | 2009-05-29 … 2014-04-30 | 19.97% | 18.32% | 1.014x |
| 36 | 2009-06-30 … 2014-06-30 | 22.15% | 19.01% | 1.026x |
| 37 | 2009-07-31 … 2014-07-31 | 20.53% | 17.39% | 1.027x |
| 38 | 2009-08-31 … 2014-08-29 | 21.11% | 17.70% | 1.029x |
| 39 | 2009-09-30 … 2014-09-30 | 19.16% | 16.64% | 1.022x |
| 40 | 2009-10-30 … 2014-09-30 | 21.66% | 17.08% | 1.039x |
| 41 | 2009-11-30 … 2014-11-28 | 20.99% | 16.82% | 1.036x |
| 42 | 2009-12-31 … 2014-12-31 | 20.46% | 16.28% | 1.036x |
| 43 | 2010-01-29 … 2014-12-31 | 21.85% | 17.23% | 1.039x |
| 44 | 2010-02-26 … 2015-01-30 | 20.89% | 15.80% | 1.044x |
| 45 | 2010-03-31 … 2015-03-31 | 20.29% | 15.40% | 1.042x |
| 46 | 2010-04-30 … 2015-04-30 | 17.94% | 15.38% | 1.022x |
| 47 | 2010-05-28 … 2015-04-30 | 20.18% | 17.09% | 1.026x |
| 48 | 2010-06-30 … 2015-06-30 | 23.87% | 17.45% | 1.055x |
| 49 | 2010-07-30 … 2015-06-30 | 22.17% | 16.43% | 1.049x |
| 50 | 2010-08-31 … 2015-08-31 | 17.82% | 15.76% | 1.018x |
| 51 | 2010-09-30 … 2015-09-30 | 14.85% | 13.61% | 1.011x |
| 52 | 2010-10-29 … 2015-09-30 | 13.64% | 13.06% | 1.005x |
| 53 | 2010-11-30 … 2015-11-30 | 13.90% | 15.09% | 0.990x |
| 54 | 2010-12-31 … 2015-12-31 | 12.15% | 13.55% | 0.988x |
| 55 | 2011-01-31 … 2016-01-29 | 10.52% | 11.90% | 0.988x |
| 56 | 2011-02-28 … 2016-01-29 | 9.38% | 11.53% | 0.981x |
| 57 | 2011-03-31 … 2016-03-31 | 10.75% | 12.90% | 0.981x |
| 58 | 2011-04-29 … 2016-04-29 | 9.89% | 12.39% | 0.978x |
| 59 | 2011-05-31 … 2016-05-31 | 10.91% | 12.94% | 0.982x |
| 60 | 2011-06-30 … 2016-06-30 | 12.48% | 13.30% | 0.993x |
| 61 | 2011-07-29 … 2016-07-29 | 13.42% | 14.52% | 0.990x |
| 62 | 2011-08-31 … 2016-08-31 | 13.78% | 15.19% | 0.988x |
| 63 | 2011-09-30 … 2016-09-30 | 16.58% | 16.32% | 1.002x |
| 64 | 2011-10-31 … 2016-10-31 | 12.51% | 14.02% | 0.987x |
| 65 | 2011-11-30 … 2016-11-30 | 13.67% | 14.66% | 0.991x |
| 66 | 2011-12-30 … 2016-12-30 | 13.45% | 14.92% | 0.987x |
| 67 | 2012-01-31 … 2017-01-31 | 14.23% | 14.63% | 0.997x |
| 68 | 2012-02-29 … 2017-02-28 | 14.46% | 14.78% | 0.997x |
| 69 | 2012-03-30 … 2017-02-28 | 13.54% | 14.43% | 0.992x |
| 70 | 2012-04-30 … 2017-04-28 | 11.73% | 14.61% | 0.975x |
| 71 | 2012-05-31 … 2017-05-31 | 14.39% | 15.98% | 0.986x |
| 72 | 2012-06-29 … 2017-05-31 | 14.18% | 15.44% | 0.989x |
| 73 | 2012-07-31 … 2017-07-31 | 14.05% | 15.43% | 0.988x |
| 74 | 2012-08-31 … 2017-08-31 | 15.41% | 15.12% | 1.003x |
| 75 | 2012-09-28 … 2017-08-31 | 15.31% | 14.77% | 1.005x |
| 76 | 2012-10-31 … 2017-10-31 | 17.97% | 16.12% | 1.016x |
| 77 | 2012-11-30 … 2017-11-30 | 17.75% | 16.79% | 1.008x |
| 78 | 2012-12-31 … 2017-12-29 | 16.74% | 16.93% | 0.998x |
| 79 | 2013-01-31 … 2018-01-31 | 19.37% | 17.57% | 1.015x |
| 80 | 2013-02-28 … 2018-02-28 | 18.35% | 16.21% | 1.018x |
| 81 | 2013-03-28 … 2018-02-28 | 17.29% | 15.81% | 1.013x |
| 82 | 2013-04-30 … 2018-04-30 | 14.79% | 14.25% | 1.005x |
| 83 | 2013-05-31 … 2018-05-31 | 15.90% | 14.57% | 1.012x |
| 84 | 2013-06-28 … 2018-05-31 | 17.80% | 14.97% | 1.025x |
| 85 | 2013-07-31 … 2018-07-31 | 17.99% | 14.83% | 1.027x |
| 86 | 2013-08-30 … 2018-07-31 | 19.53% | 15.59% | 1.034x |
| 87 | 2013-09-30 … 2018-09-28 | 22.41% | 15.84% | 1.057x |
| 88 | 2013-10-31 … 2018-10-31 | 17.38% | 12.89% | 1.040x |
| 89 | 2013-11-29 … 2018-10-31 | 16.79% | 12.60% | 1.037x |
| 90 | 2013-12-31 … 2018-12-31 | 14.51% | 9.93% | 1.042x |
| 91 | 2014-01-31 … 2019-01-31 | 14.38% | 12.37% | 1.018x |
| 92 | 2014-02-28 … 2019-02-28 | 13.66% | 12.38% | 1.011x |
| 93 | 2014-03-31 … 2019-03-29 | 15.33% | 12.76% | 1.023x |
| 94 | 2014-04-30 … 2019-04-30 | 16.49% | 13.73% | 1.024x |
| 95 | 2014-05-30 … 2019-04-30 | 15.82% | 13.54% | 1.020x |
| 96 | 2014-06-30 … 2019-06-28 | 15.64% | 12.81% | 1.025x |
| 97 | 2014-07-31 … 2019-07-31 | 17.08% | 13.30% | 1.033x |
| 98 | 2014-08-29 … 2019-07-31 | 16.46% | 12.80% | 1.032x |
| 99 | 2014-09-30 … 2019-09-30 | 18.49% | 12.70% | 1.051x |
| 100 | 2014-10-31 … 2019-10-31 | 18.61% | 12.91% | 1.051x |
| 101 | 2014-11-28 … 2019-10-31 | 18.23% | 12.60% | 1.050x |
| 102 | 2014-12-31 … 2019-12-31 | 20.99% | 14.16% | 1.060x |
| 103 | 2015-01-30 … 2019-12-31 | 20.36% | 14.85% | 1.048x |
| 104 | 2015-02-27 … 2020-01-31 | 20.31% | 14.04% | 1.055x |
| 105 | 2015-03-31 … 2020-03-31 | 13.70% | 8.56% | 1.047x |
| 106 | 2015-04-30 … 2020-04-30 | 18.57% | 11.65% | 1.062x |
| 107 | 2015-05-29 … 2020-05-29 | 18.54% | 12.61% | 1.053x |
| 108 | 2015-06-30 … 2020-06-30 | 19.45% | 13.64% | 1.051x |
| 109 | 2015-07-31 … 2020-07-31 | 23.05% | 14.60% | 1.074x |
| 110 | 2015-08-31 … 2020-08-31 | 26.15% | 18.07% | 1.068x |
| 111 | 2015-09-30 … 2020-09-30 | 26.32% | 17.05% | 1.079x |
| 112 | 2015-10-30 … 2020-10-30 | 23.00% | 14.60% | 1.073x |
| 113 | 2015-11-30 … 2020-11-30 | 29.29% | 17.43% | 1.101x |
| 114 | 2015-12-31 … 2020-12-31 | 30.87% | 18.65% | 1.103x |
| 115 | 2016-01-29 … 2021-01-29 | 34.24% | 19.26% | 1.126x |
| 116 | 2016-02-29 … 2021-02-26 | 35.28% | 19.79% | 1.129x |
| 117 | 2016-03-31 … 2021-03-31 | 32.96% | 19.42% | 1.113x |
| 118 | 2016-04-29 … 2021-03-31 | 34.05% | 19.66% | 1.120x |
| 119 | 2016-05-31 … 2021-05-28 | 33.71% | 20.42% | 1.110x |
| 120 | 2016-06-30 … 2021-06-30 | 32.51% | 21.06% | 1.095x |
| 121 | 2016-07-29 … 2021-06-30 | 32.66% | 20.63% | 1.100x |
| 122 | 2016-08-31 … 2021-08-31 | 36.50% | 21.75% | 1.121x |
| 123 | 2016-09-30 … 2021-09-30 | 33.65% | 20.22% | 1.112x |
| 124 | 2016-10-31 … 2021-10-29 | 35.78% | 22.50% | 1.108x |
| 125 | 2016-11-30 … 2021-11-30 | 35.02% | 21.87% | 1.108x |
| 126 | 2016-12-30 … 2021-11-30 | 36.47% | 21.75% | 1.121x |
| 127 | 2017-01-31 … 2022-01-31 | 29.83% | 20.17% | 1.080x |
| 128 | 2017-02-28 … 2022-02-28 | 29.48% | 18.51% | 1.093x |
| 129 | 2017-03-31 … 2022-03-31 | 32.18% | 19.46% | 1.106x |
| 130 | 2017-04-28 … 2022-03-31 | 32.40% | 19.46% | 1.108x |
| 131 | 2017-05-31 … 2022-05-31 | 29.63% | 15.59% | 1.121x |
| 132 | 2017-06-30 … 2022-06-30 | 27.02% | 13.08% | 1.123x |
| 133 | 2017-07-31 … 2022-07-29 | 27.82% | 15.16% | 1.110x |
| 134 | 2017-08-31 … 2022-08-31 | 27.71% | 13.72% | 1.123x |
| 135 | 2017-09-29 … 2022-08-31 | 27.44% | 13.56% | 1.122x |
| 136 | 2017-10-31 … 2022-10-31 | 27.87% | 11.86% | 1.143x |
| 137 | 2017-11-30 … 2022-11-30 | 27.47% | 12.52% | 1.133x |
| 138 | 2017-12-29 … 2022-11-30 | 28.12% | 12.46% | 1.139x |
| 139 | 2018-01-31 … 2023-01-31 | 23.75% | 11.01% | 1.115x |
| 140 | 2018-02-28 … 2023-02-28 | 23.52% | 11.03% | 1.113x |
| 141 | 2018-03-29 … 2023-02-28 | 24.77% | 11.72% | 1.117x |
| 142 | 2018-04-30 … 2023-04-28 | 24.71% | 13.01% | 1.104x |
| 143 | 2018-05-31 … 2023-05-31 | 22.64% | 12.95% | 1.086x |
| 144 | 2018-06-29 … 2023-05-31 | 23.12% | 13.01% | 1.089x |
| 145 | 2018-07-31 … 2023-07-31 | 25.17% | 14.67% | 1.092x |
| 146 | 2018-08-31 … 2023-08-31 | 21.23% | 13.51% | 1.068x |
| 147 | 2018-09-28 … 2023-08-31 | 20.96% | 13.56% | 1.065x |
| 148 | 2018-10-31 … 2023-10-31 | 19.00% | 12.60% | 1.057x |
| 149 | 2018-11-30 … 2023-11-30 | 20.99% | 14.58% | 1.056x |
| 150 | 2018-12-31 … 2023-12-29 | 24.11% | 17.26% | 1.058x |
| 151 | 2019-01-31 … 2024-01-31 | 25.84% | 16.27% | 1.082x |
| 152 | 2019-02-28 … 2024-01-31 | 25.48% | 15.94% | 1.082x |
| 153 | 2019-03-29 … 2024-03-28 | 30.99% | 17.50% | 1.115x |
| 154 | 2019-04-30 … 2024-04-30 | 29.42% | 15.50% | 1.121x |
| 155 | 2019-05-31 … 2024-05-31 | 34.09% | 18.12% | 1.135x |
| 156 | 2019-06-28 … 2024-06-28 | 32.43% | 17.99% | 1.122x |
| 157 | 2019-07-31 … 2024-07-31 | 28.81% | 17.70% | 1.094x |
| 158 | 2019-08-30 … 2024-08-30 | 27.73% | 18.41% | 1.079x |
| 159 | 2019-09-30 … 2024-09-30 | 30.22% | 18.65% | 1.098x |
| 160 | 2019-10-31 … 2024-10-31 | 33.04% | 17.87% | 1.129x |
| 161 | 2019-11-29 … 2024-11-29 | 38.32% | 18.64% | 1.166x |
| 162 | 2019-12-31 … 2024-12-31 | 33.31% | 17.62% | 1.133x |
| 163 | 2020-01-31 … 2025-01-31 | 36.14% | 18.07% | 1.153x |
| 164 | 2020-02-28 … 2025-02-28 | 34.21% | 19.00% | 1.128x |
| 165 | 2020-03-31 … 2025-03-31 | 33.26% | 19.24% | 1.118x |
| 166 | 2020-04-30 … 2025-04-30 | 31.37% | 16.49% | 1.128x |
| 167 | 2020-05-29 … 2025-04-30 | 30.47% | 15.80% | 1.127x |
| 168 | 2020-06-30 … 2025-06-30 | 34.57% | 18.19% | 1.139x |
| 169 | 2020-07-31 … 2025-07-31 | 33.90% | 17.87% | 1.136x |
| 170 | 2020-08-31 … 2025-08-29 | 31.95% | 16.69% | 1.131x |
| 171 | 2020-09-30 … 2025-09-30 | 36.24% | 18.57% | 1.149x |
| 172 | 2020-10-30 … 2025-09-30 | 38.27% | 19.43% | 1.158x |
| 173 | 2020-11-30 … 2025-11-28 | 33.94% | 17.77% | 1.137x |
| 174 | 2020-12-31 … 2025-12-31 | 34.14% | 16.92% | 1.147x |
| 175 | 2021-01-29 … 2025-12-31 | 33.16% | 17.20% | 1.136x |
| 176 | 2021-02-26 … 2026-01-30 | 34.88% | 17.04% | 1.152x |
| 177 | 2021-03-31 … 2026-03-31 | 38.71% | 14.07% | 1.216x |
| 178 | 2021-04-30 … 2026-04-30 | 46.14% | 16.03% | 1.260x |
| 179 | 2021-05-28 … 2026-04-30 | 46.99% | 16.22% | 1.265x |
Notes
mode=explore; family=regime-momentum-recovery-quality-contrarian-52w-hybrid
New hybrid family that combines three strong but orthogonal parent ideas with explicit arbitration instead of static averaging: regime-aware momentum leadership from the quality-value branch, repaired-drawdown turnarounds from the recovery-quality relay, and shallower 52-week-high contrarian entries from the winner contrarian family. The structure is intentionally distinct from the earlier degrading regime hybrid: bull regimes let repaired leaders outrank, mixed regimes require quality-backed repair before deep pullbacks can score, and risk-off regimes only admit contrarian rebounds when low-vol durability and trading continuity confirm they are not falling knives. When momentum, contrarian depth, and quality disagree, the branch-specific gates choose which sleeve is allowed to lead.
Deliberate metric coverage this run: momentum/return uses 1m, 3m, 6m, and 12_1 but thins 12m to zero; trend/recovery uses both 200d distance and 52-week-high drawdown in every branch; volatility is active in all branches but strongest in risk-off; liquidity rotates across trading_days, avg_daily_volume, and avg_daily_dollar_volume instead of leaving the category idle; income uses dividend_yield selectively in pullback and risk-off sleeves; valuation uses forward_pe and peg while pe is deliberately zeroed to avoid redundant value exposure; growth rotates across eps, revenue, operating-income, and free-cash-flow growth rather than repeating one sparse signal; quality keeps both operating_margin and free_cash_flow_margin; size uses market_cap and shares_outstanding as selective tie-breakers. Deliberate weight-0 metrics this run: pe, return_12m_pct, forward_eps, close, adj_close, high_52w, ma_200d, eps_ttm, revenue_ttm, operating_income_ttm, free_cash_flow_ttm.
Lesson notes
explore/regime-momentum-recovery-quality-contrarian-52w-hybrid: relative_return 1.0529x (delta -0.3757 vs exp_1123); win-rate 75.419%, worst-window 0.938758, dispersion 10.4212%.
Monthly picks — top stocks selected each month (whole timeline)
timeline — 240 months · top 15 each
| Month | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2006-07-31 | MNST | ATI | GRMN | NUE | EXPD | LVS | ADM | CMI | STLD | CME | MRK | TEX | AKAM | FTI | CSX |
| 2006-08-31 | MRK | ADM | AKAM | GRMN | LVS | ILMN | BXP | LMT | INTU | CTSH | NUE | SLG | VNO | LH | PSKY |
| 2006-09-29 | MRK | KSS | ILMN | AKAM | LMT | CTSH | LVS | GRMN | ANF | BXP | HOG | HUM | T | TJX | BKNG |
| 2006-10-31 | AKAM | MRK | KSS | BKNG | ANF | ATI | CTSH | HOG | GS | GRMN | M | NUE | LVS | INTU | CMI |
| 2006-11-30 | AKAM | ICE | MRK | KSS | GS | AT | ATI | LVS | HOG | VNO | BKNG | CTSH | ILMN | WYNN | HAS |
| 2006-12-29 | ICE | ATI | WYNN | HOG | AKAM | VNO | GS | LVS | MTCH | BKNG | TEX | TPR | AT | ETR | MA |
| 2007-01-31 | ICE | LVS | AT | TWX | AKAM | BKNG | ATI | WYNN | MGM | UAL | MTCH | GS | PCAR | TEX | BXP |
| 2007-02-28 | WYNN | ICE | ATI | AKAM | BXP | MGM | GT | MAT | TEX | AT | BKNG | SLG | SPG | HAS | GS |
| 2007-03-30 | ICE | MGM | ATI | NRG | CF | MAT | BKNG | WYNN | ETR | GT | VMC | MTCH | ON | PCAR | ANDV |
| 2007-04-30 | ICE | ETR | CF | ATI | GT | MAT | PEG | CMI | BAX | ANDV | PCAR | TPR | BKNG | NRG | KR |
| 2007-05-31 | ANDV | CMI | NRG | ETR | GT | PCAR | BKNG | MRK | ATI | BAX | CI | SVU | ICE | KR | CF |
| 2007-06-29 | ANDV | CLF | NRG | ICE | GT | NOV | MGM | CMI | MLM | MDR | AMZN | CF | PCAR | MA | MOS |
| 2007-07-31 | CF | BKNG | MDR | ICE | MOS | NOV | CMI | CLF | EXPE | MA | FSLR | DJ | AT | WLL | VRSN |
| 2007-08-31 | FSLR | CMI | NOV | AXON | GRMN | CF | MDR | ISRG | AL | FCX | BKNG | DE | BIIB | CMG | VRSN |
| 2007-09-28 | NOV | BIIB | WYNN | GRMN | CMI | FLR | LVS | BKNG | ISRG | EXPE | DE | GME | CF | MDR | CMG |
| 2007-10-31 | GRMN | NOV | LVS | WYNN | EXPE | FLR | BIIB | CMI | BKNG | ISRG | CF | DE | GOOG | MGM | GME |
| 2007-11-30 | GOOG | GRMN | NOV | FLR | WYNN | FSLR | CF | LVS | CMG | ISRG | FTI | BIIB | GME | BKNG | MOS |
| 2007-12-31 | FSLR | GOOG | ISRG | BKNG | CF | MRK | GRMN | NOV | CMG | VRSN | FLR | ESRX | CME | MDR | CNX |
| 2008-01-31 | FSLR | MOS | ESRX | BKNG | CF | ADM | CMG | ISRG | CNX | J | VRSN | BG | MUR | JEC | MDR |
| 2008-02-29 | CF | BKNG | MOS | FSLR | CNX | WDC | ESRX | BG | ADM | CLF | J | AFL | MA | CSX | STT |
| 2008-03-31 | CF | MOS | BKNG | FSLR | CNX | WDC | AFL | CLF | CSX | ADM | ESRX | UNP | CL | RRC | OXY |
| 2008-04-30 | CF | BKNG | MOS | FSLR | CLF | RRC | CSX | WDC | CNX | HAL | AFL | STLD | UNP | MUR | OI |
| 2008-05-30 | CF | MA | FSLR | MOS | BKNG | CSX | CLF | CNX | UNP | WDC | HAL | APA | NBR | FLR | RRC |
| 2008-06-30 | CF | MA | MOS | WDC | CNX | CLF | CSX | NBR | X | UNP | BKNG | FSLR | FLR | NOV | HAL |
| 2008-07-31 | CLF | CF | MOS | MEE | X | FSLR | BKNG | NBR | BTUUQ | HP | APOL | NOV | ESV | MA | WWY |
| 2008-08-29 | CF | CLF | FSLR | APOL | CEPH | ESV | BCR | BTUUQ | ATGE | NSC | UNP | RE | SRCL | WWY | CSX |
| 2008-09-30 | BCR | APOL | CEPH | NSC | ATGE | UNP | BNI | MRSH | SRCL | ESV | RE | MCD | HAS | BAX | RTN |
| 2008-10-31 | MRSH | NSC | AON | BAX | ABT | USB | BCR | MCD | UNP | MDLZ | APOL | WWY | TFC | PNC | CEPH |
| 2008-11-28 | MRSH | AON | KR | TFC | BAX | MCD | USB | ABT | ED | KMB | DLTR | CLX | MDLZ | NSC | CPB |
| 2008-12-31 | AON | KR | SHW | DLTR | MCD | ABT | CL | CLX | CHRW | SJM | MDLZ | TFC | PCG | PM | WM |
| 2009-01-30 | MCD | DLTR | MDLZ | ABT | AON | CL | BMY | SJM | WM | PCG | BAX | DRI | GILD | DGX | CHRW |
| 2009-02-27 | PCG | ABT | BAX | MCD | AON | DLTR | CL | MDLZ | DRI | BIIB | VRTX | VTRS | BMY | WM | ED |
| 2009-03-31 | BKNG | PCG | VTRS | GOOG | AON | DLTR | BMY | DRI | BIIB | AAP | ADM | MCD | ED | BAX | AMT |
| 2009-04-30 | DRI | BKNG | VTRS | AAP | GEN | AZO | NFLX | AON | MNST | TJX | NEM | DLTR | BIIB | BR | ILMN |
| 2009-05-29 | DRI | BKNG | CF | TJX | FSLR | NFLX | AN | GOOG | F | DPZ | AAP | EBAY | AZO | ROST | GPS |
| 2009-06-30 | BKNG | TJX | GOOG | ICE | CME | ELV | WBD | AAPL | DRI | TPR | ESRX | F | MSI | FFIV | FSLR |
| 2009-07-31 | BKNG | TJX | TPR | AAPL | WBD | EBAY | FFIV | CTSH | CME | F | GLW | GOOG | ELV | FISV | MSI |
| 2009-08-31 | BKNG | EBAY | F | AAPL | CTSH | GT | TJX | DD | GOOG | COF | MU | TT | EXPE | TPR | WBD |
| 2009-09-30 | FNMA | FMCC | BKNG | GNW | FITB | CTSH | AAPL | EBAY | IP | WLL | F | EXPE | TT | GOOG | MU |
| 2009-10-30 | GNW | HIG | BKNG | FMCC | WLL | FNMA | LVS | EBAY | CTSH | TT | AAPL | FLEX | MSI | LNC | PRU |
| 2009-11-30 | LVS | BKNG | GNW | HIG | GOOG | TT | PSKY | CTSH | WLL | DD | SLG | FLEX | MAC | JBL | STX |
| 2009-12-31 | BKNG | GOOG | DD | WLL | GNW | TT | CTSH | LVS | IP | CLF | SLG | CCI | AMD | MAC | FTR |
| 2010-01-29 | BKNG | WLL | LVS | AMD | DD | CLF | SLG | MU | CTSH | GNW | FITB | PSKY | JBL | ATI | COF |
| 2010-02-26 | BKNG | WLL | DD | GNW | LVS | AMD | CLF | HUM | FITB | UAL | F | DAL | AFL | JBL | CTSH |
| 2010-03-31 | BKNG | CLF | LVS | UAL | WLL | FITB | GNW | DPZ | AAL | CTSH | CMI | XRX | AFL | F | FFIV |
| 2010-04-30 | CLF | BKNG | LVS | UAL | WLL | MTG | GNW | VIAV | BBWI | ZION | CMI | HBAN | HST | AAL | TSN |
| 2010-05-28 | ZION | UAL | LVS | WLL | CLF | MTG | RF | MGM | CMI | VIAV | DPZ | FITB | BBWI | URI | HBAN |
| 2010-06-30 | LVS | ZION | WLL | CMI | BBWI | EQR | AKAM | NTAP | COR | CLF | AAL | KDP | AVB | HAS | CTSH |
| 2010-07-30 | AKAM | LVS | CLF | KDP | WLL | NTAP | HAS | AIG | CMI | EQR | BBWI | CTSH | NEM | BKNG | AVB |
| 2010-08-31 | LVS | BKNG | CMI | AKAM | NTAP | CTSH | CLF | FFIV | WLL | NEM | BBWI | AVB | EQR | VNO | AAL |
| 2010-09-30 | LVS | BKNG | AKAM | CTSH | CMI | NTAP | WLL | FFIV | EQR | NEM | BBWI | AVB | SWKS | DLTR | UNP |
| 2010-10-29 | BKNG | LVS | AKAM | WLL | CMI | CTSH | FFIV | NTAP | LYB | BWA | UNP | SWKS | BBWI | MBI | DLTR |
| 2010-11-30 | LVS | WLL | NTAP | FFIV | CMI | BKNG | BBWI | URI | AKAM | BWA | SWKS | ILMN | UNP | CLF | CTSH |
| 2010-12-31 | LVS | FFIV | DECK | WLL | TPR | CMI | BKNG | NOV | URI | BBWI | MGM | SWKS | CLF | BWA | ILMN |
| 2011-01-31 | WLL | LVS | DECK | CLF | CIEN | BWA | NOV | CXO | CMI | PXD | XEC | SWKS | URI | JOY | ALXN |
| 2011-02-28 | WLL | NOV | VIAV | URI | LVS | ANDV | BKR | TER | FLR | SWKS | PSKY | CXO | BWA | LYB | NVDA |
| 2011-03-31 | VIAV | NOV | CIEN | PSKY | TER | BKR | SWKS | ANDV | COP | DECK | WLL | KLAC | WYNN | CSX | CLF |
| 2011-04-29 | VIAV | ANDV | PSKY | BKR | NOV | BKNG | BIIB | CIEN | NBR | LYB | MTW | CLF | LULU | HP | BWA |
| 2011-05-31 | BIIB | VIAV | BKNG | BKR | ANDV | LYB | LULU | CXO | PXD | GR | BBWI | PSKY | CIEN | WMB | WYNN |
| 2011-06-30 | BIIB | PSKY | BKNG | GR | WYNN | GT | HUM | NOV | DDS | CXO | BBWI | PXD | MCO | ADS | AET |
| 2011-07-29 | BIIB | PSKY | GR | ADS | BKNG | CEPH | ACN | AET | TPR | WYNN | KSU | MNST | CTRA | HUM | TDC |
| 2011-08-31 | CF | BIIB | BKNG | WYNN | AAPL | CTRA | PM | RRC | PSKY | VFC | EQT | ACN | RL | LVS | BBWI |
| 2011-09-30 | CTRA | BIIB | CF | AAPL | VFC | BKNG | RL | RRC | DLTR | PM | MNST | HUM | EQT | TJX | CL |
| 2011-10-31 | KLAC | DLTR | BIIB | RRC | AAPL | DG | VFC | MNST | RL | TJX | CL | KMB | CF | FE | CTRA |
| 2011-11-30 | KLAC | BIIB | VFC | DECK | RRC | DLTR | CTRA | PM | HUM | TJX | CF | RL | AAPL | ACN | BKNG |
| 2011-12-30 | KLAC | PM | CTRA | TJX | DLTR | WMB | BIIB | HUM | VFC | GWW | PFE | MA | AEE | AAPL | CF |
| 2012-01-31 | KLAC | TJX | DLTR | CF | WMB | GWW | AAPL | MNST | ADS | MRK | HUM | PFE | GR | BIIB | PM |
| 2012-02-29 | AAPL | LYB | TJX | ADS | GR | EQIX | BKNG | TPR | PM | URI | WCG | KSU | WMB | MNST | KLAC |
| 2012-03-30 | BKNG | AAPL | LYB | LVS | EQIX | CF | ADS | PM | TPR | GR | URI | TJX | PSKY | IP | KSU |
| 2012-04-30 | AAPL | BKNG | TJX | PM | PSKY | EQIX | CF | USB | SHW | TFC | MNST | URI | WMB | FFIV | WBD |
| 2012-05-31 | BKNG | AAPL | STX | TJX | WMB | SHW | USB | EQIX | PM | PSKY | ORLY | TFC | SPG | HOG | MNST |
| 2012-06-29 | SHW | MNST | BKNG | AAPL | TJX | STX | EQIX | CF | DLTR | BIIB | USB | DAL | PM | VRTX | SBAC |
| 2012-07-31 | AAPL | SHW | TJX | MRK | KMB | BKNG | EQIX | MNST | BIIB | STX | BUD | PM | EW | USB | DG |
| 2012-08-31 | STX | MRK | TJX | SHW | AAPL | ALL | BIIB | WDC | USB | EQIX | SBAC | KMB | RF | BUD | WMB |
| 2012-09-28 | STX | VLO | ALL | CF | LYB | AAPL | SHW | STZ | ESRX | TJX | EQIX | PSKY | WMB | TWX | ANDV |
| 2012-10-31 | ANDV | ALL | LYB | MRK | TWX | SHW | EQIX | AOS | GOOG | CF | STZ | SBAC | BUD | LEN | EBAY |
| 2012-11-30 | ALL | KBH | LYB | PHM | AMGN | MRK | DVA | LEN | SBAC | EBAY | TWX | CMCSA | ANDV | STZ | BAX |
| 2012-12-31 | STX | LYB | ALL | PVH | BAX | APTV | TWX | EBAY | ANDV | PPG | SBAC | KBH | STZ | LEN | PHM |
| 2013-01-31 | PPG | APTV | STX | LYB | HCA | ALL | LEN | EMN | PHM | ANDV | STT | TWX | EQIX | LPX | IP |
| 2013-02-28 | LYB | HCA | STT | ALL | DAL | PHM | GS | PPG | TWX | KBH | ANDV | TRV | THC | PSKY | STZ |
| 2013-03-28 | ANDV | KKR | STT | ALL | TWX | STZ | CTRA | HCA | LYB | GEN | GS | MHK | BIIB | STX | LEG |
| 2013-04-30 | TWX | ANDV | HRB | BIIB | CTRA | GEN | KKR | PSKY | COR | ALL | STZ | KR | WDC | HCA | THC |
| 2013-05-31 | FSLR | WDC | VLO | KKR | FNMA | BIIB | TWX | STZ | STX | ANDV | KBH | MTG | PSKY | CTRA | KR |
| 2013-06-28 | FSLR | BIIB | FNMA | WDC | STX | STZ | GOOG | BSX | STT | TWX | MCO | FMCC | KKR | REGN | HIG |
| 2013-07-31 | FSLR | WDC | FNMA | BKNG | MET | ELV | CME | AET | STX | BSX | STT | PRU | APTV | STZ | BIIB |
| 2013-08-30 | BKNG | BSX | TRIP | DAL | PRU | GNW | MET | REGN | MTG | KR | ELV | TSN | META | BIIB | LNC |
| 2013-09-30 | BKNG | TRIP | META | BSX | ADS | EA | FL | CPRI | MGM | DAL | MTG | REGN | DD | LNC | GT |
| 2013-10-31 | BKNG | META | MGM | ADS | BSX | GT | REGN | FLT | PXD | LVS | OMX | DAL | INCY | SIVB | CIEN |
| 2013-11-29 | META | BKNG | MCK | LVS | BX | OMX | REGN | GNW | DAL | TRIP | ADS | FDX | PBI | FL | URI |
| 2013-12-31 | BKNG | MCK | BX | URI | DAL | PBI | DECK | BIIB | CAH | ADS | FNMA | FDX | LVS | VTRS | AOS |
| 2014-01-31 | MGM | BKNG | URI | BX | ADS | BIIB | ILMN | GOOG | META | DECK | DAL | FNMA | MCK | STZ | PXD |
| 2014-02-28 | BKNG | ILMN | BX | BIIB | META | URI | MGM | INCY | GOOG | ADS | REGN | DD | MCK | FLT | MU |
| 2014-03-31 | ILMN | MGM | FNMA | VTRS | BX | BIIB | FSLR | META | BKNG | MCK | DD | URI | WYNN | INCY | CPRI |
| 2014-04-30 | URI | ILMN | FNMA | FSLR | VTRS | MGM | DD | TSN | GLW | HP | LYB | WLL | NXPI | META | CPRI |
| 2014-05-30 | META | URI | BKR | DD | LYB | WLL | GLW | HP | TSN | EOG | NXPI | MGM | NBR | BKNG | ILMN |
| 2014-06-30 | URI | META | WLL | LYB | ILMN | SWKS | DD | FRX | EOG | WMB | DAL | BKR | EA | TRIP | LUV |
| 2014-07-31 | URI | MU | WMB | META | WLL | EOG | SWKS | NFX | FANG | NBR | ILMN | LYB | DD | EA | TAP |
| 2014-08-29 | TWX | GILD | LYB | URI | WMB | MU | HCA | LRCX | NXPI | FANG | SWKS | FSLR | BK | BNY | DD |
| 2014-09-30 | GILD | WMB | LYB | URI | NXPI | HCA | UHS | UNP | SWKS | LRCX | DD | ELV | ANDV | LUV | LUMN |
| 2014-10-31 | GILD | MU | HCA | SWKS | WMB | UNP | SIAL | ILMN | NXPI | RCL | ELV | MNST | LUV | META | LRCX |
| 2014-11-28 | SWKS | UNP | CSX | NXPI | HCA | TWX | MU | GILD | KR | LRCX | EA | RCL | ANDV | ELV | ILMN |
| 2014-12-31 | SWKS | ZTS | KR | ANDV | EA | EW | WELL | MNST | SIAL | RCL | LRCX | INCY | HCA | UNP | COR |
| 2015-01-30 | KR | SWKS | RCL | SHW | WELL | EA | EW | DLTR | ZTS | PCG | ANDV | ELV | KDP | ALL | NXPI |
| 2015-02-27 | KR | SWKS | EA | ANDV | SHW | COR | ELV | DLTR | WELL | ALK | RCL | MAC | STZ | PCG | NXPI |
| 2015-03-31 | SWKS | DLTR | KR | COR | ANDV | BIIB | ELV | SHW | EA | MNST | HUM | AET | CI | AAPL | ZTS |
| 2015-04-30 | SWKS | COR | KR | DLTR | HUM | CI | ELV | ANDV | AET | CNC | INCY | BX | EA | MNST | DRI |
| 2015-05-29 | COR | VTRS | SWKS | BX | PRGO | KR | ELV | AET | EA | BIIB | BSX | HUM | GILD | HAS | ULTA |
| 2015-06-30 | HUM | SWKS | VTRS | BX | GILD | AET | ELV | BIIB | COR | EA | HCA | KR | BSX | INCY | HAS |
| 2015-07-31 | HUM | AET | EA | HCA | SWKS | VLO | CNC | SBUX | HAS | GILD | PANW | INCY | KR | ULTA | MNST |
| 2015-08-31 | EA | MDLZ | HUM | HAS | SBUX | AET | HCA | ULTA | EQIX | ANDV | SWKS | VLO | DRI | PANW | ACN |
| 2015-09-30 | MDLZ | EA | EQIX | INCY | HUM | ANDV | SBUX | STZ | HAS | DXCM | VLO | AAP | HIG | AET | HSP |
| 2015-10-30 | MDLZ | EQIX | SBUX | INCY | STZ | EA | ANDV | ACN | VLO | GOOG | AAP | MAS | AET | BKNG | HAS |
| 2015-11-30 | GOOG | EQIX | ANDV | VLO | ACN | MAS | STZ | TAP | DD | GPN | PSX | CDNS | FISV | ORLY | MO |
| 2015-12-31 | GOOG | ANDV | VLO | EQIX | GPN | VRSN | MAS | STZ | DD | TSN | ARG | TAP | AYI | MDLZ | KR |
| 2016-01-29 | GOOG | EQIX | TAP | TSN | STZ | KMB | VLO | KLAC | FSLR | ABMD | ICE | PM | AVGO | KR | ADBE |
| 2016-02-29 | GOOG | KMB | KLAC | TSN | PM | EQIX | T | TAP | STZ | VZ | KDP | PPL | DLR | CLX | XEL |
| 2016-03-31 | TSN | KLAC | PM | T | KMB | GOOG | MAT | VZ | EQIX | AWK | SYY | STZ | FSLR | DLR | DD |
| 2016-04-29 | TSN | PM | KLAC | MAT | T | EW | EXC | SYY | DLR | ULTA | AWK | EIX | BAX | ISRG | STZ |
| 2016-05-31 | DLR | ULTA | TSN | EQIX | BAX | PM | EW | T | KLAC | AWK | BSX | ISRG | ACN | ABMD | SYY |
| 2016-06-30 | DLR | EQIX | ULTA | ALB | EVRG | PM | T | BSX | MLM | AWK | TSN | WCG | SYY | KLAC | DXC |
| 2016-07-29 | DLR | OKE | BSX | ALB | ULTA | TSN | DXC | EQIX | NFX | T | SYY | MLM | AWK | IRM | PAYC |
| 2016-08-31 | ULTA | CLF | SPGI | BSX | VTR | ALB | SIVB | DHR | EW | PXD | HPE | DLR | WCG | XEC | TSN |
| 2016-09-30 | SPGI | GEN | DHR | SIVB | PXD | NVDA | HPE | EW | TSN | CLF | AMAT | WCG | XEC | ULTA | ABBV |
| 2016-10-31 | SPGI | GEN | HPE | WB | DHR | NXPI | GLW | LRCX | SIVB | NVDA | PXD | ULTA | WCG | AMAT | HPQ |
| 2016-11-30 | TWX | HPE | GEN | SPGI | LVS | WB | KLAC | CLF | QCOM | DXC | NVDA | MRK | STLD | YUM | JCI |
| 2016-12-30 | CSX | CLF | RF | HPE | TWX | STLD | PRU | BKR | AMAT | FDX | NUE | MS | KEY | CMI | CFG |
| 2017-01-31 | KEY | CSX | RF | CFG | FITB | PRU | MS | STLD | NBR | TFC | ZION | HBAN | NSC | BKR | DD |
| 2017-02-28 | CLF | CSX | RF | PNC | CFG | MTB | INCY | NSC | KEY | PRU | NVDA | GEN | MS | XRX | TWX |
| 2017-03-31 | CSX | INCY | RF | PNC | PRU | KEY | CFG | GS | AMAT | KLAC | GEN | MTB | DXC | DD | USB |
| 2017-04-28 | INCY | AMAT | CSX | KLAC | DXC | SWKS | GEN | NVDA | XRX | WCG | CHTR | ADBE | AMP | LRCX | SIVB |
| 2017-05-31 | LRCX | CSX | KLAC | ADSK | AMAT | PAYC | DXC | BCR | WB | ELV | GOOG | ADBE | META | TTWO | WCG |
| 2017-06-30 | WB | LRCX | ADSK | CSX | AMAT | EA | BCR | NVDA | TTWO | XYZ | PAYC | ELV | BX | DXC | ALGN |
| 2017-07-31 | LRCX | AMAT | XYZ | WB | ADSK | ALGN | AET | BCR | ELV | NVDA | PAYC | TTWO | EA | VRTX | LITE |
| 2017-08-31 | XYZ | LRCX | RCL | VRTX | ALGN | NRG | EA | BA | NVDA | BCR | TTWO | WB | AMAT | META | ELV |
| 2017-09-29 | WB | VRTX | LRCX | RCL | EA | ADSK | AMAT | ABMD | TTWO | NRG | NVDA | BA | ALGN | MCHP | XYZ |
| 2017-10-31 | WB | AMAT | LRCX | BA | XYZ | MU | MCHP | AET | ALGN | NRG | VRTX | RCL | TTWO | ABBV | ABMD |
| 2017-11-30 | XYZ | LRCX | MU | ON | ANET | TTWO | ALGN | BBBY | NVDA | AMAT | NRG | ELV | IPGP | WB | PAYC |
| 2017-12-29 | XYZ | ALGN | BBBY | ANET | TTWO | WB | LRCX | ELV | MU | ON | IPGP | FSLR | CBOE | NRG | NVDA |
| 2018-01-31 | BBBY | XYZ | ANET | WB | FSLR | ELV | TROW | ON | ALGN | MU | AET | NTAP | MRVL | CBOE | DLTR |
| 2018-02-28 | BBBY | XYZ | ANET | ON | ALGN | MU | LRCX | WB | TROW | CPRI | NTAP | ELV | ABMD | FSLR | DLTR |
| 2018-03-29 | XYZ | ANET | MU | ALGN | WB | ON | CME | ABMD | URI | NOW | BA | ZTS | ELV | WYNN | SEDG |
| 2018-04-30 | XYZ | MU | ABMD | GWW | ANET | NKTR | CME | WYNN | KDP | ZTS | PSX | SEDG | NOW | PANW | MSCI |
| 2018-05-31 | MU | SEDG | PSX | XYZ | ABMD | GWW | ANDV | ETSY | ALGN | NRG | MCO | BKNG | PANW | ANET | MSCI |
| 2018-06-29 | XYZ | MU | ALGN | PSX | ANDV | ABMD | SEDG | GWW | MSCI | MCO | ETSY | CPRT | TJX | GDDY | ILMN |
| 2018-07-31 | XYZ | MU | ALGN | ETSY | TJX | TTD | ABMD | CNC | PSX | KDP | CPRT | SEDG | CSX | UNP | GDDY |
| 2018-08-31 | ABMD | XYZ | KDP | ALGN | TJX | GWW | CSX | ILMN | PSX | MU | CNC | NSC | ETSY | HCA | CPRT |
| 2018-09-28 | ABMD | XYZ | TJX | ANDV | ILMN | ALGN | CSX | HCA | GWW | ETSY | NSC | DXCM | CNC | ESRX | ELV |
| 2018-10-31 | XYZ | ABMD | TJX | ESRX | HCA | MRK | ETSY | MOH | ILMN | AAP | DXCM | BSX | CSX | PFE | VEEV |
| 2018-11-30 | MRK | ESRX | ABMD | HCA | MKC | CME | ELV | BSX | XYZ | PFE | ULTA | AET | DXCM | AAP | LW |
| 2018-12-31 | MRK | ESRX | CME | HCA | MKC | ELV | PFE | AET | AAP | ABMD | NRG | ETSY | BALL | EXC | DXCM |
| 2019-01-31 | MRK | ESRX | AVGO | NRG | EXC | RHT | CME | WCG | BALL | XEL | ETSY | WELL | CHD | ELV | PFE |
| 2019-02-28 | MRK | AVGO | RHT | ELV | BALL | WELL | NRG | EXC | UNP | ETSY | XEL | XYZ | MTCH | KEYS | HET |
| 2019-03-29 | MRK | KMI | ULTA | AVGO | RHT | BALL | HET | KEYS | MTCH | ETSY | VEEV | TDG | LLY | KLAC | EXC |
| 2019-04-30 | KEYS | HET | TDG | ULTA | KLAC | NSC | VEEV | HRS | UNP | XLNX | MTCH | FTNT | APD | MSCI | BALL |
| 2019-05-31 | MTCH | MDLZ | HET | APD | CDNS | BALL | NSC | CVNA | MSCI | TT | HSY | MRK | TDG | ULTA | GPN |
| 2019-06-28 | MTCH | VEEV | GPN | APD | MKTX | LHX | MDLZ | HET | HSY | BALL | FDS | XRX | ECL | WM | MSCI |
| 2019-07-31 | VEEV | APD | GPN | HET | MKTX | HSY | MTCH | BALL | MSI | TSN | FIS | ECL | ZTS | SNPS | CSGP |
| 2019-08-30 | HET | FISV | HSY | FIS | APD | VEEV | EW | GPN | TSN | SBAC | BALL | ZTS | LHX | TER | MKTX |
| 2019-09-30 | HSY | HET | ZTS | FISV | TSN | LHX | WEC | ENPH | FIS | EQIX | KLAC | BALL | SBAC | SNPS | CME |
| 2019-10-31 | HET | PODD | EQIX | SHW | KLAC | EW | TER | LHX | MLM | ETR | ZTS | WEC | GPN | HSY | WELL |
| 2019-11-29 | HET | KLAC | TER | SHW | WU | EW | QCOM | ANSS | BMY | CDW | PODD | XRX | FISV | CPRT | LRCX |
| 2019-12-31 | HET | DXCM | ANSS | TER | WU | FTNT | CVNA | FISV | VRTX | PODD | KLAC | QRVO | SWKS | EW | TDG |
| 2020-01-31 | HET | SWKS | ANSS | QRVO | BMY | TDG | MSFT | TER | GPN | FLT | FTNT | CPRT | DXCM | KLAC | KSU |
| 2020-02-28 | HET | SWKS | TDG | GPN | BMY | ANSS | FTNT | GOOG | DXCM | MSFT | QRVO | VRTX | TER | ZTS | CPRT |
| 2020-03-31 | ENPH | BIIB | DXCM | GEN | NEM | GOOG | EQIX | ABBV | MCK | KR | SBAC | CSGP | ADSK | ZTS | MSCI |
| 2020-04-30 | KR | CLX | DLR | LLY | ENPH | DXCM | EQIX | BIIB | NEM | HUM | SBAC | MCK | GEN | EA | ABBV |
| 2020-05-29 | DXCM | NEM | CLX | LLY | KR | ENPH | EQIX | DLR | HUM | CDNS | GOOG | EA | CRWD | GEN | WST |
| 2020-06-30 | ENPH | DXCM | PENN | CLX | NEM | ABBV | CDNS | EBAY | HUM | VEEV | KR | GOOG | WST | EA | ADSK |
| 2020-07-31 | DXCM | EBAY | XYZ | ENPH | CLX | ABBV | CDNS | ADSK | EA | PENN | NEM | WST | QCOM | EQIX | CVNA |
| 2020-08-31 | BBBY | XYZ | CDNS | ENPH | PENN | DXCM | EBAY | REGN | ETSY | CVNA | SWKS | CLX | TER | EA | VEEV |
| 2020-09-30 | BBBY | XYZ | ENPH | PENN | FDX | CDNS | CVNA | VEEV | LOW | EBAY | ETSY | DXCM | WST | META | SWKS |
| 2020-10-30 | PENN | XYZ | ENPH | CVNA | FDX | BBBY | ABMD | LOW | VEEV | ETSY | CRWD | SIVB | CZR | CDNS | ALGN |
| 2020-11-30 | FDX | XYZ | PENN | ENPH | BBBY | ALGN | ETSY | ABMD | GNRC | FSLR | CVNA | NOW | CARR | TER | SIVB |
| 2020-12-31 | XYZ | FDX | CVNA | ENPH | PENN | ETSY | MRNA | FSLR | ALGN | ABMD | CRWD | TER | LRCX | CDNS | KLAC |
| 2021-01-29 | XYZ | ENPH | CVNA | ALB | ETSY | CLF | ALGN | PENN | FDX | DD | KLAC | APTV | TER | ABMD | CRWD |
| 2021-02-26 | ENPH | PENN | CLF | XYZ | PSKY | ALB | ETSY | ALGN | MRNA | GNRC | CRWD | KLAC | DD | COHR | CVNA |
| 2021-03-31 | ETSY | PENN | DVN | GNRC | MGM | TPR | FANG | PSKY | CZR | TRIP | COF | MRNA | XYZ | KLAC | CPRI |
| 2021-04-30 | CLF | TRIP | XYZ | ETSY | BBWI | CZR | WSM | MGM | AMAT | GNRC | VIAC | DVN | KLAC | TPL | COF |
| 2021-05-28 | CLF | COF | BBWI | NUE | TPL | WSM | DVN | LPX | FITB | CZR | TPR | FANG | MGM | GNRC | CAR |
| 2021-06-30 | NUE | COF | CLF | GS | CZR | BX | MRNA | DVN | BBWI | GOOG | LPX | SIVB | FCX | BBBY | STLD |
| 2021-07-30 | BX | GNRC | DVN | NUE | GOOG | COF | CLF | MRNA | GS | SIVB | BBWI | SYF | MS | SBNY | TRGP |
| 2021-08-31 | MRNA | CLF | SIVB | BX | NUE | BBWI | GOOG | SBNY | COF | GNRC | KKR | GS | CARR | ALB | KSU |
| 2021-09-30 | MRNA | SIVB | BX | SBNY | GOOG | NUE | ALB | KSU | COF | PKI | DASH | HCA | BBWI | EPAM | GOOGL |
| 2021-10-29 | MRNA | SIVB | SBNY | BX | EOG | DVN | NUE | CLF | CAR | FANG | GS | KKR | ALB | RRC | GOOG |
| 2021-11-30 | CAR | MRNA | BX | DXCM | KKR | COP | SBNY | FANG | DVN | SIVB | RRC | KLAC | GOOG | ALB | ACN |
| 2021-12-31 | CAR | BX | KLAC | AMD | PFE | KKR | DVN | SBNY | SIVB | ODFL | ACN | ON | ALB | EPAM | MRO |
| 2022-01-31 | CAR | PFE | BLDR | ON | COP | DVN | ACN | BX | EOG | KLAC | LYV | FANG | AVGO | WFC | AZO |
| 2022-02-28 | EXC | EOG | COP | MCK | ELV | WFC | DVN | FANG | REGN | PFE | BX | WY | WMB | ON | DLTR |
| 2022-03-31 | COP | CF | EOG | FCX | ABBV | FANG | EXC | MCK | DVN | NUE | REGN | MRO | ADM | CAR | CB |
| 2022-04-29 | CF | ABBV | MCK | BKR | COP | REGN | NUE | EXC | KR | ADM | CLF | EOG | DLTR | CAR | EQT |
| 2022-05-31 | CF | EOG | APA | MRK | MCK | ABBV | ADM | ELV | REGN | NUE | KR | EXC | MOS | WMB | EQT |
| 2022-06-30 | EOG | CF | EQT | APA | MRK | CTRA | MCK | DVN | ABBV | OXY | ELV | VLO | EXC | MRO | WMB |
| 2022-07-29 | CF | MCK | MRK | EOG | APA | DVN | OXY | ABBV | CTRA | EQT | ON | HUM | MRO | VLO | PXD |
| 2022-08-31 | CF | DVN | MCK | VRTX | VICI | EOG | COP | APA | ON | MRK | HUM | OXY | PXD | CVX | EQT |
| 2022-09-30 | DVN | CF | EQT | MCK | COP | EOG | VRTX | MRK | ON | MRO | OXY | HUM | CAH | FSLR | ALB |
| 2022-10-31 | DVN | CF | COP | MCK | EOG | APA | CAH | FSLR | VRTX | HUM | MRK | ALB | OXY | CVX | MRO |
| 2022-11-30 | MRK | COP | EOG | CF | HUM | FSLR | CAH | PCG | VRTX | MCK | MPC | APA | BIIB | ABMD | XOM |
| 2022-12-30 | MRK | FSLR | APA | COP | EOG | BIIB | ABMD | STLD | PCG | CVX | MPC | PSX | CAH | TJX | AIG |
| 2023-01-31 | MRK | FSLR | ABMD | RE | EOG | ULTA | STLD | MPC | ACGL | BIIB | TJX | COP | BKNG | HES | PCG |
| 2023-02-28 | MRK | BKNG | RE | FSLR | LVS | STLD | ULTA | URI | TJX | NUE | BIIB | MCHP | MPC | HES | ABC |
| 2023-03-31 | BKNG | URI | LVS | FSLR | MRK | RE | STLD | ULTA | VLO | MCHP | ON | PHM | PSX | MPC | TJX |
| 2023-04-28 | BKNG | FSLR | ANET | RE | ADI | ULTA | AVGO | LVS | FDX | MRK | HCA | BSX | FICO | AXON | ALGN |
| 2023-05-31 | BKNG | PHM | FSLR | BSX | MDLZ | HCA | MRK | LEN | LVS | ANET | SMCI | HSY | PCG | BLDR | FICO |
| 2023-06-30 | BKNG | SMCI | PHM | AVGO | BLDR | KLAC | HCA | CPRT | GOOG | LEN | ANET | PLTR | LRCX | BSX | TDG |
| 2023-07-31 | BKNG | SMCI | AVGO | PHM | BLDR | PANW | KLAC | MCHP | FSLR | CPRT | TDG | DECK | ORCL | CAH | HUBB |
| 2023-08-31 | SMCI | BKNG | CVNA | PHM | DASH | BLDR | CARR | FDX | AVGO | KLAC | PLTR | ODFL | RCL | NOW | TJX |
| 2023-09-29 | CVNA | SMCI | BKNG | PSX | GOOG | PHM | FDX | AVGO | VRT | DASH | NOW | ODFL | BKR | BLDR | DELL |
| 2023-10-31 | SMCI | CVNA | BKNG | PSX | GOOG | DELL | VRT | NOW | JBL | FDX | TJX | ANET | KLAC | APO | AVGO |
| 2023-11-30 | BKNG | SMCI | DELL | NOW | VRT | CME | MCK | VST | ANET | DASH | PGR | PHM | IBM | PANW | CRH |
| 2023-12-29 | BKNG | CVNA | NOW | DASH | DELL | VRT | PHM | CRWD | SMCI | ANET | GOOG | DECK | FICO | IBM | AVGO |
| 2024-01-31 | BKNG | SMCI | NOW | ANF | IBM | PHM | CRM | NVDA | ANSS | ANET | FICO | DELL | GOOG | COIN | CRWD |
| 2024-02-29 | SMCI | CVNA | DASH | VRT | NOW | ANET | CRWD | IBM | ANF | DELL | CRM | FLT | META | GE | NVDA |
| 2024-03-28 | SMCI | DELL | ANF | CVNA | VRT | DASH | META | DECK | GE | CRWD | CRH | NVDA | VST | ANET | PLTR |
| 2024-04-30 | SMCI | NVDA | CVNA | DELL | DASH | VRT | ANF | WSM | APP | HOOD | VST | COIN | DECK | META | CRH |
| 2024-05-31 | DELL | SMCI | VRT | CVNA | VST | NVDA | WSM | ANF | TT | APP | COIN | NRG | PGR | META | FANG |
| 2024-06-28 | DELL | VST | VRT | SMCI | FSLR | NVDA | NRG | CVNA | DECK | ANF | GOOG | TT | APP | PGR | META |
| 2024-07-31 | NVDA | VST | CVNA | ANF | APP | HOOD | SMCI | VRT | ANET | GDDY | DELL | COIN | KLAC | GOOG | FICO |
| 2024-08-30 | NVDA | CVNA | VST | FICO | PGR | GDDY | IRM | PM | HWM | ANET | LUMN | KKR | WELL | TT | TRGP |
| 2024-09-30 | NVDA | CVNA | VST | PGR | PM | VRT | APP | WELL | FICO | TRGP | HCA | PLTR | KKR | TT | GEV |
| 2024-10-31 | VST | NVDA | APP | CVNA | LUMN | FICO | COHR | PLTR | META | VRT | GEV | BKNG | DASH | KKR | FISV |
| 2024-11-29 | VST | CVNA | VRT | APP | GEV | FISV | DASH | NVDA | TRGP | TPL | FICO | COHR | APO | BKNG | WMB |
| 2024-12-31 | APP | VST | CVNA | AXON | TPL | VRT | APO | TRGP | DASH | FISV | FICO | HOOD | WMB | GEV | KMI |
| 2025-01-31 | APP | VST | AXON | GEV | VRT | APO | CVNA | TPL | COIN | TRGP | KMI | DASH | BSX | TPR | FISV |
| 2025-02-28 | APP | HOOD | GEV | CVNA | VST | BSX | DASH | IBKR | AXON | GS | COF | PM | FOX | WSM | PLTR |
| 2025-03-31 | APP | HOOD | PM | TPR | DASH | GEV | CVNA | BSX | FOX | WELL | FISV | HWM | ETR | MO | PGR |
| 2025-04-30 | APP | PM | GEV | CME | TPR | MO | DASH | WELL | BKNG | BSX | MCK | HOOD | PGR | WMB | FOX |
| 2025-05-30 | APP | PM | GILD | GEV | CME | HOOD | CVNA | MCK | TTWO | DASH | COR | KR | BKNG | VRSN | CAH |
| 2025-06-30 | PM | APP | CVNA | GEV | HOOD | GILD | DASH | VST | BKNG | CME | HWM | NRG | CAH | JCI | AXON |
| 2025-07-31 | HOOD | GEV | HWM | APP | CVNA | DASH | BKNG | VST | VRT | JCI | PM | GILD | NRG | GS | UBER |
| 2025-08-29 | GEV | HOOD | VST | APP | CVNA | DASH | VRT | COIN | STX | TPR | NVDA | HWM | CAR | C | IBKR |
| 2025-09-30 | GEV | APP | CVNA | GOOG | HOOD | AVGO | VST | LITE | C | DASH | COIN | STX | TPR | GLW | GS |
| 2025-10-31 | APP | GOOG | HOOD | LITE | GLW | KLAC | NEM | SMCI | GEV | ECHO | VRT | STX | AVGO | C | MPWR |
| 2025-11-28 | APP | HOOD | VRT | GOOG | KLAC | GLW | MPWR | LITE | CIEN | ECHO | LRCX | MU | TEL | STX | FIX |
| 2025-12-31 | GOOG | APP | LITE | WDC | VRT | FIX | KLAC | COHR | CVNA | CIEN | GLW | FSLR | HCA | GEV | AVGO |
| 2026-01-30 | ECHO | WDC | LITE | GOOG | KLAC | NEM | COHR | ALB | CIEN | GLW | MU | MPWR | GILD | FIX | C |
| 2026-02-27 | GOOG | LITE | ECHO | WDC | KLAC | COHR | GLW | GEV | CIEN | VRT | MPWR | ALB | MU | FIX | GILD |
| 2026-03-31 | COHR | LITE | GLW | WDC | VRT | CIEN | NEM | MU | KLAC | GEV | GOOG | FDX | LRCX | ECHO | APA |
| 2026-04-30 | COHR | APA | GEV | GLW | LITE | KLAC | CIEN | PSX | VRT | MU | ECHO | WDC | GOOG | CF | NEM |
| 2026-05-29 | LITE | VRT | GEV | COHR | GLW | APA | CIEN | FIX | KLAC | GOOG | PWR | MU | DELL | ECHO | WDC |
| 2026-06-26 | DELL | LITE | CIEN | WDC | COHR | VRT | HPE | FLEX | GLW | FIX | MU | GEV | PWR | KLAC | VIAV |
Scoring script (python)
FORMULA_NAME = "Regime Momentum Recovery Quality Contrarian 52-Week Hybrid (Arbitrated Relay, v1133)"
LOGIC_VARIANT_COUNT = 3
NOTES = """mode=explore; family=regime-momentum-recovery-quality-contrarian-52w-hybrid
New hybrid family that combines three strong but orthogonal parent ideas with explicit arbitration instead of static averaging: regime-aware momentum leadership from the quality-value branch, repaired-drawdown turnarounds from the recovery-quality relay, and shallower 52-week-high contrarian entries from the winner contrarian family. The structure is intentionally distinct from the earlier degrading regime hybrid: bull regimes let repaired leaders outrank, mixed regimes require quality-backed repair before deep pullbacks can score, and risk-off regimes only admit contrarian rebounds when low-vol durability and trading continuity confirm they are not falling knives. When momentum, contrarian depth, and quality disagree, the branch-specific gates choose which sleeve is allowed to lead.
Deliberate metric coverage this run: momentum/return uses 1m, 3m, 6m, and 12_1 but thins 12m to zero; trend/recovery uses both 200d distance and 52-week-high drawdown in every branch; volatility is active in all branches but strongest in risk-off; liquidity rotates across trading_days, avg_daily_volume, and avg_daily_dollar_volume instead of leaving the category idle; income uses dividend_yield selectively in pullback and risk-off sleeves; valuation uses forward_pe and peg while pe is deliberately zeroed to avoid redundant value exposure; growth rotates across eps, revenue, operating-income, and free-cash-flow growth rather than repeating one sparse signal; quality keeps both operating_margin and free_cash_flow_margin; size uses market_cap and shares_outstanding as selective tie-breakers. Deliberate weight-0 metrics this run: pe, return_12m_pct, forward_eps, close, adj_close, high_52w, ma_200d, eps_ttm, revenue_ttm, operating_income_ttm, free_cash_flow_ttm."""
BULL_LEADER = {
"momentum_12_1_pct": (0.27, +1),
"return_6m_pct": (0.18, +1),
"from_200d_ma_pct": (0.16, +1),
"return_3m_pct": (0.08, +1),
"realized_vol_3m": (0.08, -1),
"eps_growth_pct": (0.09, +1),
"free_cash_flow_margin_pct": (0.08, +1),
"forward_pe": (0.06, -1),
}
BULL_PULLBACK = {
"from_52w_high_pct": (0.26, -1),
"from_200d_ma_pct": (0.20, +1),
"momentum_12_1_pct": (0.10, +1),
"return_1m_pct": (0.09, -1),
"market_cap": (0.06, -1),
"dividend_yield_ttm_pct": (0.05, +1),
"peg": (0.08, -1),
"operating_income_growth_pct": (0.08, +1),
"trading_days_3m": (0.08, +1),
}
TRANSITION_REPAIR = {
"from_52w_high_pct": (0.24, -1),
"from_200d_ma_pct": (0.22, +1),
"return_3m_pct": (0.16, +1),
"return_1m_pct": (0.10, -1),
"momentum_12_1_pct": (0.08, +1),
"realized_vol_3m": (0.08, -1),
"trading_days_3m": (0.12, +1),
}
TRANSITION_QUALITY = {
"operating_margin_pct": (0.16, +1),
"free_cash_flow_margin_pct": (0.14, +1),
"free_cash_flow_growth_pct": (0.10, +1),
"operating_income_growth_pct": (0.10, +1),
"avg_daily_dollar_volume_3m": (0.08, +1),
"forward_pe": (0.06, -1),
"peg": (0.06, -1),
"dividend_yield_ttm_pct": (0.04, +1),
"shares_outstanding": (0.06, -1),
}
RISK_OFF_DEFENSE = {
"realized_vol_3m": (0.22, -1),
"from_200d_ma_pct": (0.18, +1),
"from_52w_high_pct": (0.10, -1),
"operating_margin_pct": (0.12, +1),
"dividend_yield_ttm_pct": (0.10, +1),
"trading_days_3m": (0.10, +1),
"forward_pe": (0.08, -1),
"revenue_growth_pct": (0.05, +1),
"avg_daily_volume_3m": (0.05, +1),
}
RISK_OFF_REBOUND = {
"from_52w_high_pct": (0.18, -1),
"from_200d_ma_pct": (0.16, +1),
"return_1m_pct": (0.06, -1),
"return_3m_pct": (0.10, +1),
"momentum_12_1_pct": (0.06, +1),
"market_cap": (0.05, -1),
"free_cash_flow_margin_pct": (0.08, +1),
"peg": (0.07, -1),
"avg_daily_dollar_volume_3m": (0.08, +1),
"realized_vol_3m": (0.06, -1),
}
def score_universe(stocks, regime, ctx):
def metric_value(stock, metric):
value = stock.get(metric)
if value is None:
return None
if isinstance(value, bool):
value = 1.0 if value else 0.0
elif isinstance(value, (int, float)):
value = float(value)
else:
try:
value = float(value)
except Exception:
return None
if value != value:
return None
return value
def clamp01(x):
if x < 0.0:
return 0.0
if x > 1.0:
return 1.0
return x
def mean_present(values, default=0.5):
total = 0.0
count = 0
for value in values:
if value is not None:
total += value
count += 1
if count == 0:
return default
return total / count
def build_metric_ranks(metric_names):
ranks = {}
for metric in metric_names:
observed = []
for idx, stock in enumerate(stocks):
value = metric_value(stock, metric)
if value is not None:
observed.append((value, idx))
observed.sort(key=lambda item: item[0])
metric_rank = {}
n = len(observed)
if n == 1:
metric_rank[observed[0][1]] = 0.5
elif n > 1:
start = 0
while start < n:
end = start
current = observed[start][0]
while end + 1 < n and observed[end + 1][0] == current:
end += 1
pct = (start + end) / (2.0 * (n - 1))
j = start
while j <= end:
metric_rank[observed[j][1]] = pct
j += 1
start = end + 1
ranks[metric] = metric_rank
return ranks
def signal(idx, metric, direction):
pct = rank_cache.get(metric, {}).get(idx)
if pct is None:
return None
if direction >= 0:
return pct
return 1.0 - pct
def spec_score(idx, spec):
total = 0.0
used = 0.0
for metric, params in spec.items():
weight, direction = params
sig = signal(idx, metric, direction)
if sig is None:
continue
total += weight * sig
used += weight
if used == 0.0:
return 0.5
return total / used
def detect_branch(regime_obj, ctx_obj):
text_parts = []
if regime_obj is not None:
text_parts.append(str(regime_obj))
if isinstance(regime_obj, dict):
for key in ("label", "name", "regime", "state", "market_regime", "trend"):
if key in regime_obj and regime_obj.get(key) is not None:
text_parts.append(str(regime_obj.get(key)))
if isinstance(ctx_obj, dict):
for key in ("regime", "market_regime", "state", "trend", "mode"):
if key in ctx_obj and ctx_obj.get(key) is not None:
text_parts.append(str(ctx_obj.get(key)))
text = " ".join(text_parts).lower()
if (
"risk_off" in text
or "risk-off" in text
or "bear" in text
or "defensive" in text
or "crash" in text
or "panic" in text
or "drawdown" in text
):
return "risk_off"
if (
"bull" in text
or "risk_on" in text
or "risk-on" in text
or "uptrend" in text
or "expansion" in text
or "recovery" in text
):
return "bull"
return "transition"
all_metrics = {}
for spec in (
BULL_LEADER,
BULL_PULLBACK,
TRANSITION_REPAIR,
TRANSITION_QUALITY,
RISK_OFF_DEFENSE,
RISK_OFF_REBOUND,
):
for metric in spec:
all_metrics[metric] = True
rank_cache = build_metric_ranks(all_metrics)
branch = detect_branch(regime, ctx)
scores = {}
for idx, stock in enumerate(stocks):
leader = spec_score(idx, BULL_LEADER)
bull_pullback = spec_score(idx, BULL_PULLBACK)
repair = spec_score(idx, TRANSITION_REPAIR)
quality = spec_score(idx, TRANSITION_QUALITY)
defense = spec_score(idx, RISK_OFF_DEFENSE)
rebound = spec_score(idx, RISK_OFF_REBOUND)
deep_pullback = signal(idx, "from_52w_high_pct", -1)
repair_gate = mean_present(
[
signal(idx, "from_200d_ma_pct", +1),
signal(idx, "return_3m_pct", +1),
signal(idx, "return_1m_pct", -1),
]
)
quality_gate = mean_present(
[
signal(idx, "operating_margin_pct", +1),
signal(idx, "free_cash_flow_margin_pct", +1),
signal(idx, "operating_income_growth_pct", +1),
signal(idx, "free_cash_flow_growth_pct", +1),
]
)
liquidity_gate = mean_present(
[
signal(idx, "trading_days_3m", +1),
signal(idx, "avg_daily_dollar_volume_3m", +1),
signal(idx, "avg_daily_volume_3m", +1),
]
)
value_gate = mean_present(
[
signal(idx, "forward_pe", -1),
signal(idx, "peg", -1),
]
)
low_vol_gate = signal(idx, "realized_vol_3m", -1)
if low_vol_gate is None:
low_vol_gate = 0.5
if branch == "bull":
if leader >= 0.58 and repair_gate >= 0.52:
score = 0.56 * leader + 0.22 * quality + 0.22 * bull_pullback
elif deep_pullback is not None and deep_pullback >= 0.62 and repair_gate >= 0.48 and quality_gate >= 0.50:
score = 0.42 * bull_pullback + 0.33 * leader + 0.25 * quality
else:
score = 0.42 * leader + 0.38 * quality + 0.20 * bull_pullback
score += 0.03 * value_gate
if deep_pullback is not None and deep_pullback >= 0.75 and repair_gate < 0.40:
score -= 0.06
elif branch == "risk_off":
if defense >= 0.58 and liquidity_gate >= 0.52:
score = 0.56 * defense + 0.24 * quality + 0.20 * rebound
elif deep_pullback is not None and deep_pullback >= 0.60 and repair_gate >= 0.50 and defense >= 0.48:
score = 0.42 * rebound + 0.38 * defense + 0.20 * quality
else:
score = 0.50 * defense + 0.30 * quality + 0.20 * repair
score += 0.04 * value_gate
if low_vol_gate < 0.35:
score -= 0.08
if liquidity_gate < 0.35:
score -= 0.05
else:
if deep_pullback is not None and deep_pullback >= 0.60 and repair_gate >= 0.50 and quality_gate >= 0.52:
score = 0.44 * repair + 0.36 * quality + 0.20 * bull_pullback
elif leader >= 0.60 and quality_gate >= 0.48:
score = 0.44 * leader + 0.31 * repair + 0.25 * quality
else:
score = 0.40 * repair + 0.40 * quality + 0.20 * bull_pullback
score += 0.04 * value_gate
if deep_pullback is not None and deep_pullback >= 0.72 and repair_gate < 0.42 and quality_gate < 0.46:
score -= 0.08
if liquidity_gate < 0.30:
score -= 0.04
symbol = stock.get("symbol", stock.get("ticker"))
if symbol is not None:
scores[symbol] = clamp01(score)
return scores