continuazione refactoring

This commit is contained in:
fredmaloggia
2025-11-25 21:41:59 +01:00
parent 8716d80ecd
commit 07111c67c0
6 changed files with 192 additions and 191 deletions

View File

@@ -206,16 +206,23 @@ def hurst_rs(series: pd.Series) -> Optional[float]:
return float(h)
def build_hurst_map(returns_long: pd.DataFrame, lookback: int = 252) -> Dict[str, float]:
def build_hurst_map(
returns_long: pd.DataFrame,
lookback: Optional[int] = None,
min_length: int = 100,
) -> Dict[str, float]:
if returns_long.empty:
return {}
ret_wide = returns_long.pivot(index="Date", columns="ISIN", values="Ret").sort_index()
hurst_map: Dict[str, float] = {}
for isin in ret_wide.columns:
series = ret_wide[isin].dropna().astype(float)
if len(series) < max(lookback, 100):
if len(series) < max(1, int(min_length)):
continue
h_val = hurst_rs(series.iloc[-lookback:])
window = len(series) if lookback is None else min(len(series), int(lookback))
if window <= 0:
continue
h_val = hurst_rs(series.iloc[-window:])
if h_val is None or not np.isfinite(h_val):
continue
hurst_map[str(isin)] = float(h_val)