0.12.5

2026-09-17
  • Hosted runs and newly created restricted keys now require product:backtester together with feature:backtester; admin roles, wildcard scopes and legacy aliases no longer bypass the product boundary. SecurityAPI
  • The Python launcher renders a Backtester access required panel with the account URL and request reference, without a duplicate error or traceback. AddedEngine

Website update

2026-09-15
  • PRO is now presented as a commercial offering. Product and navigation links request PRO access through the team instead of the beta application. Open remains freely available; the separate hosted workspace remains coming soon. Docs

Website update

2026-09-15
  • The homepage now distinguishes the available open engine, PRO managed-data beta and scoped Enterprise / Private engagements. Hosted workspace availability remains explicit; open walk-forward and optimization capabilities remain available. Docs

Website update

2026-09-15
  • The /_v2 preview has been removed. Visits now follow the standard unknown-page redirect to the homepage. Changed

0.12.4

2026-07-21
  • Optional reporting and plotting modules are now imported only when requested, removing their startup cost from lightweight backtests. ChangedEngine
  • Order simulation now uses pre-aligned OHLCV arrays and preallocated ledger history while preserving execution callbacks and accounting results. ChangedEngine
  • Immutable contract specifications are cached, inverse-volatility estimation is vectorized, risk-parity indexing is reduced, and tracking-error checks reuse rolling portfolio returns. ChangedEngine

0.12.3

2026-07-19
  • Repository strategy launchers now show a yellow Configuration needs attention panel with the affected field and concrete correction, without a duplicate generic market-data error or traceback. AddedEngine
  • qj-api 0.2.6 now explains empty universes, instrument limits, unsupported intervals, intraday range limits, oversized results and invalid dates with direct next steps. ChangedAPIDeploy
  • How to Start now shows a real production /bt/prepare response, the matching terminal panel and a table of all six verified correction cases. Docs

0.12.2

2026-07-19
  • The Python package now raises PrepareValidationError when /bt/prepare rejects a configuration, preserving the affected field, stable code, correction hint, request ID and API error code. AddedEngine
  • qj-api returns safe RFC 7807 validation details for /bt/prepare, and hosted runs retain those details for the user workspace and Cockpit diagnostics. ChangedAPIDeploy

0.12.1

2026-07-18
  • Walk-forward probabilities now serialize and display their construction: pooled objectives across chronological folds are labelled pooled_walk_forward_dsr_style, while N=1 is labelled probabilistic_sharpe_n1. ChangedEngineDocs
  • Research pages now use circular shift as the primary timing null for persistent or cost-aware strategies; full row permutation is an aggressive sensitivity test and bar permutation tests a different null. FixedDocs
  • Corrected overbroad claims in the walk-forward, pairs, execution-cost, signal-quality, feature-attribution and position-sizing guides, including the distinction between canonical DSR/CSCV and rolling diagnostics. FixedDocs
  • The bundled private engine preserves long/short signs in pure inverse-volatility weighting and updates the ERC solver description to match its damped-Newton implementation. FixedEngine

0.12.0

2026-07-18
  • Signal-timing MCPT now defaults to a circular shift that preserves serial persistence and nearly all turnover structure; block permutation is available and full row permutation is labeled an aggressive sensitivity null. ChangedEngine
  • Per-fold refits and rolling top-K candidate reruns fail closed when NAV escapes the requested date bounds; public factories now propagate the runner's ISO fold dates directly. FixedEngine
  • The percentage-based boundary control is now named extra_pre_oos_purge_pct. The deprecated embargo_pct alias is explicitly documented as a pre-OOS extension, not classical post-test embargo. ChangedEngineDocs
  • The rolling top-K OOS rank diagnostic is reported as walk_forward_top_k_rank_failure_rate rather than canonical CSCV PBO; deprecated pbo aliases remain for 0.12.x compatibility. ChangedEngineDocs
  • DSR accepts an optional effective number of independent trials and reports both raw finite completed and effective counts. AddedEngine
  • Corrected the six-month fold Sharpe uncertainty example: about ±1.4 is one standard error, while an approximate two-sided 90% IID interval has a ±2.3 half-width. FixedDocs

