continuazione refactoring
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user