f/fundlab
Greg Pomerantz 89674c24dd Compute all alphas in excess of the 3-mo T-bill rate (BIL)
Raw-intercept alphas absorbed the T-bill yield on uninvested/levered
portions (582 well-fitted funds >2%/yr off; sum-of-betas polluted by
level-matching). Now fund AND sleeves are netted against BIL daily
total return before every regression; a cash position contributes
exactly zero.

- decompose: rf_series()/excess(); shv+bil dropped from regressors
  (~0 columns in excess space); FULL_WINDOW -> 2007-06-01 (BIL
  inception; mixing raw pre-2007 with excess breaks the fit).
- factors: same excess treatment; shv out of DRIVERS.
- CASH axis redefined: alpha/cash_yield -> net cash position = 1 -
  sum(betas) (label 'cash (net posn)').
- CANDIDATE list 250 -> 11: the old list was mostly under-invested
  funds whose 'alpha' was cash yield, not skill.
- refback.py: per-fund fitted reference (forward-selected sleeves)
  stored as ref_5y/ref_full in search_all.json; app alpha-search
  table gains a 'reference (5y)' column - the answer to 'what is
  alpha computed against' (the fund's OWN fitted sleeve mix, not one
  index).
- App captions updated; raw-alpha-era results backed up as
  *_rawalpha.json (not deleted).