0.11.0

2026-07-18
  • Fast-weight costs, implied quantities, positions and NAV now share one recursive post-cost capital path, so the cost audit reconciles with reported position changes. FixedEngine
  • Opening fills no longer expose the current bar's later high, low or close to range-sensitive slippage models. FixedEngine
  • Opening participation caps now forecast capacity from lagged observed volume and fail closed when no completed volume observation exists. FixedEngine
  • Added volume_lookback and expected_open_volume_fraction controls for causal opening-liquidity forecasts. AddedEngine

0.10.2

2026-07-18
  • Added native Windows repository support through `strategy.bat`, with shared cross-platform launcher behavior, safe local `.env` loading and a dedicated Windows setup guide. AddedDocs
  • Preserved long and short directions when applying pure inverse-volatility weighting to active instruments. FixedEngine

0.10.1

2026-07-11
  • Added `qj-bt data`, an unauthenticated public data-catalog CLI. AddedEngine
  • Added an optional terminal browser with Rich tables and keyboard navigation. AddedEngine
  • Added deterministic `overview`, `sources`, `granularities`, `datasets`, `asset-classes`, `universes`, `example-symbols`, and `all` commands. AddedEngine
  • Added `--json` output for scripts, agents, and automation. AddedEngine
  • Added `RebalancePolicy(calendar_dates=...)` for explicit rebalance timestamps alongside frequency-based schedules. AddedEngine
  • Added a public six-engine benchmark harness under `compare/native/`: five strategies implemented natively in QJ, VectorBT, pmorissette/bt, Zipline, Backtrader and QuantConnect LEAN, with an invariant-gated runner and a QJ adapter that runs on this package. The harness is repository-only and is not included in the wheel. AddedEngine
  • Interactive browsing is enabled only for terminal sessions; non-interactive calls return the catalog overview without prompting. ChangedEngine
  • Public catalog requests do not require, read, or transmit an API key. ChangedEngine
  • Catalog output identifies symbols derived from example universes as example symbols rather than an exhaustive list of available instruments. ChangedEngine
  • Registered the `qj-bt` console entry point and updated the locked dependency set and public release manifest. ChangedEngine
  • Weight-mode accounting runs on a vectorized path. Results are unchanged and were verified bit-identical across the full benchmark suite. ChangedEngine
  • Position-limit risk checks skip rows where no limit can bind. ChangedEngine
  • Extended release verification to validate the exact console entry point in wheel and source-distribution artifacts. FixedEngine
  • Added coverage for metadata normalization, fallback data, terminal and non-terminal behavior, JSON output, errors, and release artifacts. FixedEngine
  • Start-anchored rebalance frequencies (`MS`, `QS`, `YS`, ...) snap forward to the next trading session instead of backward into the prior period. FixedEngine

0.10.0

2026-07-10
  • Added the shared execution simulator, contract-aware portfolio ledger, portfolio-of-strategies book, and pre-trade risk controls to the explicitly approved Apache-2.0 public scope. AddedEngine
  • Expanded the runnable catalog to 50 examples: 25 weight-based, 20 order-based, and 5 walk-forward/optimization strategies, including the new FX and continuous-futures research examples. AddedEngine
  • Added a fail-closed release boundary: local commit/push guards, a reviewed source manifest, clean-tag publishing, and exact wheel/sdist verification. AddedEngine
  • Rejected unsupported cross-currency FX accounting in core and standalone ledger paths instead of treating quote-currency PnL as portfolio currency; incomplete or invalid external FX/futures contract metadata now fails closed. FixedEngine
  • Standardized strategy storage on `(strategy, field, instrument)`, rejected silently misaligned strategy output, and preserved valid all-zero strategies. FixedEngine
  • Scoped ETag response caches to one immutable per-request tenant/principal snapshot, including during concurrent context changes; cache keys are fully opaque and invalidated whenever the security context changes. FixedEngine
  • Restored the public README and changelog boundary, then documented only the approved public runtime and strategy additions. ChangedEngine
  • Modernized Python 3.11 typing syntax, removed the Ruff backlog, and made full lint/format checks blocking. ChangedEngine
  • Added a locked full-package mypy baseline gate that fails on every unreviewed diagnostic change while the existing typing debt is reduced. ChangedEngine
  • Declared and continuously tests Python 3.11 through 3.14. ChangedEngine
  • External PyPI artifacts are built only from a clean version-matched tag after tests and artifact-manifest checks; local uploads are unsupported. ChangedEngine

