feat(agents): market summary builder for hypothesis prompt
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import pandas as pd # type: ignore[import-untyped]
|
||||
from scipy import stats # type: ignore[import-untyped]
|
||||
|
||||
from .hypothesis import MarketSummary
|
||||
|
||||
|
||||
def build_market_summary(
|
||||
ohlcv: pd.DataFrame,
|
||||
symbol: str,
|
||||
timeframe: str,
|
||||
) -> MarketSummary:
|
||||
returns = ohlcv["close"].pct_change().dropna()
|
||||
return_mean = float(returns.mean())
|
||||
return_std = float(returns.std(ddof=1))
|
||||
skew = float(stats.skew(returns, bias=False))
|
||||
kurt = float(stats.kurtosis(returns, fisher=True, bias=False))
|
||||
|
||||
if return_std < 0.005:
|
||||
regime = "low"
|
||||
elif return_std < 0.02:
|
||||
regime = "medium"
|
||||
else:
|
||||
regime = "high"
|
||||
|
||||
return MarketSummary(
|
||||
symbol=symbol,
|
||||
timeframe=timeframe,
|
||||
n_bars=len(ohlcv),
|
||||
return_mean=return_mean,
|
||||
return_std=return_std,
|
||||
skew=skew,
|
||||
kurtosis=kurt,
|
||||
volatility_regime=regime,
|
||||
)
|
||||
Reference in New Issue
Block a user