Skip to content

Releases: NicolasBohn/NexQuant

v1.7.0 — Architecture Overhaul & Risk Framework

Choose a tag to compare

@TPTBusiness TPTBusiness released this 22 May 13:11

"## v1.7.0 \u2014 Architecture Overhaul & Risk Management Framework\n\n### Architecture Fix: Daily Signal Resampling\n- Root cause found: Factor IC measured at daily resolution collapses to ~0 on 1-min\n- Factors resampled to daily before strategy execution, signal ffill to 1-min\n- Walk-forward IS years: 3\u21921 (only 2 years of data available)\n- Removed broken intersection() logic (99.99% data loss for mixed-resolution factors)\n- ffill stale propagation limited to 2880 bars\n- Preflight: removed constant-signal false positive on random sandbox data\n\n### Risk Management & Position Sizing\n- Position sizing: 1.5% risk per trade with 10-pip stop\n- Acceptance filter: 15% monthly return minimum\n- CLI: --min-monthly-return 15 option in generate-strategies\n- Template prompts: target monthly return guidance\n- Realistic backtest default target: 15.0%\n\n### Factor Quality Gates\n- IC thresholds raised: prompt 0.05\u21920.08, data_loader 0.0\u21920.04, strategy_worker 0.02\u21920.04\n- Bandit IC weight: 0.10\u21920.20, explicit IC > 0.04 target in RAG\n- ml_trainer, quant_loop_advanced: min_ic 0.01\u21920.04\n- Factor runner: IC < 0.04 warning added\n\n### Model Track\n- Thompson sampling: model arm prior bias 2.0 (77% model preference)\n- Default first action: model generation\n\n### New Tools\n- nexquant_gridsearch.py: Fixed-template grid search, deterministic, no LLM\n- nexquant_daily_strategies.py: Kronos + factor combinations on daily resolution\n- nexquant_portfolio_optimizer.py: Greedy correlation-aware selection with leverage scaling\n\n### Security & Compliance\n- Removed all proprietary terminology from codebase and git history\n- Dependabot: 0 open alerts\n- Code Scanning: 476\u21920 (triaged and cleaned)\n- Non-negotiable rule: never mention proprietary terms in commits/releases\n\n### Bug Fixes\n- Logger crash in strategy loader\n- Broken JSON file handling in strategy database\n- Preflight KeyError on sandbox factor names\n"

v1.5.0 — Strategy Generator & Backtest Verifier

Choose a tag to compare

@TPTBusiness TPTBusiness released this 05 May 13:10

v1.5.0 — Strategy Generator & Backtest Verifier

🚀 Features

  • Runtime Backtest Verifier — 10 mathematical invariants checked in <1ms on every backtest
  • Continuous Strategy Generatorpredix generate-strategies CLI with auto-ensemble
  • OOS by Default — Walk-forward validation enabled by default in backtest_signal_ftmo
  • Multi-Timeframe — Strategies validated on 1min, 5min, 15min, 1h
  • Rolling Stability Check — 12-month Sharpe must never go negative
  • Auto-Ensemble — Sharpe-weighted combination of top strategies

🔧 Fixes

  • Sharpe/MaxDD/WinRate corrected (were computing on raw factors instead of strategy returns)
  • Kronos factor skipped on GPUs < 20GB (shared with llama-server)
  • Path-injection security fix (os.path.realpathpathlib.resolve)
  • import sys added to _save_factor_values (was silently failing)

📊 Tests

  • 630 tests, 0 failures (up from 73)
  • Property-based testing with Hypothesis
  • Ground-truth verification (hand-computed vs backtest)
  • Cross-implementation validation (3 evaluators compared)
  • Robustness: slippage, latency, Monte-Carlo reshuffle, OOS stress
  • Runtime verifier fuzzing

📄 License

  • Changed from MIT to AGPL-3.0

v1.4.2

Choose a tag to compare

@github-actions github-actions released this 03 May 09:02

1.4.2 (2026-05-03)

Bug Fixes

  • add missing sys import and fix undefined acc_rate in factor eval (c45f990)

v1.4.1

Choose a tag to compare

@github-actions github-actions released this 03 May 07:40

1.4.1 (2026-05-03)

Bug Fixes

  • 15 bug fixes across orchestrator, runner, backtest, and infrastructure (163687d)
  • also catch ValueError in mean_variance for dimension mismatch (ed73b72)
  • close log file handle, fix FTMO equity double-count, remove bare except (76219a5)
  • correct project root paths and subprocess handling in parallel runner and CLI (9735e3a)
  • filter NaN in max(), remove redundant ternary, handle non-finite vbt results (f89fbb3)
  • fix type annotation, remove unused parameter, improve import_class errors (8b6ab73)
  • resolve dead code, shell injection risk, mutable defaults, and other bugs (afff262)
  • resolve unbound variable, logger shadowing, withdraw_loop edge case, and other bugs in main scripts (748cf9b)

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 01 May 13:59

1.4.0 (2026-05-01)

Features

  • optimizer: add max_positions parameter to Optuna search space (fdb4be3)

v1.3.11

Choose a tag to compare

@github-actions github-actions released this 01 May 11:59

1.3.11 (2026-05-01)

Bug Fixes

  • ci: lazy import logger in predix.py and cli.py to avoid ImportError in test env (60763e8)

v1.3.10

Choose a tag to compare

@github-actions github-actions released this 01 May 11:50

1.3.10 (2026-05-01)

Bug Fixes

  • security: replace remaining assert statements with proper error handling (928533d)

v1.3.9

Choose a tag to compare

@github-actions github-actions released this 01 May 11:44

1.3.9 (2026-05-01)

Bug Fixes

  • security: resolve path-injection, B701, B101, B112 Bandit alerts (20b89a0)

v1.3.8

Choose a tag to compare

@github-actions github-actions released this 30 Apr 18:01

1.3.8 (2026-04-30)

Bug Fixes

  • deps: relax aiohttp constraint to >=3.13.4 for litellm compatibility (34ab192)
  • qlib: correct indentation in except blocks in quant_proposal and factor_runner (8143451)
  • security: replace eval() with ast.literal_eval in finetune validator (B307) (0508caf)
  • security: replace shell=True subprocess calls with list args in env.py (B602) (2012d5a)
  • security: resolve path-injection and add nosec for safe temp paths (B108, py/path-injection) (6727480)

v1.3.7

Choose a tag to compare

@github-actions github-actions released this 30 Apr 07:36

1.3.7 (2026-04-30)

Bug Fixes

  • security: nosec for B608/B701 false positives in UI and template code (5eb5d7e)
  • security: replace eval() with ast.literal_eval and add request timeouts (B307, B113) (3301ada)
  • security: replace shell=True subprocess calls with list args (B602) (13c08f4)