0.9.1

2026-07-09
  • Hardened missing-data accounting with frozen/held semantics so portfolio NAV, risk triggers and reported weights stay consistent through temporary price gaps. ChangedEngine
  • Normalized timezone alignment before reindexing benchmark and cash-buffer inputs. ChangedEngine
  • Improved order-mode idempotency and bracket/OCA lifecycle handling. ChangedEngine
  • Tightened circuit-breaker re-entry, weekly holiday scheduling and PBO failed-candidate handling. ChangedEngine

0.8.9

2026-07-08
  • Weight-mode accounting now books the full price move across missing-data gaps on the resume bar (matching order-mode economics), and gapped positions are reported at their carried value. ChangedEngine
  • Honest walk-forward reporting: slice-diagnostics output is labeled in-sample end-to-end, failed folds are reported as failed (not zero Sharpe), verdicts are gated so losing strategies never render green, and the composite Sharpe carries a bootstrap confidence interval. ChangedEngine
  • Stricter, louder input handling: unknown constructor kwargs raise, execution mode and fill timing are validated, missing OHLC data degrades with a clear warning, inactive configuration knobs warn once per mode, and the tracking-error trigger activates when `benchmark_returns` is provided. ChangedEngine
  • Re-running a backtest on the same instance is idempotent (execution state resets per run); weekly calendar rebalances snap to the prior trading day on holidays; documentation now spells out the execution-timing contract and calendar-convention sensitivity. ChangedEngine

0.8.8

2026-07-08
  • Refined same-bar fill priority for OCO orders and aligned the tracking-error trigger with the NAV accounting basis. ChangedEngine
  • Cleaner walk-forward metadata and configuration errors (empty purge windows, overlapping-OOS warning, early CPCV validation). ChangedEngine

0.8.7

2026-07-07
  • Tightened rebalance and risk-event accounting so daily returns are always booked on the weights actually held, with improved circuit-breaker recovery behavior. ChangedEngine
  • Hardened order execution around partial fills and edge conditions: trailing-stop activation, OCO and bracket lifecycle, bar-expiry counting, stop-limit trigger bounds, and volume-cap handling with incomplete data. ChangedEngine
  • More robust input validation across sizing, weights and configuration (non-finite prices and volumes, cash-buffer types, rebalance frequency and holiday scheduling). ChangedEngine
  • Protective `stop_loss()`/`take_profit()` exits now link as an OCO pair automatically. ChangedEngine
  • Walk-forward upgrades: more reliable optimizer execution with loud failure reporting, `direction="minimize"` support, deflated Sharpe aligned with Bailey & López de Prado (2014), and honest availability reporting for overfitting statistics (`pbo_trials` opt-in). ChangedEngine

0.8.6

2026-07-06
  • Added explicit walk-forward mode reporting in logs, summaries and archived metadata: `slice_diagnostics` for fast NAV-slice diagnostics and `per_fold_refit` when a fold-local `backtester_factory` reruns the strategy. AddedEngine
  • Added `QJ_WF_MODE=per_fold_refit` support to WF01-WF03 examples, with optional `QJ_WF_REPORT_PACKET=1` report/plot packet generation. AddedEngine
  • Deduplicated the walk-forward slice-diagnostics warning so it appears once per result instead of once per fold. ChangedEngine
  • Clarified README and strategy-catalog language around walk-forward diagnostics, per-fold refit cost, and optimization workflow interpretation. ChangedEngine

