Narrow risk overlay frontier search
This commit is contained in:
@@ -2,6 +2,7 @@ from __future__ import annotations
|
||||
|
||||
import json
|
||||
import math
|
||||
import os
|
||||
import sys
|
||||
from dataclasses import asdict, dataclass
|
||||
from pathlib import Path
|
||||
@@ -168,16 +169,36 @@ def _base_return_map(latest_bar: pd.Timestamp) -> tuple[dict[str, pd.Series], di
|
||||
|
||||
def _candidate_space() -> list[RiskOverlayCandidate]:
|
||||
space: list[RiskOverlayCandidate] = []
|
||||
for base_name in ("baseline", "blocker_025", "blocker_050"):
|
||||
for vol_lookback_bars in (21, 42, 84):
|
||||
for vol_target_mult in (0.90, 1.00, 1.10):
|
||||
for min_scale in (0.50, 0.75):
|
||||
for max_scale in (1.00, 1.10):
|
||||
grid_mode = os.getenv("STRATEGY32_RISK_OVERLAY_GRID", "frontier").strip().lower()
|
||||
if grid_mode == "wide":
|
||||
base_names = ("baseline", "blocker_025", "blocker_050")
|
||||
vol_lookbacks = (21, 42, 84)
|
||||
vol_targets = (0.90, 1.00, 1.10)
|
||||
min_scales = (0.50, 0.75)
|
||||
max_scales = (1.00, 1.10)
|
||||
dd_lookbacks = (42, 84)
|
||||
dd_cuts = (0.08, 0.12, 0.16)
|
||||
dd_scales = (0.25, 0.50, 0.75)
|
||||
else:
|
||||
base_names = ("baseline", "blocker_050")
|
||||
vol_lookbacks = (42,)
|
||||
vol_targets = (0.95, 1.00, 1.05)
|
||||
min_scales = (0.50, 0.75)
|
||||
max_scales = (1.00,)
|
||||
dd_lookbacks = (42,)
|
||||
dd_cuts = (0.08, 0.12)
|
||||
dd_scales = (0.50, 0.75)
|
||||
|
||||
for base_name in base_names:
|
||||
for vol_lookback_bars in vol_lookbacks:
|
||||
for vol_target_mult in vol_targets:
|
||||
for min_scale in min_scales:
|
||||
for max_scale in max_scales:
|
||||
if max_scale < min_scale:
|
||||
continue
|
||||
for dd_lookback_bars in (42, 84):
|
||||
for dd_cut in (0.08, 0.12, 0.16):
|
||||
for dd_scale in (0.25, 0.50, 0.75):
|
||||
for dd_lookback_bars in dd_lookbacks:
|
||||
for dd_cut in dd_cuts:
|
||||
for dd_scale in dd_scales:
|
||||
space.append(
|
||||
RiskOverlayCandidate(
|
||||
base_name=base_name,
|
||||
|
||||
Reference in New Issue
Block a user