|
|
|
|
@ -1080,11 +1080,13 @@ IDLE_ALPHA_SLEEVE_PRESETS: dict[str, dict[str, Any]] = {
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
DIVIDEND_CAPTURE_SLEEVE_PRESETS: dict[str, dict[str, Any]] = {}
|
|
|
|
|
|
|
|
|
|
FORM4_PIT_EVENTS_V1_PATH = "data/reference/form4_daily_events_pit.parquet"
|
|
|
|
|
FORM4_PIT_EVENTS_V3_PATH = "data/reference/form4_daily_events_pit_v3.parquet"
|
|
|
|
|
|
|
|
|
|
FORM4_CAPTURE_SLEEVE_PRESETS: dict[str, dict[str, Any]] = {
|
|
|
|
|
"reserve_form4_cluster": {
|
|
|
|
|
"enabled": True,
|
|
|
|
|
"pit_events_path": "data/reference/form4_daily_events_pit.parquet",
|
|
|
|
|
"pit_events_path": FORM4_PIT_EVENTS_V1_PATH,
|
|
|
|
|
"reserve_pct": 0.04,
|
|
|
|
|
"min_owner_count": 2,
|
|
|
|
|
"min_total_value": 5_000_000.0,
|
|
|
|
|
@ -1096,7 +1098,7 @@ FORM4_CAPTURE_SLEEVE_PRESETS: dict[str, dict[str, Any]] = {
|
|
|
|
|
},
|
|
|
|
|
"reserve_form4_cluster_plus": {
|
|
|
|
|
"enabled": True,
|
|
|
|
|
"pit_events_path": "data/reference/form4_daily_events_pit.parquet",
|
|
|
|
|
"pit_events_path": FORM4_PIT_EVENTS_V1_PATH,
|
|
|
|
|
"reserve_pct": 0.06,
|
|
|
|
|
"min_owner_count": 2,
|
|
|
|
|
"min_total_value": 5_000_000.0,
|
|
|
|
|
@ -1108,7 +1110,7 @@ FORM4_CAPTURE_SLEEVE_PRESETS: dict[str, dict[str, Any]] = {
|
|
|
|
|
},
|
|
|
|
|
"reserve_form4_cluster_plus_fresh": {
|
|
|
|
|
"enabled": True,
|
|
|
|
|
"pit_events_path": "data/reference/form4_daily_events_pit.parquet",
|
|
|
|
|
"pit_events_path": FORM4_PIT_EVENTS_V1_PATH,
|
|
|
|
|
"reserve_pct": 0.06,
|
|
|
|
|
"min_owner_count": 2,
|
|
|
|
|
"min_total_value": 5_000_000.0,
|
|
|
|
|
@ -1122,7 +1124,7 @@ FORM4_CAPTURE_SLEEVE_PRESETS: dict[str, dict[str, Any]] = {
|
|
|
|
|
},
|
|
|
|
|
"reserve_form4_cluster_plus_fresh_same_day": {
|
|
|
|
|
"enabled": True,
|
|
|
|
|
"pit_events_path": "data/reference/form4_daily_events_pit.parquet",
|
|
|
|
|
"pit_events_path": FORM4_PIT_EVENTS_V1_PATH,
|
|
|
|
|
"reserve_pct": 0.06,
|
|
|
|
|
"min_owner_count": 2,
|
|
|
|
|
"min_total_value": 5_000_000.0,
|
|
|
|
|
@ -1135,6 +1137,39 @@ FORM4_CAPTURE_SLEEVE_PRESETS: dict[str, dict[str, Any]] = {
|
|
|
|
|
"max_positions": 6,
|
|
|
|
|
"max_new_per_day": 2,
|
|
|
|
|
},
|
|
|
|
|
# Experimental lane. Keep v1 presets frozen so existing stacks remain reproducible.
|
|
|
|
|
"reserve_form4_cluster_plus_fresh_same_day_v3_aggressive_plus_cooldown180_high": {
|
|
|
|
|
"enabled": True,
|
|
|
|
|
"pit_events_path": FORM4_PIT_EVENTS_V3_PATH,
|
|
|
|
|
"reserve_pct": 0.46,
|
|
|
|
|
"min_owner_count": 2,
|
|
|
|
|
"min_total_value": 5_000_000.0,
|
|
|
|
|
"min_purchase_pct": 0.005,
|
|
|
|
|
"min_transaction_count": 2,
|
|
|
|
|
"max_lag_days": 2,
|
|
|
|
|
"max_min_lag_days": 1,
|
|
|
|
|
"max_transaction_span_days": 0,
|
|
|
|
|
"symbol_cooldown_days_after_loss": 180,
|
|
|
|
|
"hold_days": 20,
|
|
|
|
|
"max_positions": 6,
|
|
|
|
|
"max_new_per_day": 2,
|
|
|
|
|
},
|
|
|
|
|
"reserve_form4_cluster_plus_fresh_same_day_v3_aggressive_plus_cooldown180_ultra": {
|
|
|
|
|
"enabled": True,
|
|
|
|
|
"pit_events_path": FORM4_PIT_EVENTS_V3_PATH,
|
|
|
|
|
"reserve_pct": 0.50,
|
|
|
|
|
"min_owner_count": 2,
|
|
|
|
|
"min_total_value": 5_000_000.0,
|
|
|
|
|
"min_purchase_pct": 0.005,
|
|
|
|
|
"min_transaction_count": 2,
|
|
|
|
|
"max_lag_days": 2,
|
|
|
|
|
"max_min_lag_days": 1,
|
|
|
|
|
"max_transaction_span_days": 0,
|
|
|
|
|
"symbol_cooldown_days_after_loss": 180,
|
|
|
|
|
"hold_days": 20,
|
|
|
|
|
"max_positions": 6,
|
|
|
|
|
"max_new_per_day": 2,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -1798,6 +1833,9 @@ class Form4CaptureConfig(BaseModel):
|
|
|
|
|
max_min_lag_days: int | None = None
|
|
|
|
|
max_transaction_span_days: int | None = None
|
|
|
|
|
require_officer_or_director: bool = False
|
|
|
|
|
symbol_cooldown_days_after_loss: int = 0
|
|
|
|
|
symbol_max_entries_in_lookback: int | None = None
|
|
|
|
|
symbol_entry_lookback_days: int = 365
|
|
|
|
|
disable_day1_early_failure: bool = False
|
|
|
|
|
no_progress_days_override: int | None = None
|
|
|
|
|
no_progress_r_override: float | None = None
|
|
|
|
|
|