2026-08-30 15:50:15 -04:00
..
cef_cache CEF universe verification: 241/295 parsed + component-sum fractions 2026-08-28 16:04:19 -04:00
nport_cache N-PORT cross-check: verify top candidates' actual holdings 2026-08-27 12:43:17 -04:00
pool Fund Lab: returns-based strategy decomposition for the 16 shortlist funds 2026-08-26 11:59:59 -04:00
roc_cache RIC-vs-pass-through verification + return-of-capital detector 2026-08-27 16:04:59 -04:00
__init__.py fundlab: EDGAR investment-objective fetcher + curated fallback 2026-08-25 18:15:48 -04:00
cef_annual_all.json CEF universe verification: 241/295 parsed + component-sum fractions 2026-08-28 16:04:19 -04:00
cef_annual_run.log CEF stage 2b: per-share financial-highlights parser (cef_annual.py) 2026-08-28 07:30:16 -04:00
cef_annual_run2.log CEF stage 2b: per-share financial-highlights parser (cef_annual.py) 2026-08-28 07:30:16 -04:00
cef_annual_run3.log CEF stage 2b: per-share financial-highlights parser (cef_annual.py) 2026-08-28 07:30:16 -04:00
cef_annual.json CEF stage 2b complete: 48/50 shortlist verified (47 parsed + DXYZ zero-dist) 2026-08-28 14:50:46 -04:00
cef_annual.py CEF universe verification: 241/295 parsed + component-sum fractions 2026-08-28 16:04:19 -04:00
cef_character.json CEF pass: universe (SEC report, 973 -> 295 listed) + stage 1 screen + stage 2a character 2026-08-27 22:24:12 -04:00
cef_character.py CEF pass: universe (SEC report, 973 -> 295 listed) + stage 1 screen + stage 2a character 2026-08-27 22:24:12 -04:00
cef_merged.json CEF stage 2b: per-share financial-highlights parser (cef_annual.py) 2026-08-28 07:30:16 -04:00
cef_probe.log CEF stage 2b complete: 48/50 shortlist verified (47 parsed + DXYZ zero-dist) 2026-08-28 14:50:46 -04:00
cef_probe.py CEF stage 2b complete: 48/50 shortlist verified (47 parsed + DXYZ zero-dist) 2026-08-28 14:50:46 -04:00
cef_rank_all.json CEF universe verification: 241/295 parsed + component-sum fractions 2026-08-28 16:04:19 -04:00
cef_screen.json CEF pass: universe (SEC report, 973 -> 295 listed) + stage 1 screen + stage 2a character 2026-08-27 22:24:12 -04:00
cef_screen.py CEF pass: universe (SEC report, 973 -> 295 listed) + stage 1 screen + stage 2a character 2026-08-27 22:24:12 -04:00
cef_universe_run.log CEF universe verification: 241/295 parsed + component-sum fractions 2026-08-28 16:04:19 -04:00
cef_universe_run.py CEF app tab + server watchdog + full-universe verification batch 2026-08-28 14:57:01 -04:00
cef_universe.json CEF pass: universe (SEC report, 973 -> 295 listed) + stage 1 screen + stage 2a character 2026-08-27 22:24:12 -04:00
cef_universe.py CEF pass: universe (SEC report, 973 -> 295 listed) + stage 1 screen + stage 2a character 2026-08-27 22:24:12 -04:00
cluster_kmeans_rawalpha.json Compute all alphas in excess of the 3-mo T-bill rate (BIL) 2026-08-30 15:50:15 -04:00
cluster_kmeans.json Compute all alphas in excess of the 3-mo T-bill rate (BIL) 2026-08-30 15:50:15 -04:00
cluster_tree.json Compute all alphas in excess of the 3-mo T-bill rate (BIL) 2026-08-30 15:50:15 -04:00
cluster.py Compute all alphas in excess of the 3-mo T-bill rate (BIL) 2026-08-30 15:50:15 -04:00
dbmine.py Find candidate funds NOT in the DB: exhaustive EDGAR 497-universe pass 2026-08-26 15:22:52 -04:00
decompose_results_rawalpha.json Compute all alphas in excess of the 3-mo T-bill rate (BIL) 2026-08-30 15:50:15 -04:00
decompose_results.json Compute all alphas in excess of the 3-mo T-bill rate (BIL) 2026-08-30 15:50:15 -04:00
decompose.py Compute all alphas in excess of the 3-mo T-bill rate (BIL) 2026-08-30 15:50:15 -04:00
drawdown_results.json Drawdown-resilience screen: who was positive when equities crashed 2026-08-27 13:29:01 -04:00
drawdown.py Drawdown-resilience screen: who was positive when equities crashed 2026-08-27 13:29:01 -04:00
edgar_universe.py Find candidate funds NOT in the DB: exhaustive EDGAR 497-universe pass 2026-08-26 15:22:52 -04:00
edgar.py fundlab: extract strategy sections from EDGAR docs; --strategy CLI mode 2026-08-25 23:06:13 -04:00
factor_results_rawalpha.json Compute all alphas in excess of the 3-mo T-bill rate (BIL) 2026-08-30 15:50:15 -04:00
factor_results.json Compute all alphas in excess of the 3-mo T-bill rate (BIL) 2026-08-30 15:50:15 -04:00
factors_run.log Compute all alphas in excess of the 3-mo T-bill rate (BIL) 2026-08-30 15:50:15 -04:00
factors.log Factor screen (v2, 35 drivers) + return-driver clusters 2026-08-27 08:35:42 -04:00
factors.py Compute all alphas in excess of the 3-mo T-bill rate (BIL) 2026-08-30 15:50:15 -04:00
fundinfo.py fundlab: extract strategy sections from EDGAR docs; --strategy CLI mode 2026-08-25 23:06:13 -04:00
funds_curated.json fundlab: EDGAR investment-objective fetcher + curated fallback 2026-08-25 18:15:48 -04:00
goget_cef.log CEF pass: universe (SEC report, 973 -> 295 listed) + stage 1 screen + stage 2a character 2026-08-27 22:24:12 -04:00
harvest.py Alpha search: mine + screen the local DB for idiosyncratic alpha complements 2026-08-26 13:34:34 -04:00
nport_manifest.json N-PORT cross-check: verify top candidates' actual holdings 2026-08-27 12:43:17 -04:00
nport.py N-PORT cross-check: verify top candidates' actual holdings 2026-08-27 12:43:17 -04:00
overnight_rescreen.log Compute all alphas in excess of the 3-mo T-bill rate (BIL) 2026-08-30 15:50:15 -04:00
overnight.log Overnight comprehensive screen COMPLETE: 2,384 funds, 250 candidates, RESEARCH.md results + next iterations 2026-08-27 06:56:33 -04:00
overnight.pid Compute all alphas in excess of the 3-mo T-bill rate (BIL) 2026-08-30 15:50:15 -04:00
overnight.py Watchdog: pidfile liveness (pgrep -f was fooled by shells quoting the pattern); per-batch download fault isolation 2026-08-26 22:09:20 -04:00
pool.py fundlab: EDGAR investment-objective fetcher + curated fallback 2026-08-25 18:15:48 -04:00
probe_AIO.json CEF stage 2b complete: 48/50 shortlist verified (47 parsed + DXYZ zero-dist) 2026-08-28 14:50:46 -04:00
probe_batch.json CEF stage 2b complete: 48/50 shortlist verified (47 parsed + DXYZ zero-dist) 2026-08-28 14:50:46 -04:00
probe_batch2.json CEF stage 2b complete: 48/50 shortlist verified (47 parsed + DXYZ zero-dist) 2026-08-28 14:50:46 -04:00
probe_dbg.json CEF stage 2b complete: 48/50 shortlist verified (47 parsed + DXYZ zero-dist) 2026-08-28 14:50:46 -04:00
probe_IGD.json CEF stage 2b complete: 48/50 shortlist verified (47 parsed + DXYZ zero-dist) 2026-08-28 14:50:46 -04:00
refback.log Compute all alphas in excess of the 3-mo T-bill rate (BIL) 2026-08-30 15:50:15 -04:00
refback.py Compute all alphas in excess of the 3-mo T-bill rate (BIL) 2026-08-30 15:50:15 -04:00
RESEARCH.md Compute all alphas in excess of the 3-mo T-bill rate (BIL) 2026-08-30 15:50:15 -04:00
resolved_tickers.json Alpha search: mine + screen the local DB for idiosyncratic alpha complements 2026-08-26 13:34:34 -04:00
roc_results.json RIC-vs-pass-through verification + return-of-capital detector 2026-08-27 16:04:59 -04:00
roc_run.log RIC-vs-pass-through verification + return-of-capital detector 2026-08-27 16:04:59 -04:00
rocdetect.py RIC-vs-pass-through verification + return-of-capital detector 2026-08-27 16:04:59 -04:00
search_all_rawalpha.json Compute all alphas in excess of the 3-mo T-bill rate (BIL) 2026-08-30 15:50:15 -04:00
search_all.json Compute all alphas in excess of the 3-mo T-bill rate (BIL) 2026-08-30 15:50:15 -04:00
search_external.json Find candidate funds NOT in the DB: exhaustive EDGAR 497-universe pass 2026-08-26 15:22:52 -04:00
search_harvest.json Alpha search: mine + screen the local DB for idiosyncratic alpha complements 2026-08-26 13:34:34 -04:00
search_mined.json Alpha search: mine + screen the local DB for idiosyncratic alpha complements 2026-08-26 13:34:34 -04:00
search_results.json Alpha search: mine + screen the local DB for idiosyncratic alpha complements 2026-08-26 13:34:34 -04:00
search.py Alpha search: mine + screen the local DB for idiosyncratic alpha complements 2026-08-26 13:34:34 -04:00
searchlist.py Alpha search: mine + screen the local DB for idiosyncratic alpha complements 2026-08-26 13:34:34 -04:00
server_watchdog.log Add CASH axis: money-market/cash-equivalents as a return driver 2026-08-30 13:27:41 -04:00
server_watchdog.sh CEF app tab + server watchdog + full-universe verification batch 2026-08-28 14:57:01 -04:00
taxplan_results.json Correct ROC placement: ROC defers to the investor's LTCG, like 2026-08-27 17:11:55 -04:00
taxplan.py Correct ROC placement: ROC defers to the investor's LTCG, like 2026-08-27 17:11:55 -04:00
taxsplit_results.json Price-appreciation vs payout split (fundlab/taxsplit.py) 2026-08-27 14:34:42 -04:00
taxsplit.py Price-appreciation vs payout split (fundlab/taxsplit.py) 2026-08-27 14:34:42 -04:00
tickers.py Alpha search: mine + screen the local DB for idiosyncratic alpha complements 2026-08-26 13:34:34 -04:00
watchdog.log Overnight comprehensive screen COMPLETE: 2,384 funds, 250 candidates, RESEARCH.md results + next iterations 2026-08-27 06:56:33 -04:00
watchdog.sh Watchdog: pidfile liveness (pgrep -f was fooled by shells quoting the pattern); per-batch download fault isolation 2026-08-26 22:09:20 -04:00
xcheck_report.json N-PORT cross-check: verify top candidates' actual holdings 2026-08-27 12:43:17 -04:00
xcheck.py N-PORT cross-check: verify top candidates' actual holdings 2026-08-27 12:43:17 -04:00