exp_003

Regime Momentum/Quality vs Low-Vol/Value (v2 defensive risk-off)

← All V2 experiments
Relative return
1.267x
Excess vs bench
26.68%
Benchmark
CAPW_UNIV
Rolling windows
179 · monthly
Mean strategy gain
44.99%
Mean benchmark gain
14.08%
Mean excess gain
30.90%
Dispersion (ref)
19.92%
Win-rate vs bench (ref)
100.00%
Worst / best ratio (ref)
1.028x / 1.558x
Logic variants
2
Updated
Jul 18, 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 18.88% 2.22% 1.163x
2011-07-01 … 2016-06-30 36.68% 13.74% 1.202x
2016-07-01 … 2021-06-30 80.29% 20.63% 1.495x
2021-07-01 … 2026-06-26 46.90% 15.48% 1.272x
All rolling windows — the objective set (equal-weighted mean ratio)
Strategy Benchmark (CAPW_UNIV) Excess
2006200720082009201020112012201320142015201620172018201920202021 -20%0%20%40%60%80%100%
rolling 5y windows, monthly step — 179 windows · mean ratio 1.267x · beat benchmark in 179/179
#WindowStrategyBenchmarkRatio
1 2006-07-31 … 2011-07-29 17.08% 1.79% 1.150x
2 2006-08-31 … 2011-08-31 14.55% 0.21% 1.143x
3 2006-09-29 … 2011-08-31 11.88% -0.14% 1.120x
4 2006-10-31 … 2011-10-31 10.51% 0.23% 1.103x
5 2006-11-30 … 2011-11-30 9.39% -0.05% 1.094x
6 2006-12-29 … 2011-11-30 9.34% -0.32% 1.097x
7 2007-01-31 … 2012-01-31 8.68% 0.93% 1.077x
8 2007-02-28 … 2012-01-31 7.61% 1.43% 1.061x
9 2007-03-30 … 2012-03-30 9.37% 3.09% 1.061x
10 2007-04-30 … 2012-04-30 9.65% 2.42% 1.071x
11 2007-05-31 … 2012-05-31 6.30% 0.60% 1.057x
12 2007-06-29 … 2012-06-29 4.74% 1.92% 1.028x
13 2007-07-31 … 2012-07-31 5.62% 2.69% 1.029x
14 2007-08-31 … 2012-08-31 7.14% 2.95% 1.041x
15 2007-09-28 … 2012-09-28 6.70% 3.20% 1.034x
16 2007-10-31 … 2012-10-31 7.42% 2.60% 1.047x
17 2007-11-30 … 2012-11-30 7.66% 3.45% 1.041x
18 2007-12-31 … 2012-12-31 7.82% 3.69% 1.040x
19 2008-01-31 … 2013-01-31 10.94% 5.85% 1.048x
20 2008-02-29 … 2013-02-28 10.59% 6.82% 1.035x
21 2008-03-31 … 2013-03-28 12.04% 7.73% 1.040x
22 2008-04-30 … 2013-04-30 13.90% 7.51% 1.059x
23 2008-05-30 … 2013-04-30 13.14% 7.81% 1.049x
24 2008-06-30 … 2013-06-28 18.40% 9.33% 1.083x
25 2008-07-31 … 2013-07-31 22.90% 10.48% 1.112x
26 2008-08-29 … 2013-07-31 23.22% 10.52% 1.115x
27 2008-09-30 … 2013-09-30 29.12% 11.48% 1.158x
28 2008-10-31 … 2013-10-31 36.57% 15.76% 1.180x
29 2008-11-28 … 2013-10-31 38.38% 17.46% 1.178x
30 2008-12-31 … 2013-12-31 40.91% 18.44% 1.190x
31 2009-01-30 … 2013-12-31 42.40% 20.64% 1.180x
32 2009-02-27 … 2014-01-31 45.19% 21.63% 1.194x
33 2009-03-31 … 2014-03-31 46.31% 20.60% 1.213x
34 2009-04-30 … 2014-04-30 44.56% 19.00% 1.215x
35 2009-05-29 … 2014-04-30 46.63% 18.32% 1.239x
36 2009-06-30 … 2014-06-30 47.88% 19.01% 1.243x
37 2009-07-31 … 2014-07-31 44.22% 17.39% 1.229x
38 2009-08-31 … 2014-08-29 43.95% 17.70% 1.223x
39 2009-09-30 … 2014-09-30 39.52% 16.64% 1.196x
40 2009-10-30 … 2014-09-30 43.00% 17.08% 1.221x
41 2009-11-30 … 2014-11-28 39.01% 16.82% 1.190x
42 2009-12-31 … 2014-12-31 37.22% 16.28% 1.180x
43 2010-01-29 … 2014-12-31 39.08% 17.23% 1.186x
44 2010-02-26 … 2015-01-30 37.98% 15.80% 1.192x
45 2010-03-31 … 2015-03-31 36.90% 15.40% 1.186x
46 2010-04-30 … 2015-04-30 34.43% 15.38% 1.165x
47 2010-05-28 … 2015-04-30 37.31% 17.09% 1.173x
48 2010-06-30 … 2015-06-30 42.62% 17.45% 1.214x
49 2010-07-30 … 2015-06-30 42.19% 16.43% 1.221x
50 2010-08-31 … 2015-08-31 38.11% 15.76% 1.193x
51 2010-09-30 … 2015-09-30 35.86% 13.61% 1.196x
52 2010-10-29 … 2015-09-30 34.99% 13.06% 1.194x
53 2010-11-30 … 2015-11-30 35.16% 15.09% 1.174x
54 2010-12-31 … 2015-12-31 34.13% 13.55% 1.181x
55 2011-01-31 … 2016-01-29 32.24% 11.90% 1.182x
56 2011-02-28 … 2016-01-29 32.43% 11.53% 1.187x
57 2011-03-31 … 2016-03-31 33.44% 12.90% 1.182x
58 2011-04-29 … 2016-04-29 31.78% 12.39% 1.172x
59 2011-05-31 … 2016-05-31 34.17% 12.94% 1.188x
60 2011-06-30 … 2016-06-30 35.01% 13.30% 1.192x
61 2011-07-29 … 2016-07-29 39.52% 14.52% 1.218x
62 2011-08-31 … 2016-08-31 41.35% 15.19% 1.227x
63 2011-09-30 … 2016-09-30 41.92% 16.32% 1.220x
64 2011-10-31 … 2016-10-31 40.53% 14.02% 1.233x
65 2011-11-30 … 2016-11-30 43.90% 14.66% 1.255x
66 2011-12-30 … 2016-12-30 43.86% 14.92% 1.252x
67 2012-01-31 … 2017-01-31 45.27% 14.63% 1.267x
68 2012-02-29 … 2017-02-28 44.96% 14.78% 1.263x
69 2012-03-30 … 2017-02-28 44.89% 14.43% 1.266x
70 2012-04-30 … 2017-04-28 41.10% 14.61% 1.231x
71 2012-05-31 … 2017-05-31 45.19% 15.98% 1.252x
72 2012-06-29 … 2017-05-31 46.07% 15.44% 1.265x
73 2012-07-31 … 2017-07-31 45.89% 15.43% 1.264x
74 2012-08-31 … 2017-08-31 46.09% 15.12% 1.269x
75 2012-09-28 … 2017-08-31 45.65% 14.77% 1.269x
76 2012-10-31 … 2017-10-31 50.51% 16.12% 1.296x
77 2012-11-30 … 2017-11-30 50.78% 16.79% 1.291x
78 2012-12-31 … 2017-12-29 49.59% 16.93% 1.279x
79 2013-01-31 … 2018-01-31 50.66% 17.57% 1.282x
80 2013-02-28 … 2018-02-28 52.16% 16.21% 1.309x
81 2013-03-28 … 2018-02-28 51.08% 15.81% 1.305x
82 2013-04-30 … 2018-04-30 46.13% 14.25% 1.279x
83 2013-05-31 … 2018-05-31 38.36% 14.57% 1.208x
84 2013-06-28 … 2018-05-31 41.48% 14.97% 1.231x
85 2013-07-31 … 2018-07-31 39.94% 14.83% 1.219x
86 2013-08-30 … 2018-07-31 41.31% 15.59% 1.223x
87 2013-09-30 … 2018-09-28 40.89% 15.84% 1.216x
88 2013-10-31 … 2018-10-31 32.00% 12.89% 1.169x
89 2013-11-29 … 2018-10-31 31.98% 12.60% 1.172x
90 2013-12-31 … 2018-12-31 30.38% 9.93% 1.186x
91 2014-01-31 … 2019-01-31 31.10% 12.37% 1.167x
92 2014-02-28 … 2019-02-28 28.77% 12.38% 1.146x
93 2014-03-31 … 2019-03-29 31.03% 12.76% 1.162x
94 2014-04-30 … 2019-04-30 33.01% 13.73% 1.170x
95 2014-05-30 … 2019-04-30 32.87% 13.54% 1.170x
96 2014-06-30 … 2019-06-28 33.49% 12.81% 1.183x
97 2014-07-31 … 2019-07-31 35.04% 13.30% 1.192x
98 2014-08-29 … 2019-07-31 34.92% 12.80% 1.196x
99 2014-09-30 … 2019-09-30 36.63% 12.70% 1.212x
100 2014-10-31 … 2019-10-31 37.08% 12.91% 1.214x
101 2014-11-28 … 2019-10-31 36.53% 12.60% 1.213x
102 2014-12-31 … 2019-12-31 39.02% 14.16% 1.218x
103 2015-01-30 … 2019-12-31 38.81% 14.85% 1.209x
104 2015-02-27 … 2020-01-31 38.54% 14.04% 1.215x
105 2015-03-31 … 2020-03-31 36.67% 8.56% 1.259x
106 2015-04-30 … 2020-04-30 40.53% 11.65% 1.259x
107 2015-05-29 … 2020-05-29 38.80% 12.61% 1.232x
108 2015-06-30 … 2020-06-30 38.43% 13.64% 1.218x
109 2015-07-31 … 2020-07-31 39.78% 14.60% 1.220x
110 2015-08-31 … 2020-08-31 45.12% 18.07% 1.229x
111 2015-09-30 … 2020-09-30 44.38% 17.05% 1.234x
112 2015-10-30 … 2020-10-30 39.86% 14.60% 1.220x
113 2015-11-30 … 2020-11-30 50.21% 17.43% 1.279x
114 2015-12-31 … 2020-12-31 51.45% 18.65% 1.276x
115 2016-01-29 … 2021-01-29 85.86% 19.26% 1.558x
116 2016-02-29 … 2021-02-26 80.89% 19.79% 1.510x
117 2016-03-31 … 2021-03-31 82.16% 19.42% 1.525x
118 2016-04-29 … 2021-03-31 83.84% 19.66% 1.536x
119 2016-05-31 … 2021-05-28 82.66% 20.42% 1.517x
120 2016-06-30 … 2021-06-30 82.24% 21.06% 1.505x
121 2016-07-29 … 2021-06-30 80.29% 20.63% 1.495x
122 2016-08-31 … 2021-08-31 81.41% 21.75% 1.490x
123 2016-09-30 … 2021-09-30 76.71% 20.22% 1.470x
124 2016-10-31 … 2021-10-29 82.86% 22.50% 1.493x
125 2016-11-30 … 2021-11-30 81.07% 21.87% 1.486x
126 2016-12-30 … 2021-11-30 81.63% 21.75% 1.492x
127 2017-01-31 … 2022-01-31 72.10% 20.17% 1.432x
128 2017-02-28 … 2022-02-28 70.31% 18.51% 1.437x
129 2017-03-31 … 2022-03-31 73.54% 19.46% 1.453x
130 2017-04-28 … 2022-03-31 75.27% 19.46% 1.467x
131 2017-05-31 … 2022-05-31 70.51% 15.59% 1.475x
132 2017-06-30 … 2022-06-30 69.94% 13.08% 1.503x
133 2017-07-31 … 2022-07-29 69.07% 15.16% 1.468x
134 2017-08-31 … 2022-08-31 65.91% 13.72% 1.459x
135 2017-09-29 … 2022-08-31 65.26% 13.56% 1.455x
136 2017-10-31 … 2022-10-31 58.41% 11.86% 1.416x
137 2017-11-30 … 2022-11-30 58.18% 12.52% 1.406x
138 2017-12-29 … 2022-11-30 59.02% 12.46% 1.414x
139 2018-01-31 … 2023-01-31 52.95% 11.01% 1.378x
140 2018-02-28 … 2023-02-28 50.54% 11.03% 1.356x
141 2018-03-29 … 2023-02-28 51.74% 11.72% 1.358x
142 2018-04-30 … 2023-04-28 50.72% 13.01% 1.334x
143 2018-05-31 … 2023-05-31 52.52% 12.95% 1.350x
144 2018-06-29 … 2023-05-31 51.81% 13.01% 1.343x
145 2018-07-31 … 2023-07-31 56.16% 14.67% 1.362x
146 2018-08-31 … 2023-08-31 53.65% 13.51% 1.354x
147 2018-09-28 … 2023-08-31 53.46% 13.56% 1.351x
148 2018-10-31 … 2023-10-31 53.88% 12.60% 1.367x
149 2018-11-30 … 2023-11-30 55.69% 14.58% 1.359x
150 2018-12-31 … 2023-12-29 62.17% 17.26% 1.383x
151 2019-01-31 … 2024-01-31 62.38% 16.27% 1.397x
152 2019-02-28 … 2024-01-31 62.25% 15.94% 1.399x
153 2019-03-29 … 2024-03-28 74.34% 17.50% 1.484x
154 2019-04-30 … 2024-04-30 71.66% 15.50% 1.486x
155 2019-05-31 … 2024-05-31 74.37% 18.12% 1.476x
156 2019-06-28 … 2024-06-28 72.53% 17.99% 1.462x
157 2019-07-31 … 2024-07-31 68.15% 17.70% 1.429x
158 2019-08-30 … 2024-08-30 66.99% 18.41% 1.410x
159 2019-09-30 … 2024-09-30 69.96% 18.65% 1.432x
160 2019-10-31 … 2024-10-31 70.48% 17.87% 1.446x
161 2019-11-29 … 2024-11-29 74.32% 18.64% 1.469x
162 2019-12-31 … 2024-12-31 66.67% 17.62% 1.417x
163 2020-01-31 … 2025-01-31 71.25% 18.07% 1.450x
164 2020-02-28 … 2025-02-28 68.66% 19.00% 1.417x
165 2020-03-31 … 2025-03-31 66.62% 19.24% 1.397x
166 2020-04-30 … 2025-04-30 62.96% 16.49% 1.399x
167 2020-05-29 … 2025-04-30 62.98% 15.80% 1.407x
168 2020-06-30 … 2025-06-30 60.91% 18.19% 1.362x
169 2020-07-31 … 2025-07-31 59.80% 17.87% 1.356x
170 2020-08-31 … 2025-08-29 58.96% 16.69% 1.362x
171 2020-09-30 … 2025-09-30 63.91% 18.57% 1.382x
172 2020-10-30 … 2025-09-30 67.50% 19.43% 1.403x
173 2020-11-30 … 2025-11-28 56.91% 17.77% 1.332x
174 2020-12-31 … 2025-12-31 59.33% 16.92% 1.363x
175 2021-01-29 … 2025-12-31 37.19% 17.20% 1.171x
176 2021-02-26 … 2026-01-30 44.40% 17.04% 1.234x
177 2021-03-31 … 2026-03-31 42.64% 14.07% 1.251x
178 2021-04-30 … 2026-04-30 42.86% 16.03% 1.231x
179 2021-05-28 … 2026-04-30 42.64% 16.22% 1.227x
Notes
mode=exploit; family=regime-momentum-quality-value. Same as exp_001 but risk-off shifts 0.10 weight from forward_pe (value) to realized_vol_3m (low-vol) for more drawdown defense.
Lesson notes
#6 · improve · relative_return Δ -0.0122 · parent exp_001 · Jul 18, 2026 · 179 rolling 5y windows vs CAPW_UNIV; mean strat 45.0% / bench 14.1%
exp_003 vs exp_001: shifting 0.10 of risk-off weight from forward_pe into realized_vol_3m improved defensive robustness and produced a stronger benchmark-relative result without changing the bull branch.
#4 · degrade · parent exp_003 · Jul 18, 2026 · 179 rolling 5y windows vs CAPW_UNIV; mean strat 14.6% / bench 14.1%
exp_007 vs exp_003: Income-first ranking built around dividend yield and cash-flow support. relative_return moved from 1.266817 to 1.005861 (delta -0.260956); excess=+0.5861%, win_rate=48.0447%, dispersion=6.2750%. mode=explore; family=dividend-income.
#3 · degrade · parent exp_003 · Jul 18, 2026 · 179 rolling 5y windows vs CAPW_UNIV; mean strat -4.4% / bench 14.1%
exp_006 vs exp_003: Oversold mean-reversion with basic quality guardrails instead of trend following. relative_return moved from 1.266817 to 0.839308 (delta -0.427509); excess=-16.0692%, win_rate=12.8492%, dispersion=15.3587%. mode=explore; family=mean-reversion.
#2 · neutral · parent exp_003 · Jul 18, 2026 · 179 rolling 5y windows vs CAPW_UNIV; mean strat 42.9% / bench 14.1%
exp_005 vs exp_003: Alternative regime definition based on breadth extremes and median distance from the 200d. relative_return moved from 1.266817 to 1.249701 (delta -0.017116); excess=+24.9701%, win_rate=100.0000%, dispersion=17.6681%. mode=explore; family=breadth-extremes.
Monthly picks — top stocks selected each month (whole timeline)
timeline — 240 months · top 15 each
Month 123456789101112131415
2006-07-31 USB LH CPQ JNJ KO BRK-B PEP SLG GL ATO CPB ES NEE ETR DGX
2006-08-31 MNST ILMN MAY AKAM ATI ADM NUE EME SLG DECK STLD LVS TEX GRMN FIX
2006-09-29 MAY ILMN AKAM MNST LVS AAL AT BKNG EME ATI TEX DECK DLR MTW ADM
2006-10-31 MAY AKAM DECK MNST ILMN BKNG AT ATI LVS BMET ALGN EME INCLF AAL NVDA
2006-11-30 MAY ILMN ICE ATI AKAM DECK MTW ALGN AT UAA NVDA REGN GRMN ALB BMET
2006-12-29 MAY ICE ILMN AKAM ATI ALGN MTW AT NVDA LVS DECK BMET WST ALB EQIX
2007-01-31 MAY ICE AT AKAM ALGN BMET BKNG ALXN KMX LVS ATI MGM GT DECK WYNN
2007-02-28 MAY ICE ALGN CF MGM ATI GT AKAM ALB DECK BKNG AT KMX LVS STLD
2007-03-30 MAY CF GT ICE BKNG MGM ATI DLX MOS ALB TEX TPL CE STLD ANDV
2007-04-30 MAY GT CF BKNG ALGN ANDV MOS OI ICE INCY DLX CLF TEX NRG TPL
2007-05-31 MAY ALGN GT CF MA CLF ICE DECK FSLR DLX OI ANDV MOS AMZN ON
2007-06-29 MAY CF GT ALGN MA KMG FSLR DLX MOS DECK OI CLF ICE BKNG ALXN
2007-07-31 MAY CF KMG ALGN MA AMZN FSLR GT MOS AL DECK OI BKNG ALXN JEC
2007-08-31 ALGN CF KMG AMZN OI MA AL ISRG DECK MOS CMI MAY AXON ALXN JEC
2007-09-28 CF KMG AMZN MOS OI GRMN AL MPWR NOV BKNG CMG ISRG GME CMI AXON
2007-10-31 CF MOS ISRG KMG MPWR NOV OI GRMN AMZN AL GME WYNN CMG BKNG DECK
2007-11-30 FSLR CF ISRG MOS DECK BKNG BBBY CMG AL JEC GRMN OI NOV GME MNST
2007-12-31 CVG PENN JNJ CL PG MO AEE KO PEP CLX ED SO WEC ELV D
2008-01-31 MAY JNJ CVG CL PG MO SO ATO CLX DGX KO LH WEC KMB ABT
2008-02-29 MAY CVG JNJ PG CHD CL MO KO ABT KMB WMT LMT MEE SO WEC
2008-03-31 MAY CVG PG JNJ CL MEE CHD KO KMB MO HRL AFL WEC SWN LMT
2008-04-30 MAY CVG JNJ MEE PG CHD KO KMB WEC AWK WMT ESV GD BRK-B SWN
2008-05-30 MOS FSLR CF MA MEE CLF ILMN BKNG ESV SWN PRGO ISRG RRC FLS HP
2008-06-30 SW MAY MEE TTWO ESV JNJ SWN BAX MKC SO CHD XEL FE FMC BTUUQ
2008-07-31 SWN MAY ESV BCR MEE DF BTUUQ EW APOL ATGE JNJ CELG BAX FDO FI
2008-08-29 SWN MOS CLF ESV CF BCR FSLR MEE AMT DF APOL BTUUQ ATGE CELG FI
2008-09-30 SWN BCR DF GIS FDO CELG APOL ATGE FI ESV EDS JNJ HRS CPB HCBK
2008-10-31 WWY GIS CHD CPB SWN CLX ABT CAG MKC LDOS BCR ED BAX TECH DLTR
2008-11-28 GIS CHD CLX DLTR ABT MCD ED KR CPB WMT LDOS CASY LH TECH KMB
2008-12-31 ABT LDOS CHD MCD GIS DLTR CLX ED KR AON BMY WMT LH CAG AJG
2009-01-30 MCD ED ABT LDOS EW AMGN GIS HET CHD MKC WEC BMY DLTR JNJ GILD
2009-02-27 HET ED LDOS EW PCG MCD XEL WEC ABT JNJ AMGN CHD MKC HSY CPB
2009-03-31 HET AZO ED PCG EW XEL CHD MCD WEC LDOS CPB JNJ NFLX HRL CLX
2009-04-30 AZO NFLX HET ED MNST XEL PCG CHD CLX MCD BR WEC SNPS NEE DGX
2009-05-29 HRL ORLY AZO DLTR HET DGX MCD JNJ ED BKNG IBM ROST PCG NEE EW
2009-06-30 CAR AN FHN NFLX ORLY F PALM MBI MKTX TSCO DLTR AZO TYL TLAB WBD
2009-07-31 CAR AN F PALM ORLY BLDR NFLX FHN WBD MNST CMG ULTA SWKS FFIV ICE
2009-08-31 CAR F PALM AN MU BKNG NFLX CMG ORLY WBD BLDR VRTX SWKS SNDK ASH
2009-09-30 CAR PALM BKNG SW WBD MU GNW SNDK AAPL WDC DISCA AN MRVL MTG ASH
2009-10-30 CAR SW GNW PALM BC BKNG KMG HIG F SNDK DDS SSP GGP WSM UIS
2009-11-30 CAR GNW KMG UIS SW BC DDS GGP SSP THC STX ASH SNDK PALM DXCM
2009-12-31 CAR GGP SANM DDS UIS SSP LPX SW THC AMD KMG LULU F WFM GNW
2010-01-29 CAR SANM GNW GGP UIS AMD F THC SW LULU SSP BC STX ASH DDS
2010-02-26 CAR SANM GNW UIS ASH GGP LVS UAL F FITB INCY SSP LULU DDS CLF
2010-03-31 CAR SANM GNW UIS MAC INCY LYV GGP MTG UAL LVS F SSP DDR CLF
2010-04-30 GNW INCY SANM CAR UAL MTG LYV GGP SSP WLL ETFC DDS BKNG SMCI VIAV
2010-05-28 UAL SSP BC SANM ETFC INCY VSTNQ GGP AAL WLL MTG LULU DDS NFLX LYV
2010-06-30 UST CVG ETFC CPB KMB CLX DLTR PG SO MCD HRL AZO ED COR GIS
2010-07-30 SW CVG UST KMB AZO ETFC HRL CLX CPB CASY SO DLTR MO PG LUMN
2010-08-31 CPQ CVG AZO LUMN CASY MCD UST KMB CLX ETFC CPB ED MO SW SO
2010-09-30 ETFC NFLX AKAM FFIV NTAP UAL BBWI VSTNQ BKNG CCU LVS AAL WLL VRTS CMI
2010-10-29 ETFC UAL NFLX AAL NTAP LVS INCY BKNG FFIV WLL BBWI MBI CMG AKAM VRTS
2010-11-30 ETFC UAL LVS MBI NFLX AAL FFIV VRTS CMG BBWI NTAP HON WLL BKNG ACAS
2010-12-31 ETFC LVS NFLX VRTS MBI CMG FFIV ACAS BBWI URI HON WLL DECK BKNG ANF
2011-01-31 ETFC MAY ACAS LVS URI VRTS WLL NFLX HON LULU BBWI MRVL FFIV ANF DECK
2011-02-28 MAY ETFC URI HON MRVL LULU NFLX LVS ACAS MRO IPGP VRTS BBWI DDS FTNT
2011-03-31 MAY ETFC IPGP URI WYNN MRVL VRTS BBWI MOS LULU FTNT NFLX SWKS ANF ACAS
2011-04-29 MAY IPGP ETFC WYNN MU LULU FTNT VRTS URI ANDV MOS ULTA ACAS ON NFLX
2011-05-31 MAY IPGP ETFC KLAC FTNT MU LULU BKNG ACAS LYB WYNN EP LRCX URI ANDV
2011-06-30 MAY IPGP ETFC FTNT KLAC BKNG VRTS ANF REGN EP URI LULU ULTA WYNN DDS
2011-07-29 MAY IPGP LULU EP ULTA FTNT CTRA VRTS ABMD WCG KLAC COG ANF REGN ETFC
2011-08-31 MCD SO UST KMB PG AZO GIS ED D CAG AEP ABT MDLZ K CL
2011-09-30 UST SO KMB D MCD AZO ED PG GIS DUK AEP BMY MO VZ HSY
2011-10-31 SO D CVG MCD AZO UST AEP ED BMY V DUK KMB PG MO MSFT
2011-11-30 V ED D AEP MCD MSFT MA MO AMT BMY SO DLTR ABT ISRG AMGN
2011-12-30 V MCD ED D MO MA MSFT AEP BMY ISRG AMT ABT AMGN SO UST
2012-01-31 VZ GNRC DPZ COG WCG EP ULTA WYNN MNST MA DLTR REGN FAST BIIB TIN
2012-02-29 REGN STX WCG COG DPZ URI ULTA EOG MNST ABMD HFC CF ADS VLO TYL
2012-03-30 STX REGN DPZ CF EOG MNST AAPL BLDR WCG ULTA URI HFC COG V VLO
2012-04-30 REGN BLDR DPZ AAPL MNST URI STX CF EOG EQIX ULTA M V ISRG BKNG
2012-05-31 REGN BLDR STX AAPL MNST AAL ORLY LULU EQIX ISRG EOG URI BKNG V EC
2012-06-29 REGN BLDR AAL AAPL STX MNST EQIX SHW DHI EOG TJX ROST LEN DAL CF
2012-07-31 LEN STX AAL BLDR REGN MNST SHW EQIX AAPL DG ROST DHI V PHM ALGN
2012-08-31 DHI STX PHM LEN URI REGN AAL EQIX BLDR GPS SHW ALGN ROST LPX AAPL
2012-09-28 DHI PHM STX BLDR LEN LPX URI REGN LYB GPS ALGN ANDV EQIX KBH SHW
2012-10-31 DHI PHM BLDR LEN KBH REGN STX LPX URI EQIX BBBY WHR LYB ANDV STZ
2012-11-30 BLDR PHM DHI KBH LEN BBBY AAL LPX WHR REGN ALL STX STZ GNRC ANDV
2012-12-31 REGN PHM WHR LPX BLDR BBBY KBH AAL SW EXPE LEN ANDV DDS GILD OMX
2013-01-31 PHM LPX BLDR BBBY KBH WHR LEN DDS ANDV AXON OMX THC EXPE DHI SW
2013-02-28 OMX LPX PHM VRTS NFLX AXON BBBY GNRC BLDR THC APO DHI EXPE MPC LEN
2013-03-28 KKR OMX NFLX LPX VRTS KBH PHM ANDV BBBY THC CTRA MPC CPAY APO GNRC
2013-04-30 KKR OMX FNMA FMCC NFLX THC ANDV KBH VRTS MTG CAR LPX STZ HRB MPC
2013-05-31 FNMA FMCC OMX KKR FSLR NFLX BBBY KBH VRTS MTG APO STZ THC ANDV PHM
2013-06-28 FNMA FMCC OMX KKR BBBY FSLR NFLX TSLA VRTS MTG CPAY SW GILD ANDV WDC
2013-07-31 FNMA FMCC OMX TSLA BBBY KKR MTG FSLR GME SVU NFLX MU THC GNW CPAY
2013-08-30 OMX FNMA FMCC MTG TSLA BBBY SVU NFLX DAL GME NXPI FSLR GNW TRIP BBY
2013-09-30 OMX TSLA MTG FNMA FMCC NFLX BBBY SVU NXPI MU META DAL BBY GME CPAY
2013-10-31 OMX TSLA FNMA FMCC MTG MU NXPI FANG META DAL BBY INCY FL TRIP KATE
2013-11-29 OMX FNMA FMCC MTG NFLX TSLA PHM BX MU BBY INCY FL DAL FANG META
2013-12-31 FNMA FMCC NFLX INCY PHM TSLA BX MU FL BBY MTG META FANG KATE DAL
2014-01-31 FNMA FMCC INCY PHM TSLA BX MU TKO DXCM ILMN NFLX MTG KATE URI AXON
2014-02-28 FNMA FMCC TSLA PHM TKO ILMN BX INCY AAL MU DXCM META URI MTG DAL
2014-03-31 FNMA FMCC TSLA RCL TKO ILMN DAL DXCM META INCY FRX FANG AAL FSLR MU
2014-04-30 FMCC FNMA TSLA TKO RCL DAL MU FRX FANG ILMN URI INCY DXCM AAL META
2014-05-30 META DAL FRX MU FMCC FANG TSLA ILMN AAL FNMA URI NXPI INCY SMCI SWKS
2014-06-30 META FMCC FNMA DAL AAL FRX FANG URI ILMN SWKS MU LUV TPL SMCI CAR
2014-07-31 META FMCC MU FNMA FANG FRX SWKS DAL TPL TRGP URI SMCI NBR NFX ILMN
2014-08-29 FMCC FNMA LUV DAL MU RCL SWKS URI CAR NXPI TPL META FANG LRCX AAL
2014-09-30 FMCC FNMA LUV TPL SWKS RCL NXPI GILD CAR URI SMCI ILMN MU DAL TRGP
2014-10-31 MMI PANW SWKS SMCI LUV RCL ENPH TPL MU NXPI META GILD AVGO URI ILMN
2014-11-28 MMI SWKS PANW LUV RCL SMCI NXPI EW META LRCX ILMN MNST AVGO EA ENPH
2014-12-31 SBUX SWKS LUV PANW MMI EW SMCI EA RCL MNST ENPH GMCR DAL AAL AXON
2015-01-30 SBUX SWKS PANW LUV AXON MMI EW EA KR MNST CNC RCL ENPH BBWI SMCI
2015-02-27 SBUX SWKS LUV EA PANW SMCI MMI CNC EW MNST KR ANDV AAPL IRM ALK
2015-03-31 SBUX SWKS SMCI PANW CNC EA MNST MMI AVGO ANDV EPAM INCY LUV HSP MOH
2015-04-30 SBUX SWKS PANW PAYC EA CNC MMI MNST DXCM AVGO EPAM HSP INCY KMG ABMD
2015-05-29 SBUX AXON SWKS PAYC BLDR PANW DXCM INCY KMG MNST MMI HSP ABMD AVGO CNC
2015-06-30 SWKS PAYC AXON SBUX BTUUQ PLD PANW CNC AVGO INCY BLDR DXCM MMI ABMD HSP
2015-07-31 BLDR PAYC AXON SBUX PANW PLD BTUUQ CNC DXCM INCY MNST ABMD MMI EA EPAM
2015-08-31 GE GILD EBAY V MA MCO CVG CCI MO NVR PSA AMT ED SPG HAS
2015-09-30 V GE EBAY MA GILD CVG UST PSA ED MCO MO CCI AMT SPG ACGL
2015-10-30 V GE MA CVG MO GILD PSA UST CCI ED SPG AMT BKNG ATO ACGL
2015-11-30 CZR FIX ABMD NFLX AMZN BLDR TYL CCI GPN AYI EXPE ATVI GE SBUX DXCM
2015-12-31 GE V GILD MA ABMD PSA MO CCI ATVI GOOGL CVG JKHY MCD META AMCR
2016-01-29 GE MCD V GILD PSA ISRG KLAC MO CVG MA ABMD UST GOOGL DHR SYY
2016-02-29 GE SPG GILD V KLAC MCD ISRG MO ED VZ T UST PSA CPB DHR
2016-03-31 EBAY CZR ABMD TSN GE MAT NVDA HRL GDDY MKTX KLAC ATVI TTWO DAL ANF
2016-04-29 EBAY TSN ABMD CZR GE NVDA HRL META EW TTWO AVGO MKTX DLR PSA CPB
2016-05-31 AMD CZR ABMD NVDA META WB EW TSN F EVRG CCI MTW DLR ADBE GE
2016-06-30 NVDA CLF AMD CZR DXC ABMD EVRG MDR WB AWK CCI DLR MKTX META OKE
2016-07-29 CLF AMD NVDA WB NEM DXC CZR DLR PAYC X CCI ABMD WOR MDR AWK
2016-08-31 AMD SPGI WB NVDA CLF NEM X DHR MDR DXC ABMD ALB JOY WPX MKTX
2016-09-30 WB AMD SPGI X NVDA CLF DHR NEM AMAT LITE WPX JOY MDR CNX NAV
2016-10-31 SPGI AMD WB X NVDA LITE CNX WPX DXC DHR JOY NAV AMAT CLF TPL
2016-11-30 AMD X CLF SPGI WB NVDA CNX TPL WPX DHR NAV LITE JOY OKE NEM
2016-12-30 CLF X AMD NVDA SPGI FMCC FNMA WB TPL CNX OKE WPX TRGP NAV NBR
2017-01-31 AMD CLF X NVDA SPGI FMCC FNMA TPL TRGP WB NBR FCX WPX NAV URI
2017-02-28 AMD CLF X NVDA SPGI WB URI FNMA FMCC TPL NAV NBR WPX TRGP CSX
2017-03-31 AMD CLF X NVDA WB MRO NAV FMCC URI FNMA ANET EBAY SLM RF CSX
2017-04-28 AMD NVDA X KMG MU ANET AMAT NAV STX DXC EBAY SLM LITE WB IDXX
2017-05-31 AMD KMG KHC NVDA X XYZ WB ANET CSX LRCX MU IDXX STX NAV AMAT
2017-06-30 NVDA XYZ WB KHC ANET LITE CSX X AMAT TTWO BX KMG ADSK LRCX NAV
2017-07-31 NVDA XYZ MU KHC ANET WB LITE ALGN TTWO ZBRA LRCX BX KMG AMAT CSX
2017-08-31 NVDA XYZ MU NRG ANET TTWO BA ALGN WB VRTX LRCX TPL IPGP RCL WDC
2017-09-29 NVDA XYZ TTWO WB MU IPGP NRG ANET BA NCC ALGN LRCX TTD VRTX SEDG
2017-10-31 NVDA XYZ BBBY TTD TTWO SEDG NRG MU ALGN ANET MTW WB LRCX CZR IPGP
2017-11-30 BBBY XYZ SEDG ALGN MCHP ANET ENPH FTNT NVDA NRG IPGP MU TTWO LRCX TTD
2017-12-29 BBBY ENPH SEDG XYZ ANET MCHP WB ALGN FTNT NCC NRG IPGP TTWO TWTR PENN
2018-01-31 BBBY ANET SEDG MCHP XYZ ALGN FTNT PENN WB CZR NKTR TTWO TWTR FSLR MTCH
2018-02-28 NKTR BBBY XYZ ANET MCHP SEDG ALGN NVDA FTNT WB EC MTCH TWTR CZR BA
2018-03-29 NKTR SEDG BBBY ENPH NCC XYZ NXPI MTCH ETSY FSLR ANET WB NVDA EC ALGN
2018-04-30 CCI NKTR V SPG MA KDP HET BKNG ADBE AMGN SPGI CDAY PANW YUM EXR
2018-05-31 ENPH NKTR MRVL SEDG CVNA EC MU ETSY AXON HET TKO MTCH CCI BBBY THC
2018-06-29 ENPH NKTR MU TKO HET AXON SEDG XYZ NFLX ETSY CCI TPL EC THC ALGN
2018-07-31 ENPH TKO HET ETSY AXON NKTR CVNA CCI MU SEDG THC ANF XYZ TPL TWTR
2018-08-31 ENPH HET TKO CVNA AXON CCI ETSY XYZ NKTR THC EC TTD LULU ABMD SVU
2018-09-28 HET CVNA TKO XYZ TTD DXCM AXON ETSY CCI AMD ENPH LULU ABMD FTNT UIS
2018-10-31 CCI HET EXR SPG EVHC DXCM MKC ABMD YUM V TJX KDP TKO HCA MRK
2018-11-30 CCI HET EXR MKC SPG KMG MRK ESRX KDP YUM SAF AET O PFE HCA
2018-12-31 CCI HET EXR UST AET MRK MKC YUM VRT MCD ESRX KDP SPG CME EXC
2019-01-31 CCI HET EXR UST SPG O YUM RHT MCD ERIE EXC DUK CNP DOC BMS
2019-02-28 HET EOG CCI ENPH TTD ETSY DXCM TKO FNMA RHT FMCC AMD CIEN CMG KEYS
2019-03-29 HET TTD CCI FTNT ETSY ENPH FNMA FMCC JNJ AVGO TKO AMD RHT VRTX CMG
2019-04-30 HET TTD CCI ENPH CVNA SNPS AMD FMCC ETSY FNMA ANF FTNT TKO VEEV JNJ
2019-05-31 CCI EXR HET VRT SAF PEP UST SBUX ERIE MDLZ HSY WRB ECL SO V
2019-06-28 HET ENPH CCI FNMA SNPS FMCC TTD AVP VEEV ERIE AMD PAYC MTCH JNJ BALL
2019-07-31 HET ENPH CCI TTD AVP VEEV ERIE MTCH PAYC MKTX BALL CDNS CVNA SBUX FICO
2019-08-30 HET ENPH CCI AVP MKTX SBUX BALL NCC ERIE MTCH SEDG TTD SBAC CMG HSY
2019-09-30 HET ENPH CSCO CCI SEDG AVP NCC MKTX FNMA FMCC PODD BALL TER HSY SBUX
2019-10-31 HET ENPH CSCO CCI AVP FNMA FMCC SEDG PODD BLDR GNRC KLAC KBH TER LRCX
2019-11-29 HET CSCO ENPH CCI AVP FNMA SEDG NCC FMCC CVNA GNRC BLDR KLAC PODD XRX
2019-12-31 HET ENPH XRX CCI AVP CVNA MCHP BLDR PODD FNMA SEDG LLY THC TER FMCC
2020-01-31 HET ENPH XRX CCI MCHP LLY CVNA TSLA PODD AVP SEDG BLDR GNRC TER AAPL
2020-02-28 CCI HET EXR TE SAF UST TYL JNJ PEP DGX KMB KO RSG AON FII
2020-03-31 CCI EXR TE UST AMT DVN NCC GEN VZ BMY KR TYL CLX DXCM COST
2020-04-30 CCI EXR TE UST DVN AMT GEN NCC BMY REGN VZ KR CLX DXCM AMZN
2020-05-29 CCI EXR DVN TE UST AMT GEN NCC REGN CLX BMY EBAY VZ DXCM KR
2020-06-30 CCI AMT UST TE EBAY CLX GIS DG ABBV K CNXT MSFT HRL KR REGN
2020-07-31 MRNA TSLA BBBY DXCM CCI NVDA SEDG REGN NEM CVNA ETSY ENPH AMD WST AAPL
2020-08-31 BBBY TSLA MRNA ENPH AMD NVDA CCI ETSY DXCM SEDG REGN AAPL CVNA XYZ RRC
2020-09-30 BBBY TSLA ENPH PENN CVNA MRNA AMD NVDA SEDG CCI XYZ TTD DDOG ETSY DXCM
2020-10-30 BBBY TSLA ENPH PENN MRNA TUP SEDG DDOG CVNA XYZ ETSY CRWD NVDA AMD TTD
2020-11-30 BBBY TSLA ENPH MRNA NOW SEDG CCI TUP ETSY GME TTD XYZ PENN CVNA AMD
2020-12-31 BBBY MRNA TSLA ENPH NOW GME TUP ETSY CCI XYZ TTD PENN SEDG CRWD CVNA
2021-01-29 GME ENPH BBBY TSLA MRNA NOW ETSY CCI TUP CRWD SEDG CVNA PENN TTD XYZ
2021-02-26 GME CCI NOW TUP MRNA BBBY ENPH CPB ETSY TSLA PENN VIAC CPRI DVN TPR
2021-03-31 GME TUP BBBY PENN NBR MRNA ETSY CCI CZR TSLA VIAC ENPH AM FCX CPRI
2021-04-30 GME TUP NBR CRM VIAC PENN BBWI CAR BBBY CLF MRNA QEP CZR TPL TSLA
2021-05-28 GME CRM TUP CAR DDS CCI FCX BBWI BBBY IVZ XEC TPL CLF CPRI GPS
2021-06-30 GME DDS BBWI ANF CAR TUP BX KSS MRNA RRC XEC THC TPL BBBY JWN
2021-07-30 GME DDS BX RRD MRNA ANF CAR NUE BBWI CLF TPL NAVI MBI XEC STLD
2021-08-31 GME KKR DDS MRNA RRD CLF BX MDP NUE NAVI XEC CPRI BBWI SBNY CAR
2021-09-30 GME MRNA KKR DDS RRD JWN M MRO CAR BX DVN RRC MDP TRGP IT
2021-10-29 GME KKR MRNA DDS RRC RRD MRO DVN CAR JWN M MUR FANG BX MDP
2021-11-30 GME CAR DDS RRD WFC BX TSLA DVN MRO RRC JWN MDP KKR MRNA M
2021-12-31 GME CAR RRD DDS WFC BX MRNA JWN DVN MRO NVDA TSLA ON KKR AMD
2022-01-31 EXR AMT RRD ABX CCI ABBV MO MCD HSY PEP EXC PPL FE GILD SO
2022-02-28 EXR AMT RRD ABX ABBV CCI MCK MCD EXC COR MO HSY GD AEP NI
2022-03-31 AMT EXR CCI ABBV RRD ABX MCK EXC BMY TRGP COR SRE KO REGN NI
2022-04-29 AMT EXR CCI ABX BMY MCK KO ABBV VRTX REGN HSY SRE ED EXC NI
2022-05-31 AMT CCI EXR ABX FHN BMY AMGN ED MRK JNJ ABBV NI EXC CNP WRB
2022-06-30 AMT CCI EXR ABX BMY FHN AMGN ED JNJ ABBV D ATO WRB MCK MCD
2022-07-29 AMT CCI EXR ABX AMGN BMY FHN JNJ ABBV MCD MCK ED MRK ATO GILD
2022-08-31 AMT CCI EXR ABX AMGN MCK FHN CPB KO MCD PEP GIS HSY ABBV AZO
2022-09-30 AMT CCI EXR ABX FHN HSY ERIE VRTX GIS KO V SJM MCK AMGN MCD
2022-10-31 AMT CCI EXR ABX FHN TKO HSY CI SJM V JNJ LW MCK GIS MRK
2022-11-30 T CF OXY DVN TPL FSLR HP APA COP FTI SMCI UNM ATI HES EQT
2022-12-30 T FSLR SMCI FTI OXY TPL CF APA HES HP COP MPC ODP DVN MUR
2023-01-31 UCL T HES FSLR TPL FTI SMCI ODP STLD CF CEG ENPH APA MPC FLR
2023-02-28 UCL T FSLR FTI HES ODP SMCI ASO STLD FLR CEG DYN CCI MPC VLO
2023-03-31 UCL SMCI VLO FSLR FTI HES PSX OI TEX LW FIX GNW OXY AXON STLD
2023-04-28 UCL FSLR SMCI VLO AXON FICO FTI HES ASO PSX LVS NVDA GE OXY DECK
2023-05-31 EXR AMT CCI ABX V MCD LW PHM MO HSY KO VRTX PEP GIS GILD
2023-06-30 SMCI H NVDA FSLR UCL RCL VRT BLDR CVNA NFLX BKNG GE PLTR META AVGO
2023-07-31 SMCI H RCL NVDA VRT CVNA UCL BLDR CCL META BKNG PLTR FTI AVGO ANF
2023-08-31 SMCI UCL CVNA NVDA PLTR VRT RCL ANF BLDR APP PHM AVGO FTI META NOW
2023-09-29 EXR CCI AMT V MO MA MCD MRSH BRK-B L VRSK JPM ROP CSCO MEDI
2023-10-31 EXR CCI AMT V CBOE MRSH AFL CSCO CME VRTX CVG ROP L BRK-B LIN
2023-11-30 CVNA VRT ANF APP DAL SMCI META NVDA COIN EXR PLTR EBAY FNMA FTI DELL
2023-12-29 CVNA COIN ANF APP VRT DAL SMCI FNMA NVDA EXR PLTR GPS CRWD META EBAY
2024-01-31 CVNA ANF SMCI VRT FNMA APP DAL COIN EXR CRWD NVDA FMCC META EBAY ANET
2024-02-29 SMCI GE CVNA ANF VRT FNMA APP NVDA CRWD COIN EXR FMCC ADCT META DELL
2024-03-28 SMCI CVNA GE ANF VRT ADCT COIN APP FNMA DYN NVDA EXR FMCC PLTR VST
2024-04-30 CVNA SMCI ANF ADCT GE VRT COIN DYN APP EXR FNMA NVDA VST FMCC PANW
2024-05-31 CVNA ANF VRT SMCI VST FNMA ADCT FMCC COIN APP DELL PANW NVDA DYN EXR
2024-06-28 ANF CVNA VST VRT SMCI DYN APP NVDA FMCC FNMA GPS COIN DELL PANW EXR
2024-07-31 ANF CVNA NVDA VST VRT DYN APP FNMA FMCC DELL EXR COIN SMCI GPS CRM
2024-08-30 DYN ANF NVDA LUMN CVNA VST COIN EXR CRM PBI PANW CCI ADCT THC NRG
2024-09-30 LUMN DYN CVNA NVDA ANF VST ADCT EXR CCI APP THC PBI PANW COHR PGR
2024-10-31 LUMN CVNA DYN APP NVDA ADCT VST EXR COHR CCI THC ANF KKR CEG PLTR
2024-11-29 CVNA LUMN APP WYNN VST PLTR CCI ADCT HOOD NVDA TPL COHR VRT EXR FMCC
2024-12-31 APP LUMN PLTR CVNA WYNN FMCC VST FNMA CCI TPL HOOD AXON UAL NVDA VRT
2025-01-31 APP PLTR CVNA FMCC WYNN LUMN FNMA HOOD VST CCI UAL AXON TPL TSLA IBKR
2025-02-28 APP FMCC FNMA WYNN PLTR HOOD CVNA VST CCI LUMN UAL TPL PBI ALK ECHO
2025-03-31 EXR CCI AMT CA VRSN BRO V MO EVRG AON RSG FOX MRSH CME CAH
2025-04-30 EXR CCI AMT CA CNP MO CME VRSN ATO EVRG WEC COR EXC UST PNW
2025-05-30 CCI AMT EXR CA PM CNP MO CME BUD RSG UST ATO CAH MNST WEC
2025-06-30 FNMA FMCC HOOD PLTR APP GILD LUMN GEV LB CVNA UBER CCI AXON HWM NRG
2025-07-31 FNMA HOOD FMCC PLTR APP GILD GEV UBER CVNA CCI AXON NRG TPR VST CAR
2025-08-29 FNMA HOOD FMCC PLTR APP GEV UCL CVNA CAR CCI TPR FIX VST STX LITE
2025-09-30 FNMA FMCC HOOD APP PLTR ECHO STX LITE GEV UCL WDC FIX AVGO CCI CVNA
2025-10-31 FMCC FNMA HOOD APP MU ECHO PLTR STX LITE WDC TE CIEN WBD SEDG CCI
2025-11-28 HOOD ECHO MU LITE WDC STX CIEN FNMA FMCC NKTR TE AVGO PLTR WBD SEDG
2025-12-31 LITE WDC GILD ECHO MU STX TE HOOD CIEN NKTR FNMA FMCC WBD SEDG NEM
2026-01-30 TE LITE ECHO WDC GILD MU STX CIEN WBD SSP LRCX NEM CCI NKTR COHR
2026-02-27 LITE TE WDC MU GILD STX CIEN ECHO COHR LRCX FIX SSP WBD CCI VIAV
2026-03-31 CCI EXR AMT ABI PCS CAM CA EA WBD JNJ UST BHF ATO FE L
2026-04-30 LITE WDC CIEN MU GILD STX ECHO COHR VIAV TER SEDG FIX NBR ALB CCI
2026-05-29 LITE WDC MU CIEN STX ECHO GILD VIAV INTC TE COHR AMD TER NBR CCI
2026-06-26 MU WDC LITE TE STX CIEN INTC VIAV WHR DELL TER AMD COHR GLW MRVL
Scoring script (python)
FORMULA_NAME = "Regime Momentum/Quality vs Low-Vol/Value (v2 defensive risk-off)"
LOGIC_VARIANT_COUNT = 2
NOTES = (
    "mode=exploit; family=regime-momentum-quality-value. Same as exp_001 but risk-off shifts "
    "0.10 weight from forward_pe (value) to realized_vol_3m (low-vol) for more drawdown defense."
)

BULL = {
    "momentum_12_1_pct": (0.35, +1),
    "return_6m_pct": (0.15, +1),
    "eps_growth_pct": (0.20, +1),
    "free_cash_flow_margin_pct": (0.15, +1),
    "forward_pe": (0.08, -1),
    "peg": (0.07, -1),
}

RISK_OFF = {
    "realized_vol_3m": (0.40, -1),
    "free_cash_flow_margin_pct": (0.20, +1),
    "operating_margin_pct": (0.10, +1),
    "forward_pe": (0.05, -1),
    "peg": (0.10, -1),
    "from_200d_ma_pct": (0.10, +1),
    "momentum_12_1_pct": (0.05, +1),
}


def score_universe(stocks, regime, ctx):
    book = BULL if regime.get("bull") else RISK_OFF
    zmaps = {metric: ctx.z(metric) for metric in book}
    scores = {}
    for row in stocks:
        sym = row["symbol"]
        total = 0.0
        for metric, (weight, sign) in book.items():
            z = zmaps[metric].get(sym)
            if z is not None:
                total += weight * sign * z
        scores[sym] = total
    return scores