0.8.5

2026-07-04
  • Fixed order-mode trade recording so fill metadata from the execution engine (`slippage`, theoretical price and fill status) is accepted by the blotter and preserved in trade artifacts. FixedEngine
  • Hardened the 30-minute intraday stop-breakout example against sparse provider bars by skipping invalid NAV, price and breakout-reference observations before sizing orders. FixedEngine

0.8.4

2026-07-04
  • Added a deterministic bundled sample-data path for `example_weights_01_sma_daily` via `./strategy.sh example_weights_01_sma_daily --sample-data`, allowing a reproducible demo without API credentials. AddedEngine

0.8.3

2026-07-04
  • Grew the example strategy suite to 45. Added 10 weight-based templates: long/short pairs trading with a ratio z-score and with a rolling OLS hedge-ratio spread; dollar-neutral cross-sectional momentum and short-term reversal; volatility-targeted trend and momentum baskets; risk-parity (equal risk contribution) standalone and chained with a per-position cap; Bollinger Band mean reversion; and MACD trend. AddedEngine
  • Added a per-folder strategy catalog (`strategies/README.md`) that links each example's source and, where published, its results page, and embedded a summary catalog in the main README. AddedEngine
  • Attached the risk-overlay modules (volatility targeting, risk parity, position limits, chained overlays) to runnable examples via the `risk_model=` hook. AddedEngine

0.8.2

2026-07-04
  • Expanded the example strategy suite to 35 runnable templates: 12 weight-based, 18 order-based, and 5 walk-forward / optimization examples. AddedEngine
  • Added an intraday timeframe grid so a single engine spans minute-to-hour cadences: `example_weights_08_intraday_1m_ema_scalp` (1m EMA scalp), `example_orders_15_intraday_5m_bracket_reversion` (5m bracket reversion), `example_orders_16_intraday_30m_stop_breakout` (30m stop breakout), and `example_weights_09_intraday_1h_sma_trend` (1h SMA trend). AddedEngine
  • Added rebalance-focused templates that exercise the full policy stack: `example_weights_10_monthly_circuit_breaker` (drawdown circuit breaker + cooldown), `example_weights_11_quarterly_te_cost_gate` (tracking-error trigger + turnover budget), and `example_weights_12_daily_partial_drift` (partial drift-band rebalance). AddedEngine
  • Added event-driven order-mode rotation templates: `example_orders_17_monthly_rotation_orders` (calendar rebalance expressed as orders) and `example_orders_18_signal_change_rotation_orders` (trade only on trend-signal flips). AddedEngine
  • Added dedicated walk-forward and optimization examples: rolling, expanding, and anchored walk-forward (`example_wf_01`–`example_wf_03`), exhaustive grid search (`example_wf_04`), and Optuna TPE search with out-of-sample validation (`example_wf_05`). AddedEngine
  • Surfaced walk-forward traffic-light interpretation (overfit ratio, efficiency, Sharpe decay) directly in the walk-forward examples. AddedEngine
  • Refreshed public documentation: rewrote the README around what the engine does, why it is reproducible, how to run it, and example report output; removed fixed strategy-count language so the suite can grow without stale numbers. ChangedEngine
  • Aligned every example strategy configuration with the verified `RebalancePolicy` fields (`drift_threshold`, `tracking_error_threshold`, `max_drawdown_trigger`, `max_annual_turnover`, `partial_rebalance`, `rebalance_on_signal_change`). ChangedEngine
  • Reworked the packaging smoke tests to check tracked files rather than a fixed strategy count, so new untracked example strategies no longer break local test runs. ChangedEngine
  • Preserved intraday NaN gaps in `Universe.returns` and `Universe.log_returns` using `pct_change(fill_method=None)`, so halted or illiquid intraday bars are excluded from allocation instead of being counted as 0% return observations. FixedEngine
  • Seeded only the first available bar per instrument to a defined return, keeping pre-listing and post-halt gaps as unavailable rather than synthetic zeros. FixedEngine

0.8.1

2026-07-04
  • Added `granularity` normalization for API-backed backtests, including yfinance historical intraday values such as `1m`, `5m`, `15m`, `30m`, and `1h`. AddedEngine
  • Added `example_weights_07_intraday_rsi_15m.py`, a simple RSI strategy using `granularity="15m"`. AddedEngine
  • Added true walk-forward refit hooks via fold-local `backtester_factory`/optimizer support. AddedEngine
  • Added date/time-aware x-axis labels for intraday time-series plots. AddedEngine
  • Added a per-fold "slice diagnostics" warning so walk-forward runs without a refit factory are labeled honestly rather than reported as true out-of-sample. AddedEngine
  • Fixed order-mode contract accounting so cash, NAV, position values, weights, and trade value use `ContractSpec` multipliers and lot sizes. FixedEngine
  • Fixed order-mode commission notional to use `ContractSpec` multipliers and lot sizes, aligning bps/max-pct fees with contract-aware NAV and PnL. FixedEngine
  • Fixed limit and stop-limit execution semantics so slippage never fills worse than the limit price. FixedEngine
  • Fixed partial-fill commissions so per-order minimums, caps, and tiers are applied cumulatively to the parent order. FixedEngine
  • Fixed reporting-frequency resampling so the first reporting bucket keeps its actual return instead of a synthetic zero. FixedEngine
  • Fixed Sharpe, volatility, and Sortino calculations to use metric returns that exclude the synthetic day-0 zero. FixedEngine
  • Fixed position-limit redistribution to iteratively enforce `max_weight` after redistributing capped excess. FixedEngine
  • Fixed partial rebalance and tax-aware rebalance normalization so frozen positions are not moved by the traded sleeve. FixedEngine
  • Fixed benchmark return handling to prefer adjusted total-return sources and warn on ambiguous raw-close or missing-day alignment. FixedEngine
  • Fixed dollar valuation semantics to use raw close prices for exposure, turnover, and dollar PnL, with bounded forward-fill for stale valuation prices. FixedEngine
  • Preserved NaN market-data gaps in `Universe` and weight-mode rebalancing so unavailable instruments are excluded from allocation instead of treated as 0% return assets. FixedEngine

0.8.0

2026-06-20
  • Added AI Co-Pilot materials for strategy authoring, strategy review, and report interpretation. AddedEngine
  • Added explicit NAV accounting identity validation. AddedEngine
  • Added per-instrument strategy trace charts combining price, indicators, signal state, realized exposure, and portfolio context. AddedEngine
  • Added reporting semantics documentation for FIFO lot matching, exposure path checks, loss-positive risk fields, and execution assumptions. AddedEngine
  • Added a reproducibility fingerprint over configuration and input data for auditable research runs. AddedEngine
  • Hardened instrument analytics contracts: units now mean executed position quantities, and weight-based attribution requires explicit weights. ChangedEngine
  • Standardized turnover to institutional half-turnover with separate gross weight churn diagnostics. ChangedEngine
  • Reworked VaR/CVaR outputs to use a loss-positive convention. ChangedEngine

0.7.0

2026-06-12
  • Added reporting-frequency support for daily, weekly, monthly, and quarterly report cadences. AddedEngine
  • Added frequency-aware annualization, rolling windows, labels, and table wording. AddedEngine
  • Removed hard-coded daily wording from risk and volatility report labels. FixedEngine
  • Guarded resampling paths so reporting-frequency changes preserve strategy and benchmark alignment. FixedEngine

0.6.0

2026-05-30
  • Added website changelog and documentation pages for the QuantJourney Backtester. AddedEngine
  • Added architecture diagrams and publishing-oriented documentation. AddedEngine
  • Added default QuantJourney plot styling, source stamps, and report metadata. AddedEngine
  • Added multiple visual themes for report charts, including terminal, dark, and paper-ready academic styles. AddedEngine
  • Refined plot readability for cumulative returns, drawdown, rolling risk, rolling beta, rolling alpha, and holdings charts. ChangedEngine

0.5.0

2026-02-01
  • Added anchored, rolling, and expanding walk-forward validation. AddedEngine
  • Added grid-search and Optuna optimization integration for strategy parameter studies. AddedEngine
  • Added fold-level in-sample/out-of-sample diagnostics and summary metrics. AddedEngine
  • Added purge and embargo gaps between train and test windows to reduce information leakage. AddedEngine
  • Added overfit-ratio, efficiency, and Sharpe-decay traffic-light interpretation of walk-forward results. AddedEngine
  • Separated optimizer configuration from strategy configuration so research runs can be reproduced from saved metadata. ChangedEngine

0.4.2

2026-01-10
  • Added cross-engine comparison materials for QuantJourney, vectorbt, Backtrader, Zipline, and QuantConnect-style strategies. AddedEngine
  • Added fair-metric comparison helpers for equity curves, timing, drawdown, and return statistics. AddedEngine
  • Improved cash handling and signal timing checks for cross-engine benchmark parity. FixedEngine

0.4.1

2025-12-01
  • Added order-mode strategy examples for market, limit, stop, stop-limit, trailing stop, bracket, and OCO behavior. AddedEngine
  • Added trade blotter export paths for execution-mode strategies. AddedEngine
  • Tightened same-bar stop/limit execution ordering and volume-participation partial fill behavior. FixedEngine

0.4.0

2025-10-15
  • Added deterministic order-mode execution simulation. AddedEngine
  • Added slippage and commission model interfaces. AddedEngine
  • Added initial futures/FX contract specification types for multiplier, lot size, tick size, and margin metadata. AddedEngine
  • Split target-weight accounting from order-based accounting so strategies can choose the appropriate simulation mode. ChangedEngine

0.3.0

2025-08-15
  • Added portfolio analytics for returns, volatility, drawdowns, rolling statistics, attribution, exposure, and turnover. AddedEngine
  • Added dashboard-oriented report artifacts: summary text, JSON metrics, CSV metrics, equity curve CSV, and PNG charts. AddedEngine
  • Added benchmark comparison support for common index and ETF references. AddedEngine
  • Added crisis-window analysis across predefined historical stress periods. AddedEngine
  • Added Monte Carlo block-bootstrap resampling for NAV confidence bands and probability-of-ruin estimates. AddedEngine
  • Improved NAV, cash, position, and weight alignment checks. FixedEngine

0.2.2

2025-06-20
  • Added risk-model hooks for inverse volatility, volatility targeting, risk parity, and position limits. AddedEngine
  • Added calendar, drift, signal-change, turnover-gate, and circuit-breaker rebalance policies. AddedEngine
  • Added partial rebalance and tax-aware young-lot avoidance options. AddedEngine
  • Moved rebalance behavior into a dedicated engine so strategy logic stays focused on signals and target weights. ChangedEngine

0.2.1

2025-04-20
  • Added technical indicator configuration for SMA, EMA, RSI, MACD, Bollinger Bands, ATR, and related features. AddedEngine
  • Added reusable strategy examples for daily, weekly, monthly, and quarterly research workflows. AddedEngine
  • Improved strategy data alignment between indicator frames, signal frames, and target-weight frames. FixedEngine

0.2.0

2025-03-10
  • Added QuantJourney Cloud API-backed market-data fetch through `/bt/prepare`. AddedEngine
  • Added SDK client integration, API-key auth support, and session/dataset identifiers. AddedEngine
  • Added local pandas containers for instruments, portfolio data, signals, weights, and positions. AddedEngine
  • Established the design principle that market data comes from the cloud while strategy computation runs locally. ChangedEngine

0.1.0

2025-02-01
  • Initial QuantJourney Backtester package. AddedEngine
  • Added the `Backtester` base class with signal, weight, and position hooks. AddedEngine
  • Added local NAV calculation, basic portfolio returns, and strategy summary output. AddedEngine
  • Added the first runnable SMA-style strategy skeleton. AddedEngine