Skip to content

Releases

v0.4.4 — user recipes + perception status

Choose a tag to compare

@baladithyab baladithyab released this 14 May 06:29

[0.4.4] — 2026-05-14

Summary

v0.4.4 makes hermes-quant meaningfully customizable for non-contributors: PDR recipes can now be authored as YAML under ~/.hermes/quant/recipes/, perception freshness can be checked per recipe, and the committee runner exposes a safe model-mixture prompt surface without adding hidden model calls to trading ticks.

Added

  • ADR-0025: user-editable recipes and perception status.
  • User recipe YAML loader: built-ins plus ~/.hermes/quant/recipes/*.yaml are loaded by the recipe registry.
  • hermes quant recipes list|validate|example: list all recipes, validate a recipe YAML, or write/print a starter template.
  • hermes quant perception status: report fresh/stale/missing/future semantic packets for every symbol in a recipe using its configured hermes_semantic.max_age_minutes.
  • hermes quant committee prompt: emit a self-contained Hermes prompt for a future multi-model committee job, including packet hashes and required roles.

Changed

  • User recipes cannot shadow built-in recipe IDs; this prevents accidental override of known templates.
  • Recipe listing now includes user recipes by default, while preserving deterministic ordering.
  • README quickstart now shows recipe customization and perception status commands.

Safety posture

  • Recipe validation keeps live autonomous recipes rejected until live-reactor gates are explicitly implemented.
  • Perception status is read-only.
  • The model-mixture surface is prompt/artifact-driven; no trading tick performs hidden model calls.

Test sweep

  • 604 passed, 1 skipped (was 599 → +5, zero regressions).

v0.4.3 — perception artifacts + autonomous semantic cron

Choose a tag to compare

@baladithyab baladithyab released this 14 May 06:12

[0.4.3] — 2026-05-14

Summary

v0.4.3 makes the semantic/deliberative PDR layer usable by normal Hermes plugin operators: semantic packets and committee turns are now filesystem artifacts with CLI write/validate/list/run surfaces, autonomous semantic perception can be installed as a Hermes cron job, and advisor/backtest/signal artifacts persist semantic provenance hashes.

Added

  • ADR-0024: autonomous semantic perception as an artifact pipeline rather than live model calls in trading ticks.
  • hermes_quant.artifacts: atomic JSON stores for semantic packets and committee-turn artifacts under ~/.hermes/quant/.
  • hermes quant semantic-packet write|validate|list for operator-authored or Hermes-authored semantic perception artifacts.
  • hermes quant committee run|list for deterministic committee-turn artifacts derived from semantic packet archives.
  • hermes quant perception start to create/dry-run a Hermes cron job that autonomously researches sources and writes semantic packets.
  • Backtest artifact injection flags: --semantic-packet-file and --committee-turns-file for hermes quant backtest.
  • Advisor CLI artifact injection flags for hermes quant recommend.
  • Dogfood audit: docs/audits/2026-05-14-v043-btc-usdt-dogfood.md comparing MVP vs deliberative recipes.

Changed

  • Backtest replay now instantiates the recipe-selected aggregator for learning loops instead of always forcing BMA; this preserves the deliberative recipe during replay.
  • Backtest decision snapshots now record recipe metadata, semantic packet hashes, committee decision metadata, and aggregator name.
  • Daemon signal records now include component metadata, signal metadata, semantic packet hashes, and committee-turn hashes for downstream attribution.
  • README and plugin manifest now reflect the current install/customization surfaces.

Dogfood summary

7-day BTC/USDT Kraken smoke, 1h bars, warmup 24:

variant decisions fires return buy_hold excess
btc-usdt-mvp 1 2 -0.07% +0.12% -0.19%
btc-usdt-deliberative no packets 0 0 +0.00% +0.12% -0.12%
btc-usdt-deliberative curated packet 0 0 +0.00% +0.12% -0.12%

Interpretation: this is a smoke test, not a promotion gate. The deliberative path currently fails closed under insufficient semantic coverage, which is the desired safety behavior. Next dogfood needs autonomous packet coverage across the full window.

Test sweep

  • 599 passed, 1 skipped (was 593 → +6, zero regressions).

v0.4.2 — semantic perception + deliberative committee

Choose a tag to compare

@baladithyab baladithyab released this 14 May 05:49

[0.4.2] — 2026-05-14

Summary

v0.4.2 makes Hermes itself part of the PDR trading architecture: semantic analysis can enter the Perceive layer as replayable packets, and the Decide layer now has a TradingAgents-style deliberative committee scaffold for bull/bear/risk/portfolio-manager collaboration.

Added

  • ADR-0022: Hermes semantic perception layer. Semantic packets are precomputed Hermes/model/human research artifacts consumed by analysts; no hidden model/web calls happen inside a trading tick.
  • ADR-0023: Deliberative committee decision layer. The committee records research debate, trader synthesis, risk debate, and portfolio-manager synthesis while preserving the Aggregator protocol.
  • hermes_quant.semantic: SemanticPacket, source provenance, canonical packet hashing, parsing, and validation helpers.
  • HermesSemanticAnalyst (hermes_quant.analysts.semantic): consumes semantic packets from MarketContext.extras, emits normal AnalystViews, and abstains with zero confidence when packets are missing/stale/future/tampered.
  • DeliberativeCommitteeAggregator (hermes_quant.aggregators.deliberative): deterministic TradingAgents-style committee scaffold with bull/bear/neutral research turns, trader synthesis, aggressive/conservative/neutral risk perspectives, and portfolio-manager metadata.
  • btc-usdt-deliberative recipe: BTC/USDT recipe using quantitative analysts + hermes_semantic + deliberative_committee, paper/backtest-only.
  • quant_recommend schema/tool path accepts optional semantic_packets and committee_turns artifacts for replayable semantic/model-mixture inputs.

Changed

  • advisor.recommend() accepts market_extras so replay/tool callers can inject semantic packets and committee turns without changing the analyst protocol.
  • Advisor aggregated-signal JSON now carries metadata, exposing committee deliberation traces to Hermes/tool callers.
  • Architecture docs now document semantic packets and model-mixture deliberation as first-class PDR extension seams.

Safety posture

  • Model-backed debate is artifact-driven, not live-call-driven: future Hermes model mixtures should write explicit committee_turns with model IDs/input hashes before aggregation.
  • Deliberation can reduce confidence or force flat on disagreement; it cannot bypass the deterministic risk gate.
  • Semantic packets are hash-verified and freshness-checked; invalid packets produce abstain views, not trades.

Test sweep

  • 593 passed, 1 skipped (was 580 → +13, zero regressions).

v0.4.1 — Hermes-native PDR recipes

Choose a tag to compare

@baladithyab baladithyab released this 14 May 05:05

[0.4.1] — 2026-05-14

Summary

v0.4.1 turns hermes-quant from a hard-coded MVP committee into a Hermes-native PDR recipe platform. A recipe is now the named, inspectable, replayable unit of a trading system: it declares Perceive components (provider + analysts), Decide components (aggregator + risk gate), React policy (paper/live mode constraints), and evaluation gates.

Added

  • ADR-0021: PDR recipes as the runtime contract above component entry-points.
  • hermes_quant.recipes.PDRRecipe with stable config hashing, validation, built-in btc-usdt-mvp recipe, and component instantiation helpers.
  • quant_recipes Hermes tool and /quant recipes slash path for read-only recipe discovery.
  • Advisor recipe metadata: quant_recommend / advisor.recommend accept recipe_id and return {id, config_hash} in result JSON.
  • Backtest recipe passthrough: replay() and walk_forward_replay() forward recipe_id into the production advisor path.
  • Architecture documentation: docs/architecture/pdr-trading-system.md plus architecture index.
  • ADR index: docs/adr/README.md generated for the full ADR set.

Fixed / Changed

  • The advisor no longer has to be the only place where the canonical analyst loadout is encoded; default behavior remains compatible, but recipes are now the extensibility seam.
  • quant_recommend no longer forces asset_class="equity" when a recipe should supply crypto/equity defaults.

Test sweep

  • 580 passed, 1 skipped (was 572 → +8, zero regressions).

v0.4.0 — charter MVP loop: replay settlements, walk-forward, cache

Choose a tag to compare

@baladithyab baladithyab released this 14 May 04:23

[0.4.0] — 2026-05-14

Summary

v0.4.0 closes the charter MVP loop from data → replay → empirical decision:

  • the BMA aggregator now learns from replay settlements (EpisodeOutcome)
    during backtests;
  • quant_doctor surfaces analyst confidence drift from the signal bus;
  • purged walk-forward replay composes ADR-0019 cross-validation with the
    production ADR-0020 replay harness;
  • OHLCV provider fetches are cached on disk so repeated BTC/USDT dogfood runs
    are deterministic and cheap;
  • the first real BTC/USDT ccxt smoke is documented.

Charter decision from the real-data smoke: do not proceed to RL aggregator
or live reactors yet
. A 30-day Kraken BTC/USDT contiguous replay failed
buy-and-hold by -6.56%; 3-fold walk-forward was slightly positive but only
emitted two decisions, which is not enough evidence.

Added

  • Backtest calibrator loop (V03-5) — replay() now uses a long-lived
    aggregator across bars and settles pending decisions into EpisodeOutcome
    updates after settlement_horizon_bars. BacktestResult exposes
    n_settlements and final aggregator_posteriors; markdown reports include
    a per-analyst BMA posterior table.
  • Doctor drift surface (V03-6) — quant_doctor reports per-analyst
    lifetime vs recent-window confidence drift, flags vanished analysts, and
    tolerates malformed signal-bus records.
  • Purged walk-forward backtest (Wave I) —
    hermes_quant.backtest.walk_forward_replay() runs independent
    out-of-sample replay folds and aggregates mean excess return, Sharpe delta,
    positive-excess fold rate, total decisions, and settlements.
  • CLI walk-forward mode — hermes quant backtest --walk-forward --n-splits N
    writes per-fold equity/decision artifacts plus an aggregate result.json.
  • OHLCV file cache (V03-7) — hermes_quant.data.cache.OhlcvCache stores
    provider/symbol/timeframe bars under ~/.hermes/quant/cache/<provider>/,
    with append/dedupe/sort and atomic writes. Parquet preferred, CSV fallback.
  • Provider-selectable CLI fetch — --provider ccxt:kraken /
    ccxt:coinbase / yfinance, plus --cache-root and --no-cache.
  • Real-data audit — docs/audits/2026-05-14-btc-usdt-realdata-smoke.md
    records Binance geoblock evidence, Kraken fetch details, single-run and
    walk-forward results, and the charter decision.

Fixed

  • _read_jsonl_tail() no longer drops the first JSONL record when the whole
    file fits in the read window.
  • Backtest CLI provider lookback buffer reduced so caches don't miss forever
    when exchanges return slightly fewer closed bars than requested.
  • quant_doctor uses live module-attribute lookup for path globals to avoid
    stale __globals__ under pytest import-order/module-dict duplication.

Test sweep

  • 572 passed, 1 skipped (was 530 → +42, zero regressions).

Quick start

# Fetch via Kraken ccxt with cache and run walk-forward replay
hermes quant backtest --symbol BTC/USDT --asset-class crypto \
  --timeframe 1h --provider ccxt:kraken \
  --start 2026-04-14T00:00:00Z --end 2026-05-14T00:00:00Z \
  --walk-forward --n-splits 3 \
  --output-dir ~/.hermes/quant/backtests/btc-kraken-wf/

v0.3.2 -- Backtest harness: charter empirical gate

Choose a tag to compare

@baladithyab baladithyab released this 14 May 02:56

v0.3.2 -- Backtest harness: the charter's empirical gate

The release the charter has been waiting for.

Charter: "if your three-analyst committee on BTC can't beat buy-and-hold
risk-adjusted on paper, more analysts won't fix it."

Until now that question required 4-8 weeks of wall-clock paper trading
to answer. v0.3.2 makes it computable in seconds via historical replay
through the production advisor pipeline.

hermes quant backtest --symbol BTC/USDT --asset-class crypto
--timeframe 1h --bars-file ~/.hermes/quant/cache/btc-1h.csv

Output: report.md + result.json + equity_curve.csv + decisions.jsonl
in ~/.hermes/quant/backtests//.

The line that matters: "Excess return vs buy-and-hold: +X.XX%"

Highlights

  • ADR-0020: REPLAY (not simulation). Uses production advisor pipeline
    verbatim. Charter Reproducibility honored: same bars + same config_hash
    -> same equity curve, byte-identical.
  • backtest.replay() walks bars chronologically through advisor.recommend()
    with lookahead-safe as_of cutoff at every bar.
  • PaperPortfolio: minimal mark-to-market book with slippage, commission,
    lot-matching realized P&L, position flips.
  • Buy-and-hold baseline + Sharpe + Deflated Sharpe (PSR for n_trials=1)
    • max drawdown computed inside replay().
  • BacktestResult.excess_return_vs_buy_hold_pct is THE charter-gating
    headline. Negative over multi-month backtest = "fix analysts before
    RL aggregator work" per charter.

Tests: 530 passed, 1 skipped (was 506 -> +24, zero regressions).

What this unblocks

v0.4+ RL aggregator work was charter-gated on "paper-trade for 4-8
weeks first." With replay, operators can now answer:

  • Does the three-analyst committee beat buy-and-hold on BTC/USDT 1h
    over 2024? Run a backtest. (Seconds.)
  • What's the Deflated Sharpe accounting for backtest-overfitting? In
    the report.
  • What's the per-bar equity curve? equity_curve.csv ready to plot.

The charter's empirical gate is now computable. v0.4's RL work can
proceed iff the v0.3.x committee actually beats buy-and-hold on
real data -- which is exactly what the charter requires.

v0.3.1 -- Phase-7 review fixes

Choose a tag to compare

@baladithyab baladithyab released this 14 May 02:49

v0.3.1 -- Phase-7 review fixes (intersection P0s)

Three-way Phase-7 review of v0.3.0 (correctness + test-quality +
architecture lenses) caught five issues single-author construction
had missed. The loud one: the CHANGELOG claim "ALL THREE analysts
shipped" was structurally FALSE -- the advisor hard-coded two analysts
and never instantiated KronosAnalyst for live ticks. v0.3.1 closes that
plus the BMA abstain-filter contract from ADR-0018 D4.

Highlights

  • BMA abstain filter wired (ADR-0018 D4): views with confidence < 0.10
    dropped before aggregation. Closes the bug where Kronos's zero-confidence
    abstain (on missing kronos package) inflated silence-bias gate
    voice-count.
  • Advisor loads KronosAnalyst as third voice -- the charter MVP recipe
    now actually delivered for live ticks.
  • KairosAnalyst phantom entry-point removed (would have broken plug-and-
    play install discovery).
  • Lookahead CI gate rewired to canonical evaluation.lookahead module
    (Wave-D follow-up v0.3.0 didn't complete).
  • KronosConfig deterministic_seed=42 for charter "every signal replayable
    from disk" invariant.

Test sweep: 506 passed, 1 skipped (was 494 -> +12, zero regressions).

Phase-7 review artifacts on disk at docs/reviews/2026-05-13-v030/:
correctness.md + test-quality.md + architecture.md. 16 P1/P2 items
explicitly deferred to v0.3.2+ (CHANGELOG enumerates).

v0.3.0 -- MVP charter recipe: three-analyst BTC/USDT committee

Choose a tag to compare

@baladithyab baladithyab released this 14 May 01:14

v0.3.0 -- MVP charter recipe: three-analyst BTC/USDT committee shipped

The founding charter's MVP recipe lands. The two modules that gated
"three-analyst committee on liquid crypto, paper-trade 4-8 weeks
before any RL aggregator work" are now wired:

  • CcxtProvider for crypto OHLCV (Binance default, multi-exchange).
  • KronosAnalyst as the third BMA voice (lazy-load, distributional
    via subclass, [0.30, 0.85] overconfidence clip).

Plus the evaluation/ module promotion (PurgedWalkForward, lookahead
test, Deflated Sharpe Ratio) for v0.4 RL hooks, and the autonomous-
tick cron writer is actually wired now (was print-only in v0.2).

Highlights

  • ADR-0017: lookahead-safe leaf filter for ccxt (bar OPEN time semantics
    per ccxt issue #21783 -- admit only bars where open_ts + tf_seconds
    is at-or-before as_of).
  • ADR-0018: KronosAnalyst as ONE voice in the BMA committee, not the
    oracle. Path-agreement confidence with hard clip mitigates the
    Kairos A-shares neg-IC failure mode the charter warns about.
  • ADR-0019: evaluation/ scaffolding for v0.4 RL training (cv.py +
    lookahead.py + dsr.py).

Charter status post-v0.3

Charter clause Status
MVP -- three-analyst BTC/USDT committee SHIPPED (TA + Microstructure + Kronos)
Walk-forward CV + lookahead + DSR SCAFFOLDED
Money-software discipline HONORED at leaf + analyst layers
AAAI 2026 acceptance != alpha Clip + abstain-on-failure + zero RL training

Tests: 494 passed, 1 skipped (was 426 -> +68, zero regressions across
4 waves). Optional-extras pyproject cleanup. 16 ADRs total.

Quick start

pip install 'hermes-quant[ccxt]'           # for crypto bars
pip install 'hermes-quant[kronos]'         # for Kronos forecaster
hermes quant autonomous start --cadence 15m \
  --watchlist BTC/USDT:crypto:1h
# cron job is now created automatically

Deferred to v0.4+

  • Paper-trade BTC/USDT for 4-8 weeks (the charter's empirical gate)
  • News-LLM analyst per ADR-0012
  • Options analyst + Greeks-aware sizer
  • Live reactors gated by ADR-0016 section D6 three-lock
  • RL aggregator (charter explicitly defers until paper-trade Sharpe
    is measured)

Per the charter: "if your three-analyst committee on BTC can't beat
buy-and-hold risk-adjusted on paper, more analysts won't fix it."
v0.3 is the recipe; v0.4 is the empirical answer.

v0.2.0 -- Autonomous mode (silence-bias-gated paper trading)

Choose a tag to compare

@baladithyab baladithyab released this 13 May 21:21

v0.2.0 -- Autonomous mode (silence-bias-gated paper trading)

THIRD PDR SURFACE: Hermes watches the watchlist on a cadence and
fires paper trades automatically when the 4-dim silence-bias gate
agrees. Per the founding charter, silence is the DEFAULT -- the gate
is rewarded for correct inaction.

Highlights

  • ADR-0016 -- autonomous mode contract codifying charter principles
  • 4-dim silence-bias gate: confidence x urgency x voices x salience;
    ALL FOUR must pass for FIRE
  • Config-driven watchlist with flock + atomic-rename safety
  • tick() orchestrator: mode-gated, kill-switch-gated, per-symbol
    error isolation, structured operator-readable output
  • 5 new tools (15 total): quant_autonomous_tick (dry-run default),
    quant_autonomous_status, quant_watchlist_add/remove/list
  • CLI: hermes quant autonomous {tick, status, start, stop, reset,
    watchlist {list, add, remove}}
  • Slash: /quant auto tick|status, /quant watchlist list|add|remove

Safety rails

  • Tool surface defaults to dry_run=True. LLM agents cannot fire
    trades through tool calls -- only cron with --no-dry-run does.
  • Mode gate read on every call -- flip without restart.
  • max_per_tick_opens caps new positions per tick (default 1).
  • Kill switch (default -10% cumulative paper P&L) auto-disables
    autonomous; reset requires hermes quant autonomous reset --confirm.
  • Paper-only in v0.2. Live deferred to v0.3 behind three locks.

Tests: 426 passed, 1 skipped (was 365 -> +61, zero regressions).

Quick start

hermes quant autonomous start --cadence 15m \
  --watchlist BTC/USDT:crypto:1h,ETH/USDT:crypto:1h,AAPL:equity:1d
hermes quant autonomous status
hermes quant autonomous tick                # safe dry-run
hermes quant autonomous tick --no-dry-run   # real paper trade if FIRE

Then wire the cron tick (printed by start):

hermes cron create "15m" \
  --script "$(which hermes) quant autonomous tick --no-dry-run --json" \
  --no-agent

Operators see every tick output (FIRE / SILENCE_* / ERROR) delivered
to their configured cron destination -- nothing fires silently.

Files: docs/adr/ADR-0016-autonomous-mode.md, hermes_quant/gates/,
hermes_quant/watchlist.py, hermes_quant/autonomous.py.

Architecture: ADR-0013 (no monkeypatches), ADR-0014 (advisor reused),
ADR-0015 (PaperReactor reused), ADR-0010 (settlement journal feedback).

v0.1.2 — PDR (Perceive-Decide-React) plugin

Choose a tag to compare

@baladithyab baladithyab released this 13 May 20:53

v0.1.2 — PDR (Perceive-Decide-React) plugin

Reframes hermes-quant as a three-mode PDR plugin: advise (chat-mode
guidance), hitl (propose-approve-react with paper trading), autonomous
(deferred to v0.2). Same Analyst -> BMAAggregator -> DefaultRiskGate
pipeline drives all three.

KEY ADDITIONS:

  • HITL React layer (ADR-0015): quant_propose, quant_approve, quant_reject,
    quant_pending, quant_proposal tools + PaperReactor + JSONL+SQLite
    proposal store with lazy TTL expiration
  • Settlement journal (ADR-0010): markdown ledger, Pydantic-only writer,
    two-phase pending->resolved, atomic-rename, get_recent_lessons (no
    embeddings — explicit divergence from TradingAgents' removed
    FinancialSituationMemory)
  • MicrostructureLite analyst — second voice for BMA (Bollinger %B +
    trend quality + order-flow toxicity proxy)
  • Lookahead enforcement at the leaf data layer (as_of param on
    DataProvider, leaf-level filter, test_no_lookahead.py CI gate)
  • Path-safety guard (safe_symbol_component) for user-supplied tickers
  • Monotonic-clock heartbeat (wall-clock jump-backward no longer extends
    grace window; Phase-8 P1-ε)
  • Decision price exposed as top-level advisor field

NEW DOCS:

  • Founding charter saved verbatim to docs/charter/
  • 3 new ADRs: 0013 (integration stance), 0014 (advisor surface),
    0015 (HITL React)
  • Architecture review docs/reviews/2026-05-13-v0.1.2-architecture/

TEST COUNT: 273 (v0.1.1) -> 365 (v0.1.2). +92 tests covering HITL e2e,
journal, microstructure, no-lookahead invariant, monotonic heartbeat,
symbol safety, advisor contract. Zero regressions.

THE PDR LOOP CLOSES: HITL approve -> paper React (executions.jsonl)
-> journal entry -> next quant_recommend reads journal -> operator
sees prior decisions inline with new recommendations. Calibrator
update on rejections is config-gated and ready (consumer gates lift
when portfolio_loader rewrite lands).

DEFERRED TO v0.2:

  • autonomous mode with silence-bias gate
  • live broker reactors (alpaca, ccxt) gated by --live + creds
  • Discord button-based UI
  • KronosAnalyst, KairosAnalyst (deterministic neural)
  • ccxt provider for crypto (advisor returns gated asset_class_unsupported
    until then)
  • portfolio_loader rewrite (ADR-0011) -> calibrator gate lift
  • OHLCV file cache, trading_calendars for halt_until,
    halt-mirror staleness fallback