feat: unified backtest engine, LLM error handling, strategy refactor

- Add vbt_backtest.py as single source of truth for all metric formulas
  (Sharpe, drawdown, IC, transaction costs) — backtest_engine.py and
  strategy_orchestrator.py now delegate to it
- Add LLMUnavailableError to exception.py; rd_loop.py catches it at the
  proposal stage and raises LoopResumeError to avoid corrupting trace
  history with None hypotheses
- Guard record() against None exp/hypothesis so loop resets leave
  trace.hist in a consistent state
- Refactor strategy_orchestrator and optuna_optimizer to use unified
  backtest path; remove duplicate metric calculation code
- Add predix_rebacktest_unified.py script for offline re-evaluation
- Update tests and README

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
TPTBusiness
2026-04-17 22:52:07 +02:00
parent 2932f65eae
commit 3d2872c2fc
15 changed files with 1286 additions and 171 deletions
+1 -1
View File
@@ -246,7 +246,7 @@ def fin_quant_cli(
import urllib.request
import urllib.error
base_url = os.environ["OPENAI_API_BASE"].rstrip("/v1").rstrip("/")
base_url = os.environ["OPENAI_API_BASE"].removesuffix("/v1").rstrip("/")
health_url = f"{base_url}/health"
console.print(f" [yellow]⏳ Waiting for local LLM server to be ready ({health_url})...[/yellow]")
max_wait = 300 # seconds