Phase A+ Results: Filter Optimization
Page ID: 322d5568-29bd-818f-8af7-d85eae135a76
Created: 2026-03-13T05:53:00.000Z
Last Edited: 2026-03-13T05:53:00.000Z
URL: https://www.notion.so/Phase-A-Results-Filter-Optimization-322d556829bd818f8af7d85eae135a76
Properties
- Phase: A+
- Status: Complete
- Key Finding: IPO age cap ≤5Y is biggest improvement. Prior pump filter negative. Recovery filter not recommended.
- Date: 2026-03-10
- Name: Phase A+ Results: Filter Optimization
Content
Phase A+ Results: Universe Validation & Filter Optimization
Date: 2026-03-10
Period: 2015-02-01 to 2025-12-01 (131 months)
Average filtered universe: 23.8 stocks/month (baseline)
1. Executive Summary
- The filter universe outperforms the benchmark at all holding periods, with statistical significance at 60d+ (Mann-Whitney p < 0.001)
- Data quality issue found and fixed: 50 “Category B” symbols with corrupt split-adjusted prices were excluded
- IPO age cap (≤5Y) is the single biggest improvement: 90d mean return jumps from 5.5% → 11.6% (2.1x), but universe shrinks to ~7-8 stocks/month
- ATH drawdown -90% is well-balanced; -85% offers marginally higher returns (+0.14% at 90d) with a larger universe (31 vs 24)
- ATH→ATL recovery filter: minimal improvement over baseline, not recommended (adds complexity for ~1% gain)
- Prior pump filter: negative effect — filtering for pump history reduces returns, not adopted
- Fat tail edge is real: filtered universe shows 1.4-1.7x higher probability of >100% returns at 90-180d
2. Data Quality: Category B Exclusion
Problem
111 symbols had extreme price data. Investigation revealed two categories:
- Category | Count | Issue | Fix
- A: Extreme but consistent | 61 | Huge adjusted prices from cumulative reverse splits; day-to-day returns correct | 5000% return cap (already in place)
- B: Corrupt/inconsistent | 50 | FMP mixing adjusted and unadjusted prices within same series | Excluded
Category B: 50 Excluded Symbols
ABVC, AMAM, ARGS, AVTE, AXLA, BBI, BCTX, BOLD, CBLI, CELZ,
COSM, CTOR, CWBR, CYBN, DRMA, DRUG, GLSI, GNCA, HGEN, HPCO,
IFRX, IMCC, IMUX, JBIO, KMPH, KTRA, LIAN, LSDI, MCRB, MNMD,
MTP, OTIC, PDSB, PKBO, PLRZ, PPCB, PRTG, QLI, QNCX, SILO,
SISI, SPRB, SXTC, SYN, SYRS, TCDA, TMBR, TPST, VRPX, ZSANThese are stored in the excluded_symbols DuckDB table and automatically removed from both filtered universe and benchmark calculations.
3. Baseline Phase A Results
Filter Parameters
- Filter | Setting
- ATH Drawdown | ≤ -90% from ATH
- Cash Runway | ≥ 4 quarters
- Pipeline Phase | ≥ Phase 2
- IPO Age | ≥ 2 years (no cap)
- SEC Filing | Required
Per-Filter Universe Sizes (monthly average)
- Filter | Avg passing
- ATH Drawdown | 258.8
- Cash Runway | 376.7
- Pipeline Phase | 243.3
- IPO Age | 548.8
- SEC Filing | 684.7
- All combined | 23.8
Return Distribution: Filtered vs Benchmark
- Window | Group | Mean | Median | P90 | P95 | N
- 30d | Filtered | 1.2% | -3.0% | 28.5% | 45.4% | 3,119
- 30d | Benchmark | -0.1% | -2.5% | 25.1% | 40.4% | 84,516
- 60d | Filtered | 3.3% | -4.7% | 46.6% | 68.5% | 3,119
- 60d | Benchmark | -0.1% | -4.8% | 37.0% | 61.0% | 84,518
- 90d | Filtered | 5.5% | -6.1% | 59.3% | 94.0% | 3,119
- 90d | Benchmark | 0.0% | -6.9% | 46.2% | 77.9% | 84,517
- 180d | Filtered | 9.7% | -11.4% | 90.5% | 152.8% | 3,119
- 180d | Benchmark | 0.1% | -12.5% | 65.7% | 113.1% | 84,517
Statistical Significance (Mann-Whitney U, one-sided)
- Window | p-value | Significant?
- 30d | 0.1207 | ❌
- 60d | 0.0007 | ✅
- 90d | 0.00001 | ✅
- 180d | < 0.000001 | ✅
Fat Tail Analysis (Filtered / Benchmark ratio)
- Window | >50% | >100% | >200% | >500%
- 30d | 1.2x | 1.1x | 1.2x | 1.0x
- 60d | 1.3x | 1.3x | 1.3x | 0.5x
- 90d | 1.4x | 1.4x | 1.6x | 1.0x
- 180d | 1.4x | 1.5x | 1.6x | 1.7x
Filter Ablation (removing one filter at a time)
- Removed Filter | Avg Size | 90d Mean | 180d Mean
- (none — baseline) | 23.8 | 5.5% | 9.7%
- -ATH Drawdown | 88.4 | 3.5% | 6.5%
- -Cash Runway | 55.5 | 5.1% | 9.6%
- -Pipeline Phase | 74.3 | 4.1% | 6.4%
- -IPO Age | 24.9 | 5.9% | 10.6%
- -SEC Filing | 25.0 | 5.2% | 9.2% Key insight: ATH Drawdown and Pipeline Phase are the highest-impact filters. Removing IPO Age actually improves returns slightly — suggesting the current 2Y minimum is already loose enough and doesn’t filter out good candidates.
4. Experiment 1: IPO Age Cap
Question: Does capping maximum IPO age improve returns by excluding old, terminally declining biotechs?
Results Matrix (90d mean return)
- Min Age | Max 5Y | Max 10Y | Max 15Y | Unlimited
- 0.5Y | 11.6% | 5.2% | 6.0% | 6.0%
- 1.0Y | 11.5% | 5.2% | 5.9% | 5.9%
- 2.0Y | 11.0% | 4.7% | 5.5% | 5.5%
Results Matrix (180d mean return)
- Min Age | Max 5Y | Max 10Y | Max 15Y | Unlimited
- 0.5Y | 27.4% | 9.4% | 10.6% | 10.6%
- 1.0Y | 27.2% | 9.3% | 10.5% | 10.5%
- 2.0Y | 27.1% | 8.4% | 9.7% | 9.7%
Trade-off
- 5Y cap: 11.6% mean at 90d (2.1x baseline) but only ~8.5 stocks/month (N=1,113)
- 10Y cap: 5.2% mean at 90d, ~22 stocks/month (N=2,918)
- Unlimited: 5.5% mean at 90d, ~24 stocks/month (N=3,119) Recommendation: Adopt 5Y cap as Phase B default. The universe shrinks significantly but the return improvement is dramatic. The min age (0.5Y vs 2Y) barely matters — consider relaxing to 1Y for slightly more coverage.
5. Experiment 3: ATH Drawdown Sensitivity
Question: Is -90% the optimal drawdown threshold, or would -85% or -95% be better?
Results
- Threshold | Avg Size | 90d Mean | 90d Median | 180d Mean | 180d Median
- -85% | 31.0 | 5.66% | -5.52% | 10.35% | -10.31%