Tune Form4 sleeve quality filters and reserve sizing

main
I Luk Kim 4 months ago
parent 72681e69e5
commit ea9f156eeb

@ -2842,8 +2842,12 @@ class BacktestRunner:
continue
if event.weighted_purchase_pct < float(cfg.min_purchase_pct):
continue
if int(event.event_day_count) < int(cfg.min_event_day_count):
continue
if cfg.max_lag_days is not None and event.max_lag_days is not None and event.max_lag_days > int(cfg.max_lag_days):
continue
if bool(cfg.require_officer_or_director) and not bool(event.has_officer_or_director):
continue
symbol = str(event.symbol).upper()
if symbol in open_symbols:
continue

@ -945,7 +945,7 @@ FORM4_CAPTURE_SLEEVE_PRESETS: dict[str, dict[str, Any]] = {
"reserve_form4_cluster": {
"enabled": True,
"pit_events_path": "data/reference/form4_daily_events_pit.parquet",
"reserve_pct": 0.04,
"reserve_pct": 0.06,
"min_owner_count": 2,
"min_total_value": 5_000_000.0,
"min_purchase_pct": 0.0,
@ -1497,7 +1497,9 @@ class Form4CaptureConfig(BaseModel):
min_owner_count: int = 2
min_total_value: float = 5_000_000.0
min_purchase_pct: float = 0.0
min_event_day_count: int = 1
max_lag_days: int | None = None
require_officer_or_director: bool = False
hold_days: int = 20
max_positions: int = 6
max_new_per_day: int = 2

Loading…
Cancel
Save