]> Piment Noir Git Repositories - freqai-strategies.git/commit
fix(quickadapter): make HPO state causal in backtests (#111)
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Thu, 23 Jul 2026 17:39:11 +0000 (19:39 +0200)
committerGitHub <noreply@github.com>
Thu, 23 Jul 2026 17:39:11 +0000 (19:39 +0200)
commitd81031d2754e62f6af392c52b19e10fcf8bc7399
tree97b9a5c316314ddceb6548bc1eb835caff84d87b
parentd7a1f7df9148d6e07adfb6b62bb7aa70f0b0c872
fix(quickadapter): make HPO state causal in backtests (#111)

* fix(quickadapter): make label HPO causal in backtests

* fix(quickadapter): harden causal label HPO bounds, docs and harmonization

- guard empty prediction history and use NaT/order-safe max()/min() when
  bounding label HPO OHLCV to the current FreqAI prediction time
- gate strategy label-param loading on freqtrade TRADE_MODES to mirror the
  regressor self.live gate
- document the point-in-time study reset (supersedes explicit continuous=false)
  and causal warm-start seeding
- make the optuna_hyperopt.enabled README entry terse and add a dedicated
  causal label HPO note; unify terminology on current FreqAI prediction time

* docs(quickadapter): drop causal label HPO note from README

* docs(quickadapter): note label-namespace continuous override and refine HPO bound docstring

* fix(quickadapter): isolate HPO state in non-live runs

* fix(quickadapter): isolate non-live Optuna storage

* fix(quickadapter): silence benign Optuna study deletion on fresh storage

- treat a missing study on delete as a debug no-op: non-live runs use a
  fresh InMemoryStorage and the first live/dry-run optimization per pair
  has no persisted study yet, so optuna.delete_study raises KeyError; keep
  warning+traceback for genuine deletion failures
- drop redundant point-in-time frame copies: DataProvider.get_pair_dataframe
  already returns a caller-owned frame and it is only read downstream
- lower the non-live 'Label HPO skipped' bounds logs to debug (expected
  backtest warmup states, consistent with the throttle debug log)
- refine the point-in-time docstring (dk.full_df is the full feature frame)
  and note that self.live is unset at __init__

* docs(quickadapter): tighten HPO comments and de-parenthesize README

- make the __init__ trade-mode, non-live point-in-time HPO, and delete_study
  KeyError comments more precise and concise without dropping semantics
- reword the delete_study comment to point at the warning branch instead of
  the inaccurate 'real failures raise otherwise'
- rephrase the optuna_hyperopt.continuous README entry without a parenthetical
  precision, consistent with the surrounding prose

* chore(serena): migrate project config to the language_servers schema

Serena renamed the deprecated `languages` key to `language_servers` and
refreshed the accompanying comments; regenerate the tracked project config
to match.
.serena/project.yml
README.md
quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py
quickadapter/user_data/strategies/QuickAdapterV3.py