WRDS Flagship Momentum Specification
This page pins down the exact strategy, constraints, and run procedure for the WRDS/CRSP flagship momentum study. It lines up with configs/wfv_flagship_wrds.yaml (full run) and the shortened smoke config described below.
Strategy at a glance
- Signal: 12–1 cross-sectional momentum (skip 1 month by default), sector-normalised z-scores.
- Rebalance: Monthly (
rebalance_frequency='M'). - Universe: CRSP common shares (see universe CSV under
${WRDS_DATA_ROOT}/universes/flagship_sector_neutral.csv), sector tags included; ADV columns (adv_20,adv_63,adv_126) expected for liquidity filters. - Train/Test: Walk-forward with 36-month train (756 trading days) and 12-month test (252 days) from 2005-01-03 → 2024-12-31.
- Hyperparameters (grid):
lookback_months ∈ {9,12,18},skip_months ∈ {1,2},top_frac ∈ {0.20,0.30}, allocator risk model ∈ {risk_parity,equal}. Bottom sleeve fixed at 20%.
Liquidity, exposure, and turnover controls
- Liquidity floor:
min_adv=50MM,min_price=$12. - Sleeve breadth:
max_positions_per_sector=8for both long and short sleeves. - Net exposure cap:
max_exposure=1.25xequity; gross leverage:max_gross_leverage=1.5x(sum |position|·price / equity). - Single-name cap:
max_single_name_weight=2%of equity. - Drawdown halt:
max_drawdown_stop=20%of high-water mark (stops issuing new orders until run end). - Turnover discipline: target 3% of ADV per sleeve entry (
turnover_target_pct_adv=0.03) plus a hard $180MM turnover cap per fold. - Sizing: volatility-scaled capital policy targeting ~$225k daily dollar-vol (21-day lookback) with per-order
min_qty=10. - Borrow model: metadata borrow fees scaled by
multiplier=1.0with afloor_bps=8fallback. - Execution: TWAP over 6 slices, IOC limits, linear+sqrt impact with
k_lin=32,eta=105, default ADV 35MM, spread floor 8bps, queue bias (passive multiplier 0.6) and commission 5bps.
How to run
- Export CRSP DSF + security master locally and set
WRDS_DATA_ROOTto that directory. - Full walk-forward (grid + SPA + factors):
bash WRDS_DATA_ROOT=/path/to/wrds make wfv-wrds WRDS_DATA_ROOT=/path/to/wrds make report-wrdsArtefacts land underartifacts/wrds_flagship/<RUN_ID>; docs assets underdocs/img/wrds_flagship/<RUN_ID>. - Smoke / shortened run (faster verification):
bash WRDS_DATA_ROOT=/path/to/wrds make wfv-wrds-smoke WRDS_DATA_ROOT=/path/to/wrds make report-wrds-smokeThe smoke config trims the date range and grid for turn-around testing; use it before the full run when changing risk limits.
Artefacts to expect
metrics.json,bootstrap.json,spa.json,folds.json,grid_returns.csv- Plots:
equity_curve.png,bootstrap_hist.png,spa_tstats.png,*_ic_ir.png,*_deciles.png,*_rolling_betas.png - Factor regression markdown:
factors_ff5_mom.md - Docs summary:
docs/results_wrds.md(auto-refreshed bymake report-wrds)
Notes & licensing
- Never commit WRDS raw data; only derived artefacts listed above are permitted.
- Universe and metadata paths are env-expanded; no hardcoded user directories.
- If you change constraints, update this page and the YAML config, then rerun
make report-wrdsto refresh docs/notebook outputs.