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