Releases: NicolasBohn/NexQuant
Release list
v1.7.0 — Architecture Overhaul & Risk Framework
"## 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
v1.5.0 — Strategy Generator & Backtest Verifier
🚀 Features
- Runtime Backtest Verifier — 10 mathematical invariants checked in <1ms on every backtest
- Continuous Strategy Generator —
predix generate-strategiesCLI 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.realpath→pathlib.resolve) import sysadded 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
v1.4.1
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
v1.3.11
v1.3.10
v1.3.9
v1.3.8
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)