Strategy library
Pre-built screens from published quant literature. Click Backtest to replay
each on the historical panel. As of 2026-05-01 01:00:00+01:00.
Comparison table β all strategies, same period (2022-2026)
| Strategy | Sharpe | Sortino | Calmar | CAGR | MaxDD | Skew | PSR | v.rand |
|---|---|---|---|---|---|---|---|---|
Same period, costs, target_n=as-defined for each strategy. v.rand = percentile vs 200 random baskets β >95% means strategy beats random selection significantly. Skew > 0 = asymmetric upside (the goal); < 0 = fat downside tail.
value
Magic Formula (Greenblatt)
Top 30 by combined earnings-yield + ROIC rank.
Joel Greenblatt, *The Little Book That Beats the Market* (2005)
Recipe
market_cap > 1000000000.0
earnings_yield is_not_null
roa is_not_null
sort: score_magic_formula desc
top_n: 30 Β· rebalance: Q Β· cost: 10bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
value
Piotroski F-score
Quality value: F-score β₯ 7, P/B < 1.5.
Joseph Piotroski, *Value Investing: The Use of Historical Financial Statement Information* (2000)
Recipe
f_score_partial >= 4
pb < 1.5
market_cap > 500000000.0
sort: earnings_yield desc
top_n: 20 Β· rebalance: Q Β· cost: 10bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
factor
Low-Volatility Anomaly
Bottom decile by ATR β empirically Sharpe 2.73 in our IC research.
Frazzini & Pedersen, *Betting Against Beta* (2014); Baker, Bradley, Wurgler (2011)
Recipe
atr_14 is_not_null
market_cap > 1000000000.0
sort: atr_14 asc
top_n: 30 Β· rebalance: M Β· cost: 10bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
factor
12-1 Momentum
Top decile of past-year-minus-1-month return.
Jegadeesh & Titman, *Returns to Buying Winners and Selling Losers* (1993)
Recipe
mom_12_1 is_not_null
market_cap > 1000000000.0
sort: mom_12_1 desc
top_n: 30 Β· rebalance: M Β· cost: 10bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
ic_validated
π Best OOS Combo: dist-from-52w-low Γ 10d-vol (Sharpe 2.56 OOS)
Best out-of-sample performer in May-2026 holdout: Sharpe +2.56, CAGR +212%, MaxDD only -33%, PSR 100%. Generalises far better than in-sample.
Out-of-sample validation: 2021-2024 train β 2025-2026 test. ALL top-10 combos passed OOS, but this pair had the highest test Sharpe.
Recipe
dist_52w_low is_not_null
vol_10d is_not_null
market_cap > 1000000000.0
sort: dist_52w_low(1.0) + vol_10d(1.0)
top_n: 20 Β· rebalance: M Β· cost: 10bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
ic_validated
π Top IC Triplet: GTJA-167 Γ dist-from-low Γ range-true
Best triplet from May-02 sweep: Sharpe 1.93, CAGR 77.5%, MaxDD -32.8% (5pp better than best pair).
Greedy triplet search starting from best pair (gtja_alpha167 Γ dist_52w_low). Adding range_true reduces MaxDD without losing Sharpe.
Recipe
gtja_alpha167 is_not_null
dist_52w_low is_not_null
range_true is_not_null
market_cap > 1000000000.0
sort: gtja_alpha167(1.0) + dist_52w_low(1.0) + range_true(-1.0)
top_n: 20 Β· rebalance: M Β· cost: 10bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
ic_validated
GTJA Up-Day Sum Γ Uptrend (May-02 winner)
GTJA-191 + IC research top pair: Sharpe 1.86, CAGR 77.8%, PSR 100%, walk-forward 5/5 folds positive.
Empirical pairwise sweep over top-15 IC features after GTJA Alpha191 + Alpha101 panel rebuild. `gtja_alpha167` = Ξ£(cβdelay(c,1)) on up-days Γ 12d.
Recipe
gtja_alpha167 is_not_null
dist_52w_low is_not_null
market_cap > 1000000000.0
gtja_alpha167 top_pct 50
dist_52w_low top_pct 50
sort: gtja_alpha167(1.0) + dist_52w_low(1.0)
top_n: 20 Β· rebalance: M Β· cost: 10bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
ic_validated
β Per-sector Γ annual Γ vol-target β IN-SAMPLE 8y Sharpe 1.54, walk-forward Sharpe 0.69
WARNING: walk-forward backtest with quarterly weight refits (refit using only data prior to each rebal) drops Sharpe from 1.54 β 0.69. The per-sector lift is largely in-sample fit. Use the flat composite (composite_5sig_yearly) as the honest production strategy. Vol-target overlay still useful for drawdown control on top of flat composite.
scripts/walkforward_per_sector.py β Sharpe 0.69 walk-forward (vs 1.61 in-sample). Per-sector weights are partially overfit; weight instability between quarters causes 490% annualised vol.
Recipe
dist_52w_low is_not_null
vol_252d is_not_null
market_cap > 1000000000.0
sort: dist_52w_low(0.047) + vol_252d(0.078) + wq_alpha042(0.074)
top_n: 20 Β· rebalance: Y Β· cost: 12bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
ic_validated
β Per-sector composite β IN-SAMPLE Sharpe 1.61, walk-forward 0.69
DOWNGRADED: walk-forward refit drops Sharpe to 0.69 (below flat composite's 1.28). Per-sector weights look great in-sample but don't generalise quarter-to-quarter. The earlier 'OOS' regime test was technically applying full-panel weights to historical data β a subtle leak. Use composite_5sig_yearly instead.
scripts/walkforward_per_sector.py refit each quarter strictly OOS. Per-sector lift is in-sample fit artifact.
Recipe
dist_52w_low is_not_null
vol_252d is_not_null
market_cap > 1000000000.0
sort: dist_52w_low(0.047) + vol_252d(0.078) + wq_alpha042(0.074)
top_n: 20 Β· rebalance: Y Β· cost: 12bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
ic_validated
π BEST HONEST: Composite_5sig + ANNUAL rebal (8y Sharpe 1.28, no in-sample fit)
Constant-weight composite of 5 verified-real-alpha features. NO weight fitting needed β no overfitting risk. 8-year stress test Sharpe 1.28, CAGR 45%, MaxDD -44%, total +2033%. After walk-forward exposed per-sector weights as partially overfit, this is the honest production strategy. Pair with vol-target Ο*=15% overlay for institutional-grade drawdown control.
scripts/rebalance_freq_sweep.py β Y rebal: Sharpe 1.47 vs Q rebal 1.31 (full window). Average turnover 49% (vs Q 31%) but only 1 rebalance/yr.
Recipe
dist_52w_low is_not_null
vol_252d is_not_null
market_cap > 1000000000.0
sort: dist_52w_low(0.047) + vol_252d(0.078) + gap_abs(0.04) + wq_alpha042(0.074) + range_true(0.06)
top_n: 20 Β· rebalance: Y Β· cost: 12bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
ic_validated
π₯ Composite_5sig + 12% vol-target overlay (Sharpe 1.46, MaxDD -21%)
Same composite_5sig basket but levered to a 12% annualised vol target via 60-day realised-vol scaling. Lifts Sharpe from 1.31 β 1.46 in the full window AND cuts MaxDD from -55% to -21% β ~3Γ lower downside for nearly identical Sharpe. Skew flips from +0.02 to +0.07. Best risk-reward profile in the library.
scripts/vol_target_composite.py β 60-day realised vol, Ο*=12%, lev_max=2.0. Pre-shock Ο*=8% works better; full+post-shock Ο*=12-15% optimal.
Recipe
dist_52w_low is_not_null
vol_252d is_not_null
market_cap > 1000000000.0
sort: dist_52w_low(0.047) + vol_252d(0.078) + gap_abs(0.04) + wq_alpha042(0.074) + range_true(0.06)
top_n: 20 Β· rebalance: Q Β· cost: 12bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
ic_validated
π Composite: 5-signal sector-neutral IR-weighted (regime-robust Sharpe 1.57)
Sector-neutral z-score composite of 5 of the 6 features that survived EVERY bullshit gate (NW HAC, Bonferroni, sector-neutral, walk-forward): dist_52w_low + vol_252d + gap_abs + wq_alpha042 + range_true. Each weighted by its h=252d effective IR. Pre-shock 2021 Sharpe +1.23, post-shock 2022-2026 Sharpe +1.57 β works in BOTH regimes (the leader works in only one). Verified live through the production engine.
scripts/composite_regime_test.py β sector-neutral z-scores summed by IR_eff. Beats mega-cap benchmark by 2Γ Sharpe. (Sales-yield component dropped from this live version because the screener engine doesn't always materialise sales_yield_pit; the 5-signal composite already captures the value tilt indirectly via vol/range.)
Recipe
dist_52w_low is_not_null
vol_252d is_not_null
market_cap > 1000000000.0
sort: dist_52w_low(0.047) + vol_252d(0.078) + gap_abs(0.04) + wq_alpha042(0.074) + range_true(0.06)
top_n: 20 Β· rebalance: Q Β· cost: 12bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
ic_validated
βοΈ SORTINO-OPTIMAL: Leader + gate + sortino-target 12% (Sharpe 1.83, Sortino 2.82, Calmar 2.84)
Best Sortino + best Calmar in the library. Sortino-targets 12% downside-vol (60d lookback, max 2.5x leverage) instead of total vol β preserves upside spikes that vol-target clips. 8-year backtest: Sharpe 1.83, Sortino 2.82, CAGR 46.5%, MaxDD only -16.4%, Calmar 2.84. Beats every vol-target variant (vt15 best at Sharpe 1.78, CAGR 33%, Calmar 2.24).
scripts/sortino_target_gated_leader.py β sortino-target overlay on gated leader.
Recipe
atr_14 is_not_null
dist_52w_low is_not_null
market_cap > 1000000000.0
sort: atr_14(-1.0) + dist_52w_low(1.0)
top_n: 20 Β· rebalance: Q Β· cost: 12bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
ic_validated
π‘ DEFENSIVE: Leader + spy>100d gate + vt08 stack (Sharpe 1.96, MaxDD -10%)
Same Sharpe as the aggressive variant (1.96) but with EVEN LOWER drawdown (-10% vs -19.6%). Stacks SPY>100d gate + 8% vol-target overlay. Lower CAGR (20% vs 54%) but smoothest equity curve in the library. Annualised vol 6%. For capital-preservation-first deployment with full risk-adjusted return.
scripts/stack_gate_voltarget.py β gate-first then vt08 (sequence matters; vt-first drops Sharpe to 1.82).
Recipe
atr_14 is_not_null
dist_52w_low is_not_null
market_cap > 1000000000.0
sort: atr_14(-1.0) + dist_52w_low(1.0)
top_n: 20 Β· rebalance: Q Β· cost: 12bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
ic_validated
ππππ NEW BEST: Leader (n=10) + SPY 100d gate (Sharpe 1.99, CAGR 69%, MaxDD -27%)
Concentrated 10-stock variant of the gated leader. 8-year walk-forward 2019-2026: Sharpe +1.99, CAGR +69%, MaxDD -27%. Discovered via robustness sweep (45 configs tested) β n=10 with quarterly rebal is the sharpest. Drawback: more concentration risk vs n=20 baseline.
scripts/robustness_sweep_gate.py β Q rebal Γ top-10 Γ 8bps cost. Gate: SPY > 100d-MA.
Recipe
atr_14 is_not_null
dist_52w_low is_not_null
market_cap > 1000000000.0
sort: atr_14(-1.0) + dist_52w_low(1.0)
top_n: 10 Β· rebalance: Q Β· cost: 8bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
ic_validated
π₯ BALANCED: Leader (n=20) + SPY > 100d-MA gate (8y Sharpe 1.96, CAGR 54%, MaxDD -19.6%)
BEST RISK-ADJUSTED IN LIBRARY. Leader basket (low_atr Γ dist_52w_low), deployed only when SPY > 100-day MA. 8-year walk-forward 2019-2026: Sharpe +1.96 (vs leader's 1.66, +0.30 lift), CAGR +53.9%, MaxDD only -19.6%, in market 78% of time. The 100d MA captures medium-term trend β less choppy than 50d, more responsive than 200d. Robust to parameterization: nearby specs (50/100/150/200, single or dual) all give Sharpe 1.80-1.96. NO FITTING.
scripts/macro_gate_sensitivity.py β SPY 100d MA gate, walk-forward 2019-2026 across 10 gate variants.
Recipe
atr_14 is_not_null
dist_52w_low is_not_null
market_cap > 1000000000.0
sort: atr_14(-1.0) + dist_52w_low(1.0)
top_n: 20 Β· rebalance: Q Β· cost: 12bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
ic_validated
π₯ Leader + 8% vol-target + VIX<30 gate (Sharpe 1.83, MaxDD only -12%)
Most defensive variant. Combines 8% vol-target with 'cash if VIX > 30' regime filter. 8-year walk-forward: Sharpe +1.83, CAGR +16%, MaxDD only -12.4%, vol 8.5%. Lowest drawdown of any high-Sharpe strategy in the library. Best for capital-preservation-first deployment. Note: VIX gate only available 2020+ since VIX yfinance data starts there.
scripts/macro_overlay.py β VIX < 30 + vol-target Ο*=8%, walk-forward 2020-2026.
Recipe
atr_14 is_not_null
dist_52w_low is_not_null
market_cap > 1000000000.0
sort: atr_14(-1.0) + dist_52w_low(1.0)
top_n: 20 Β· rebalance: Q Β· cost: 12bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
ic_validated
π₯ Leader + 8% vol-target overlay (8y Sharpe 1.79, MaxDD only -15%)
INSTITUTIONAL-GRADE STRATEGY. Same low_atr Γ high_dist_52w_low basket as the leader, but with daily 60-day-realised-vol targeting at Ο*=8% (lev_max=2.0). 8-year walk-forward 2019-2026: Sharpe +1.76 (BETTER than unleveraged leader's 1.65), CAGR +17%, MaxDD only -15%, annualised vol 9%. Perfect for capital-preservation-first deployment. The drawdown control trick that works on the leader (because it's a fixed-weight strategy unlike the in-sample-fit composites).
scripts/leader_combo_voltarget.py β Sharpe 1.76 walk-forward over 2019-2026 panel. Vol-target Ο*=8%, lookback 60d, lev_max=2.0.
Recipe
atr_14 is_not_null
dist_52w_low is_not_null
market_cap > 1000000000.0
sort: atr_14(-1.0) + dist_52w_low(1.0)
top_n: 20 Β· rebalance: Q Β· cost: 12bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
ic_validated
π₯ #2 Leader (no vol-target): Low ATR Γ High dist-from-52w-low (8y Sharpe 1.66)
VERIFIED PRODUCTION STRATEGY. 8-year walk-forward 2019-2026 (no fitting required, fixed sort weights -1Γatr_14 + 1Γdist_52w_low): Sharpe +1.66, Sortino +2.17, CAGR +63.5%, MaxDD -46.2%, total +3,323%. 80% of quarters positive (24/30), median quarterly +16%. Beats the flat composite (Sharpe 1.28). Worst quarter was Q1 2020 covid (-29%). Calm uptrending stocks β high dist from 52w low (in motion) but low ATR (not whippy). The signal-not-fit nature makes this immune to the in-sample issues that demoted the per-sector composites.
scripts/walkforward_leader.py β 8-year walk-forward on extended 2018-2026 panel. No weight fitting; sector-neutral z-score of (-atr_14, +dist_52w_low) computed per-rebal-date.
Recipe
atr_14 is_not_null
dist_52w_low is_not_null
market_cap > 1000000000.0
atr_14 bottom_pct 50
dist_52w_low top_pct 50
sort: atr_14(-1.0) + dist_52w_low(1.0)
top_n: 20 Β· rebalance: M Β· cost: 10bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
blend
Low-Vol Γ High-Sortino (prior IC research winner)
Combine the two: Sharpe 1.84, MaxDD only -12.6%.
Empirical β see project_investing_model_ic_findings memory
Recipe
atr_14 is_not_null
sortino_252d is_not_null
market_cap > 1000000000.0
atr_14 bottom_pct 50
sortino_252d top_pct 50
sort: sortino_252d desc
top_n: 20 Β· rebalance: M Β· cost: 10bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
factor
Quality Minus Junk (QMJ)
Top decile by AFP composite quality score.
Asness, Frazzini, Pedersen, *Quality Minus Junk* (2019)
Recipe
score_qmj is_not_null
market_cap > 1000000000.0
sort: score_qmj desc
top_n: 30 Β· rebalance: Q Β· cost: 10bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
value
High Free-Cash-Flow Yield
Top 20 by FCF/market-cap, market cap > $500M.
Practitioner classic β proxy for shareholder yield
Recipe
fcf_yield > 0.05
market_cap > 500000000.0
sort: fcf_yield desc
top_n: 20 Β· rebalance: Q Β· cost: 10bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
value
Deep Value (Graham/Dodd)
P/E < 15, P/B < 1.5, ROE > 10%.
Benjamin Graham, *Security Analysis* (1934); Lakonishok-Shleifer-Vishny (1994)
Recipe
pe_trailing < 15
pe_trailing > 0
pb < 1.5
roe > 0.1
market_cap > 500000000.0
sort: earnings_yield desc
top_n: 20 Β· rebalance: Q Β· cost: 10bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
technical
52-Week High Breakouts
Stocks at fresh 52w highs with volume confirmation.
William O'Neil, *How to Make Money in Stocks* (CAN SLIM)
Recipe
bo_new_high_52w == 1
vol_z_20 > 1.0
market_cap > 500000000.0
sort: mom_12_1 desc
top_n: 25 Β· rebalance: W Β· cost: 10bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
technical
Short-Term Mean Reversion
Bottom decile of 5d return + top sortino β buys the dip on quality.
Lehmann (1990), De Bondt & Thaler (1985); Connors-RSI inspiration
Recipe
ret_5d is_not_null
sortino_252d > 0.5
market_cap > 1000000000.0
sort: ret_5d asc
top_n: 20 Β· rebalance: W Β· cost: 15bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
factor
Momentum 3-1 (3m return, skip last month)
Top decile by 63dβ21d return β short-horizon momentum without the 1m reversal.
Jegadeesh & Titman variant (1993). Captures faster signal than 12-1.
Recipe
ret_63d is_not_null
ret_21d is_not_null
market_cap > 1000000000.0
sort: ret_63d(1.0) + ret_21d(-1.0)
top_n: 25 Β· rebalance: M Β· cost: 10bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
factor
Betting Against Beta (low-Ξ²)
Bottom quintile by Ξ² β Frazzini-Pedersen showed long-low / short-high Ξ² earns ~7% Sharpe.
Frazzini & Pedersen, 'Betting Against Beta' (Journal of Financial Economics 2014, NBER w16601).
Recipe
beta is_not_null
beta > 0
beta < 0.9
market_cap > 1000000000.0
sort: beta asc
top_n: 30 Β· rebalance: M Β· cost: 10bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
value
Low Accruals (Sloan)
Companies whose net income is well-matched by operating cash flow β high earnings quality.
Sloan (1996) 'Do stock prices fully reflect information in accruals and cash flows?' β accruals predict negative future returns.
Recipe
score_sloan_accruals is_not_null
market_cap > 500000000.0
sort: score_sloan_accruals asc
top_n: 30 Β· rebalance: Q Β· cost: 10bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
value
Safe Value (Altman Z + earnings yield)
Top decile of earnings yield among non-distressed (Altman Z > 2.99) names.
Altman (1968) Z-score; combines distress screen with classic value signal.
Recipe
score_altman_z > 2.99
earnings_yield > 0
market_cap > 1000000000.0
sort: earnings_yield desc
top_n: 25 Β· rebalance: Q Β· cost: 10bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
factor
π― IC-Validated Value Γ Size within S&P 500 (Sharpe 1.42)
Smaller + cheaper names within the S&P 500 universe. Built from the 23 features that survived our IC bullshit filter. Backtest 2022-2026: Sharpe +1.42, Sortino +1.93, CAGR +52.4%, MaxDD -35%, random-baseline 100th percentile.
Empirical: ic_table.parquet 944 features Γ 4 horizons. Size IC=-19.6%, Value IC=-14.2% (252d). NOTE: our fundamentals universe is S&P 500-ish (min cap ~$15B). Size signal here = mid-cap-vs-mega-cap, not small-cap-vs-large.
Recipe
market_cap < 50000000000.0
market_cap > 5000000000.0
ps < 5.0
ps > 0
margin_op < 0.3
dist_52w_low > 0.1
sort: ps(-1.0) + market_cap(-1.0) + dist_52w_low(1.0)
top_n: 25 Β· rebalance: Q Β· cost: 12bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
factor
π¬ IC-Validated: Cheap & Forgotten (anti-quality)
Counterintuitive: high-margin / consistently-profitable companies UNDERPERFORM (mean IC β10%). This strategy AVOIDS the priced-rich quality names and buys forgotten value β within S&P 500.
Empirical: net_margin_pit IC=-10.24%, gross_margin_pit IC=-10.62%, cfo_q_pct_quarters_positive_8q IC=-6.23% (all 252d, hit β₯ 85%). Quality is priced in.
Recipe
market_cap < 100000000000.0
ps < 4.0
ps > 0
margin_op < 0.15
dist_52w_low > 0.1
sort: ps(-1.0) + earnings_yield(1.0)
top_n: 25 Β· rebalance: Q Β· cost: 12bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
factor
π Pure Alpha (sector-neutral): dist_52w_low Γ low P/S Γ low margin
Built ONLY from features that survived our sector-neutral test (true cross-sectional alpha, not sector bets). Combines uptrend (101% retained), value (89% retained), and quality penalty (76% retained). Excludes the size effect which is 61% sector exposure.
Sector-neutral IC sweep May 2026: subtract per-(date,sector) mean from feature & forward return, recompute IC. Only signals retaining β₯75% of raw IC count as 'pure alpha'.
Recipe
market_cap > 5000000000.0
ps < 4.0
ps > 0
margin_op < 0.3
dist_52w_low > 0.2
sort: dist_52w_low(1.0) + ps(-1.0) + margin_op(-1.0)
top_n: 25 Β· rebalance: Q Β· cost: 12bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF:
value
Low Beneish M (clean accounting)
Companies with low manipulation-flag M-score β combines with momentum for cleaner up-trends.
Beneish (1999) M-score. M > -1.78 = likely manipulator. Filtering OUT manipulators.
Recipe
score_beneish_m < -2.5
mom_12_1 > 0
market_cap > 1000000000.0
sort: mom_12_1 desc
top_n: 25 Β· rebalance: Q Β· cost: 10bps
CAGR:
Sharpe:
MaxDD:
PSR:
WF: