Skip to content

Changelog

All notable releases are documented here. Version source of truth: src/monte_neo/_version.py.

[v0.17.7] — 2026-09-17

Changed

  • Docs site homepage is native MkDocs docs/index.md at site root (no /home/ duplicate)
  • Renamed docs/INDEX.md → docs/docs-map.md (macOS case-insensitive safe next to index.md)
  • Native MkDocs docs/index.md as site root; docs.yml checks root index and rejects site/home/ (sed/copy-home hack removed)
  • Maintenance tests and contributing rules point at docs/docs-map.md

Notes

  • Docs / Pages infra only — no runtime API break vs 0.17.6.
  • License remains MIT. No peer product names in this tree.

[v0.17.6] — 2026-09-17

Added

  • GitHub Actions PyPI install smoke (.github/workflows/pypi-smoke.yml): workflow_dispatch, weekly schedule, and release published → clean venv + pip install monte-neo==… --no-cache-dir + import policy/holdout (via scripts/verify_pypi_install.sh, CDN retries)
  • Links to SECURITY.md from README, CONTRIBUTING, docs INDEX, and MkDocs Project nav

Changed

  • scripts/verify_pypi_install.sh default version → 0.17.6; --no-cache-dir + retry/sleep for PyPI CDN lag

Notes

  • Docs / OSS trust only — no runtime API break vs 0.17.5.
  • License remains MIT. No peer product names in this tree.

[v0.17.5] — 2026-09-17

Changed

  • Research device="auto" prefers cpu_numba for wall clock on typical grids (measured M1 Pro: Metal was ~50–100× slower on 100k×64 / 1M×32)
  • Sets fallback_reason="auto_prefer_cpu_numba" when auto declines Metal/MLX for speed
  • Explicit device="metal" / "mlx" unchanged (size gate only; may be slow — user's choice)
  • OMS resolve_device("auto") unchanged (still prefers Metal when available)

Added

  • Env MONTE_NEO_RESEARCH_AUTO_PREFER_METAL=1 — restore pre-0.17.5 prefer-Metal research auto
  • Env MONTE_NEO_RESEARCH_AUTO_METAL_MIN_COMBOS=N — allow auto→Metal only when n_combos >= N

Notes

  • See Performance and FAQ.
  • License remains MIT. No peer product names in this tree.

[v0.17.4] — 2026-09-17

Changed

  • Performance: primary table is MacBook Pro M1 Pro 16 GB real timings (post-warmup)
  • Honest guidance: for measured small/medium grids, cpu_numba beat Metal wall-clock while auto still selected Metal when eligible

Notes

  • Docs / trust only — no runtime API break vs 0.17.3.
  • License remains MIT. No peer product names in this tree.

[v0.17.3] — 2026-09-17

Added

  • Job-fit scenarios on Home and FAQ: when Monte-Neo fits / when not (research bar vs OMS/live; peer-free)
  • Performance rewrite with first-party export_sma_sweep timings + scripts/bench_research_bar.py
  • MkDocs nav: Performance under Get started

Changed

  • Quick start is export-first (pip → export → policy → holdout); CLI wizard moved to optional section
  • Softened stale “125x” / “300k ops/sec” / “v0.0.4 targeting” claims in public docs

Notes

  • Docs / trust pack only — no runtime API break vs 0.17.2.
  • License remains MIT. No peer product names in this tree.

[v0.17.2] — 2026-09-17

Changed

  • Holdout default promote_mode="holdout_positive": positive holdout no longer blocked by large train−holdout gap
  • HeuristicPolicy: block promote only when holdout_promote_ok is false; high gap → MC flag; holdout can unlock promote

Added

  • promote_mode="strict" for legacy conservative gate
  • append_research_label JSONL logger + CLI --holdout-log / --human-label (corpus for a future LocalScorer — not B yet)

Notes

  • LocalScorer B still deferred until real labeled runs exist.
  • License remains MIT.

[v0.17.1] — 2026-09-17

Added

  • CONTRIBUTING + GitHub issue/PR templates
  • Install audit docs: pipx, extras matrix, safe TestPyPI --no-deps recipe
  • FAQ: TestPyPI poison, extras ImportError, policy/holdout CLI pointers

Changed

  • Installation page current release → 0.17.x; docs site link in install/FAQ
  • MkDocs nav: Contributing

Notes

  • Docs/OSS friction only — no runtime API break vs 0.17.0.
  • License remains MIT.

[v0.17.0] — 2026-09-17

Added

  • Holdout helper (holdout_sma_sweep, split_bar_range): train SMA sweep → score top-K on holdout
  • Schema mn.holdout_report.v1 with gap / overfit_risk / promote_ok
  • HeuristicPolicy enrichment via build_research_state(..., holdout_report=)
  • CLI: monte-neo --holdout-sma
  • Docs: Holdout API

Notes

  • Practical anti-overfit without ML. LocalScorer B still deferred.
  • License remains MIT. No peer product names in this tree.

[v0.16.0] — 2026-09-17

Added

  • HeuristicPolicy A (monte_neo.policy): local deterministic triage after research export
  • build_research_state → compact mn.research_state.v1 (no raw OHLCV)
  • triage_export / HeuristicPolicy.decide → next_action, promote/MC flags, reasons
  • CLI: monte-neo --policy-triage path/to/export.json
  • Docs: export API + policy pages; install extras matrix ([apple], [plot], [data], [ml], [server], [full])

Changed

  • Slim default dependencies — research-core only (numpy/pandas/pyarrow/numba/rich/CLI)
  • Optional extras: apple (darwin markers), plot, data, ml, server, full
  • Lazy imports for Binance downloader, websocket client, plot helpers (monte-neo[data] / [plot])
  • CI syncs --extra apple --extra plot --extra data --group dev
  • Documentation URL → https://neozork.github.io/Monte-Neo/

Notes

  • Not a cloud “System One” model — offline rules only. Holdout helper / LocalScorer B deferred.
  • License remains MIT. No peer product names in this tree.

[v0.15.1] — 2026-09-16

Fixed

  • Bare pip install without MLX (from __future__ import annotations on acceleration modules)
  • Quiet Metal-unavailable import noise (debug level)
  • Include monte_neo.data in wheels (.gitignore /data/)
  • CI: portable CLI subprocess cwd; ruff clean on coverage boosts
  • Coverage close-out for sequential advice + cli __main__ pragma

Packaging

  • Ready for first TestPyPI / PyPI upload as PEP 440 0.15.1
  • GitHub tag v0.15.0 predates these packaging/CI fixes — ship as 0.15.1

[v0.15.0] — 2026-09-15

Fixed

  • verify_export_golden / verify_golden_vectors: auto Metal float32 tolerance band when batch resolves to Metal
  • Unit metrics: pin Numba path for deterministic trade_count; native extract stub via _get_native
  • Build: pin hatchling>=1.24,<1.26 so wheels emit Metadata 2.3 (twine-check friendly)
  • Packaging: .gitignore /data/ (root only) so monte_neo.data is included in wheels
  • Import without MLX: from __future__ import annotations on acceleration modules so bare pip install works
  • Metal extension absence logged at debug (no emoji warning on every import)

Packaging / PyPI prep

  • mlx + PyObjC Metal moved to optional extra monte-neo[apple] (Linux/CI-friendly wheels)
  • Hatch version pattern strips leading v for PEP 440 distribution version
  • Richer project metadata: description, keywords, classifiers, project.urls
  • docs/project/PACKAGING.md — free-only PyPI / TestPyPI checklist

Docs / examples

  • Demo assets: docs/assets/demo_sma_sweep.png, docs/assets/demo_memory_plan.png
  • examples/export_sma_sweep_quickstart.py + examples README
  • README install notes for [apple] and git install

Notes

  • First PyPI upload still gated on TestPyPI + maintainer OK (see PACKAGING.md)
  • License remains MIT. No peer product names in this tree.

[v0.14.1] — 2026-09-15

Fixed

  • Research accelerator no-hang gate: oversized Metal/MLX workloads fall back to cpu_numba instead of blocking forever on GPU wait (e.g. 10M-bar sweeps on 16GB-class hosts)
  • Transparent fallback_reason when auto demotes Metal (metal_max_bars_exceeded, shared-budget, host soft budget)

Docs

  • README: install from GitHub, research export quickstart, advantages, device notes
  • docs/guides/FAQ.md starter

Notes

  • Env knobs: MONTE_NEO_RESEARCH_BYTES_BUDGET, MONTE_NEO_METAL_SHARED_BYTES_BUDGET, MONTE_NEO_METAL_MAX_BARS
  • License remains MIT. No peer product names in this tree.

[v0.14.0] — 2026-09-15

Added

  • plan_research_bytes for Apple Silicon 16GB soft budgets / tile hints
  • Export depth: equity_stride, include_journal, optional memory on single/batch
  • README positioning: local macOS research job vs non-goals (no rival names)

Notes

  • License remains MIT. Evidence publication stays permission-gated and out of tree.

[v0.13.0] — 2026-09-15

Added

  • Research signal factory (build_sma_cross_grid): Numba-parallel SMA cross grids
  • Sweep/export expose signal_elapsed_s + economics_elapsed_s (wall includes both)

Notes

  • Default signal device is Numba (exact); MLX signal path remains opt-in.
  • No peer product names in this tree. License remains MIT.

[v0.12.0] — 2026-09-14

Added

  • Stable research-bar export API (export_single / export_batch / export_sma_sweep / research_manifest)
  • Frozen golden vectors (verify_golden_vectors) for fee-hurts + batch↔single parity before any external timer
  • Timers disclose includes_signal_build so harnesses cannot mis-attribute work

Notes

  • No peer product names in this tree. Export is for external honesty harnesses only.
  • License remains MIT.

[v0.11.0] — 2026-09-14

Added

  • Research Metal economics: funding, session mask, long_short (Numba golden parity)
  • Rewrote stale MLX engine unit tests against current kwargs-only API (no skips)

Notes

  • Evidence publication stays out of this repository.
  • License remains MIT.

[v0.10.0] — 2026-09-14

Added

  • Research Metal economics: SL/TP/trail on long/flat next-bar-open (Numba golden parity)
  • Parity + perf coverage for Metal stop/trail subset

Notes

  • Funding / session mask / long_short remain Numba-only.
  • Evidence publication stays out of this repository and permission-gated.
  • License remains MIT.

[v0.9.1] — 2026-09-14

Removed

  • Public evidence-reproduce helpers, CLI entrypoint, and core/race optimization surface
  • Development race docs that described public evidence reproduce flows

Notes

  • Evidence publication remains permission-gated and lives outside this repository.
  • License remains MIT.

[v0.9.0] — 2026-09-14

Added

  • Research bar Metal economics batch (long/flat next-bar-open subset)
  • OMS: BarClock, TimeInForce (GTC/IOC), OCO/bracket helper, honest max_fill_qty partials
  • OMS: adapters/replay.py OHLC replay; accel BufferPool + shader_catalog
  • device= on run_bar_backtest_batch / run_sma_sweep (Metal when eligible, else Numba golden)
  • Parity + perf smoke for Metal vs Numba (fill_fraction / leverage included)

Notes

  • SL/TP/trail/funding/session/long_short remain Numba-only (full ExecutionModel).
  • Metal float32 vs Numba float64 uses documented rtol/atol.
  • License remains MIT. Evidence publication still permission-gated (out of tree).

[v0.8.0] — 2026-09-14

Added

  • MC Metal/MLX/CPU unified dispatch (plan_mc_run) honoring compute_device / use_gpu
  • M1 Pro 16GB-class scenario memory budgets (plan_scenario_budget, tile ranges)
  • MCResult.device_used / bytes_peak_est / accel_plan; MCConfig.memory_budget_bytes
  • Docs: docs/project/mc_accel.md

Notes

  • Metal-first on Apple Silicon; MLX used when native params are absent but MLX repr exists.
  • License remains MIT. Evidence publication still permission-gated (out of tree).

[v0.7.0] — 2026-09-14

Added

  • Metal L2 book-walk dispatch (PyObjC) with Numba float64 golden parity
  • run_l2_walk / run_l2_walk_batch device-aware paths; TickL2Engine uses them
  • Unit parity + performance smoke for Metal L2 batch walk

Notes

  • Metal uses float32; parity tests allow documented rtol/atol vs Numba float64.
  • License remains MIT. Evidence publication still permission-gated (out of tree).

[v0.6.0] — 2026-09-14

Added

  • Metal OMS batch dispatch (PyObjC) with Numba float64 golden parity
  • run_batch_terminal(device=...) / preferred_compute_device for honest device reports
  • MCConfig.compute_device + engine compute_pref checklist
  • Perf smoke for auto Metal/Numba batch path

Notes

  • Metal uses float32; parity tests allow documented rtol/atol vs Numba float64.
  • License remains MIT. Evidence publication still permission-gated (out of tree).

[v0.5.0] — 2026-09-14

Added

  • Venue adapters: PaperExchangeAdapter, BinanceAdapter, BybitAdapter
  • make_adapter() factory + fill reconciliation helper
  • Live safety gates: MONTE_NEO_LIVE_TRADING, MONTE_NEO_LIVE_DRY_RUN (default dry-run)
  • .env.example keys for Bybit + live flags

Notes

  • Paper mode is default (no network). Live submit without dry-run is blocked in this build.
  • License remains MIT. Evidence publication still permission-gated (out of tree).

[v0.4.0] — 2026-09-14

Added

  • Tick/L2 OMS lane: TickL2Engine, synthetic ticks, order book, L2 walk
  • Numba walk_book_market with Python L2 parity tests
  • Metal shader scaffold oms_l2_walk.metal
  • Docs updated for dual research + OMS tick paths

Notes

  • Paper/synthetic books only in this cut (live adapters later).
  • License remains MIT. Evidence publication still permission-gated (out of tree).

[v0.3.0] — 2026-09-13

Added

  • Paper OMS lane (monte_neo.oms): orders, matching, portfolio netting, blotter
  • Accel device select (cpu_numba / metal / mlx / auto) for Apple Silicon
  • Numba OMS batch helper + Metal shader scaffold (oms_bar_match.metal)
  • Docs: docs/project/oms_engine.md; roadmap rules (silence, Evidence gate, sync)

Notes

  • Research bar engine (monte_neo.backtest) unchanged as a separate lane.
  • License remains MIT.
  • No public Evidence publication without maintainer permission after correct private runs.

[v0.2.0] — 2026-09-13

Added

  • Session mask (block new entries off-session; exits/SL/TP still allowed)
  • Funding lite (funding_bps_per_bar) and leverage (leverage >= 1)
  • Shared-cash multi-symbol portfolio (run_portfolio_shared_cash)
  • Correctness suite: dual-hit SL preference, batch≡single with new knobs

Notes

  • Research bar engine scope unchanged (not a full OMS).
  • No public speed evidence until private comparisons complete and user OK.
  • License remains MIT.

[v0.1.0] — 2026-09-13

Added

  • Brand logo (docs/assets/monteneo-logo.png) and honest GitHub-facing README
  • GP bar engine: StrategySpec / run_strategy_backtest, trail stops, impact_bps, partial fill_fraction, expanded work checklist
  • Docs: clearer scope (research bar engine ≠ full OMS)

Notes

  • License remains MIT.

[v0.0.9] — 2026-09-13

Added

  • ExecutionModel.sl_pct / tp_pct with H/L exits (SL preferred on dual hit)
  • Trade journal + metrics (sharpe, profit_factor, win_rate, max DD)
  • run_bar_backtest_batch for external signal matrices (shared economics)
  • run_multi_symbol_lite (independent cash books)
  • run_sma_sweep now wraps batch (labeled convenience, not D001 kernel)

Notes

  • Costs remain bps on this path; older metrics helpers may use %.

[v0.0.8] — 2026-09-13

Added

  • Professional fee-aware bar backtest engine (monte_neo.backtest): next-bar fills, commission/slippage bps, cash/position/equity, SMA sweep with the same ExecutionModel, optional ReplayBarSource mid-price feeder (no Redis on hot path)
  • Docs: docs/project/backtest_engine.md
  • Unit / integration / stress / performance tests for the new engine

Notes

  • Specialized SMA kernel gates for private local protocols remain out of scope; this package path is for matched-semantics peer races (private or future D002).

[v0.0.7] — 2026-09-12

First formal GitHub Release. Canonical development branch is main (older branches named v0.0.1 … v0.0.6 are historical archives only).

Added

  • Public evidence-reproduce helpers and CLI (later removed in v0.9.1)
  • Type B CPU fallback when Metal native extension is unavailable
  • Unit tests for license/version doc sync

Changed

  • License metadata aligned to MIT (LICENSE + pyproject.toml)
  • Docs / INDEX / ROADMAP synchronized to v0.0.7

Security

  • Pillow pinned to >=12.3.0 on the release line (Dependabot alerts cleared)

Notes

  • Install: pip install "monte-neo @ git+https://github.com/NeoZorK/Monte-Neo.git@v0.0.7"
  • Or: uv add "monte-neo @ git+https://github.com/NeoZorK/Monte-Neo.git@v0.0.7"