Calibrate Torch forecast thresholds
This commit is contained in:
@@ -108,6 +108,8 @@ class Settings:
|
||||
time_series_min_candles: int
|
||||
time_series_forecast_horizon: int
|
||||
time_series_min_edge_percent: float
|
||||
time_series_min_probability_up: float
|
||||
time_series_min_confidence: float
|
||||
time_series_max_adjustment: float
|
||||
time_series_lstm_enabled: bool
|
||||
time_series_lstm_model_path: Path
|
||||
@@ -185,6 +187,7 @@ def load_settings(env_file: str | Path | None = None) -> Settings:
|
||||
top_symbols_count = len(FIXED_SPOT_SYMBOLS)
|
||||
symbols = FIXED_SPOT_SYMBOLS
|
||||
forecast_enabled_default = strategy_mode == "torch_forecast"
|
||||
min_signal_confidence = _float_env("MIN_SIGNAL_CONFIDENCE", 0.64)
|
||||
settings = Settings(
|
||||
trading_mode=mode,
|
||||
host=os.getenv("HOST", "127.0.0.1"),
|
||||
@@ -207,7 +210,7 @@ def load_settings(env_file: str | Path | None = None) -> Settings:
|
||||
fast_entry_cooldown_seconds=_int_env("FAST_ENTRY_COOLDOWN_SECONDS", 20),
|
||||
max_entries_per_minute=_int_env("MAX_ENTRIES_PER_MINUTE", 12),
|
||||
websocket_enabled=_bool_env("WEBSOCKET_ENABLED", True),
|
||||
min_signal_confidence=_float_env("MIN_SIGNAL_CONFIDENCE", 0.64),
|
||||
min_signal_confidence=min_signal_confidence,
|
||||
max_spread_percent=_float_env("MAX_SPREAD_PERCENT", 0.18),
|
||||
min_24h_turnover_usdt=_float_env("MIN_24H_TURNOVER_USDT", 1000000.0),
|
||||
pattern_analysis_enabled=_bool_env("PATTERN_ANALYSIS_ENABLED", False),
|
||||
@@ -247,7 +250,9 @@ def load_settings(env_file: str | Path | None = None) -> Settings:
|
||||
time_series_forecast_enabled=_bool_env("TIME_SERIES_FORECAST_ENABLED", forecast_enabled_default),
|
||||
time_series_min_candles=_int_env("TIME_SERIES_MIN_CANDLES", 120),
|
||||
time_series_forecast_horizon=_int_env("TIME_SERIES_FORECAST_HORIZON", 3),
|
||||
time_series_min_edge_percent=_float_env("TIME_SERIES_MIN_EDGE_PERCENT", 0.04),
|
||||
time_series_min_edge_percent=_float_env("TIME_SERIES_MIN_EDGE_PERCENT", 0.10),
|
||||
time_series_min_probability_up=_float_env("TIME_SERIES_MIN_PROBABILITY_UP", 0.64),
|
||||
time_series_min_confidence=_float_env("TIME_SERIES_MIN_CONFIDENCE", 0.72),
|
||||
time_series_max_adjustment=_float_env("TIME_SERIES_MAX_ADJUSTMENT", 0.08),
|
||||
time_series_lstm_enabled=_bool_env("TIME_SERIES_LSTM_ENABLED", True),
|
||||
time_series_lstm_model_path=Path(os.getenv("TIME_SERIES_LSTM_MODEL_PATH", "runtime/lstm_forecaster.json")),
|
||||
|
||||
@@ -224,6 +224,8 @@ def _safe_config(settings: Settings) -> dict[str, Any]:
|
||||
"time_series_min_candles": settings.time_series_min_candles,
|
||||
"time_series_forecast_horizon": settings.time_series_forecast_horizon,
|
||||
"time_series_min_edge_percent": settings.time_series_min_edge_percent,
|
||||
"time_series_min_probability_up": settings.time_series_min_probability_up,
|
||||
"time_series_min_confidence": settings.time_series_min_confidence,
|
||||
"time_series_max_adjustment": settings.time_series_max_adjustment,
|
||||
"time_series_lstm_enabled": settings.time_series_lstm_enabled,
|
||||
"time_series_lstm_model_path": str(settings.time_series_lstm_model_path),
|
||||
@@ -1062,6 +1064,9 @@ HTML = r"""
|
||||
['Лимит на пару', money(config.max_symbol_exposure_usdt)],
|
||||
['Риск на сделку', `${num((config.risk_per_trade_percent || 0) * 100, 2)}% equity`],
|
||||
['RSI входа', `${num(config.trend_rsi_min, 1)} - ${num(config.trend_rsi_max, 1)}`],
|
||||
['Torch min edge', `${num(config.time_series_min_edge_percent, 3)}%`],
|
||||
['Torch min P роста', `${num((config.time_series_min_probability_up || 0) * 100, 1)}%`],
|
||||
['Torch min confidence', `${num(config.time_series_min_confidence, 3)}`],
|
||||
['Лимит в позициях', money(config.max_total_exposure_usdt)],
|
||||
['Лимит позиций', `${config.max_open_positions} всего / ${config.max_positions_per_symbol} на пару`],
|
||||
['Стоп', `${num(config.stop_loss_percent * 100, 2)}%`],
|
||||
|
||||
@@ -644,7 +644,7 @@ def _torch_forecast_entry_signal(
|
||||
"expected_edge_ok": expected_return >= min_edge,
|
||||
"probability_ok": probability_up >= min_probability,
|
||||
"skill_ok": skill > 0.0,
|
||||
"confidence_ok": confidence >= settings.min_signal_confidence,
|
||||
"confidence_ok": confidence >= settings.time_series_min_confidence,
|
||||
"spread_ok": spread_ok,
|
||||
"liquidity_ok": liquidity_ok,
|
||||
"risk_size_ok": position_notional >= settings.min_position_usdt,
|
||||
@@ -661,6 +661,7 @@ def _torch_forecast_entry_signal(
|
||||
"min_edge_percent": min_edge,
|
||||
"probability_up": probability_up,
|
||||
"min_probability_up": min_probability,
|
||||
"min_confidence": settings.time_series_min_confidence,
|
||||
"skill": skill,
|
||||
"spread_percent": round(ticker.spread_percent, 5),
|
||||
"turnover_24h": ticker.turnover_24h,
|
||||
@@ -766,7 +767,7 @@ def _is_torch_forecast(forecast: dict) -> bool:
|
||||
|
||||
|
||||
def _torch_min_probability(settings: Settings) -> float:
|
||||
return round(_clamp(settings.min_signal_confidence - 0.08, 0.52, 0.68), 4)
|
||||
return round(_clamp(settings.time_series_min_probability_up, 0.45, 0.75), 4)
|
||||
|
||||
|
||||
def _torch_forecast_confidence(settings: Settings, forecast: dict) -> float:
|
||||
|
||||
Reference in New Issue
Block a user